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



Andrey Belevantsev <abel at gcc dot gnu.org> changed:



           What    |Removed                     |Added

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

  Attachment #29886|0                           |1

        is obsolete|                            |



--- Comment #9 from Andrey Belevantsev <abel at gcc dot gnu.org> 2013-04-25 
10:03:38 UTC ---

Created attachment 29937

  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=29937

new patch



Actually, on more thought I couldn't recall why did we need all the

insn_emitted and EXPR_WAS_CHANGED stuff (that was 5 years ago).  The code

should decide whether do we need to move the scheduling insn from below and

leave the same UID or we need to emit the new insn with the new UID.  The

current code says that the insn needs to have the same UID as the above

resulting expression, we shouldn't create any extra stuff (renaming copies,

speculative checks) at the place of the original insn, and the insn itself

should not be changed while it was being propagated up to the place of

scheduling.  However, for the last two cases (new insns created, scheduling

insn changed) the UIDs will not match, as the insn pattern would be changed

while moving up, so their check doesn't add anything new to the UID check.  And

indeed, the attached patch that only checks for UIDs passes all the tests for

me.



I will discuss this more with Alexander and will commit after additional

testing on x86_64 as appropriate.

Reply via email to