Fix pessimistic DImode handling in combine.c:make_field_assignment
authorRichard Sandiford <richard.sandiford@linaro.org>
Mon, 12 Jun 2017 16:06:38 +0000 (16:06 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Mon, 12 Jun 2017 16:06:38 +0000 (16:06 +0000)
commite701e0b9e8c74e5e93764556a447ea334e4e9389
tree3ddda6c404d525cc5ed663ea3b8f6470ade31c0c
parent64ff4f60d0ac97acdfd869d3655cc962923faa20
Fix pessimistic DImode handling in combine.c:make_field_assignment

The make_field_assignment code:

      src = force_to_mode (src, mode,
       GET_MODE_PRECISION (mode) >= HOST_BITS_PER_WIDE_INT
       ? HOST_WIDE_INT_M1U
       : (HOST_WIDE_INT_1U << len) - 1,
       0);

would ignore the field length len for DImode, even though DImode can be
handled using HWIs.  I think the code should be testing len instead.

2017-06-12  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
* combine.c (make_field_assignment): Check len rather than the mode
precision when calling force_to_mode.

From-SVN: r249128
gcc/ChangeLog
gcc/combine.c