aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/expr.c3
2 files changed, 7 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e5047f2..f6e47a8 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2002-04-10 Richard Henderson <rth@redhat.com>
+
+ * expr.c (expand_expr) [INTEGER_CST]: Don't force into registers
+ if EXPAND_INITIALIZER.
+
2002-04-09 Richard Henderson <rth@redhat.com>
* config/alpha/alpha.md (movdi_er_maybe_g): New.
diff --git a/gcc/expr.c b/gcc/expr.c
index 4871c4b..3e0add2 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -6326,7 +6326,8 @@ expand_expr (exp, target, tmode, modifier)
simplified by validate_replace_rtx during virtual register
instantiation, which can result in unrecognizable insns.
Avoid this by forcing all overflows into registers. */
- if (TREE_CONSTANT_OVERFLOW (exp))
+ if (TREE_CONSTANT_OVERFLOW (exp)
+ && modifier != EXPAND_INITIALIZER)
temp = force_reg (mode, temp);
return temp;