The new opt_mode asserts triggered for replace_reg_with_saved_mem
because it was passing bytes rather than bits to mode_for_size.
Previously we ended up with a BLKmode register instead, but
presumably that didn't matter because this is "only" used for
debug insns.
2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
gcc/
PR rtl-optimization/83761
* caller-save.c (replace_reg_with_saved_mem): Pass bits rather
than bytes to mode_for_size.
From-SVN: r256525
+2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
+
+ PR rtl-optimization/83761
+ * caller-save.c (replace_reg_with_saved_mem): Pass bits rather
+ than bytes to mode_for_size.
+
2018-01-10 Jan Hubicka <hubicka@ucw.cz>
PR middle-end/83189
machine_mode smode = save_mode[regno];
gcc_assert (smode != VOIDmode);
if (hard_regno_nregs (regno, smode) > 1)
- smode = mode_for_size (exact_div (GET_MODE_SIZE (mode), nregs),
+ smode = mode_for_size (exact_div (GET_MODE_BITSIZE (mode),
+ nregs),
GET_MODE_CLASS (mode), 0).require ();
XVECEXP (mem, 0, i) = gen_rtx_REG (smode, regno + i);
}