(expand_expr, CLEANUP_POINT_EXPR): Force the operand out
authorJason Merrill <merrill@gnu.org>
Fri, 3 Mar 1995 03:45:02 +0000 (03:45 +0000)
committerJason Merrill <merrill@gnu.org>
Fri, 3 Mar 1995 03:45:02 +0000 (03:45 +0000)
        of memory before running cleanups.

From-SVN: r9117

gcc/expr.c

index f72102f3364885ae28a54f34f0d82ceb9bb02c82..bd08fe9c5d2df10f57e92e8bca02b53461395d44 100644 (file)
@@ -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 ();