On Mon, Sep 08, 2025 at 03:05:58PM +0200, Richard Biener wrote: > is reduced to __builtin_abort () (for C++). That's because it's > __builtin_unreachable () at the end. I am not aware of any > other "UB" than missed return that we turn into unreachable(), > even > > unsigned int foo (unsigned int i) > { > if (i < 33) > __builtin_abort (); > return i << i; > } > > isn't handled this way. But sure we could, in the future. > std::... before the return would help in case it is considered > a barrier that might not continue to the UB.
What is gimple-ssa-isolate-paths.cc doing then? I thought it is about obvious UBs like null pointer dereferences etc. and the whole paths can be turned into e.g. __builtin_trap() with it and for anything dominated by the UB that is just fine from the POV of this C++ paper and it only a question if we don't propagate it also backwards across calls (or other statements if std::observable_checkpoint would be e.g. inline function with nothing in it and no special attributes). Jakub