diff options
author | Richard Biener <rguenther@suse.de> | 2021-11-19 08:54:18 +0100 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2021-11-19 10:35:54 +0100 |
commit | dd85c42c36a5d4e00b41ed40bca98598a2fb57c5 (patch) | |
tree | 0504284eb581e568469a52f066c649e7eeb767b9 /gcc | |
parent | a84177aff7ca86f501d6aa5ef407fac5e71f56fb (diff) | |
download | gcc-dd85c42c36a5d4e00b41ed40bca98598a2fb57c5.zip gcc-dd85c42c36a5d4e00b41ed40bca98598a2fb57c5.tar.gz gcc-dd85c42c36a5d4e00b41ed40bca98598a2fb57c5.tar.bz2 |
c++/103326 - fix ICE in tsubst with VECTOR_CST
This adds missing handling of VECTOR_CST.
2021-11-19 Richard Biener <rguenther@suse.de>
PR c++/103326
* pt.c (tsubst_copy): Handle VECTOR_CST.
* g++.dg/pr103326.C: New testcase.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/pt.c | 1 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/pr103326.C | 15 |
2 files changed, 16 insertions, 0 deletions
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 6a2a937..22798b9 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -17254,6 +17254,7 @@ tsubst_copy (tree t, tree args, tsubst_flags_t complain, tree in_decl) case INTEGER_CST: case REAL_CST: case COMPLEX_CST: + case VECTOR_CST: { /* Instantiate any typedefs in the type. */ tree type = tsubst (TREE_TYPE (t), args, complain, in_decl); diff --git a/gcc/testsuite/g++.dg/pr103326.C b/gcc/testsuite/g++.dg/pr103326.C new file mode 100644 index 0000000..260e7da --- /dev/null +++ b/gcc/testsuite/g++.dg/pr103326.C @@ -0,0 +1,15 @@ +// { dg-do compile } +// { dg-require-effective-target c++11 } + +using x86_64_v16qi [[gnu::__vector_size__ (16)]] = char; + +template<typename T> +void foo() +{ + constexpr x86_64_v16qi zero{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +} + +void foo2() +{ + foo<int>(); +} |