[Bug target/23355] size optimizer did not eliminateing useless Push and pop instructions at ARM/Thumb machine

th dot r dot klein at web dot de gcc-bugzilla@gcc.gnu.org
Sat Aug 13 18:27:00 GMT 2005


------- Additional Comments From th dot r dot klein at web dot de  2005-08-13 18:27 -------
I've reduced the function to a useless, but bug still remains.

(sorry: I've forgotten to tar the files so I'm attaching those manualy.)

###########################################################################

~/work/bugreport$ arm-elf-gcc-3.4.4 -v -save-temps -g -Os -fPIC -mthumb
-mlittle-endian -mapcs -march=armv4t-mcallee-super-interworking -c
example_3_4_4.c -o 3_4_4_thumb.o
Reading specs from /usr/local/lib/gcc/arm-elf/3.4.4/specs
Configured with: ../../gcc-3.4.4/configure --target=arm-elf --disable-threads
--disable-nls --without-headers --without-libs --enable-languages=c
Thread model: single
gcc version 3.4.4
 /usr/local/libexec/gcc/arm-elf/3.4.4/cc1 -E -quiet -v -D__ARM_ARCH_4T__
-D__USES_INITFINI__ example_3_4_4.c -mthumb -mlittle-endian -mapcs -march=armv4t
-mcallee-super-interworking -fPIC -fworking-directory -Os -o example_3_4_4.i
ignoring nonexistent directory
"/usr/local/lib/gcc/arm-elf/3.4.4/../../../../arm-elf/sys-include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/lib/gcc/arm-elf/3.4.4/include
 /usr/local/lib/gcc/arm-elf/3.4.4/../../../../arm-elf/include
End of search list.
 /usr/local/libexec/gcc/arm-elf/3.4.4/cc1 -fpreprocessed example_3_4_4.i -quiet
-dumpbase example_3_4_4.c -mthumb-mlittle-endian -mapcs -march=armv4t
-mcallee-super-interworking -auxbase-strip 3_4_4_thumb.o -g -Os -version -fPIC
-o example_3_4_4.s
GNU C version 3.4.4 (arm-elf)
        compiled by GNU C version 3.4.2 [FreeBSD] 20040728.
GGC heuristics: --param ggc-min-expand=65 --param ggc-min-heapsize=65536
 /usr/local/lib/gcc/arm-elf/3.4.4/../../../../arm-elf/bin/as -EL -march=armv4t
-o 3_4_4_thumb.o example_3_4_4.s

###########################################################################
file example_3_4_4.i
###########################################################################
# 1 "example_3_4_4.c"
# 1 "/home/thomas/work/bugreport//"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "example_3_4_4.c"



typedef char int8_t;
typedef short int16_t;
typedef int int32_t;

typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned long uint32_t;


typedef int __attribute__((__mode__(__DI__))) int64_t;
typedef unsigned int __attribute__((__mode__(__DI__))) uint64_t;
# 34 "example_3_4_4.c"
int progWord(uint32_t base_address,uint32_t address,uint32_t data)
{
 volatile uint32_t *dataPtr;
 uint32_t rd_data;


 *((volatile uint32_t *)(base_address + (0x555uL<<2))) = 0xAAAAaaaa;

 dataPtr = (uint32_t *)address;
 *dataPtr = data;

 return 0;
}
###########################################################################
file example_3_4_4.s
###########################################################################
	.code	16
	.file	"example_3_4_4.c"
	.section	.debug_abbrev,"",%progbits
.Ldebug_abbrev0:
	.section	.debug_info,"",%progbits
.Ldebug_info0:
	.section	.debug_line,"",%progbits
.Ldebug_line0:
	.text
.Ltext0:
	.align	2
	.global	progWord
	.code 32
	.type	progWord, %function
progWord:
.LFB2:
	.file 1 "example_3_4_4.c"
	.loc 1 35 0
	orr	ip, pc, #1
	bx	ip
	.code	16
	.globl .real_start_ofprogWord
	.thumb_func
.real_start_ofprogWord:
	.loc 1 40 0
	ldr	r3, .L2
	add	r0, r0, r3
	ldr	r3, .L2+4
	str	r3, [r0]
	.loc 1 46 0
	mov	r0, #0
	.loc 1 43 0
	str	r2, [r1]
	.loc 1 46 0
	@ sp needed for prologue
	bx	lr
.L3:
	.align	2
.L2:
	.word	5460
	.word	-1431655766
