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



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



           What    |Removed                     |Added

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

             Status|UNCONFIRMED                 |NEW

   Last reconfirmed|                            |2013-04-16

                 CC|                            |jakub at gcc dot gnu.org

   Target Milestone|---                         |4.8.1

            Summary|Bad optimization with       |[4.8/4.9 Regression] Bad

                   |setjmp()                    |optimization with setjmp()

     Ever Confirmed|0                           |1



--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> 2013-04-16 
15:46:43 UTC ---

Also happens with -Os.  Started with http://gcc.gnu.org/r190284

Eyeballing the difference between r190283 and r190284 -Os dumps, I see that

*.copyrename4 is still the same appart from losing some SSA_NAME_VARs, but

*.uncprop has one difference:

-  # n_13 = PHI <0(5), 1(6)>

+  # _13 = PHI <_3(5), 1(6)>



The missing n is fine, but _3 instead of 0 there supposedly isn't.

_3 is set before the setjmp call, while this PHI is after the returns-twice

function, and while for non-zero _3 the code before setjmp exits early, so _3

should contain 0, perhaps while extending the lifetime of _3 over the returns

twice function it should have added SSA_NAME_OCCURS_IN_ABNORMAL_PHI or give up

on it.  Richard, can you please have a look?

Reply via email to