]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - gcc/config/nds32/nds32-pipelines-auxiliary.c
[NDS32] Handle subreg correctly in wext_odd_dep_p.
[thirdparty/gcc.git] / gcc / config / nds32 / nds32-pipelines-auxiliary.c
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