https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90348
--- Comment #9 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Created attachment 46312 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=46312&action=edit gcc10-pr90348.patch Untested patch that implements what was written in #c5. I agree that without further changes to the IL, determining if one can hoist addresses of local variables or not is going to be hard, would require computing the variable life info in each pass that would do something similar. On the other side, admittedly such hoisting results in worse code generation because if the address is hoisted earlier than where it used to be live before, then there will be more stack conflicts.