This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [patch RFA middle-end] Fix PR target/41993
> It looks to me, that we in fact want:
>
> --cut here--
> Index: mode-switching.c
> ===================================================================
> --- mode-switching.c (revision 193407)
> +++ mode-switching.c (working copy)
> @@ -330,7 +330,7 @@
> short_block = 1;
> break;
> }
> - if (copy_start >= FIRST_PSEUDO_REGISTER)
> + if (!targetm.calls.function_value_regno_p (copy_start))
> {
> last_insn = return_copy;
> continue;
> --cut here--
>
> If we find an unrelated HARD register, we will fail in the same way as
> described in the PR. This was found by post-reload vzeroupper
> insertion pass that tripped on unrelated hard reg assignment. At this
> point, we are interested only in hard registers that are also used for
> function return value. Actually, even in pre-reload pass, there are no
> other assignments to hard registers.
Fine with me if this passes testing on x86-avx and SH4.
--
Eric Botcazou