[Bug target/94248] [amdgcn] Doesn't build with RTL checking
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sat Mar 21 14:39:56 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94248
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jakub at gcc dot gnu.org
Ever confirmed|0 |1
Last reconfirmed| |2020-03-21
Status|UNCONFIRMED |NEW
--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Either:
--- gcc/config/gcn/gcn.md.jj 2020-03-03 07:57:42.363827602 +0100
+++ gcc/config/gcn/gcn.md 2020-03-21 15:35:22.395639196 +0100
@@ -625,7 +625,7 @@ (define_insn_and_split "*mov<mode>_insn"
rtx outhi = gen_highpart_mode (SImode, <MODE>mode, operands[0]);
/* Ensure that overlapping registers aren't corrupted. */
- if (REGNO (outlo) == REGNO (inhi))
+ if (REG_P (inhi) && REGNO (outlo) == REGNO (inhi))
{
operands[0] = outhi;
operands[1] = inhi;
or:
--- gcc/config/gcn/gcn.md.jj 2020-03-03 07:57:42.363827602 +0100
+++ gcc/config/gcn/gcn.md 2020-03-21 15:37:45.337552515 +0100
@@ -625,7 +625,7 @@ (define_insn_and_split "*mov<mode>_insn"
rtx outhi = gen_highpart_mode (SImode, <MODE>mode, operands[0]);
/* Ensure that overlapping registers aren't corrupted. */
- if (REGNO (outlo) == REGNO (inhi))
+ if (reg_overlap_mentioned_p (outlo, inhi))
{
operands[0] = outhi;
operands[1] = inhi;
ought to fix this, but I don't yet have setup where I can sufficiently test it.
I think the latter is better and is in line what other backends are using.
More information about the Gcc-bugs
mailing list