.LFE2:
	.size	progWord, .-progWord
	.section	.debug_frame,"",%progbits
.Lframe0:
	.4byte	.LECIE0-.LSCIE0
.LSCIE0:
	.4byte	0xffffffff
	.byte	0x1
	.ascii	"\000"
	.uleb128 0x1
	.sleb128 -4
	.byte	0xe
	.byte	0xc
	.uleb128 0xd
	.uleb128 0x0
	.align	2
.LECIE0:
.LSFDE0:
	.4byte	.LEFDE0-.LASFDE0
.LASFDE0:
	.4byte	.Lframe0
	.4byte	.LFB2
	.4byte	.LFE2-.LFB2
	.align	2
.LEFDE0:
	.text
.Letext0:
	.section	.debug_info
	.4byte	0xc9
	.2byte	0x2
	.4byte	.Ldebug_abbrev0
	.byte	0x4
	.uleb128 0x1
	.4byte	.Ldebug_line0
	.4byte	.Letext0
	.4byte	.Ltext0
	.4byte	.LASF12
	.byte	0x1
	.4byte	.LASF13
	.4byte	.LASF14
	.uleb128 0x2
	.4byte	.LASF0
	.byte	0x1
	.byte	0x8
	.uleb128 0x2
	.4byte	.LASF1
	.byte	0x2
	.byte	0x5
	.uleb128 0x3
	.ascii	"int\000"
	.byte	0x4
	.byte	0x5
	.uleb128 0x2
	.4byte	.LASF2
	.byte	0x1
	.byte	0x8
	.uleb128 0x2
	.4byte	.LASF3
	.byte	0x2
	.byte	0x7
	.uleb128 0x4
	.4byte	.LASF15
	.byte	0x1
	.byte	0xa
	.4byte	0x53
	.uleb128 0x2
	.4byte	.LASF4
	.byte	0x4
	.byte	0x7
	.uleb128 0x2
	.4byte	.LASF5
	.byte	0x8
	.byte	0x5
	.uleb128 0x2
	.4byte	.LASF6
	.byte	0x8
	.byte	0x7
	.uleb128 0x5
	.4byte	0xc1
	.byte	0x1
	.4byte	.LASF16
	.byte	0x1
	.byte	0x23
	.byte	0x1
	.4byte	0x33
	.4byte	.LFB2
	.4byte	.LFE2
	.byte	0x1
	.byte	0x5d
	.uleb128 0x6
	.4byte	.LASF7
	.byte	0x1
	.byte	0x22
	.4byte	0x48
	.byte	0x1
	.byte	0x50
	.uleb128 0x6
	.4byte	.LASF8
	.byte	0x1
	.byte	0x22
	.4byte	0x48
	.byte	0x1
	.byte	0x51
	.uleb128 0x6
	.4byte	.LASF9
	.byte	0x1
	.byte	0x22
	.4byte	0x48
	.byte	0x1
	.byte	0x52
	.uleb128 0x7
	.4byte	.LASF10
	.byte	0x1
	.byte	0x24
	.4byte	0xc1
	.uleb128 0x7
	.4byte	.LASF11
	.byte	0x1
	.byte	0x25
	.4byte	0x48
	.byte	0x0
	.uleb128 0x8
	.byte	0x4
	.4byte	0xc7
	.uleb128 0x9
	.4byte	0x48
	.byte	0x0
	.section	.debug_abbrev
	.uleb128 0x1
	.uleb128 0x11
	.byte	0x1
	.uleb128 0x10
	.uleb128 0x6
	.uleb128 0x12
	.uleb128 0x1
	.uleb128 0x11
	.uleb128 0x1
	.uleb128 0x25
	.uleb128 0xe
	.uleb128 0x13
	.uleb128 0xb
	.uleb128 0x3
	.uleb128 0xe
	.uleb128 0x1b
	.uleb128 0xe
	.byte	0x0
	.byte	0x0
	.uleb128 0x2
	.uleb128 0x24
	.byte	0x0
	.uleb128 0x3
	.uleb128 0xe
	.uleb128 0xb
	.uleb128 0xb
	.uleb128 0x3e
	.uleb128 0xb
	.byte	0x0
	.byte	0x0
	.uleb128 0x3
	.uleb128 0x24
	.byte	0x0
	.uleb128 0x3
	.uleb128 0x8
	.uleb128 0xb
	.uleb128 0xb
	.uleb128 0x3e
	.uleb128 0xb
	.byte	0x0
	.byte	0x0
	.uleb128 0x4
	.uleb128 0x16
	.byte	0x0
	.uleb128 0x3
	.uleb128 0xe
	.uleb128 0x3a
	.uleb128 0xb
	.uleb128 0x3b
	.uleb128 0xb
	.uleb128 0x49
	.uleb128 0x13
	.byte	0x0
	.byte	0x0
	.uleb128 0x5
	.uleb128 0x2e
	.byte	0x1
	.uleb128 0x1
	.uleb128 0x13
	.uleb128 0x3f
	.uleb128 0xc
	.uleb128 0x3
	.uleb128 0xe
	.uleb128 0x3a
	.uleb128 0xb
	.uleb128 0x3b
	.uleb128 0xb
	.uleb128 0x27
	.uleb128 0xc
	.uleb128 0x49
	.uleb128 0x13
	.uleb128 0x11
	.uleb128 0x1
	.uleb128 0x12
	.uleb128 0x1
	.uleb128 0x40
	.uleb128 0xa
	.byte	0x0
	.byte	0x0
	.uleb128 0x6
	.uleb128 0x5
	.byte	0x0
	.uleb128 0x3
	.uleb128 0xe
	.uleb128 0x3a
	.uleb128 0xb
	.uleb128 0x3b
	.uleb128 0xb
	.uleb128 0x49
	.uleb128 0x13
	.uleb128 0x2
	.uleb128 0xa
	.byte	0x0
	.byte	0x0
	.uleb128 0x7
	.uleb128 0x34
	.byte	0x0
	.uleb128 0x3
	.uleb128 0xe
	.uleb128 0x3a
	.uleb128 0xb
	.uleb128 0x3b
	.uleb128 0xb
	.uleb128 0x49
	.uleb128 0x13
	.byte	0x0
	.byte	0x0
	.uleb128 0x8
	.uleb128 0xf
	.byte	0x0
	.uleb128 0xb
	.uleb128 0xb
	.uleb128 0x49
	.uleb128 0x13
	.byte	0x0
	.byte	0x0
	.uleb128 0x9
	.uleb128 0x35
	.byte	0x0
	.uleb128 0x49
	.uleb128 0x13
	.byte	0x0
	.byte	0x0
	.byte	0x0
	.section	.debug_pubnames,"",%progbits
	.4byte	0x1b
	.2byte	0x2
	.4byte	.Ldebug_info0
	.4byte	0xcd
	.4byte	0x68
	.ascii	"progWord\000"
	.4byte	0x0
	.section	.debug_aranges,"",%progbits
	.4byte	0x1c
	.2byte	0x2
	.4byte	.Ldebug_info0
	.byte	0x4
	.byte	0x0
	.2byte	0x0
	.2byte	0x0
	.4byte	.Ltext0
	.4byte	.Letext0-.Ltext0
	.4byte	0x0
	.4byte	0x0
	.section	.debug_str,"MS",%progbits,1
.LASF5:
	.ascii	"long long int\000"
.LASF7:
	.ascii	"base_address\000"
.LASF14:
	.ascii	"/home/thomas/work/bugreport\000"
.LASF12:
	.ascii	"GNU C 3.4.4\000"
.LASF8:
	.ascii	"address\000"
.LASF4:
	.ascii	"long unsigned int\000"
.LASF6:
	.ascii	"long long unsigned int\000"
.LASF13:
	.ascii	"example_3_4_4.c\000"
.LASF2:
	.ascii	"unsigned char\000"
.LASF9:
	.ascii	"data\000"
.LASF15:
	.ascii	"uint32_t\000"
.LASF3:
	.ascii	"short unsigned int\000"
.LASF16:
	.ascii	"progWord\000"
.LASF11:
	.ascii	"rd_data\000"
.LASF1:
	.ascii	"short int\000"
.LASF10:
	.ascii	"dataPtr\000"
.LASF0:
	.ascii	"char\000"
	.ident	"GCC: (GNU) 3.4.4"
	.code	16
	.file	"example_3_4_4.c"
	.section	.debug_abbrev,"",%progbits
.Ldebug_abbrev0:
	.section	.debug_info,"",%progbits
.Ldebug_info0:
	.section	.debug_line,"",%progbits
.Ldebug_line0:
	.text
.Ltext0:
	.align	2
	.global	progWord
	.code 32
	.type	progWord, %function
progWord:
.LFB2:
	.file 1 "example_3_4_4.c"
	.loc 1 35 0
	orr	ip, pc, #1
	bx	ip
	.code	16
	.globl .real_start_ofprogWord
	.thumb_func
.real_start_ofprogWord:
	.loc 1 40 0
	ldr	r3, .L2
	add	r0, r0, r3
	ldr	r3, .L2+4
	str	r3, [r0]
	.loc 1 46 0
	mov	r0, #0
	.loc 1 43 0
	str	r2, [r1]
	.loc 1 46 0
	@ sp needed for prologue
	bx	lr
.L3:
	.align	2
.L2:
	.word	5460
	.word	-1431655766
.LFE2:
	.size	progWord, .-progWord
	.section	.debug_frame,"",%progbits
.Lframe0:
	.4byte	.LECIE0-.LSCIE0
.LSCIE0:
	.4byte	0xffffffff
	.byte	0x1
	.ascii	"\000"
	.uleb128 0x1
	.sleb128 -4
	.byte	0xe
	.byte	0xc
	.uleb128 0xd
	.uleb128 0x0
	.align	2
.LECIE0:
.LSFDE0:
	.4byte	.LEFDE0-.LASFDE0
.LASFDE0:
	.4byte	.Lframe0
	.4byte	.LFB2
	.4byte	.LFE2-.LFB2
	.align	2
.LEFDE0:
	.text
.Letext0:
	.section	.debug_info
	.4byte	0xc9
	.2byte	0x2
	.4byte	.Ldebug_abbrev0
	.byte	0x4
	.uleb128 0x1
	.4byte	.Ldebug_line0
	.4byte	.Letext0
	.4byte	.Ltext0
	.4byte	.LASF12
	.byte	0x1
	.4byte	.LASF13
	.4byte	.LASF14
	.uleb128 0x2
	.4byte	.LASF0
	.byte	0x1
	.byte	0x8
	.uleb128 0x2
	.4byte	.LASF1
	.byte	0x2
	.byte	0x5
	.uleb128 0x3
	.ascii	"int\000"
	.byte	0x4
	.byte	0x5
	.uleb128 0x2
	.4byte	.LASF2
	.byte	0x1
	.byte	0x8
	.uleb128 0x2
	.4byte	.LASF3
	.byte	0x2
	.byte	0x7
	.uleb128 0x4
	.4byte	.LASF15
	.byte	0x1
	.byte	0xa
	.4byte	0x53
	.uleb128 0x2
	.4byte	.LASF4
	.byte	0x4
	.byte	0x7
	.uleb128 0x2
	.4byte	.LASF5
	.byte	0x8
	.byte	0x5
	.uleb128 0x2
	.4byte	.LASF6
	.byte	0x8
	.byte	0x7
	.uleb128 0x5
	.4byte	0xc1
	.byte	0x1
	.4byte	.LASF16
	.byte	0x1
	.byte	0x23
	.byte	0x1
	.4byte	0x33
	.4byte	.LFB2
	.4byte	.LFE2
	.byte	0x1
	.byte	0x5d
	.uleb128 0x6
	.4byte	.LASF7
	.byte	0x1
	.byte	0x22
	.4byte	0x48
	.byte	0x1
	.byte	0x50
	.uleb128 0x6
	.4byte	.LASF8
	.byte	0x1
	.byte	0x22
	.4byte	0x48
	.byte	0x1
	.byte	0x51
	.uleb128 0x6
	.4byte	.LASF9
	.byte	0x1
	.byte	0x22
	.4byte	0x48
	.byte	0x1
	.byte	0x52
	.uleb128 0x7
	.4byte	.LASF10
	.byte	0x1
	.byte	0x24
	.4byte	0xc1
	.uleb128 0x7
	.4byte	.LASF11
	.byte	0x1
	.byte	0x25
	.4byte	0x48
	.byte	0x0
	.uleb128 0x8
	.byte	0x4
	.4byte	0xc7
	.uleb128 0x9
	.4byte	0x48
	.byte	0x0
	.section	.debug_abbrev
	.uleb128 0x1
	.uleb128 0x11
	.byte	0x1
	.uleb128 0x10
	.uleb128 0x6
	.uleb128 0x12
	.uleb128 0x1
	.uleb128 0x11
	.uleb128 0x1
	.uleb128 0x25
	.uleb128 0xe
	.uleb128 0x13
	.uleb128 0xb
	.uleb128 0x3
	.uleb128 0xe
	.uleb128 0x1b
	.uleb128 0xe
	.byte	0x0
	.byte	0x0
	.uleb128 0x2
	.uleb128 0x24
	.byte	0x0
	.uleb128 0x3
	.uleb128 0xe
	.uleb128 0xb
	.uleb128 0xb
	.uleb128 0x3e
	.uleb128 0xb
	.byte	0x0
	.byte	0x0
	.uleb128 0x3
	.uleb128 0x24
	.byte	0x0
	.uleb128 0x3
	.uleb128 0x8
	.uleb128 0xb
	.uleb128 0xb
	.uleb128 0x3e
	.uleb128 0xb
	.byte	0x0
	.byte	0x0
	.uleb128 0x4
	.uleb128 0x16
	.byte	0x0
	.uleb128 0x3
	.uleb128 0xe
	.uleb128 0x3a
	.uleb128 0xb
	.uleb128 0x3b
	.uleb128 0xb
	.uleb128 0x49
	.uleb128 0x13
	.byte	0x0
	.byte	0x0
	.uleb128 0x5
	.uleb128 0x2e
	.byte	0x1
	.uleb128 0x1
	.uleb128 0x13
	.uleb128 0x3f
	.uleb128 0xc
	.uleb128 0x3
	.uleb128 0xe
	.uleb128 0x3a
	.uleb128 0xb
	.uleb128 0x3b
	.uleb128 0xb
	.uleb128 0x27
	.uleb128 0xc
	.uleb128 0x49
	.uleb128 0x13
	.uleb128 0x11
	.uleb128 0x1
	.uleb128 0x12
	.uleb128 0x1
	.uleb128 0x40
	.uleb128 0xa
	.byte	0x0
	.byte	0x0
	.uleb128 0x6
	.uleb128 0x5
	.byte	0x0
	.uleb128 0x3
	.uleb128 0xe
	.uleb128 0x3a
	.uleb128 0xb
	.uleb128 0x3b
	.uleb128 0xb
	.uleb128 0x49
	.uleb128 0x13
	.uleb128 0x2
	.uleb128 0xa
	.byte	0x0
	.byte	0x0
	.uleb128 0x7
	.uleb128 0x34
	.byte	0x0
	.uleb128 0x3
	.uleb128 0xe
	.uleb128 0x3a
	.uleb128 0xb
	.uleb128 0x3b
	.uleb128 0xb
	.uleb128 0x49
	.uleb128 0x13
	.byte	0x0
	.byte	0x0
	.uleb128 0x8
	.uleb128 0xf
	.byte	0x0
	.uleb128 0xb
	.uleb128 0xb
	.uleb128 0x49
	.uleb128 0x13
	.byte	0x0
	.byte	0x0
	.uleb128 0x9
	.uleb128 0x35
	.byte	0x0
	.uleb128 0x49
	.uleb128 0x13
	.byte	0x0
	.byte	0x0
	.byte	0x0
	.section	.debug_pubnames,"",%progbits
	.4byte	0x1b
	.2byte	0x2
	.4byte	.Ldebug_info0
	.4byte	0xcd
	.4byte	0x68
	.ascii	"progWord\000"
	.4byte	0x0
	.section	.debug_aranges,"",%progbits
	.4byte	0x1c
	.2byte	0x2
	.4byte	.Ldebug_info0
	.byte	0x4
	.byte	0x0
	.2byte	0x0
	.2byte	0x0
	.4byte	.Ltext0
	.4byte	.Letext0-.Ltext0
	.4byte	0x0
	.4byte	0x0
	.section	.debug_str,"MS",%progbits,1
.LASF5:
	.ascii	"long long int\000"
.LASF7:
	.ascii	"base_address\000"
.LASF14:
	.ascii	"/home/thomas/work/bugreport\000"
.LASF12:
	.ascii	"GNU C 3.4.4\000"
.LASF8:
	.ascii	"address\000"
.LASF4:
	.ascii	"long unsigned int\000"
.LASF6:
	.ascii	"long long unsigned int\000"
.LASF13:
	.ascii	"example_3_4_4.c\000"
.LASF2:
	.ascii	"unsigned char\000"
.LASF9:
	.ascii	"data\000"
.LASF15:
	.ascii	"uint32_t\000"
.LASF3:
	.ascii	"short unsigned int\000"
.LASF16:
	.ascii	"progWord\000"
.LASF11:
	.ascii	"rd_data\000"
.LASF1:
	.ascii	"short int\000"
.LASF10:
	.ascii	"dataPtr\000"
.LASF0:
	.ascii	"char\000"
	.ident	"GCC: (GNU) 3.4.4"

###########################################################################

~/work/bugreport$ arm-elf-gcc-4.0.1 -v -save-temps -g -Os -fPIC -mthumb
-mlittle-endian -mapcs -march=armv4t-mcallee-super-interworking -c example.c -o
4_0_1_thumb.o
Using built-in specs.
Target: arm-elf
Configured with: ../../gcc-4.0.1/configure --target=arm-elf --disable-threads
--disable-nls --without-headers --without-libs --enable-languages=c
Thread model: single
gcc version 4.0.1
 /usr/local/libexec/gcc/arm-elf/4.0.1/cc1 -E -quiet -v -D__USES_INITFINI__
