diff options
author | Marek Polacek <polacek@redhat.com> | 2017-04-18 09:34:10 +0000 |
---|---|---|
committer | Marek Polacek <mpolacek@gcc.gnu.org> | 2017-04-18 09:34:10 +0000 |
commit | be7c73ae358319c5f9541f2e2f7a5dc37ec0e116 (patch) | |
tree | e0ecb87b01659509015227635ef8f0bd1b112bf7 /gcc | |
parent | 6397118495f65a03a0d13114cf2c72d4a66f9cb1 (diff) | |
download | gcc-be7c73ae358319c5f9541f2e2f7a5dc37ec0e116.zip gcc-be7c73ae358319c5f9541f2e2f7a5dc37ec0e116.tar.gz gcc-be7c73ae358319c5f9541f2e2f7a5dc37ec0e116.tar.bz2 |
PR c++/80244 - ICE with attribute in template alias.
* tree.c (strip_typedefs): Handle UNDERLYING_TYPE.
* g++.dg/cpp0x/alias-decl-59.C: New test.
From-SVN: r246962
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/tree.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/alias-decl-59.C | 11 |
4 files changed, 25 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 3d36c6b..3f87d71 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2017-04-18 Marek Polacek <polacek@redhat.com> + + PR c++/80244 - ICE with attribute in template alias. + * tree.c (strip_typedefs): Handle UNDERLYING_TYPE. + 2017-04-17 Bernd Edlinger <bernd.edlinger@hotmail.de> PR c++/80287 diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index a1455c2..f1b0a57 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -1551,6 +1551,10 @@ strip_typedefs (tree t, bool *remove_attributes) DECLTYPE_TYPE_ID_EXPR_OR_MEMBER_ACCESS_P (t), tf_none)); break; + case UNDERLYING_TYPE: + type = strip_typedefs (UNDERLYING_TYPE_TYPE (t), remove_attributes); + result = finish_underlying_type (type); + break; default: break; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6f9932a..ca0717e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-04-18 Marek Polacek <polacek@redhat.com> + + PR c++/80244 - ICE with attribute in template alias. + * g++.dg/cpp0x/alias-decl-59.C: New test. + 2017-04-17 Bernd Edlinger <bernd.edlinger@hotmail.de> PR c++/80287 diff --git a/gcc/testsuite/g++.dg/cpp0x/alias-decl-59.C b/gcc/testsuite/g++.dg/cpp0x/alias-decl-59.C new file mode 100644 index 0000000..1f5e94f --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/alias-decl-59.C @@ -0,0 +1,11 @@ +// PR c++/80244 +// { dg-do compile { target c++11 } } + +template<typename> +struct A {}; + +template<typename T> +using B = A<__underlying_type(T) [[gnu::aligned(4)]]>; // { dg-warning "ignoring attributes on template argument" } + +template<typename T> +using B = A<__underlying_type(T) [[gnu::packed]]>; // { dg-warning "ignoring attributes on template argument" } |