http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57003



Jakub Jelinek <jakub at gcc dot gnu.org> changed:



           What    |Removed                     |Added

----------------------------------------------------------------------------

             Status|WAITING                     |NEW

          Component|middle-end                  |rtl-optimization

   Target Milestone|---                         |4.8.1

            Summary|gcc-4.8.0 breaks -O2        |[4.8/4.9 Regression]

                   |optimization with Wine(64)  |gcc-4.8.0 breaks -O2

                   |- links/info/bisect of      |optimization with Wine(64)

                   |commits included            |- links/info/bisect of

                   |                            |commits included



--- Comment #15 from Jakub Jelinek <jakub at gcc dot gnu.org> 2013-04-24 
16:50:21 UTC ---

Ah, ok, I can see it.  To look at 22354 it helps to sed -i 's/^# .*$//', then

look for 22354 in the dump.  Seems the code is still correct at *.ce3 pass,

Bernd's optimization kicks in during RA time before that and the pseudo holding

buffer is assigned to %rdi before the call memcpy and assumed to live in %rax

right after the call.  But cprop_hardreg breaks this, changes the %rax after

the memcpy call into %rdi, even when %rdi is call clobbered register, and even

the call pattern contains (clobber (reg:DI 5 di)) and REG_DEAD note for the

same register.

Reply via email to