example.c -mthumb -mlittle-endian -mapcs -march=armv4t
-mcallee-super-interworking -fPIC -fworking-directory -Os -fpch-preprocess -o
example.i
ignoring nonexistent directory
"/usr/local/lib/gcc/arm-elf/4.0.1/../../../../arm-elf/sys-include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/lib/gcc/arm-elf/4.0.1/include
 /usr/local/lib/gcc/arm-elf/4.0.1/../../../../arm-elf/include
End of search list.
 /usr/local/libexec/gcc/arm-elf/4.0.1/cc1 -fpreprocessed example.i -quiet
-dumpbase example.c -mthumb -mlittle-endian -mapcs -march=armv4t
-mcallee-super-interworking -auxbase-strip 4_0_1_thumb.o -g -Os -version -fPIC
-o example.s
GNU C version 4.0.1 (arm-elf)
        compiled by GNU C version 3.4.2 [FreeBSD] 20040728.
GGC heuristics: --param ggc-min-expand=99 --param ggc-min-heapsize=129972
 /usr/local/lib/gcc/arm-elf/4.0.1/../../../../arm-elf/bin/as -EL -march=armv4t
-o 4_0_1_thumb.o example.s

###########################################################################
file example.i
###########################################################################
# 1 "example.c"
# 1 "/home/thomas/work/bugreport//"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "example.c"



typedef char int8_t;
typedef short int16_t;
typedef int int32_t;

typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned long uint32_t;


typedef int __attribute__((__mode__(__DI__))) int64_t;
typedef unsigned int __attribute__((__mode__(__DI__))) uint64_t;
# 34 "example.c"
int progWord(uint32_t base_address,uint32_t address,uint32_t data)
{
 volatile uint32_t *dataPtr;
 uint32_t rd_data;


 *((volatile uint32_t *)(base_address + (0x555uL<<2))) = 0xAAAAaaaa;

 dataPtr = (uint32_t *)address;
 *dataPtr = data;

 return 0;
}
###########################################################################
file example.s
###########################################################################
	.code	16
	.file	"example.c"
	.section	.debug_abbrev,"",%progbits
.Ldebug_abbrev0:
	.section	.debug_info,"",%progbits
.Ldebug_info0:
	.section	.debug_line,"",%progbits
.Ldebug_line0:
	.text
.Ltext0:
	.align	2
	.global	progWord
	.code 32
	.type	progWord, %function
progWord:
.LFB2:
	.file 1 "example.c"
	.loc 1 35 0
	orr	ip, pc, #1
	bx	ip
	.code	16
	.globl .real_start_ofprogWord
	.thumb_func
.real_start_ofprogWord:
	push	{r7}
.LCFI0:
	mov	r7, sl
	push	{r7}
.LCFI1:
.LVL0:
	.loc 1 40 0
	ldr	r3, .L3
	add	r0, r0, r3
.LVL1:
	ldr	r3, .L3+4
	str	r3, [r0]
	.loc 1 46 0
	mov	r0, #0
	.loc 1 43 0
	str	r2, [r1]
	.loc 1 46 0
	@ sp needed for prologue
	pop	{r2}
	mov	sl, r2
	pop	{r7}
	bx	lr
.L4:
	.align	2
.L3:
	.word	5460
	.word	-1431655766
.LFE2:
	.size	progWord, .-progWord
	.section	.debug_frame,"",%progbits
.Lframe0:
	.4byte	.LECIE0-.LSCIE0
.LSCIE0:
	.4byte	0xffffffff
	.byte	0x1
	.ascii	"\000"
	.uleb128 0x1
	.sleb128 -4
	.byte	0xe
	.byte	0xc
	.uleb128 0xd
	.uleb128 0x0
	.align	2
.LECIE0:
.LSFDE0:
	.4byte	.LEFDE0-.LASFDE0
