[PATCH] [i386] Fix _mm256_zeroupper to notify LRA that vzeroupper will kill sse registers. [PR target/82735]
Hongtao Liu
crazylht@gmail.com
Tue Jun 1 02:22:29 GMT 2021
On Thu, May 27, 2021 at 6:50 PM Richard Sandiford
<richard.sandiford@arm.com> wrote:
>
> Jakub Jelinek <jakub@redhat.com> writes:
> > On Thu, May 27, 2021 at 01:07:09PM +0800, Hongtao Liu via Gcc-patches wrote:
> >> + /* Flag used for call_insn indicates it's a fake call. */
> >> + RTX_FLAG (insn, used) = 1;
> >
> >> + /* CALL_INSN use "used" flag to indicate it's a fake call. */
> >> + if (i == STACK_POINTER_REGNUM
> >> + && !RTX_FLAG (insn_info->insn, used))
> >
> >> - && ! SIBLING_CALL_P (insn))
> >> + && ! SIBLING_CALL_P (insn)
> >> + && !RTX_FLAG (insn, used))
> >
> >> - /* For all other RTXes clear the used flag on the copy. */
> >> - RTX_FLAG (copy, used) = 0;
> >> + /* For all other RTXes clear the used flag on the copy.
> >> + CALL_INSN use "used" flag to indicate it's a fake call. */
> >> + if (!INSN_P (orig))
> >> + RTX_FLAG (copy, used) = 0;
> >> break;
> >> }
> >> return copy;
> >> @@ -57,7 +57,8 @@ requires_stack_frame_p (rtx_insn *insn, HARD_REG_SET prologue_used,
> >> HARD_REG_SET hardregs;
> >> unsigned regno;
> >>
> >> - if (CALL_P (insn))
> >> + /* CALL_INSN use "used" flag to indicate it's a fake call. */
> >> + if (CALL_P (insn) && !RTX_FLAG (insn, used))
> >> return !SIBLING_CALL_P (insn);
> >
> > Please define a macro for this in rtl.h (and mention it above used;
> > member too in a comment, see all the other comments in there), like:
> > /* 1 if RTX is a call_insn for a fake call. */
> > #define FAKE_CALL_P(RTX) \
> > (RTL_FLAG_CHECK1 ("FAKE_CALL_P", (RTX), CALL_INSN)->used)
Changed.
> > Though, I'm also not sure if used can be actually used for this,
> > because it is used e.g. in emit-rtl.c for verification of RTL sharing.
>
> I thought it should be OK, since:
>
> - copy_rtx_if_shared_1 and mark_used_flags do nothing for insns
> - verify_rtx_sharing is only called for parts of an insn, rather than
> an insn itself
>
> I guess an alternative would be to add a new rtx_code for fake call
> insns and use CALL_P to test for both. However, that would lose the
> property that the default behaviour is conservatively correct
> (even for direct checks of CALL_INSN), so the flag IMO seems better.
>
> Thanks,
> Richard
>
> > Though, it seems no other rtl flag is free for CALL_INSN.
> > Could this fake call flag sit on the CALL rtx instead?
> >
> > Jakub
Updated separate patch for the middle-end part.
--
BR,
Hongtao
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-CALL_INSN-may-not-be-a-real-function-call.patch
Type: text/x-patch
Size: 5007 bytes
Desc: not available
URL: <https://gcc.gnu.org/pipermail/gcc-patches/attachments/20210601/f5b2b8cc/attachment.bin>
More information about the Gcc-patches
mailing list