From 489df541a7b0fc6c5e543a1da3d97ab80a090ae1 Mon Sep 17 00:00:00 2001 From: Dodji Seketeli Date: Sun, 29 Nov 2009 19:19:06 +0000 Subject: [PATCH] Really fix PR c++/36408 gcc/cp/ChangeLog: PR c++/36408 * semantics.c (empty_expr_stmt_p): Handle void_zero_node and fix bad indentation. * pt.c (tsubst_copy_and_build): Fix typo. From-SVN: r154742 --- gcc/cp/ChangeLog | 7 +++++++ gcc/cp/pt.c | 4 ++-- gcc/cp/semantics.c | 17 ++++++++++------- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index ab252ea..57ce3cd 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2009-11-29 Dodji Seketeli + + PR c++/36408 + * semantics.c (empty_expr_stmt_p): Handle void_zero_node and fix + bad indentation. + * pt.c (tsubst_copy_and_build): Fix typo. + 2009-11-29 Jan Hubicka * optimize.c (maybe_clone_body): Emit thunks associated to alias. diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index eb1cdd3..dd86cee 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -12546,8 +12546,8 @@ tsubst_copy_and_build (tree t, /* If the resulting list of expression statement is empty, fold it further into void_zero_node. */ - if (empty_expr_stmt_p (cur_stmt_expr)) - cur_stmt_expr = void_zero_node; + if (empty_expr_stmt_p (stmt_expr)) + stmt_expr = void_zero_node; return stmt_expr; } diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 0a1a547..4a9bee7 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -1855,6 +1855,9 @@ empty_expr_stmt_p (tree expr_stmt) { tree body = NULL_TREE; + if (expr_stmt == void_zero_node) + return true; + if (expr_stmt) { if (TREE_CODE (expr_stmt) == EXPR_STMT) @@ -1863,13 +1866,13 @@ empty_expr_stmt_p (tree expr_stmt) body = expr_stmt; } - if (body) - { - if (TREE_CODE (body) == STATEMENT_LIST) - return tsi_end_p (tsi_start (body)); - else - return empty_expr_stmt_p (body); - } + if (body) + { + if (TREE_CODE (body) == STATEMENT_LIST) + return tsi_end_p (tsi_start (body)); + else + return empty_expr_stmt_p (body); + } return false; } -- 2.7.4