re PR c++/84540 (ICE with alignas in variadic template)
/cp 2018-02-26 Paolo Carlini <paolo.carlini@oracle.com> PR c++/84540 * pt.c (tsubst_attributes): Handle correctly tsubst_attribute returning NULL_TREE. (apply_late_template_attributes): Likewise. /testsuite 2018-02-26 Paolo Carlini <paolo.carlini@oracle.com> PR c++/84540 * g++.dg/cpp0x/alignas14.C: New. * g++.dg/cpp0x/alignas15.C: Likewise. From-SVN: r258012
This commit is contained in:
parent
2bb03eb72f
commit
08735f538c
5 changed files with 27 additions and 4 deletions
|
@ -1,3 +1,10 @@
|
|||
2018-02-26 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/84540
|
||||
* pt.c (tsubst_attributes): Handle correctly tsubst_attribute
|
||||
returning NULL_TREE.
|
||||
(apply_late_template_attributes): Likewise.
|
||||
|
||||
2018-02-26 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/84557
|
||||
|
|
|
@ -10245,9 +10245,8 @@ tsubst_attributes (tree attributes, tree args,
|
|||
if (subst != t)
|
||||
{
|
||||
*p = subst;
|
||||
do
|
||||
while (*p)
|
||||
p = &TREE_CHAIN (*p);
|
||||
while (*p);
|
||||
*p = TREE_CHAIN (t);
|
||||
continue;
|
||||
}
|
||||
|
@ -10314,9 +10313,8 @@ apply_late_template_attributes (tree *decl_p, tree attributes, int attr_flags,
|
|||
*p = TREE_CHAIN (t);
|
||||
TREE_CHAIN (t) = NULL_TREE;
|
||||
*q = tsubst_attribute (t, decl_p, args, complain, in_decl);
|
||||
do
|
||||
while (*q)
|
||||
q = &TREE_CHAIN (*q);
|
||||
while (*q);
|
||||
}
|
||||
else
|
||||
p = &TREE_CHAIN (t);
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
2018-02-26 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/84540
|
||||
* g++.dg/cpp0x/alignas14.C: New.
|
||||
* g++.dg/cpp0x/alignas15.C: Likewise.
|
||||
|
||||
2018-02-26 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/84557
|
||||
|
|
6
gcc/testsuite/g++.dg/cpp0x/alignas14.C
Normal file
6
gcc/testsuite/g++.dg/cpp0x/alignas14.C
Normal file
|
@ -0,0 +1,6 @@
|
|||
// PR c++/84540
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
template<typename... T> struct alignas(alignof(T)...) A {};
|
||||
|
||||
A<> a;
|
6
gcc/testsuite/g++.dg/cpp0x/alignas15.C
Normal file
6
gcc/testsuite/g++.dg/cpp0x/alignas15.C
Normal file
|
@ -0,0 +1,6 @@
|
|||
// PR c++/84540
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
template<typename... T> struct A { enum alignas(alignof(T)...) E {}; };
|
||||
|
||||
A<> a;
|
Loading…
Add table
Reference in a new issue