.LASFDE0:
	.4byte	.Lframe0
	.4byte	.LFB2
	.4byte	.LFE2-.LFB2
	.byte	0x4
	.4byte	.LCFI0-.LFB2
	.byte	0xe
	.uleb128 0x4
	.byte	0x87
	.uleb128 0x1
	.byte	0x4
	.4byte	.LCFI1-.LCFI0
	.byte	0xe
	.uleb128 0x8
	.byte	0x8a
	.uleb128 0x2
	.align	2
.LEFDE0:
	.text
.Letext0:
	.section	.debug_loc,"",%progbits
.Ldebug_loc0:
.LLST0:
	.4byte	.LVL0-.Ltext0
	.4byte	.LVL1-.Ltext0
	.2byte	0x1
	.byte	0x50
	.4byte	0x0
	.4byte	0x0
	.section	.debug_info
	.4byte	0xcc
	.2byte	0x2
	.4byte	.Ldebug_abbrev0
	.byte	0x4
	.uleb128 0x1
	.4byte	.Ldebug_line0
	.4byte	.Letext0
	.4byte	.Ltext0
	.4byte	.LASF12
	.byte	0x1
	.4byte	.LASF13
	.4byte	.LASF14
	.uleb128 0x2
	.4byte	.LASF0
	.byte	0x1
	.byte	0x8
	.uleb128 0x2
	.4byte	.LASF1
	.byte	0x2
	.byte	0x5
	.uleb128 0x3
	.ascii	"int\000"
	.byte	0x4
	.byte	0x5
	.uleb128 0x2
	.4byte	.LASF2
	.byte	0x1
	.byte	0x8
	.uleb128 0x2
	.4byte	.LASF3
	.byte	0x2
	.byte	0x7
	.uleb128 0x4
	.4byte	.LASF15
	.byte	0x1
	.byte	0xa
	.4byte	0x53
	.uleb128 0x2
	.4byte	.LASF4
	.byte	0x4
	.byte	0x7
	.uleb128 0x2
	.4byte	.LASF5
	.byte	0x8
	.byte	0x5
	.uleb128 0x2
	.4byte	.LASF6
	.byte	0x8
	.byte	0x7
	.uleb128 0x5
	.4byte	0xc4
	.byte	0x1
	.4byte	.LASF16
	.byte	0x1
	.byte	0x23
	.byte	0x1
	.4byte	0x33
	.4byte	.LFB2
	.4byte	.LFE2
	.byte	0x2
	.byte	0x7d
	.sleb128 0
	.uleb128 0x6
	.4byte	.LASF7
	.byte	0x1
	.byte	0x22
	.4byte	0x48
	.4byte	.LLST0
	.uleb128 0x7
	.4byte	.LASF8
	.byte	0x1
	.byte	0x22
	.4byte	0x48
	.byte	0x1
	.byte	0x51
	.uleb128 0x7
	.4byte	.LASF9
	.byte	0x1
	.byte	0x22
	.4byte	0x48
	.byte	0x1
	.byte	0x52
	.uleb128 0x8
	.4byte	.LASF10
	.byte	0x1
	.byte	0x24
	.4byte	0xc4
	.uleb128 0x8
	.4byte	.LASF11
	.byte	0x1
	.byte	0x25
	.4byte	0x48
	.byte	0x0
	.uleb128 0x9
	.byte	0x4
	.4byte	0xca
	.uleb128 0xa
	.4byte	0x48
	.byte	0x0
	.section	.debug_abbrev
	.uleb128 0x1
	.uleb128 0x11
	.byte	0x1
	.uleb128 0x10
	.uleb128 0x6
	.uleb128 0x12
	.uleb128 0x1
	.uleb128 0x11
	.uleb128 0x1
	.uleb128 0x25
	.uleb128 0xe
	.uleb128 0x13
	.uleb128 0xb
	.uleb128 0x3
	.uleb128 0xe
	.uleb128 0x1b
	.uleb128 0xe
	.byte	0x0
	.byte	0x0
	.uleb128 0x2
	.uleb128 0x24
	.byte	0x0
	.uleb128 0x3
	.uleb128 0xe
	.uleb128 0xb
	.uleb128 0xb
	.uleb128 0x3e
	.uleb128 0xb
	.byte	0x0
	.byte	0x0
	.uleb128 0x3
	.uleb128 0x24
	.byte	0x0
	.uleb128 0x3
	.uleb128 0x8
	.uleb128 0xb
	.uleb128 0xb
	.uleb128 0x3e
	.uleb128 0xb
	.byte	0x0
	.byte	0x0
	.uleb128 0x4
	.uleb128 0x16
	.byte	0x0
	.uleb128 0x3
	.uleb128 0xe
	.uleb128 0x3a
	.uleb128 0xb
	.uleb128 0x3b
	.uleb128 0xb
	.uleb128 0x49
	.uleb128 0x13
	.byte	0x0
	.byte	0x0
	.uleb128 0x5
	.uleb128 0x2e
	.byte	0x1
	.uleb128 0x1
	.uleb128 0x13
	.uleb128 0x3f
	.uleb128 0xc
	.uleb128 0x3
	.uleb128 0xe
	.uleb128 0x3a
	.uleb128 0xb
	.uleb128 0x3b
	.uleb128 0xb
	.uleb128 0x27
	.uleb128 0xc
	.uleb128 0x49
	.uleb128 0x13
	.uleb128 0x11
	.uleb128 0x1
	.uleb128 0x12
	.uleb128 0x1
	.uleb128 0x40
	.uleb128 0xa
	.byte	0x0
	.byte	0x0
	.uleb128 0x6
	.uleb128 0x5
	.byte	0x0
	.uleb128 0x3
	.uleb128 0xe
	.uleb128 0x3a
	.uleb128 0xb
	.uleb128 0x3b
	.uleb128 0xb
	.uleb128 0x49
	.uleb128 0x13
	.uleb128 0x2
	.uleb128 0x6
	.byte	0x0
	.byte	0x0
	.uleb128 0x7
	.uleb128 0x5
	.byte	0x0
	.uleb128 0x3
	.uleb128 0xe
	.uleb128 0x3a
	.uleb128 0xb
	.uleb128 0x3b
	.uleb128 0xb
	.uleb128 0x49
	.uleb128 0x13
	.uleb128 0x2
	.uleb128 0xa
	.byte	0x0
	.byte	0x0
	.uleb128 0x8
	.uleb128 0x34
	.byte	0x0
	.uleb128 0x3
	.uleb128 0xe
	.uleb128 0x3a
	.uleb128 0xb
	.uleb128 0x3b
	.uleb128 0xb
	.uleb128 0x49
	.uleb128 0x13
	.byte	0x0
	.byte	0x0
	.uleb128 0x9
	.uleb128 0xf
	.byte	0x0
	.uleb128 0xb
	.uleb128 0xb
	.uleb128 0x49
	.uleb128 0x13
	.byte	0x0
	.byte	0x0
	.uleb128 0xa
	.uleb128 0x35
	.byte	0x0
	.uleb128 0x49
	.uleb128 0x13
	.byte	0x0
	.byte	0x0
	.byte	0x0
	.section	.debug_pubnames,"",%progbits
	.4byte	0x1b
	.2byte	0x2
	.4byte	.Ldebug_info0
	.4byte	0xd0
	.4byte	0x68
	.ascii	"progWord\000"
	.4byte	0x0
	.section	.debug_aranges,"",%progbits
	.4byte	0x1c
	.2byte	0x2
	.4byte	.Ldebug_info0
	.byte	0x4
	.byte	0x0
	.2byte	0x0
	.2byte	0x0
	.4byte	.Ltext0
	.4byte	.Letext0-.Ltext0
	.4byte	0x0
	.4byte	0x0
	.section	.debug_str,"MS",%progbits,1
.LASF5:
	.ascii	"long long int\000"
.LASF7:
	.ascii	"base_address\000"
.LASF12:
	.ascii	"GNU C 4.0.1\000"
.LASF14:
	.ascii	"/home/thomas/work/bugreport\000"
.LASF8:
	.ascii	"address\000"
.LASF4:
	.ascii	"long unsigned int\000"
.LASF6:
	.ascii	"long long unsigned int\000"
.LASF2:
	.ascii	"unsigned char\000"
.LASF9:
	.ascii	"data\000"
.LASF15:
	.ascii	"uint32_t\000"
.LASF13:
	.ascii	"example.c\000"
.LASF3:
	.ascii	"short unsigned int\000"
.LASF16:
	.ascii	"progWord\000"
.LASF11:
	.ascii	"rd_data\000"
.LASF1:
	.ascii	"short int\000"
.LASF10:
	.ascii	"dataPtr\000"
.LASF0:
	.ascii	"char\000"
	.ident	"GCC: (GNU) 4.0.1"




-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23355



More information about the Gcc-bugs mailing list