In 64 bit mode (default) with ' -O3 -funsafe-math-optimizations -ffinite-math-only' revision 158105 miscompiles doduc.f90:
MAIN : FIN S00002 MAIN : FIN S00001 MAIN : FIN S00011 MAIN : FIN S00022 TEMPS = 33.00000000 , NITERA : 1 TEMPS = 34.00030857 , NITERA : 186 TEMPS = 35.00175832 , NITERA : 948 TEMPS = 36.00201433 , NITERA : 1506 TEMPS = 37.00275274 , NITERA : 1761 TEMPS = 38.00327697 , NITERA : 2041 TEMPS = 39.00023711 , NITERA : 2323 TEMPS = 40.00315505 , NITERA : 2604 TEMPS = 45.00271328 , NITERA : 4015 TEMPS = 50.00242267 , NITERA : 5490 TEMPS = 55.00059079 , NITERA : 6982 TEMPS = 60.00004761 , NITERA : 8683 Segmentation fault instead of MAIN : FIN S00002 MAIN : FIN S00001 MAIN : FIN S00011 MAIN : FIN S00022 TEMPS = 33.00000000 , NITERA : 1 TEMPS = 34.00031041 , NITERA : 186 TEMPS = 35.00458344 , NITERA : 952 TEMPS = 36.00231683 , NITERA : 1503 TEMPS = 37.00204661 , NITERA : 1752 TEMPS = 38.00184041 , NITERA : 2030 TEMPS = 39.00285193 , NITERA : 2313 TEMPS = 40.00039336 , NITERA : 2592 TEMPS = 45.00193388 , NITERA : 4002 TEMPS = 50.00313592 , NITERA : 5477 TEMPS = 55.00087838 , NITERA : 6968 TEMPS = 60.00257489 , NITERA : 8304 TEMPS = 70.00018172 , NITERA : 10771 ... TEMPS = 1960.00148831 , NITERA : 522874 TEMPS = 1970.00230662 , NITERA : 525415 TEMPS = 1980.00310479 , NITERA : 527956 TEMPS = 1990.00392388 , NITERA : 530497 TEMPS = 2000.00080221 , NITERA : 533037 In 32 bit mode (with -m32) the compilation is OK MAIN : FIN S00002 MAIN : FIN S00001 MAIN : FIN S00011 MAIN : FIN S00022 TEMPS = 33.00000000 , NITERA : 1 TEMPS = 34.00030835 , NITERA : 186 TEMPS = 35.00463561 , NITERA : 950 TEMPS = 36.00171759 , NITERA : 1507 TEMPS = 37.00181750 , NITERA : 1759 TEMPS = 38.00134840 , NITERA : 2037 TEMPS = 39.00251558 , NITERA : 2320 TEMPS = 40.00202537 , NITERA : 2599 TEMPS = 45.00267592 , NITERA : 4007 TEMPS = 50.00070886 , NITERA : 5482 TEMPS = 55.00040603 , NITERA : 6974 TEMPS = 60.00064786 , NITERA : 8664 TEMPS = 70.00043350 , NITERA : 14927 ... TEMPS = 1960.00239009 , NITERA : 526412 TEMPS = 1970.00318777 , NITERA : 528953 TEMPS = 1980.00005908 , NITERA : 531493 TEMPS = 1990.00088071 , NITERA : 534034 TEMPS = 2000.00168409 , NITERA : 536575 The culprit is the subroutine S33022. I'll attach the source for this routine, the doduc.f90 source with the routine commented and the assembly codes for S33022 with revision 158104 or older and with revision 158105 or newer. When compiled with any revision and linked with the object from s33022_w.s, the code works, but not when linked with the object from s33022_n.s. -- Summary: [4.6 Regression] Revision 158105 miscompiles doduc.f90 Product: gcc Version: 4.6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: dominiq at lps dot ens dot fr GCC build triplet: x86_64-apple-darwin10 GCC host triplet: x86_64-apple-darwin10 GCC target triplet: x86_64-apple-darwin10 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43716