http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48673
Summary: [4.7 Regression] GCC generates WAW and RAW conflicts on IA64. Product: gcc Version: 4.7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target AssignedTo: unassig...@gcc.gnu.org ReportedBy: s...@cup.hp.com Starting with version r171842, the tests gfortran.dg/sms-1.f90 and gfortran.dg/sms-2.f90 are failing on IA64 HP-UX and Linux. The failures are excess messages during compilation like this: $ 1.23-trunk/bin/gfortran -c sms-2.s < sms-2.s: Assembler messages: sms-2.s:413: Warning: Use of 'ldfs' violates RAW dependency 'GR%, % in 1 - 127' (impliedf), specific resource number is 15 sms-2.s:413: Warning: Only the first path encountering the conflict is reported sms-2.s:411: Warning: This is the location of the conflicting usage The assembly code generated by GCC for sms-2.f90 has: .L9: ;; addp4 r15 = 0,r14 fadd.s f6 = f6, f7 ldfs f7 = [r15] adds r14 = 4, r14 br.cloop.sptk.few .L9 ;; So we are changing r15 and using it in the same bundle and we should not be doing that. This could cause us to generate incorrect results. To reproduce this you can compile sms-1.f90 with '-O2 -funroll-loops -fmodulo-sched' or sms-2.f90 with '-O2 -fmodulo-sched'. I am not sure if the problem is in the general scheduling code or in the IA64 specific target code.