This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
optimization/10087: optimizer produces wrong code when indexing malloc'ed 2D array
- From: p dot van-hoof at qub dot ac dot uk
- To: gcc-gnats at gcc dot gnu dot org
- Cc: p dot van-hoof at qub dot ac dot uk
- Date: Fri, 14 Mar 2003 20:01:28 GMT
- Subject: optimization/10087: optimizer produces wrong code when indexing malloc'ed 2D array
>Number: 10087
>Category: optimization
>Synopsis: optimizer produces wrong code when indexing malloc'ed 2D array
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: wrong-code
>Submitter-Id: net
>Arrival-Date: Fri Mar 14 22:16:01 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator: Peter van Hoof
>Release: 3.3 20030310 (prerelease)
>Organization:
Queen's University of Belfast
>Environment:
System: SunOS scooby 5.9 Generic_112233-04 sun4u sparc SUNW,Sun-Blade-100
Architecture: sun4
host: sparc-sun-solaris2.9
build: sparc-sun-solaris2.9
target: sparc-sun-solaris2.9
configured with: /scratch/temp/ss/gcc-20030310/configure --prefix=/opt/local/gcc330
>Description:
In the attached code a two-dimensional array of structs is malloc'ed,
then the first field of that struct is initialized to 1 for all
array members. Finally the minimum value of all these fields is
determined by looping over the array again. This should of course
return 1, but the actual result is 1.039778e-312.
This code runs OK with gcc 3.2.2
>How-To-Repeat:
scooby> gcc -v -save-temps -O2 bug.c
Reading specs from /opt/local/gcc330/lib/gcc-lib/sparc-sun-solaris2.9/3.3/specs
Configured with: /scratch/temp/ss/gcc-20030310/configure --prefix=/opt/local/gcc330
Thread model: posix
gcc version 3.3 20030310 (prerelease)
/opt/local/gcc330/lib/gcc-lib/sparc-sun-solaris2.9/3.3/cc1 -E -quiet -v -D__GNUC__=3 -D__GNUC_MINOR__=3 -D__GNUC_PATCHLEVEL__=0 -Dsparc -D__sparc__ -D__sparc -D__GCC_NEW_VARARGS__ -Acpu=sparc -Amachine=sparc bug.c -O2 bug.i
ignoring nonexistent directory "/opt/local/gcc330/sparc-sun-solaris2.9/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/local/include
/opt/local/gcc330/include
/opt/local/gcc330/lib/gcc-lib/sparc-sun-solaris2.9/3.3/include
/usr/include
End of search list.
/opt/local/gcc330/lib/gcc-lib/sparc-sun-solaris2.9/3.3/cc1 -fpreprocessed bug.i -quiet -dumpbase bug.c -auxbase bug -O2 -version -o bug.s
GNU C version 3.3 20030310 (prerelease) (sparc-sun-solaris2.9)
compiled by GNU C version 3.3 20030310 (prerelease).
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
/usr/ccs/bin/as -V -Qy -s -o bug.o bug.s
/usr/ccs/bin/as: Sun WorkShop 6 update 2 Compiler Common 6.2 Solaris_9_CBE 2001/04/02
/opt/local/gcc330/lib/gcc-lib/sparc-sun-solaris2.9/3.3/collect2 -V -Y P,/usr/ccs/lib:/usr/lib -Qy /opt/local/gcc330/lib/gcc-lib/sparc-sun-solaris2.9/3.3/crt1.o /opt/local/gcc330/lib/gcc-lib/sparc-sun-solaris2.9/3.3/crti.o /usr/ccs/lib/values-Xa.o /opt/local/gcc330/lib/gcc-lib/sparc-sun-solaris2.9/3.3/crtbegin.o -L/opt/local/gcc330/lib/gcc-lib/sparc-sun-solaris2.9/3.3 -L/usr/ccs/bin -L/usr/ccs/lib -L/opt/local/gcc330/lib/gcc-lib/sparc-sun-solaris2.9/3.3/../../.. bug.o -lgcc -lgcc_eh -lc -lgcc -lgcc_eh -lc /opt/local/gcc330/lib/gcc-lib/sparc-sun-solaris2.9/3.3/crtend.o /opt/local/gcc330/lib/gcc-lib/sparc-sun-solaris2.9/3.3/crtn.o
ld: Software Generation Utilities - Solaris Link Editors: 5.9-1.373
scooby> a.out
result 1.039778e-312
This is the input:
begin 644 bug.i.bz2
M0EIH.3%!6293649DV94 !G__@'PT! 1;?___<R8>#K____I at $M]X!<[A]L ^
M][V/>7W-A]S(/K[N]/'H>>S?4 at UNWRT<@I].[>F^>X*^\&]#=[ at X2*$TBGZ1
MB:GJ/ CTI^J/4/*9#90#)D!ZC:C0"4T("$TT$IY4\T*-,$T&:0:#0Q &F$$@
MJ*>5-/*>4-'J - T #0 )-)$1!-4QH91M3U/:B&C0 8 at T!B8@R81*$F4
M>J?J-0S*/4: T- 9 T!H:-&@")(@( FC0 E,U-&@T- -- #$0=5D02) 0
M\??V*\?/ZP#W]<,)\+9Y:@0A]G;[T"VA ]I(LA368%$6",!?_\8<&I1*K!08
MJ15B*(%9605!)[D2GIM1188-+[O1.#FU4,G3DR(,15RE$04MHI;96HI;185"
M at KU2F6Y9*"P#=JHHH4M*BBR"B at J@H5MI1D%D*4I;:%M462MJ6"-0HB(@);0M
M*E15**L8 JBE'\W0O5%,54<AB"KB(]D0Z01#?QG3X[CGA2IT>D4ZN5.U#K$O
M! at Q$W$ZF+4I-K3:SO*9XK%L/2<6F56KM>MZ27M2*3)."\34>8K,V<Q:+3H-X
M RBUHETZCJ-*-^(Q_;KAO;8W;>YE W%QC**+>W'@U at *9+F%4N-UFAEIOC9_'
MFP#?-I;"C!5$84I1CMB<;=Z::AAM*K"J'-?E'6:O# at X4]4GT?!)#\$@>M2$H
ML 0#]L&^56+[58J at L5&2) E%0*HFA 6(F^03['&W\6Q33W-G+= at D7D%/DX;*
M]#KLC&!*B-%FY9;'<N1CF?"#E&1QPD>#(@A*\1GH$-"!<WD1V--V0TK)(QU.
MG.BD,F#)H,XIL +3JZXNMR\X61<5J'*0HR1'\ at 7V#DOS@&YUDT at 1!!2'+*P:
M2^RR=9-FSGNPMIX^*T.]#O)WR\NGNIT[-]IOM(K4N%H,MJL7+F)0[MZ#70/I
M0F/.[;O*MIRE9UBP9 dot +37CQ]S1H0X at 6%/(G6+.)"]50X"9;9*4:JIJ9K$28:
MS(5(=?"R&#$#:,],N:'"5VD):I*%5 at AVTS$P-, [)TDUQ0TC.,D8]W3_=-*?
M=K$;VV#)A U\*;7//DXGN*(\"A4 at JFMP ('B'@B;-D.=I(%F & 3Q1Q&!'Q
M.S\;9]3MN^6\>*KRY3O:U%:/N\Y*(+_G2]CYDV-?6K>O:HH<=G1E/ D>C,O>
M9AYI]CL9)ONZW6F$U#N2=#'WB"R/G5.<XGHN>C]-QK^VQCXSY?G_;OLASZEN
MA((=]'F$";7P_=\^CA6'+ 6*0K6%85E8B<T*,:;19'),O*%&"UG!:"M;S0DK
M9&@4: 5D2 V/S#2W49[FH9D!O:(VQ,#?25!19%B((P4.VRKPSR>?^&S0BDD9
M",CIC6M_(!.\!( G8+P7J)^4!A']5U0F!A<-P'IQIY>3J53S>BF'JHJ\UJ\4
M)I21Y!Z%8B%,/ Z=,@F9HJU(BM'"4[+#3PF'#Q-IPXJ;=NMR at 77AV=C\9?1\
M07A;ZB]2U5/8KE/TXX8@)M?D 3> GD@:*P(P1(*02Z[T= $X )9L'D E+F E
ME#F)%0+!"$DDB$B4P4N at A';PUW:G"Y8N D:^M/GO15Y>!4!Z'"EK:K&W';NX
M:N;7HMIS*RC6*G(<62M;DODR(;WELH1*(;+C2AD+P9B=(=<RKFI_8]/6U#3G
MRTRH=^(J,&YS[ ,=L-IT+'R;.VR9Y'JG3)2&[#ERY6^.*:ME-39.R>FRL.O3
M007 W@)PU 2^0"0UC(?/U4KW 2+I'*'.("[M-OB^OC3G626;+E;LUDU#MT'
M::\[X-*0J",$#OM;22U72LNEV?T>X+W3S]?A0\0_1X at DRB(+H?)EF.$N;\WX
M\(.SG2QTP8P\Q*4G59E[WI<B&(@2*]] at -;URZUNVA3#QG02#4!B9QZ1TS=NO
M?O^0X&_D/5/ S.(#LXX)!\3RO>4\N4/CXX!KS+CBRG!JEDY;SJKA!QMRF=']
MC'45D<-5;NW90J\4:$=;/%=9KD]6Q]X]/):;;+6BS^) 0EQ$.N$Z$)(38WR)
MA393;L-;QL6<0&AI*O:8((@(Q3*$B6?;URR^E[9);K7;H:\LSLPV%R,=#V'[
MHP]!QK)GJF ?FD[$ at 72U^[(;7]Y[G_![1M#;:($(206(49.4 Q 7Z +^L0#S
M_/6"W<8!S)JKMP_##RFG6:RC.M84Y_7R*NSV64&N5!2NW A]T$:&AM"; ;0[
MZV.&%SV<],P6IRYE'9_L-)A*P]W4?-MAQ8ECZO/Y)T$)"91RDJ5K5(9(2,ZM
MO8#<9N34SE DEM$\QUJ<]7FJ8"/:%]I,Y>"G*;35)A(2!DF2&2Y;QDPS&^NA
MG at C'7ISQVH:35QC*52\G?-DMCDDLXFFV99:L0W=TU$'LS#7EHL[2B89R41 I
M2;6:&*]*M @+4O,LI9[O[EK&9J:%Y1,$]]RD</>P^JIH_*G/>7>U]U6?EBU9
MKGU<WMCVZH41U.-;Z5VL4655Z%3D](*VP1&4_ ]>%C4- UF;C=BH]M>1W$D*
M+G76"&-CFX"UW&.(==_TK4*$&B7X3;5C?H&@:/$ HHV(&8"08T,RH:RN[ at PP
MN&O$HI:-Y,@$PMB8Y at $MJW<0NO S9\"J)X?KQ$0\(B(H%R1OFU/( 8[^K*%X
M,/39+IC+IQ25TWW[X?;;IRG]8?]BN6&^(+EF$WB QY )24 F!C(1WR)LP 3:
M>MK6'S $\G=Z^D#X(J"P!8*")%&,)/(:WV'MAH"XKD$\]N2 O;XFN[*]7.F
M/%X<3::+"1$6"B$0%BJSNX\(23F!QR]S[!ZY V"(1&33 *#!OK-*P+0//O6"
M%V$Y4 $2BS:+46H2%<M_8;B%W(]_#^.6QV)Q0%[C at *KM#> 8&5MN=MP@>=8[
M[-IYI8,GLTKDD\+G(-DGG0U D dot $RBCJ at +1GW5GSL7K&57OI0FR)\C&1C()"%
M:VM6G-1=G=$*XALW(XI"."%D4L*KA<)]%V TW#V%6">376!L0:/0 X/#OS*
MHX,R;B]''6E-=NZ*(X9UTSW[\]$,3*L$ M2GF:&GL">@G<RB*L%5=6DZ#P03
M7"MH'A$XXKRQ U0 dot 3DH at 6B$A=$K$I%)X&P]3M%5U[_0O"W4EB)1(V[GJ4TDQ
MI3*X:!Z_HIQI=(JG*,%&"M6\1E(2:"U&XIG>7O*0,["1?4%%JTF!698U2.!5
M )70L*6V%BI40>0 G TSO-T36Y+5:Q#5#-JV(M0#-<*EDJ4>V@ <W)53 TU!
M+] (^!A7KD%C_D-L?H>?P $V5F^"C7G2'3N-#B%3Z+9\L<,=<+X8@&OU?(<W
M,#?$![U\IM, %=5 dot _E_ dot _D at +\:X;0)G,H>WC0#(R$B0B/Q:Y&09!DJ!XB"*1
M13ODK->H,Q$6"]!JJJ3Q[X:/9@:VO;Y2 ;]1/ K(!--"V)%:1X"Z!B9%(?-W
M"-/K'V_Q3[A[^&_X><U(R3*E.9"]RG@&!RJR7P+ =E] "T]5((F1"T,2V?H-
MS: E_D<N:427UP T0VZXYW[0$]0$^WCW8N7(U%W(Z[\\:;$$M,@=@"=WMPU.
M,HL$9G$I+9>F GI%4D%(>;+[G'JK%45!$5F&18L><SNQX\):KH"QKL0PL4AH
M >G)V.Q+'*7"WA@&1WM;DU@"2*(>ELI.DH[<S%25NNH9)"1DF -?W$-6>$ 1
M25O;NNSEC[.G)9XH"S.UB*2.,:-J*=Y at -[L 611Q at L&C+=G;.&,RP>!,T4P!
M7) Q1!D!3:D(,BL&+2*X)2F1JT;M<2XB0B(Q&(JPFM;.\W!9!E*%'>Y) Z&:
MX#;QWV^8$.W,!.&SAM VZ-E>QFU &B )+->PWN2,)8K6,!$,N!4HXB]IR8Z)
M\7F!%X1P&G*/),.73CH6AP";DVT=P"5A[ME8*KU&](!H5>9S*Z/9J'(?\ &/
MC8T.)?QFX5-F64E+15A+:**18KW:,.PT=47&>; S$A0:N[RXHT8&""G.E$1(
MRZ1 0UHB)2:7D[@" 8H2$V#3JS VIQVGEE./?]6>ZMG*F654+ )I+;$$1MG+
MPK(#>";(6%6]QMP4U_[D9&,)>5OIJ-2HR5$3JH!Y@)BEM?;V6::=H9$),W/4
M\N.^QIW]YTXS7:5IH^%!K:&OP]5PP#WF/*&00L4484+:DFVWF6H-44J at MOI?
ML1)'MM8N;PXDX[,]LY8 at NSY0$Y )T>LA D)D9:((57G7(U at BQ3(#"AEIMB:(
MC($ at DCAGPWJ@[T&C/!$W$'HT7+!:-2P8&(;.^NP!,,;;% .EX8!RJ(V&TL+T
M"&%0B-%$,@W4A$@>VT=,FL;+$B"L1 at FD:M= 6JTMBXQ&54ML8*0P270&J4,)
MJ$C R,=%%*C*4-,-[J3?I/+EWQP<5;90I144%$55%4$0Z9Q%%CP!#8%5 58*
MH"NY ]**58RLEH#(AA 722)@0"YX=Y<#;G5F0SI"'3-$FIQ@,TK?*;(DG$(8
M"YB*\7K??^$1'9J:[0@)2%E!U/%U>TOH?+V?'UYYYGKV^IW at -ZI)'$](8$/$
MEI;$[NXN. 2D.A2IOY<NO1P$.TU;8Q+&P+$"2%N^R15:-2 at V;+I:&HA-0ACU
M?1XPGT4>T:A4GZ;8HB'YTV@;&+-"XF8$TAL26P(Y"XX)8C27/RV;*ZP<D&V*
M,#0;FN7$4_P=1.=T=*7%$5O!%[RM<)*'93.6WR!9JD'332 at $MZS+EZ6+#(P6
M#&$"$&&DK=Y)NM-*GIPL/-!#+T>7'X*&/'!T/-W2$9-P'7:T6>R0B?,554:G
ML8.?#(F!SAT)*"CM\Y:U$D2Z$37,T[=;J:GPYXX*^Y%486C"BQ;,0$S1 AO
;9A)-=L60(+&=YYAF8*06!]HNY(IPH2",R;,J
end
>Fix:
Using a lower level of optimization works around the bug.
>Release-Note:
>Audit-Trail:
>Unformatted: