expr.c (expand_expr_real_1): Only use BLKmode for volatile accesses which are not naturally aligned.
* expr.c (expand_expr_real_1): Only use BLKmode for volatile accesses which are not naturally aligned. From-SVN: r171347
This commit is contained in:
parent
3505a737fd
commit
bf90208ff8
2 changed files with 10 additions and 2 deletions
|
@ -1,3 +1,8 @@
|
|||
2011-03-23 Julian Brown <julian@codesourcery.com>
|
||||
|
||||
* expr.c (expand_expr_real_1): Only use BLKmode for volatile
|
||||
accesses which are not naturally aligned.
|
||||
|
||||
2011-03-23 Richard Sandiford <richard.sandiford@linaro.org>
|
||||
|
||||
PR target/47553
|
||||
|
|
|
@ -9147,8 +9147,11 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode,
|
|||
&& modifier != EXPAND_CONST_ADDRESS
|
||||
&& modifier != EXPAND_INITIALIZER)
|
||||
/* If the field is volatile, we always want an aligned
|
||||
access. */
|
||||
|| (volatilep && flag_strict_volatile_bitfields > 0)
|
||||
access. Only do this if the access is not already naturally
|
||||
aligned, otherwise "normal" (non-bitfield) volatile fields
|
||||
become non-addressable. */
|
||||
|| (volatilep && flag_strict_volatile_bitfields > 0
|
||||
&& (bitpos % GET_MODE_ALIGNMENT (mode) != 0))
|
||||
/* If the field isn't aligned enough to fetch as a memref,
|
||||
fetch it as a bit field. */
|
||||
|| (mode1 != BLKmode
|
||||
|
|
Loading…
Add table
Reference in a new issue