http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50327
Bug #: 50327 Summary: [4.7 Regression] Front-end optimization generates wrong code for BLAS's srotmg Classification: Unclassified Product: gcc Version: 4.7.0 Status: UNCONFIRMED Keywords: wrong-code Severity: major Priority: P3 Component: fortran AssignedTo: unassig...@gcc.gnu.org ReportedBy: bur...@gcc.gnu.org CC: tkoe...@gcc.gnu.org Created attachment 25227 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=25227 Netlib BLAS's srotmg.f (== lapack-3.3.1/BLAS/SRC/srotmg.f) Compiling BLAS' srotmg.f with -ffrontend-optimize causes an endless loop: $ gfortran -ffrontend-optimize -c srotmg.f; gfortran -O0 test.f90 srotmg.o \ && ./a.out CALLING: SROTMG Without, it works: $ gfortran -fno-frontend-optimize -c srotmg.f; gfortran -O0 test.f90 srotmg.o \ && ./a.out CALLING: SROTMG DONE CALLING: SROTMG FAILING: 2011-09-08, 2011-08-25-r178053, 05-28-r174379, 2011-05-10, WORKING: 2010-09-28-r164677 (with -O3, -ffrontend-optimize didn't exist yet) Seemingly also working: Current 4.6 branch. implicit none real DTEMP(9) EXTERNAL SROTMG DTEMP(1) = 2.00000003E-10 DTEMP(2) = 3.99999991E-02 DTEMP(3) = 100000.000 DTEMP(4) = 10.0000000 DTEMP(5) = 0.00000000 WRITE (*,*)' CALLING: SROTMG' CALL SROTMG(DTEMP(1),DTEMP(2),DTEMP(3),DTEMP(4),DTEMP(5)) WRITE (*,*)' DONE CALLING: SROTMG' end