aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2020-03-21 14:39:56 +0000
committerThomas Schwinge <thomas@codesourcery.com>2020-04-29 09:31:02 +0200
commitccf93cd0b21e9c0ff0a1d4ace59899fca25ac157 (patch)
treecad5d4911f7242a46226abde83d37b1ee826a0f4 /gcc
parentafa3d80e86fb538ce7f5f1485fa774c11fdaf0f6 (diff)
downloadgcc-ccf93cd0b21e9c0ff0a1d4ace59899fca25ac157.zip
gcc-ccf93cd0b21e9c0ff0a1d4ace59899fca25ac157.tar.gz
gcc-ccf93cd0b21e9c0ff0a1d4ace59899fca25ac157.tar.bz2
[gcn] Fix build with RTL checking [PR94248]
Building (for offloading) a '--target=amdgcn-amdhsa' GCC with '--enable-checking=yes,extra,rtl' fails: during RTL pass: split2 [...]/source-gcc/libgcc/libgcc2.c: In function '__absvdi2': [...]/source-gcc/libgcc/libgcc2.c:271:1: internal compiler error: RTL check: expected code 'reg', have 'const_int' in rhs_regno, at rtl.h:1923 271 | } | ^ 0x565847 ??? [...]/source-gcc/gcc/rtl.c:881 0x59a8a4 ??? [...]/source-gcc/gcc/rtl.h:1923 0x12e3a5c ??? [...]/source-gcc/gcc/config/gcn/gcn.md:631 [...] Makefile:501: recipe for target '_absvdi2.o' failed make[4]: *** [_absvdi2.o] Error 1 make[4]: Leaving directory '[...]/build-gcc-offload-amdgcn-amdhsa/amdgcn-amdhsa/gfx900/libgcc' gcc/ PR target/94248 * config/gcn/gcn.md (*mov<mode>_insn): Use 'reg_overlap_mentioned_p' to check for overlap. Tested-by: Thomas Schwinge <thomas@codesourcery.com>
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/config/gcn/gcn.md2
2 files changed, 5 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5541d9c..3321e88 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,9 @@
2020-04-29 Jakub Jelinek <jakub@redhat.com>
+ PR target/94248
+ * config/gcn/gcn.md (*mov<mode>_insn): Use
+ 'reg_overlap_mentioned_p' to check for overlap.
+
PR target/94706
* config/ia64/ia64.c (hfa_element_mode): Use DECL_FIELD_ABI_IGNORED
instead of cxx17_empty_base_field_p.
diff --git a/gcc/config/gcn/gcn.md b/gcc/config/gcn/gcn.md
index 8f59377..8cfb3a8 100644
--- a/gcc/config/gcn/gcn.md
+++ b/gcc/config/gcn/gcn.md
@@ -629,7 +629,7 @@
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;