diff options
author | Richard Kenner <kenner@vlsi1.ultra.nyu.edu> | 2003-07-05 11:51:54 +0000 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 2003-07-05 07:51:54 -0400 |
commit | a8f3bf527144a4ddcffcfd37f022f8bc65de6bef (patch) | |
tree | 67847c0636c55f25eddb8f68742e1bd0f9c4c4a7 /gcc/expr.c | |
parent | 0641776cefb0ba35cc75c3bb27451a7e706dc2cd (diff) | |
download | gcc-a8f3bf527144a4ddcffcfd37f022f8bc65de6bef.zip gcc-a8f3bf527144a4ddcffcfd37f022f8bc65de6bef.tar.gz gcc-a8f3bf527144a4ddcffcfd37f022f8bc65de6bef.tar.bz2 |
expr.c (expand_expr, [...]): When seeing if should use bitfield operations...
* expr.c (expand_expr, case COMPONENT_REF): When seeing if should use
bitfield operations, use STRICT_ALIGNMENT, not SLOW_UNALIGNED_ACCESS
if EXPAND_CONST_ADDRESS or EXPAND_INITIALIZER.
From-SVN: r68968
Diffstat (limited to 'gcc/expr.c')
-rw-r--r-- | gcc/expr.c | 5 |
1 files changed, 4 insertions, 1 deletions
@@ -7541,7 +7541,10 @@ expand_expr (tree exp, rtx target, enum machine_mode tmode, enum expand_modifier || (mode1 != BLKmode && (((TYPE_ALIGN (TREE_TYPE (tem)) < GET_MODE_ALIGNMENT (mode) || (bitpos % GET_MODE_ALIGNMENT (mode) != 0)) - && SLOW_UNALIGNED_ACCESS (mode1, MEM_ALIGN (op0))) + && ((modifier == EXPAND_CONST_ADDRESS + || modifier == EXPAND_INITIALIZER) + ? STRICT_ALIGNMENT + : SLOW_UNALIGNED_ACCESS (mode1, MEM_ALIGN (op0)))) || (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, |