Remove word_mode hack for split bitfields
authorRichard Sandiford <richard.sandiford@arm.com>
Wed, 8 Jun 2016 12:18:27 +0000 (12:18 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Wed, 8 Jun 2016 12:18:27 +0000 (12:18 +0000)
commit867a0126bcb8e2ea2b9ef900ac8b6b75c4fc6382
tree40883c86eea64895001fccfa98cda344648a1326
parentd821b79474ab6c3513fe0060decff0ecd5934fc0
Remove word_mode hack for split bitfields

This patch is effectively reverting a change from 1994.  The reason
I think it's a hack is that store_bit_field_1 is creating a subreg
reference to one word of a field even though it has already proven that
the field spills into the following word.  We then rely on the special
SUBREG handling in store_split_bit_field to ignore the extent of op0 and
look inside the SUBREG_REG regardless.  I don't see any reason why we can't
pass the original op0 to store_split_bit_field instead.

Tested on aarch64-linux-gnu and x86_64-linux-gnu.

gcc/
* expmed.c (store_bit_field_1): Do not restrict a multiword op0
to one word if the field is known to overlap other words.
(extract_bit_field_1): Likewise.
(store_split_bit_field): Remove compensating code.
(extract_split_bit_field): Likewise.

From-SVN: r237211
gcc/ChangeLog
gcc/expmed.c