OSDN Git Service

Really fix PR c++/36408
authordodji <dodji@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 29 Nov 2009 19:19:06 +0000 (19:19 +0000)
committerdodji <dodji@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 29 Nov 2009 19:19:06 +0000 (19:19 +0000)
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@154742 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/pt.c
gcc/cp/semantics.c

index ab252ea..57ce3cd 100644 (file)
@@ -1,3 +1,10 @@
+2009-11-29  Dodji Seketeli  <dodji@redhat.com>
+
+       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  <jh@suse.cz>
 
        * optimize.c (maybe_clone_body): Emit thunks associated to alias.
index eb1cdd3..dd86cee 100644 (file)
@@ -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;
       }
index 0a1a547..4a9bee7 100644 (file)
@@ -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;
 }