diff options
author | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-05-04 19:57:35 +0000 |
---|---|---|
committer | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-05-04 19:57:35 +0000 |
commit | a6645eaed032b9d5277b199e005974b5dab19c0e (patch) | |
tree | 4f4c0cdeb8e0553afac758556ed2a79a75fc68fd /gcc/expr.c | |
parent | d8edb24158d3d06776f8886c9b973fc1c232c28e (diff) | |
download | gcc-a6645eaed032b9d5277b199e005974b5dab19c0e.tar.gz |
* expr.c (store_constructor_field): Don't call store_constructor
if bitsize is not a multiple of a byte.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@81487 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/expr.c')
-rw-r--r-- | gcc/expr.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/expr.c b/gcc/expr.c index e8c3ab53c81..9239c4a0415 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -4492,7 +4492,10 @@ store_constructor_field (rtx target, unsigned HOST_WIDE_INT bitsize, tree exp, tree type, int cleared, int alias_set) { if (TREE_CODE (exp) == CONSTRUCTOR + /* We can only call store_constructor recursively if the size and + bit position are on a byte boundary. */ && bitpos % BITS_PER_UNIT == 0 + && (bitsize > 0 && bitsize % BITS_PER_UNIT == 0) /* If we have a nonzero bitpos for a register target, then we just let store_field do the bitfield handling. This is unlikely to generate unnecessary clear instructions anyways. */ |