[Bug target/48673] New: [4.7 Regression] GCC generates WAW and RAW conflicts on IA64.
sje at cup dot hp.com
gcc-bugzilla@gcc.gnu.org
Mon Apr 18 22:28:00 GMT 2011
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: unassigned@gcc.gnu.org
ReportedBy: sje@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.
More information about the Gcc-bugs
mailing list