https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72785
--- Comment #7 from Marc Glisse <glisse at gcc dot gnu.org> --- (In reply to Jakub Jelinek from comment #2) > This is undesirable, iftmp.0_2 really isn't constant, so we shouldn't turn > it into sometimes constant, sometimes non-constant. I am not sure about that. The way I use __builtin_constant_p for optimization purposes, I'd be happy to see the kind of threading that is going on here. The discussion on the linux ML also doesn't clearly conclude that the code absolutely has to be written this way. Maybe we could get 2 separate builtins, one for optimization, and one for checking, since the desired behavior is not the same?