From: Jason Merrill Date: Thu, 4 Nov 2010 20:31:31 +0000 (-0400) Subject: re PR c++/46298 (constexpr ICE on ARM) X-Git-Tag: releases/gcc-4.6.0~2907 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d4e55f308ea4309fcf10008224e892e40f835c1d;p=thirdparty%2Fgcc.git re PR c++/46298 (constexpr ICE on ARM) PR c++/46298 * semantics.c (build_constexpr_constructor_member_initializers): Handle an enclosing STATEMENT_LIST. From-SVN: r166330 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index ab00a0f12ff3..7167992ae16c 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,9 @@ 2010-11-04 Jason Merrill + 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. diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 3d62cd193063..558be8852753 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -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)