From: Nathan Sidwell Date: Tue, 12 Apr 2016 16:24:11 +0000 (+0000) Subject: re PR c++/70501 (internal compiler error: in verify_ctor_sanity, at cp/constexpr... X-Git-Tag: basepoints/gcc-7~70 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d4619dc11e4ee5177053a2e8aae5f259ad3546f8;p=thirdparty%2Fgcc.git re PR c++/70501 (internal compiler error: in verify_ctor_sanity, at cp/constexpr.c:2249) PR c++/70501 cp/ * constexpr.c (cxx_eval_bare_aggregate): Handle VECTOR_TYPE similarly to PMF. testsuite/ * g++.dg/init/pr70501.C: New. From-SVN: r234904 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index d1f1851d5766..ee830a2e7e49 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2016-04-12 Nathan Sidwell + + PR c++/70501 + * constexpr.c (cxx_eval_bare_aggregate): Handle VECTOR_TYPE + similarly to PMF. + 2016-04-11 Jason Merrill * mangle.c (decl_is_template_id): The template itself counts as a diff --git a/gcc/cp/constexpr.c b/gcc/cp/constexpr.c index e6e2cf6ca5f0..13f385b5a194 100644 --- a/gcc/cp/constexpr.c +++ b/gcc/cp/constexpr.c @@ -2394,10 +2394,10 @@ cxx_eval_bare_aggregate (const constexpr_ctx *ctx, tree t, tree type = TREE_TYPE (t); constexpr_ctx new_ctx; - if (TYPE_PTRMEMFUNC_P (type)) + if (TYPE_PTRMEMFUNC_P (type) || VECTOR_TYPE_P (type)) { - /* We don't really need the ctx->ctor business for a PMF, but it's - simpler to use the same code. */ + /* We don't really need the ctx->ctor business for a PMF or + vector, but it's simpler to use the same code. */ new_ctx = *ctx; new_ctx.ctor = build_constructor (type, NULL); new_ctx.object = NULL_TREE; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 64753aa4e323..1c2b5a76159a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-04-12 Nathan Sidwell + + PR c++/70501 + * g++.dg/init/pr70501.C: New. + 2016-04-12 David Wohlferd * gcc.target/i386/asm-flag-6.c: New test. diff --git a/gcc/testsuite/g++.dg/init/pr70501.C b/gcc/testsuite/g++.dg/init/pr70501.C new file mode 100644 index 000000000000..901b3c1b5a29 --- /dev/null +++ b/gcc/testsuite/g++.dg/init/pr70501.C @@ -0,0 +1,11 @@ +/* { dg-options "" } Not pedantic */ + +typedef int v4si __attribute__ ((vector_size (16))); + +struct S { v4si v; }; + +void +fn2 (int i, int j) +{ + struct S s = { .v = i <= j + (v4si){(1, 2)} }; +}