aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <merrill@gnu.org>1995-03-03 03:45:02 +0000
committerJason Merrill <merrill@gnu.org>1995-03-03 03:45:02 +0000
commitf283f66b1f8eb2061535a609ae850998b9e44306 (patch)
tree4b82f03940374ac91238293e3a2fcbce313f6850 /gcc
parentf7393e851aa98841e05af3502fd27d85d92b594b (diff)
downloadgcc-f283f66b1f8eb2061535a609ae850998b9e44306.zip
gcc-f283f66b1f8eb2061535a609ae850998b9e44306.tar.gz
gcc-f283f66b1f8eb2061535a609ae850998b9e44306.tar.bz2
(expand_expr, CLEANUP_POINT_EXPR): Force the operand out
of memory before running cleanups. From-SVN: r9117
Diffstat (limited to 'gcc')
-rw-r--r--gcc/expr.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index f72102f..bd08fe9 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -4980,7 +4980,10 @@ expand_expr (exp, target, tmode, modifier)
int old_temp_level = target_temp_slot_level;
push_temp_slots ();
target_temp_slot_level = temp_slot_level;
- op0 = expand_expr (TREE_OPERAND (exp, 0), target, VOIDmode, modifier);
+ op0 = expand_expr (TREE_OPERAND (exp, 0), target, tmode, modifier);
+ /* If we're going to use this value, load it up now. */
+ if (! ignore)
+ op0 = force_not_mem (op0);
expand_cleanups_to (old_cleanups);
preserve_temp_slots (op0);
free_temp_slots ();