https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77498
--- Comment #9 from Thomas Preud'homme <thopre01 at gcc dot gnu.org> --- Sadly I could not come up with a minimal testcase so far. What I can see from the code is that tree code hoisting increases the live range of some values which then translates into more spilling in reload. As an approximation I'm wondering if the maximum distance (computer in number of blocks traversed) from the definition to the use could be used to limit when the optimization is applied when optimizing for speed.