This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]