On Thu, 25 Oct 2012, Steven Bosscher wrote:

> On Thu, Oct 25, 2012 at 12:31 PM, Richard Biener <rguent...@suse.de> wrote:
> >> But, really, why inline noreturn functions at all?
> >
> > That's a good question.  The question then is, why not?
> 
> Because noreturn functions are usually on error paths. To inline a
> called noreturn function is to drag overhead into the caller,
> potentially resulting in poorer icache behavior, increased code size,
> ...
> 
> But I suppose inlining things like wrappers around exit() and abort()
> should be a win. Maybe a noreturn function should get a size/time
> penalty to avoid inlining relatively large noreturn functions.

In this case the function is empty ;)  Btw, even without inlining it
in the LTO case we may discover it is after all not noreturn and
thus face the same situation - a non-noreturn call ending a basic
block with no successor edges.

> > And the question still stands: is a BB without successor ok?
> 
> Yes, this is OK.

So the bug here is really in find_many_sub_basic_blocks then
and your patch would certainly avoid triggering its bug
(or its wrong expectations).  I'll give it testing.

Richard.

Reply via email to