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.

Reply via email to