aboutsummaryrefslogtreecommitdiff
path: root/gcc/expr.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/expr.c')
-rw-r--r--gcc/expr.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index fb266e2..28b3b44 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -6306,8 +6306,13 @@ expand_expr (exp, target, tmode, modifier)
emit_insns (RTL_EXPR_SEQUENCE (exp));
RTL_EXPR_SEQUENCE (exp) = const0_rtx;
}
- preserve_rtl_expr_result (RTL_EXPR_RTL (exp));
- free_temps_for_rtl_expr (exp);
+ if (RTL_EXPR_HAS_NO_SCOPE (exp))
+ preserve_rtl_expr_temps (exp);
+ else
+ {
+ preserve_rtl_expr_result (RTL_EXPR_RTL (exp));
+ free_temps_for_rtl_expr (exp);
+ }
return RTL_EXPR_RTL (exp);
case CONSTRUCTOR: