mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-02-04 22:40:16 +08:00
expr.c (expand_expr, [...]): Refine the test forcing usage of bitfield instructions for mode1 != BLKmode...
* expr.c (expand_expr, case BIT_FIELD_REF): Refine the test forcing usage of bitfield instructions for mode1 != BLKmode, only ignoring SLOW_UNALIGNED_ACCESS if the field is not byte aligned. (store_field): Likewise. From-SVN: r66492
This commit is contained in:
parent
f5119d10fa
commit
9e5f281f99
@ -1,3 +1,10 @@
|
||||
2003-05-05 Olivier Hainque <hainque@act-europe.fr>
|
||||
|
||||
* expr.c (expand_expr, case BIT_FIELD_REF): Refine the test forcing
|
||||
usage of bitfield instructions for mode1 != BLKmode, only ignoring
|
||||
SLOW_UNALIGNED_ACCESS if the field is not byte aligned.
|
||||
(store_field): Likewise.
|
||||
|
||||
2003-05-05 Aldy Hernandez <aldyh@redhat.com>
|
||||
|
||||
* config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Add
|
||||
|
12
gcc/expr.c
12
gcc/expr.c
@ -5626,9 +5626,10 @@ store_field (target, bitsize, bitpos, mode, exp, value_mode, unsignedp, type,
|
||||
/* If the field isn't aligned enough to store as an ordinary memref,
|
||||
store it as a bit field. */
|
||||
|| (mode != BLKmode
|
||||
&& ((SLOW_UNALIGNED_ACCESS (mode, MEM_ALIGN (target))
|
||||
&& (MEM_ALIGN (target) < GET_MODE_ALIGNMENT (mode)))
|
||||
|| bitpos % GET_MODE_ALIGNMENT (mode)))
|
||||
&& ((((MEM_ALIGN (target) < GET_MODE_ALIGNMENT (mode))
|
||||
|| bitpos % GET_MODE_ALIGNMENT (mode))
|
||||
&& SLOW_UNALIGNED_ACCESS (mode, MEM_ALIGN (target)))
|
||||
|| (bitpos % BITS_PER_UNIT != 0)))
|
||||
/* If the RHS and field are a constant size and the size of the
|
||||
RHS isn't the same size as the bitfield, we must use bitfield
|
||||
operations. */
|
||||
@ -7571,9 +7572,10 @@ expand_expr (exp, target, tmode, modifier)
|
||||
/* If the field isn't aligned enough to fetch as a memref,
|
||||
fetch it as a bit field. */
|
||||
|| (mode1 != BLKmode
|
||||
&& ((TYPE_ALIGN (TREE_TYPE (tem)) < GET_MODE_ALIGNMENT (mode)
|
||||
&& (((TYPE_ALIGN (TREE_TYPE (tem)) < GET_MODE_ALIGNMENT (mode)
|
||||
|| (bitpos % GET_MODE_ALIGNMENT (mode) != 0))
|
||||
&& SLOW_UNALIGNED_ACCESS (mode1, MEM_ALIGN (op0)))
|
||||
|| (bitpos % GET_MODE_ALIGNMENT (mode) != 0)))
|
||||
|| (bitpos % BITS_PER_UNIT != 0)))
|
||||
/* If the type and the field are a constant size and the
|
||||
size of the type isn't the same size as the bitfield,
|
||||
we must use bitfield operations. */
|
||||
|
Loading…
Reference in New Issue
Block a user