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



Richard Biener <rguenth at gcc dot gnu.org> changed:



           What    |Removed                     |Added

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

             Status|NEW                         |ASSIGNED

                 CC|                            |hubicka at gcc dot gnu.org

         AssignedTo|unassigned at gcc dot       |rguenth at gcc dot gnu.org

                   |gnu.org                     |



--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> 2012-10-12 
11:03:55 UTC ---

The issue is how we handle the case of "vanishing" noreturn,

either via LTO symbol merging or via inlining.  We end up with



  if (_12 == 0)

    goto <bb 9>;

  else

    goto <bb 10>;

;;    succ:       9

;;                10





;;   basic block 9, loop depth 0

;;   Invalid sum of incoming frequencies 214, should be 430

;;    pred:       8

;;                6

;;    succ:





that is a basic-block without a successor.



Code isn't really prepared to do sth sensible with this and we will end up

generating weird code that falls through to wahtever basic-block happens

to be next.



We have code to deal with noreturn appearing out of nowhere, but not

the other way around.



I'll try to plug the hole somewhere.  Honza, any good idea?

Reply via email to