aboutsummaryrefslogtreecommitdiff
path: root/gcc/expr.c
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>2000-03-05 20:43:44 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>2000-03-05 20:43:44 +0000
commit9f93702662f417705f1fc306ffbd078fef8abe02 (patch)
tree7b9b1d01cf0d4c4508ab5b483e757d3c608c3305 /gcc/expr.c
parent591ccf92b35994b10f846ef630cd1a58d53a8f12 (diff)
downloadgcc-9f93702662f417705f1fc306ffbd078fef8abe02.zip
gcc-9f93702662f417705f1fc306ffbd078fef8abe02.tar.gz
gcc-9f93702662f417705f1fc306ffbd078fef8abe02.tar.bz2
tree.def (RTL_EXPR): Update documentation.
* tree.def (RTL_EXPR): Update documentation. * tree.h (RTL_EXPR_HAS_NO_SCOPE): New macro. * expr.c (expand_expr): Handle RTL_EXPR_HAS_NO_SCOPE. * function.c (preserve_rtl_expr_temp): New function. (preserve_rtl_expr_temps): Likewise. (preserve_rtl_expr_result): Use it. From-SVN: r32344
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: