[Bug rtl-optimization/60501] New: LRA emits add patterns which might clobber cc
krebbel at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Mar 11 15:13:00 GMT 2014
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60501
Bug ID: 60501
Summary: LRA emits add patterns which might clobber cc
Product: gcc
Version: 4.9.0
Status: UNCONFIRMED
Severity: critical
Priority: P3
Component: rtl-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: krebbel at gcc dot gnu.org
Created attachment 32333
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=32333&action=edit
Experimental fix
This actually is a follow-on to #57604.
While debugging 435.gromacs I've noticed that LRA still emits add patterns
which might clobber cc without actually checking whether this is valid.
no lra:
4982a6: eb e6 00 01 00 df sllk %r14,%r6,1
4982ac: a7 78 00 02 lhi %r7,2
4982b0: 40 7e a0 00 sth %r7,0(%r14,%r10)
4982b4: 40 7e a0 02 sth %r7,2(%r14,%r10)
4982b8: 40 7e a0 04 sth %r7,4(%r14,%r10)
4982bc: b9 f2 30 06 locrnle %r0,%r6
lra:
49823e: eb 9e 00 01 00 df sllk %r9,%r14,1 <-- cc set
498244: 18 69 lr %r6,%r9
498246: 1a 6a ar %r6,%r10 <-- cc clobber
498248: e5 44 60 00 00 02 mvhhi 0(%r6),2
49824e: a7 78 00 02 lhi %r7,2
498252: a7 38 00 04 lhi %r3,4
498256: 1a 7a ar %r7,%r10 <-- cc clobber
498258: 1a 3a ar %r3,%r10 <-- cc clobber
49825a: 1a 79 ar %r7,%r9 <-- cc clobber
49825c: 1a 39 ar %r3,%r9 <-- cc clobber
49825e: e5 44 70 00 00 02 mvhhi 0(%r7),2
498264: b9 f2 30 0e locrnle %r0,%r14 <-- cc use
Apart from the no lra code looking much better the LRA variant is dies with a
miscompare.
A potential solution has already been discussed in:
http://gcc.gnu.org/ml/gcc-patches/2013-06/msg01174.html
Richard proposed to have standard pattern names for pointer arithmetic. I've
tried to implement this for S/390. With the attached (untested) patch I get the
following:
97e: eb 9e 00 01 00 df sllk %r9,%r14,1
984: 41 69 a0 00 la %r6,0(%r9,%r10)
988: e5 44 60 00 00 02 mvhhi 0(%r6),2
98e: 19 0e cr %r0,%r14
990: a7 78 00 02 lhi %r7,2
994: 41 37 a0 00 la %r3,0(%r7,%r10)
998: 41 63 90 00 la %r6,0(%r3,%r9)
99c: e5 44 60 00 00 02 mvhhi 0(%r6),2
9a2: b9 f2 30 0e locrnle %r0,%r14
More information about the Gcc-bugs
mailing list