]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - gcc/ira-conflicts.c
poly_int: SUBREG_BYTE
[thirdparty/gcc.git] / gcc / ira-conflicts.c
index 50069c1d10574fc6257c0b0b4198c26bf7b76f57..61c03e2ddfdc16118e1f73e06fd23214a8f203e7 100644 (file)
@@ -226,8 +226,11 @@ go_through_subreg (rtx x, int *offset)
   if (REGNO (reg) < FIRST_PSEUDO_REGISTER)
     *offset = subreg_regno_offset (REGNO (reg), GET_MODE (reg),
                                   SUBREG_BYTE (x), GET_MODE (x));
-  else
-    *offset = (SUBREG_BYTE (x) / REGMODE_NATURAL_SIZE (GET_MODE (x)));
+  else if (!can_div_trunc_p (SUBREG_BYTE (x),
+                            REGMODE_NATURAL_SIZE (GET_MODE (x)), offset))
+    /* Checked by validate_subreg.  We must know at compile time which
+       inner hard registers are being accessed.  */
+    gcc_unreachable ();
   return reg;
 }