summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>2000-03-05 20:46:18 +0000
committermmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>2000-03-05 20:46:18 +0000
commit377947013ea5c5f768dfe669da3361d061a5da51 (patch)
tree6d7e49043bdd0fb72e5fca632e820df584bec597
parent732967ebbca22e1c04818fe86bcae4d7bbcdb603 (diff)
downloadgcc-377947013ea5c5f768dfe669da3361d061a5da51.tar.gz
* expr.c (cplus_expand_expr, case STMT_EXPR): Use
expand_start_stmt_expr and expand_end_stmt_expr directly. Set RTL_EXPR_HAS_NO_SCOPE. * pt.c (instantiate_decl): Clear TI_PENDING_TEMPLATE_FLAG a little later. * dump.c (dequeue_and_dump): Dump SCOPE_NO_CLEANUPS_P. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@32345 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/cp/ChangeLog11
-rw-r--r--gcc/cp/dump.c2
-rw-r--r--gcc/cp/expr.c5
-rw-r--r--gcc/cp/pt.c6
4 files changed, 19 insertions, 5 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 2213278eb88..d1f5473cfaa 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,14 @@
+2000-03-05 Mark Mitchell <mark@codesourcery.com>
+
+ * expr.c (cplus_expand_expr, case STMT_EXPR): Use
+ expand_start_stmt_expr and expand_end_stmt_expr directly. Set
+ RTL_EXPR_HAS_NO_SCOPE.
+
+ * pt.c (instantiate_decl): Clear TI_PENDING_TEMPLATE_FLAG a little
+ later.
+
+ * dump.c (dequeue_and_dump): Dump SCOPE_NO_CLEANUPS_P.
+
2000-03-05 Nathan Sidwell <nathan@codesourcery.com>
* call.c (convert_like): Macrofy.
diff --git a/gcc/cp/dump.c b/gcc/cp/dump.c
index dc8f7540120..c8152d5336f 100644
--- a/gcc/cp/dump.c
+++ b/gcc/cp/dump.c
@@ -768,6 +768,8 @@ dequeue_and_dump (di)
dump_string (di, "end");
if (SCOPE_NULLIFIED_P (t))
dump_string (di, "null");
+ if (!SCOPE_NO_CLEANUPS_P (t))
+ dump_string (di, "clnp");
dump_next_stmt (di, t);
break;
diff --git a/gcc/cp/expr.c b/gcc/cp/expr.c
index 05411e3f088..f8351811706 100644
--- a/gcc/cp/expr.c
+++ b/gcc/cp/expr.c
@@ -145,9 +145,10 @@ cplus_expand_expr (exp, target, tmode, modifier)
case STMT_EXPR:
{
- tree rtl_expr = begin_stmt_expr ();
+ tree rtl_expr = expand_start_stmt_expr ();
expand_stmt (STMT_EXPR_STMT (exp));
- finish_stmt_expr (rtl_expr);
+ expand_end_stmt_expr (rtl_expr);
+ RTL_EXPR_HAS_NO_SCOPE (rtl_expr) = 1;
return expand_expr (rtl_expr, target, tmode, modifier);
}
break;
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index e6e079ce8a1..b9d46278656 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -9569,9 +9569,6 @@ instantiate_decl (d)
try to instantiate it again. */
DECL_TEMPLATE_INSTANTIATED (d) = 1;
- /* And we're not deferring instantiation any more. */
- TI_PENDING_TEMPLATE_FLAG (DECL_TEMPLATE_INFO (d)) = 0;
-
/* Regenerate the declaration in case the template has been modified
by a subsequent redeclaration. */
regenerate_decl_from_template (d, td);
@@ -9611,6 +9608,9 @@ instantiate_decl (d)
expand_body (finish_function (lineno, 0));
}
+ /* We're not deferring instantiation any more. */
+ TI_PENDING_TEMPLATE_FLAG (DECL_TEMPLATE_INFO (d)) = 0;
+
out:
lineno = line;
input_filename = file;