[gcn] Fix build with RTL checking [PR94248]
authorJakub Jelinek <jakub@redhat.com>
Sat, 21 Mar 2020 14:39:56 +0000 (14:39 +0000)
committerThomas Schwinge <thomas@codesourcery.com>
Wed, 29 Apr 2020 07:31:02 +0000 (09:31 +0200)
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>
gcc/ChangeLog
gcc/config/gcn/gcn.md

index 5541d9c62d9f84d17a7bea5cb80fb17b7fe25f46..3321e8839707ab023322477ddd24c13ab566057a 100644 (file)
@@ -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.
index 8f5937781b2b6bfa1af92d5809bc5b8111b999a8..8cfb3a85d2561f3b1eb527277ab675bf39009377 100644 (file)
     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;