https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62016
--- Comment #8 from Jan Hubicka <hubicka at gcc dot gnu.org> --- Hmm, backporting the code to turn unreachable calls to __builtin_unreachable to 4.7 is quite risky - nothin in 4.7 really cared about correctness of the analysis. While I do recall only one recent bug in that area, I think it is safer to leave it as it is. With sreal changes I guess 5.0 can update costs incrementally. The expensive part here is not really the evaulation of predicates. Just the fact that we create function with incredibly many unreachable calls (that accounts as 0) and we keep re-counting them each time we inline next call. If we just keep incrementally updating the overall size/speed of the large function, this problem will go away (and there is earlier Steven's inline bomb exposing same behaviour)