From: Jakub Jelinek Date: Sat, 21 Mar 2020 14:39:56 +0000 (+0000) Subject: [gcn] Fix build with RTL checking [PR94248] X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ccf93cd0b21e9c0ff0a1d4ace59899fca25ac157;p=gcc.git [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_insn): Use 'reg_overlap_mentioned_p' to check for overlap. Tested-by: Thomas Schwinge --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5541d9c62d9..3321e883970 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2020-04-29 Jakub Jelinek + PR target/94248 + * config/gcn/gcn.md (*mov_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 8f5937781b2..8cfb3a85d25 100644 --- a/gcc/config/gcn/gcn.md +++ b/gcc/config/gcn/gcn.md @@ -629,7 +629,7 @@ rtx outhi = gen_highpart_mode (SImode, 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;