expr.c (store_field): Force usage of bitfield instructions when the field position requires it...
* expr.c (store_field): Force usage of bitfield instructions when the field position requires it, whatever SLOW_UNALIGNED_ACCESS. (expand_expr, case BIT_FIELD_REF): likewise. From-SVN: r65701
This commit is contained in:
parent
f2d80e7e81
commit
15b19a7dbf
@ -1,3 +1,9 @@
|
||||
2003-04-16 Olivier Hainque <hainque@act-europe.fr>
|
||||
|
||||
* expr.c (store_field): Force usage of bitfield instructions when
|
||||
the field position requires it, whatever SLOW_UNALIGNED_ACCESS.
|
||||
(expand_expr, case BIT_FIELD_REF): likewise.
|
||||
|
||||
2003-04-16 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
PR middle-end/8866
|
||||
|
10
gcc/expr.c
10
gcc/expr.c
@ -5564,8 +5564,9 @@ store_field (target, bitsize, bitpos, mode, exp, value_mode, unsignedp, type,
|
||||
|| GET_CODE (target) == SUBREG
|
||||
/* 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)
|
||||
|| (mode != BLKmode
|
||||
&& ((SLOW_UNALIGNED_ACCESS (mode, MEM_ALIGN (target))
|
||||
&& (MEM_ALIGN (target) < GET_MODE_ALIGNMENT (mode)))
|
||||
|| bitpos % GET_MODE_ALIGNMENT (mode)))
|
||||
/* 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
|
||||
@ -7504,9 +7505,8 @@ 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
|
||||
&& SLOW_UNALIGNED_ACCESS (mode1, MEM_ALIGN (op0))
|
||||
&& ((TYPE_ALIGN (TREE_TYPE (tem))
|
||||
< GET_MODE_ALIGNMENT (mode))
|
||||
&& ((TYPE_ALIGN (TREE_TYPE (tem)) < GET_MODE_ALIGNMENT (mode)
|
||||
&& SLOW_UNALIGNED_ACCESS (mode1, MEM_ALIGN (op0)))
|
||||
|| (bitpos % GET_MODE_ALIGNMENT (mode) != 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,
|
||||
|
Loading…
Reference in New Issue
Block a user