summaryrefslogtreecommitdiff
path: root/gcc/expr.c
diff options
context:
space:
mode:
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>2002-02-16 18:44:14 +0000
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>2002-02-16 18:44:14 +0000
commitcbbc8e6afdd3024ad458a725802558b240025694 (patch)
treec71c53ccc676e9349b0b92e81be55ef57bf72b72 /gcc/expr.c
parent0f0c0757caffc2fc579bcd3fc3ae99acd5b55801 (diff)
downloadgcc-cbbc8e6afdd3024ad458a725802558b240025694.tar.gz
* expr.c (store_constructor): Handle target REG case for ARRAY_TYPE.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@49805 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/expr.c')
-rw-r--r--gcc/expr.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index fe874ce648e..73690372e4e 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -4617,7 +4617,12 @@ store_constructor (exp, target, cleared, size)
if (need_to_clear && size > 0)
{
if (! cleared)
- clear_storage (target, GEN_INT (size));
+ {
+ if (REG_P (target))
+ emit_move_insn (target, CONST0_RTX (GET_MODE (target)));
+ else
+ clear_storage (target, GEN_INT (size));
+ }
cleared = 1;
}
else if (REG_P (target))