[NDS32] Handle subreg correctly in wext_odd_dep_p.
authorChung-Ju Wu <jasonwucj@gmail.com>
Tue, 16 Apr 2019 09:22:26 +0000 (09:22 +0000)
committerChung-Ju Wu <jasonwucj@gcc.gnu.org>
Tue, 16 Apr 2019 09:22:26 +0000 (09:22 +0000)
gcc/
* config/nds32/nds32-pipelines-auxiliary.c (wext_odd_dep_p): Handle
subreg.

From-SVN: r270382

gcc/ChangeLog
gcc/config/nds32/nds32-pipelines-auxiliary.c

index 024f6757f3dfa0184f7c2770b25f8b5901721b46..083864ec66c614a947e1148993011c3139477a33 100644 (file)
@@ -1,3 +1,8 @@
+2019-04-16  Chung-Ju Wu  <jasonwucj@gmail.com>
+
+       * config/nds32/nds32-pipelines-auxiliary.c (wext_odd_dep_p): Handle
+       subreg.
+
 2019-04-16  Jakub Jelinek  <jakub@redhat.com>
 
        PR target/90096
index 0c043d4c03f56c87c3f66262bb2c8895e5a07688..07ba03787839bc1a3c18f38defe34418028d1c36 100644 (file)
@@ -363,14 +363,19 @@ wext_odd_dep_p (rtx insn, rtx def_reg)
     return reg_overlap_p (def_reg, use_reg);
 
   gcc_assert (REG_P (def_reg) || GET_CODE (def_reg) == SUBREG);
-  gcc_assert (REG_P (use_reg));
+  gcc_assert (REG_P (use_reg) || GET_CODE (use_reg) == SUBREG);
 
   if (REG_P (def_reg))
     {
-      if (!TARGET_BIG_ENDIAN)
-       return REGNO (def_reg) == REGNO (use_reg) + 1;
+      if REG_P (use_reg)
+       {
+         if (!TARGET_BIG_ENDIAN)
+           return REGNO (def_reg) == REGNO (use_reg) + 1;
+         else
+           return REGNO (def_reg) == REGNO (use_reg);
+       }
       else
-       return  REGNO (def_reg) == REGNO (use_reg);
+       return true;
     }
 
   if (GET_CODE (def_reg) == SUBREG)
@@ -378,6 +383,9 @@ wext_odd_dep_p (rtx insn, rtx def_reg)
       if (!reg_overlap_p (def_reg, use_reg))
        return false;
 
+      if (GET_CODE (use_reg) == SUBREG)
+       return true;
+
       if (!TARGET_BIG_ENDIAN)
        return SUBREG_BYTE (def_reg) == 4;
       else