summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>2001-08-05 17:05:10 +0000
committerbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>2001-08-05 17:05:10 +0000
commit9c0e6d90f7b28384e458f3844e0eb12adce16452 (patch)
treebb340b0895f4f2a6f1adb87e029956c5ce1e9a29
parenta4b30b9e417f3abc81f028733fefbc1d0f8cf8cc (diff)
downloadppe42-gcc-9c0e6d90f7b28384e458f3844e0eb12adce16452.tar.gz
ppe42-gcc-9c0e6d90f7b28384e458f3844e0eb12adce16452.zip
Prefer a temporary register over directly storing into memory.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44649 138bc75d-0d04-0410-961f-82ee72b054a4
-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 c13028913b1..5679160c2d3 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 80f73f854dc..de399698f64 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 ();
OpenPOWER on IntegriCloud