This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
x86 code generation bug
- To: gcc-bugs at sourceware dot cygnus dot com
- Subject: x86 code generation bug
- From: Ulrich Drepper <drepper at redhat dot com>
- Date: 11 Feb 2000 22:16:27 -0800
- Reply-To: drepper at cygnus dot com (Ulrich Drepper)
The current (2000-02-11T16:00+0800) egcs version has problems with the
code generation. This is while compiling glibc. I haven't tried it
in the last two weeks so the list of possible reasons is long.
The appended sources compiled with
gcc -c -O3 -march=pentiumpro -mcpu=i686 dl-runtime.i
compiled with the current egcs version leads to code in `fixup' like
this:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
acff: 83 ec 10 sub $0x10,%esp
ad02: 8b 57 30 mov 0x30(%edi),%edx
ad05: 8b 40 04 mov 0x4(%eax),%eax
ad08: 89 45 ec mov %eax,0xffffffec(%ebp)
ad0b: 8b 47 74 mov 0x74(%edi),%eax
ad0e: 8b 48 04 mov 0x4(%eax),%ecx
ad11: 01 ce add %ecx,%esi
ad13: 8b 46 04 mov 0x4(%esi),%eax
ad16: 89 45 e8 mov %eax,0xffffffe8(%ebp)
ad19: c1 6d e8 08 shrl $0x8,0xffffffe8(%ebp)
ad1d: 8b 4d e8 mov 0xffffffe8(%ebp),%ecx
ad20: c1 e1 04 shl $0x4,%ecx
ad23: 03 4a 04 add 0x4(%edx),%ecx
ad26: 8b 17 mov (%edi),%edx
ad28: 89 4d f0 mov %ecx,0xfffffff0(%ebp)
ad2b: 89 55 e0 mov %edx,0xffffffe0(%ebp)
ad2e: 8b 36 mov (%esi),%esi
ad30: 01 75 e4 add %esi,0xffffffe4(%ebp)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
With an older, working compiler I get:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
a88f: 83 ec 04 sub $0x4,%esp
a892: 8b 57 30 mov 0x30(%edi),%edx
a895: 8b 40 04 mov 0x4(%eax),%eax
a898: 89 45 f8 mov %eax,0xfffffff8(%ebp)
a89b: 8b 47 74 mov 0x74(%edi),%eax
a89e: 8b 48 04 mov 0x4(%eax),%ecx
a8a1: 01 ce add %ecx,%esi
a8a3: 8b 46 04 mov 0x4(%esi),%eax
a8a6: 89 45 f4 mov %eax,0xfffffff4(%ebp)
a8a9: c1 6d f4 08 shrl $0x8,0xfffffff4(%ebp)
a8ad: 8b 4d f4 mov 0xfffffff4(%ebp),%ecx
a8b0: c1 e1 04 shl $0x4,%ecx
a8b3: 03 4a 04 add 0x4(%edx),%ecx
a8b6: 8b 17 mov (%edi),%edx
a8b8: 89 55 f0 mov %edx,0xfffffff0(%ebp)
a8bb: 8b 36 mov (%esi),%esi
a8bd: 89 4d fc mov %ecx,0xfffffffc(%ebp)
a8c0: 01 75 f0 add %esi,0xfffffff0(%ebp)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The important pieces are the last for instructions. After reordering
them they are:
current old
mov %ecx,0xfffffff0(%ebp) mov %edx,0xfffffff0(%ebp)
mov %edx,0xffffffe0(%ebp) mov %ecx,0xfffffffc(%ebp)
mov (%esi),%esi mov (%esi),%esi
add %esi,0xffffffe4(%ebp) add %esi,0xfffffff0(%ebp)
In the old code the first of these instructions initializes
0xfffffff0(%ebp) and the last adds something to it. This corresponds
to the instruction
void *const rel_addr = (void *)(l->l_addr + reloc->r_offset);
in the sources. In the currently generated code the first instruction
still initializes a stack variable, but the last variable adds to a
completely different one. Later in the code the variable at address
0xffffffe4(%ebp) is used which of course contains a bogus value since
the initialization from the first instruction above is missing.
--
---------------. drepper at gnu.org ,-. 1325 Chesapeake Terrace
Ulrich Drepper \ ,-------------------' \ Sunnyvale, CA 94089 USA
Red Hat `--' drepper at redhat.com `------------------------
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
begin 664 dl-runtime.i.bz2
M0EIH.3%!629366=X8OT`(B-_@'___];__________O____I@0'P>CT4N^[B)
M?0#""-F(*"P??>=;[`>[N=>???3HWO>[T>;R];J4S#UVK[D?;[GR]Z\Z??-[
MZ;KWQ]\X^KV-]M.>L,\KZ:NN\;Y?/=]TE=GV]X????/OJ?;(`//.^7KNUT.W
MSSO>^WMAH:][?1CKUQ7U]][;OHJV>#HUK37UW??-WW?%/>WGAWHZ/*KUE6FO
M5M.>]V7GM]>7H>W?>KI3R>X!U]N\'GU"[J;EMMX2FB!`3"!(R)BI^3TDQ3\C
M4TGHU&@]3-1IZC1@31H9&AIIH'H0&F01I$34834'JGZ4>D`T#U,331M(R#(R
M``T```!ZC($@DB:0IY&FJG^D\IZJ;(GD3]4/4T?JF]4R`>4;4/4&F1H`-&@-
M'J!D:!"D0B:1-I-!II-4?JGZD_2:GJ?J3U/4-#)Z@9ZI^J``#U``T`-``$22
M"";0FB>I3]-)C%1ZFR)Y33U,>E,T!-,9-)HT::`-``-`-!$D(!"&(()D:F23
M]332&30::'J&!&$&@#(`:!B:9-/Q'@43Q(-231!(F/W!"*F!&I%Q6!"3,50P
M`,@$E93`6@HS%S",J(:%7%D,4_U#"N0L0M00#*!MT!K1*&C=@#H)-0A,&!&3
M@A,4`T@-"('24#MBKYWN7!_&(!<H=)`^<,,T+A*%B*`O]?X:'4E`4TH11!$-
M)2E%!%$$0D$+57C#(IHJFNAP@I*B&IJIFIL9\WX"#&%#B/_F$CCC&QMN[X$3
M:(Z:A:88*"@2@$B*%I1HI4C,0##,:BF8)"(9)"E9*J/),.VNQ_$,#(C?\Y(3
M44R:9TD\YTE&000N-)T;&D0"@4PPC0F#@88X0.B#"+]TPP]7--55'.SD(B(A
MB""&,5!7PB/[K!M='W8CVG^%I&9$'[.L9I[P^\0#_ZX[JOMWC4E6/CM9*A-R
M[8?6/KG^;GZ/T<*JA=A+-F>98Z?0K!S(40THT?!LJHL@[?78VN;4TJ"L$U'X
M43E^%29.?HQU4Y)L"$T5J<H$&P8-"F_P?&:1OK:FYD(/G(W@,"-*&H(C%C%;
M!L;6@&!&"=DFK_;QAK(S3!;O$V,;#<,@"K`4XM&R(.<<W*9!P!O#4S),KED9
M(4&]9G6M,2E-44!J0:W*NI0XDH`R=PN0^03$FHP`&#)2M#&S3+2/&1C61Z`B
M"#Y;:'M#&WI9F5M@*L26"-.82;-6!9!&I6\D><3-&1CA&12T69SHP"BY]ZG8
M$&]6U6LISZY(3N-M5$,S$F89G>4`)`"P0IU`Q!J@`:-:P-0E51XM314VHIS#
M#(R'"*1*,LHS*HS,F,(LLHBK)LQ,D@FS,BJ`B0*$G+*9)PF*<L(<PL-:'(U+
M2E9.`4I@804U3-1EDD55%&5+BQ5!,$-0315%4QF+FH,75F688.),T!X4#("A
M\09"-)0T+2(-H;!ML<*3*%9%:@;%&NVY3I-3=K4JOTG1E<9&NHT'5U*)L-1T
MI"MQ#U*V`TSI@*)K6M73K)F^;)/238S5`DNMB`88X!31(VQP@VXXP;&PH,S(
M(HB&B8JR,"8HCG6@B-9,5<:,@I"UDI1&$!)F8"@4(GE!U+1^:=R)KUV2EWP7
M(*2B4=2"'4KQ+$Q"%*#DH9&\P83,5-0K$3`+WO5HP^;OJ,Z-!V-6001I(;$D
M%:2#M+SN6[&/,3A7CFC&BZS(:>M<Y6JJ2,MNLII>'@.,8;I8+1-HV!W.LT
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
GY=VU?:7"HI`:!&K22UD,@0<&K1`-065)TC&P/_Q=R13A0D&=X8OT
`
end