https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119681

--- Comment #10 from Artemiy Volkov <artemiy at synopsys dot com> ---
(In reply to Andrew Pinski from comment #9)
> Note I think the bigger issue is the RTL unroller does do introduce new
> pseudo registers when it is copying basic blocks and does not do live range
> splitting which is why you get the moves inside the loop. I think your hack
> might fix the exit block, it does not fix the overall issue.

CMIIW, but this live range splitting is done a bit later by web and works well
in the case where those pseudos' live ranges can be split without changing the
CFG.  To handle the case when multiple definitions of a variable are visible at
the exit BB, you need to create copies of the exit BB before you can rename the
variable, which is what I do in this patch.

Reply via email to