From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23489 invoked by alias); 11 Apr 2002 16:26:03 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 23424 invoked by uid 71); 11 Apr 2002 16:26:01 -0000 Resent-Date: 11 Apr 2002 16:26:01 -0000 Resent-Message-ID: <20020411162601.23422.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-To: nobody@gcc.gnu.org Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, "Karl Burgess" Received:(qmail 12715 invoked from network); 11 Apr 2002 16:18:25 -0000 Received: from unknown (HELO ttamail1.fast.net) (206.245.143.98) by sources.redhat.com with SMTP; 11 Apr 2002 16:18:25 -0000 Received: (qmail 3146 invoked by uid 105); 11 Apr 2002 16:18:24 -0000 Received: from karl@tarantella.com by ttamail1.fast.net with qmail-scanner-1.03 (uvscan: v4.1.60/v4171. F-PROT: 3.11. Clean. Processed in 0.682964 secs); 11 Apr 2002 16:18:24 -0000 Received: from unknown (HELO KARL) (150.126.27.20) by 206.245.143.98 with SMTP; 11 Apr 2002 16:18:23 -0000 Message-Id:<013201c1e175$20b376a0$141b7e96@KARL> Date: Thu, 11 Apr 2002 09:26:00 -0000 From: "Karl Burgess" To: , Subject: optimization/6258: floor() may return incorrect value when optimized X-SW-Source: 2002-04/txt/msg00614.txt.bz2 List-Id: >Number: 6258 >Category: optimization >Synopsis: floor() may return incorrect value when optimized >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: wrong-code >Submitter-Id: net >Arrival-Date: Thu Apr 11 09:26:00 PDT 2002 >Closed-Date: >Last-Modified: >Originator: Karl Burgess >Release: 3.0.4 (Debian testing/unstable) >Organization: Tarantella, Inc. >Environment: System: Linux barrie.tarantella.com 2.4.12 #8 Thu Feb 21 11:48:06 UTC 2002 i686 unknown Architecture: i686 host: i386-pc-linux-gnu build: i386-pc-linux-gnu target: i386-pc-linux-gnu configured with: ../src/configure -v --enable-languages=c,c++,java,f77,proto,objc --prefix=/u sr --infodir=/share/info --mandir=/share/man --enable-shared --with-gnu-as - -with-gnu-ld --with-system-zlib --enable-long-long --enable-nls --without-in cluded-gettext --disable-checking --enable-threads=posix --enable-java-gc=bo ehm --with-cpp-install-dir=bin --enable-objc-gc i386-linux >Description: Under some circumstances the GCC optimizations triggered by -ffast-math and -O cause the maths function floor() to return incorrect values. The supplied test program calls the function floor() in two places with the same input values, but gets different values returned. The gcc output is as follows: egcc -v -save-temps -Wall -MMD -O -ffast-math -ofloor_opt floor.c -lm Reading specs from /usr/lib/gcc-lib/i386-linux/3.0.4/specs Configured with: ../src/configure -v --enable-languages=c,c++,java,f77,proto,objc --prefix=/u sr --infodir=/share/info --mandir=/share/man --enable-shared --with-gnu-as - -with-gnu-ld --with-system-zlib --enable-long-long --enable-nls --without-in cluded-gettext --disable-checking --enable-threads=posix --enable-java-gc=bo ehm --with-cpp-install-dir=bin --enable-objc-gc i386-linux Thread model: posix gcc version 3.0.4 /usr/lib/gcc-lib/i386-linux/3.0.4/cpp0 -lang-c -v -MM -MF floor.dfloor_opt -MQ floor_opt -D__GNUC__=3 -D__GNUC_MINOR__=0 -D__GNUC_PATCHLEVEL__=4 -D__ELF__ -Dunix -Dlinux -D__ELF__ -D__unix__ -D__linux__ -D__unix -D__linux -Asystem= posix -D__OPTIMIZE__ -D__FAST_MATH__ -D__STDC_HOSTED__=1 -Wall -Acpu=i386 -A machine=i386 -Di386 -D__i386 -D__i386__ -D__tune_i386__ floor.c floor.i GNU CPP version 3.0.4 (cpplib) (i386 Linux/ELF) ignoring nonexistent directory "/usr/i386-linux/include" #include "..." search starts here: #include <...> search starts here: /usr/local/include /usr/lib/gcc-lib/i386-linux/3.0.4/include /usr/include End of search list. /usr/lib/gcc-lib/i386-linux/3.0.4/cc1 -fpreprocessed floor.i -quiet -dumpbase floor.c -O -Wall -version -ffast-math -o floor.s GNU CPP version 3.0.4 (cpplib) (i386 Linux/ELF) GNU C version 3.0.4 (i386-linux) compiled by GNU C version 3.0.4. as -V -Qy -o floor.o floor.s GNU assembler version 2.12.90.0.1 (i386-linux) using BFD version 2.12.90.0.1 20020307 Debian/GNU Linux /usr/lib/gcc-lib/i386-linux/3.0.4/collect2 -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 -ofloor_opt /usr/lib/gcc-lib/i386-linux/3.0.4/../../../crt1.o /usr/lib/gcc-lib/i386-linux/3.0.4/../../../crti.o /usr/lib/gcc-lib/i386-linux/3.0.4/crtbegin.o -L/usr/lib/gcc-lib/i386-linux/3 .0.4 -L/usr/lib/gcc-lib/i386-linux/3.0.4/../../.. floor.o -lm -lgcc -lc -lgcc /usr/lib/gcc-lib/i386-linux/3.0.4/crtend.o /usr/lib/gcc-lib/i386-linux/3.0.4/../../../crtn.o When the test program is run (by typing ./floor_opt), it prints out the following: Test failed! floor(-270.000000/90) == -4.000000 Test worked! floor(-270.000000/90) == -3.000000 The first calculation involving floor() has returned -4.0 instead of -3.0, which is incorrect. The second occurrence of floor() is correct. >How-To-Repeat: Here is the .i file for the test, compressed with gzip -9 and uuencode: begin 664 floor.i.gz M'XL("$:8M3P"`V9L;V]R+FD`[3UK<]NXM9]7OX+USG8LQW%$27ZMQMMI=]U< MS\TFF23MM).F'(HB+284J9*4+=UM_OO%`?C`&Z"DS299:R:.!)QS<%XX``Y` M\%O'=0ZB),ORD^"@]RW\>K(J\B=)/'UR&P2/X?]X='&&OJ2K]9/1R>!D_"1. M@V0U"Y\4Y2S.3N8'"&N$<$?G6R&/J&;KRBCTRU4>%BWQX<5(`R.C46R*)\$L MC!@B8PV1(9'"'79LZ#9=(6E64ZJAD3LR-W2QE;H`&7^Z&PLIHV71O;S<#GW4 M*S?+$/UP5FD1WZ;AS(G3TBGB_PN]6(/'P-C3SCTF"WF@2K"$3FPI,) M4BN*!V#T1)A`?]TS*1$::B6`,0I%?T=#3Z/P!D"A&H5&T=^SL5JA:DLTB`U' MM;J=(_3-G\URKK8V'OHZ"^]H62I_P61G\HI;L:+RI3C-Y"B+;!;*:U+4@3[0 M591@612Q2`W3"5=%X)\H!H89;M8"\Q=#?99DKC%:Y$/*%)$QK:RC&\V4YST-_Q@_K M(QO8D8IH$M%?E%";0^XH'MFB:8O!3#`$8&Z99S"#T3O(]-) M>.*SL`ARKRH]8HLG;`]M=%,#^24R?('9JL)76/K!'/@*)SU&7\LLB0.L+)F& M&RCXT6+&Z3Q$.L95-+ULB*=$>EEAE)0A^'E&]PZD95]W[<1G#%*MM",*ONJ%*M:O%8L,C MM1Q*>UX-V@1570,+#\V$P_R.5O4"M;)*2ZDD"R^[3\.CV:W9UNO>[YU M3L=;+I[Y'GOSPOOKS;-K!_X`[V?[)NQY->GS\=X6_`B3224,5?4R9.\I])`H MOFT)7.I`1I;+3'>@HU(OQ'=<(@XOSG==AS=.>P]32.*R;1IC/\O[^YC,7I"T MIR:M2`9(H_XQZZU6QA>J^M&N"A<6H0UI70:"X^_4U1%!O>Y)6B M!6`S%2&J1_6(Q@275.M>]'OZ=MPL--"R8X4'-11#IWA@)@8;&@TF8ZE:A,$4 M(*LF'@W5:D)"&GOJ10B"63-S5&!::DN'3&&I))*U!]VBZCM-CJBIWS(]U.`K MW.0K\^#AI5;^G3-C0SUY]`G3U:)RHJ<_OGC^=^_%_SI7SN"8*GG^`OYC2W[Z M"_O[Y^N?CWM4R?7/+]_\T[MY_O)O;VC`O_[MV3/OQ=_><,4WSYY=/_WS,Q'^ MYOF/+WY^^>SZS75=)\'ZZ?KUCZ]N7KYY\8I%?7/]ZCFJOG[UZL6K:M(N2'OS MVGOVY]=O0.3U8#!P&0I/G[]X=4WP7]<0PXI2,^O&*D4]+%Q.9(4>FE/Z0DV2 M^3,T5\^F[\.@%&K+W$^+"I&;AAT>U4!14/:=0TF+SM&QHV($U>'8IOI`>$R+ MDDO^'2&*BAH].9%,M4!`WY`T^$]_HA0Q3N-2)V>_C89X-=)BAFC^KT=4-DJ4 MK].N5F3RT>B_6CC94-E*YP9#[M#L5L1J@VO,3#2.OJ+51VWO2DF[J&`/6E3X ML:`)HW#_687YIA*MYJ>FQ?X^ZL"8M6ZICD04BYJE&U5W)(+?=B>"#@TJ8Q:* MKSB(PLXA0I(@2I@`LJ!>&O%14M1IE)X:&X1Z>/ MRC!:)5@0UD!*W=?>)/0_--]=E=-5-%%7A9#9H-J/$O^V8$KB]"X+_!(V@5IK MT-6H)/43R/97VF]GU$>50$OE5!M3TCH>_C51)!,;HT89\<`ZKY:"8@J)5Y.Q MR?.:>G:72SD@$2LX;]_!\J#M]GAU8%S2M(M86$I)N@H(`.Y.9;&:%9<.U#$Q M7"_'@FPQC=-P5BUNXII[-B7\M-Z9Q(G=,H^G*V0NSSD\K/;./`C+_W/C>?U^ M?R+!A?U&+>YK'I?-V#]M-CV[<2"C8L\+6@",5"F>*B$VLDD!V:X]_)Q*#HU' MVV&/J&V7Z2I.2A1I[GPOB0OL#>DJJ'].Z(R>0D#W;*"6D$JZO5\MELAO^#P< M3L6<:T@PPR9@M;L.5%!#Y0L__Q#F#MU'VM*C:AARA#S@D5?@0-=&)KS`AY,E M&M/AH`)K'=Q#9F%P5T(R>I74^8*Z,/MPS/Q>^GD9^PE;&.9YEK-%:08=K4?V M:9H\3!N0J]'N"`/A=/"RS"=B:4ARX5SIU"]"MO@^CU&G4)4+M$FQ M0!QI74(#2LG0T@S1J+3P[]@&2?'4#SZLEI(*#%^3D7D#^5+P]95'($)QVDXF MHC@)TW8,KG9J)W1V*4MF\!7OW&"%\Z=<@E6.;)NL%BG9Q:$.?MR5_C0)&_0Z M+X81D3K>NN\JFJWW(Q[)I@23N:+XH^<(2W_F3MC?PU9V"'JM,;Q5 MBD;KV?"M>^HR[>C-/F85OPD"/]V1OF?TL*+'8W.4:HYKP`0G(QTH2FM]0/?. M/L3A<3.70O8]IN8>TTT9%OWZG(&**NE0,K+\O!C(]VQ7.:A]L>EJKI9Y11A^ M4+19>]@13HX>5SCW_8F,3I!DA8QY,II>GJEU7-FK.B*2(L-$27:/QN.FX_:= M"0=EA,CN1#(D:])"MIEK4ZL4I!64O'52#PAHD!]::@3AWX9E0%-"D_(E+S"J M7*X`K%HF'3M&^`CW:`LP&,5D@`(#R)7(AC.*@3)XG$@D.,VP'P$\1&*%4EO` M56H`;3@N\XT*%";G]IJ_BXK`3QDMP0&L$,66."C95`!=T5.G5.AY&.E21RVB M1)B[:)FC[YREY"S8<,"Q0+5(12,PIC]+A,. M=[.%Y=0[66@2N^7Q;/7I)(!`'K&@]I='E[L<`:_43/2(!_*)4(8&;+$0Q9MZ MN*+Z0AXN4%3EDX`>F<3YBY`/2#DN%>'1C$X<3]/PO@Y0##?E8DF""#@+\85V M4=-5\Q5ETB:BC/AS#FL."JY]&LK+.3C$Q<7Y7K@(*S9XAUPL M$1;3?H)"+RRC)[P%(SQ%<`[K&(8B5>@O>+M%$9JGS:50$CB/#`HPWH@(:(7E M[F@L0C3*EF$J*JD.MD[KA?*XJT&$>7A!ZZ!J,0]W;-/AT M1@2LLHR23MFH!E;*H]W:Q,$>K9+0Q+GU%$'`8YFN$(KH?8C4W7:TY%IO3Z,7 M]+J!"PJ4%&A6MK?&Z:4"?"&M,Q$S'9'IF/6%1L]>UET19OO#1$'YR M MA?N7B[5?JF^]\>N%OT;14MF6E4E-8Q^!):EDPI;G'3NC8V>,D\JLUO;"N+,7 M@W819=#DQ\>[160<*:K55;=`L65/KQ9RVR&;L8L=>44J/1OL0:4D62`&:0I& M!=+C@8#I9NHK3LD!1#L!$\E1X#1=7@`M56&X8?,>6C:,L#T>&NN@0I"K`3-` M<:RE+M"W0Q29$O'X%$NE]GNCJ1'%^YK*O8%MXLA@I$(5NJKGYXXU$TEN/*'3 M83NM9UBVBCKALX]^A914&`)`)X'WT=GE/!7B,+E*29_7NR:;SHD@R=UFC$RHA>>"U=8<=%:'3!L4,WM1RQ9& MXL(>Y-OXV'+,/2;;;!K,PS1@#\#)\X> M:A9551J.4WE6Z.;'L#?'T*V)U59LB0(E(M"N2VRLLB`)_3S,\#F&#( M)H`N;C"-VLX+H'%[6&#"=FZ`V5G6FQ>*&,E,\C:%E^+D8Y->9I'(+P!#4#"9 MAK,_R%KG[A[<#^]%VTQW,*!1"5P^:2G/)@798N&GNMP+.U%09_"$*4*`OB_@ M1"0W&I^Y%WOP;6K7R)@H9':#-%,A0IC>99(%F[/1Y:^0>:>>/!AI@4:M<\9P M14$(,O:L%O@+Y6(0SI;D8;D")31I"I*>/VXQ`732^]CK25E@UPLTR78+$^\" M5#345"2^'2T9BGB%NNP__H$^^.+\<.4(Y2$:,_Y$;1CCG.5<58B.Q4H-? MJ<0:AY$L,SD)*V^1R2>IDDA7!YHNLLD;Y25#$==UMPBG^DF)QL+X;)[S1V>P M=@=]YP]7SD"C8=-TQJJ=(=T./$X]V&&K>MA>MN8,%1=D+/QRKGD,L:ZVO39- M@2ZY1HPQX'QU&\(3I12I4Q.<)4MG)CK5_6AC$^LJW@&0?6#2U9""&4<''3I`O,;?K`W*(3S&UZP=S"?^ M+"8%89P8:8DP`IW(GW*#K+C+C7,E^*R:&'@ZH8NMPS3:)(8,2*2$NF<7\QG@ M^70BZN)HU*'[/[ZGQ5;3^NY =3@TCZBUHZ8,K-12R=B?&@;"JSL M[YLQ5F83II;'=+68K@:3G(.L%2Q%%T`X&ALMWQL-WQLMWQL-WQLSWR*(="*: M1SH>V&H1-S`@!VKLY-9?+'P=O@"!KP+MOD0R-B2T(],4X<9KAHUF/@R]%=4M MU2+HD:2MY?A.#'V8DL`(=.`A73\JPWQ/X6E'>E)1PX4?PV-@7<*_#9)D#$`^ M,E5@I-*1P(#04[21RI8SZA:4X'R8U4RTJU`NGV:?C;6)KHOA)TYTH0F87^)% M/HHOY`EQ1,CT14M$!.&)E+Z1B`@B(3*D0#;'CHF@!KS'43?KRJ@J MLZ:,BC+K2:*F;HFM1MRY6=ZY4>"Y6>*Y4>2Y66:12$]T]KF%M\_-[CZW\/>Y MV5?G%AXO$XLC%:Z7!D(B1-=4%L'%.2F:DBZ350-9(?$RX924B*1MR`9':">[ M->A.A)#0<`=F*@(,3P>R42S[Y*N8P*I!S!@R9UFX9G<18&1"+RV$7IKI3,UD MIA+W[9*X(KC+[%ZF+7:&4Y=I@7DI(!]EBG,BB&`:=IG:P7,0(\:*'%)BD:#+0!T34,10J9FA%8D&JI8@7P2+M#E MH#CVM3BRMJK#J+I0)`'AJ33YHKV$H-VHR82LTTCV@=T"18SND.21PZ>R$*\' M[\GII[*UAY*\$EJ61?B*G`E\:$`OCEVNC1G2:`GY:";73J9I9M5.AFE MFTV4)NF6)N/4-N^FMWDGQ277S;KI3$>^I.OJ\8T^?=^OJ\XY]?=ZM M/\X[]G:U>J1-A.MEAP94T%W3>30%G)\3J>I2>RQH!P)R'>#$G8J`!0/V^(KV ML]L.-E!!*VF[@V[4%?!R^I!/D(E.%X@)1!:\&PVU(R_<;JZL@%PRSJC`%0Z"LY6[B->!@"K: M0G:SRS@]U8BH:"&,DRXMJ,#EU"'E*0.W6<-Q07L+2@J>($G:060UO((^"D^[ MN(T]OB+]*B!OG83=DI*8BMV=I9T8DN@9TJV[6,D>7]'QJ+1LI\FR'DO9S:M< MK!7+W7OGWLCOD/;=UEGYY._^?.P]-S%26E4"**7GVM)S[>B!K#C):D54`2VC MO+&5?&,G^<96\HV=Y)M.DJN@U8ND/++D5P:IH!C8DPRL:))$KR55!7#7U#9- MM$OSBM:5%JC8A20V5:Q+?TO%M<%#(T;,&5I>JUW4LEZ=0YGH,W9NZ[Z M@6CZ.A_2F]@KBT6,^I;U]@6G-]?7UYYSY3PF[S1]_?>;GSS\[1\O7EX_)U]? MOGA]\P_R]>;UBQ\]>(G6LYN_>'^_?O7ZYL5S[\T_7UXS)A%JF1)RQ_&IDLGJ M72;A.@B7\.*U7O,N,)`41*#>O'Q4OPK/:3)X^:W+%PR9@CPLT80$OQM,F&L# M&_@:*9X+DM8*R'V@IX-M=E+(=0C4T_>7%J#BI0VMS[:/K%!.IX4CCO=+* MMW:NKIS!R<#Y$_[[/=PHL79^J(I<7/08_8=BW$>AA69WJSVA(&-$`K9?/KBN MS$^B93P94';B3WJK"IVR&5J9C09L^;F-"W@40#*_GJAJZVSHA'O;'X:BKK!; MPH4B3"&,2NN)$T=$W*LK3J\(![B"+#N\1.PN2_PR3O#X=0#WW2;A`=++P55Y M``2J50`J&*#?H*QCYV"%J]8PB#;*KL3YJ""70%[C'93DE4AZXDDT/I>$>7.[!Y;9P M.2$_/>P:C$6Z=4.F'5NEP!;4M@*GD?IEV3P#F/*]]O/!67/FKZQI_$HN]) MR`%?'@].=U@="%?9["%ZFOU3\,TOV2^_Y"F?\/C7@_E_'^:W.&CTX`I?I2N8 M9S4/SO#[<09E`DJX!'%+#\"U0\FN!7F[-MD6D4NZ1#P(@@XI1?*2K[L,?<+# M\%^/@!8'H+]88?%[<7:9\1KN+C4I1B&<+Y..$:;ID!M]3?B;<6Y^_TWT3(/%_5(F19E<8\&57]=E13^/*J^ MOE]^XTX[">FO#U!)$'3I,MI'JK]X&;Z!8:I]E_"0]N1$1BCT84KF+K;,1]\6/Q M=.V61MR20Z41A>O:NQLQF27I<.)`S@7]W23#M8%#^YHF.KEM33/U^7@K9V?A=RV)-=JQ3.:__")^Z2V<1I7JY'SGRMX[>C=^2H5>I< M84((#!_"<#Z"CM(3##1\1]ZUU_Z$U]%=#`:#OO-?]&T411$%[@(XJ8[9$2$%RK]HMZ^6\!!HO:LDT>OX%J##DY.4;\^K!">--\> MP496'Y];@=]]W/DK\^CCF'A-[F?%I,TE++\EPYI5M?AB+@VC-9L-99$UP@YB M#W[TM>LN>XONI5V;:WCVS$-/NZ&Z=;=[3'L(-CR[@A,<9`@.0KG%8WUO$V^3 M_AQXL[F,Z#?@4Y>RDKR]R)QQKX?6=M0IYEE>5F-/<&\#4\J.AL)(G19E<.]\ M-R##]`*/RL$]V:;%:-7;8>_Q4!6A$8H,58/Q8""GF,P:@HAD31%1DNW]`@(Y MB:'?$^AW::O+-K_DHMX'B_Q&%K&Z&^3!.I_&.G!'XV"TPSQ2?.'G/+!*7\KI[2ZL?3!01\<]%,] MVJD=T27O?C?Y)GD^GF!2A[CB"Q']@#WKIZB<_6QV1E[Q5[/>L%*L[DG]'"H*% MP.DN&0^_P];9!B>?F?..%4.'M2T`Z`B#/J%VRMO29I^GV>[9"'L]AA,3MEG] MWY);JUO[/P?.=?'8EV^K84:(^]>[#DWS>"QO]AC:4L*'X8S'7''(8W]M6;VK M8?=V]><_=N]MCTF4JGWA\2&Q.+;QDS8HH56U_>:TWV&_[%-Q9O5RBD_-I:[' MX#O;]8\@5?&;\AM\>(@T2#JOQDKZ=V#N0G^[N^L[M*B;]DWWDL=YOTH_J&;# MZQ+FZOR\%S#V]>RM^%JJ+TP,F]=#?-XBP9OG3X<[3(;@6G:K)PB5/FN7BIT?/@/=_-$G.>*Z-=T3:=V>,M2^3O1WH8>M;OO_&C4#G>IL MJX?3D:2]^ET03("O=AC(C)8YOXBOJB6?0_C4QQG;%R=,ZIN%WP[A]"+2.2K$ M^86/_1,H=M]11-#GO^0T8@2?%9X1H^7>#\[(A;NE/VJO*X498KO'H+VPE`7] M)(?ER.0$"G377Q+&;"[`9"$_`Q'$M\@M.I^;E6%]>M&T7H87(FWB2^MF'*RX M8*D6A_R21;)8&>H79$U;-J[#@?XJ;$G>G,=G?\SN($7;![OX9FQ7>YWY.8KB M<$#H)$`E<`7VL"WH%26*_4&].[N(?\)/5/C]7KW\F?1^:>(:OH']V'D_:4J: MV[V+2:\I1+^0'^,F#OTGEX-^"P\9,%Q]Y3P>(1&8D+G$+]H]=`[>A$7IW&?Y MAW#VAXK.=Q$0`KSOT/!S<.SXQ[@=BC;DP33T(A^-<3;T&&:K0XA^#4V^_,*& M>H"%'7Y\?RF&/:&%KC_O`>8PQED_N,$:OG[G'(YA%(2_C]&2L"ZBT#]2BL6. M0DR$?&)TXH[=T\OAV>GH].+R_'(T'%V,SU!(<"\(!R@`D`O6X_2P7QFR-BQ< A0#\\1W#VU)8DO'"+`_E=FVSJ.@G[^']=/L<$![``` ` end >Fix: I have a choice of workarounds: If you don't compile with -ffast-math, then the test program works. If you compile with -ffast-math, but not -O, then the program also works. If you compile with -O -ffast-math -fno-inline, then the program also works. If you compile with gcc 2.7.2.1, then the program works. If you redefine floor() as a call to one of your own functions (eg. myfloor), which then calls the real floor(), then the program also works. I have also noticed that the problem does not occur with gcc 3.0.3 on Solaris 2.6 >Release-Note: >Audit-Trail: >Unformatted: To: gcc-gnats@gcc.gnu.org,debian-gcc@lists.debian.org Subject: floor() may return incorrect value when optimized From: karl Reply-To: karl@tarantella.com Cc: X-send-pr-version: 3.113 X-GNATS-Notify: