re PR c++/46298 (constexpr ICE on ARM)
authorJason Merrill <jason@redhat.com>
Thu, 4 Nov 2010 20:31:31 +0000 (16:31 -0400)
committerJason Merrill <jason@gcc.gnu.org>
Thu, 4 Nov 2010 20:31:31 +0000 (16:31 -0400)
PR c++/46298
* semantics.c (build_constexpr_constructor_member_initializers):
Handle an enclosing STATEMENT_LIST.

From-SVN: r166330

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

index ab00a0f..7167992 100644 (file)
@@ -1,5 +1,9 @@
 2010-11-04  Jason Merrill  <jason@redhat.com>
 
+       PR c++/46298
+       * semantics.c (build_constexpr_constructor_member_initializers):
+       Handle an enclosing STATEMENT_LIST.
+
        * semantics.c (speculative_access_check): New.
        * cp-tree.h: Declare it.
        * call.c (build_over_call): Use it.
index 3d62cd1..558be88 100644 (file)
@@ -5535,8 +5535,9 @@ build_constexpr_constructor_member_initializers (tree type, tree body)
   if (TREE_CODE (body) == MUST_NOT_THROW_EXPR
       || TREE_CODE (body) == EH_SPEC_BLOCK)
     body = TREE_OPERAND (body, 0);
-  if (TREE_CODE (body) == BIND_EXPR)
-    body = BIND_EXPR_BODY (body);
+  if (TREE_CODE (body) == STATEMENT_LIST)
+    body = STATEMENT_LIST_HEAD (body)->stmt;
+  body = BIND_EXPR_BODY (body);
   if (TREE_CODE (body) == CLEANUP_POINT_EXPR)
     ok = build_data_member_initialization (body, &vec);
   else if (TREE_CODE (body) == STATEMENT_LIST)