aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog3
-rw-r--r--gcc/expr.c4
2 files changed, 5 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c130289..5679160 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -20,6 +20,9 @@
* config/ia64/ia64.md (cond_opsi2_internal and splitters): New
patterns.
+ * expr.c (expand_expr, case COND_EXPR): Prefer working with a
+ temporary register than directly using a MEM.
+
2001-08-04 Hans-Peter Nilsson <hp@bitrange.com>
* config/sh/sh.c (sh_asm_named_section): Fix typo in align
diff --git a/gcc/expr.c b/gcc/expr.c
index 80f73f8..de39969 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -8211,8 +8211,8 @@ expand_expr (exp, target, tmode, modifier)
|| GET_CODE (original_target) == REG
|| TREE_ADDRESSABLE (type))
#endif
- && ! (GET_CODE (original_target) == MEM
- && MEM_VOLATILE_P (original_target)))
+ && (GET_CODE (original_target) != MEM
+ || TREE_ADDRESSABLE (type)))
temp = original_target;
else if (TREE_ADDRESSABLE (type))
abort ();