Richard Sandiford wrote:
PR rtl-optimization/19683
* reload1.c (choose_reload_regs): Pass the number of bits, not the
number of bytes, to smallest_int_for_mode. Fix arguments to
REG_CANNOT_CHANGE_MODE_P.
Unfortunately, this change triggers PR 20927, an ICE on s390x
(a regression of 4.0 over 3.4).
The problematic case is where we reload:
(subreg:DF (reg:TI pseudo) 8)
When computing the "needed mode", choose_reload_regs now calls
smallest_mode_for_size (128, MODE_FLOAT)
which ICEs because the largest floating-point mode on s390x is DFmode.