Commit bf90208f by Julian Brown Committed by Julian Brown

expr.c (expand_expr_real_1): Only use BLKmode for volatile accesses which are…

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
parent 3505a737
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> 2011-03-23 Richard Sandiford <richard.sandiford@linaro.org>
PR target/47553 PR target/47553
......
...@@ -9147,8 +9147,11 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode, ...@@ -9147,8 +9147,11 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode,
&& modifier != EXPAND_CONST_ADDRESS && modifier != EXPAND_CONST_ADDRESS
&& modifier != EXPAND_INITIALIZER) && modifier != EXPAND_INITIALIZER)
/* If the field is volatile, we always want an aligned /* If the field is volatile, we always want an aligned
access. */ access. Only do this if the access is not already naturally
|| (volatilep && flag_strict_volatile_bitfields > 0) 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, /* If the field isn't aligned enough to fetch as a memref,
fetch it as a bit field. */ fetch it as a bit field. */
|| (mode1 != BLKmode || (mode1 != BLKmode
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment