This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug tree-optimization/54824] [4.8 Regression] ICE in verify_loop_structure


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?


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]