Commit aecc0cf0 by Giovanni Bajo Committed by Andrew Pinski

re PR c++/19508 (dwarf2, ICE on __attribute__(aligned) in class template)

2005-01-20  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

        PR c++/19508
        * g++.dg/ext/attrib20.C: New test.

2005-01-20  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

        PR c++/19508
        * decl2.c (grokfield): Do not apply attributes to template parameters
        as they are ignored by tsubst anyway.

From-SVN: r95230
parent 2155b886
2005-01-20 Giovanni Bajo <giovannibajo@gcc.gnu.org>
PR c++/19508
* decl2.c (grokfield): Do not apply attributes to template parameters
as they are ignored by tsubst anyway.
2005-02-18 Jakub Jelinek <jakub@redhat.com> 2005-02-18 Jakub Jelinek <jakub@redhat.com>
PR c++/19813 PR c++/19813
......
...@@ -878,7 +878,16 @@ grokfield (const cp_declarator *declarator, ...@@ -878,7 +878,16 @@ grokfield (const cp_declarator *declarator,
value = push_template_decl (value); value = push_template_decl (value);
if (attrlist) if (attrlist)
cplus_decl_attributes (&value, attrlist, 0); {
/* Avoid storing attributes in template parameters:
tsubst is not ready to handle them. */
tree type = TREE_TYPE (value);
if (TREE_CODE (type) == TEMPLATE_TYPE_PARM
|| TREE_CODE (type) == BOUND_TEMPLATE_TEMPLATE_PARM)
sorry ("applying attributes to template parameters is not implemented");
else
cplus_decl_attributes (&value, attrlist, 0);
}
return value; return value;
} }
......
2005-01-20 Giovanni Bajo <giovannibajo@gcc.gnu.org>
PR c++/19508
* g++.dg/ext/attrib20.C: New test.
2004-02-18 Andrew Pinski <pinskia@physics.uc.edu> 2004-02-18 Andrew Pinski <pinskia@physics.uc.edu>
PR middle-end/20030 PR middle-end/20030
......
// { dg-do compile }
// { dg-options "-g" }
// Origin: <jan at etpmod dot phys dot tue dot nl>
// PR c++/19508: avoid attributes for template parameters
template <typename T>
struct BVector
{
typedef T T2;
typedef T value_type __attribute__ ((aligned(8))); // { dg-bogus "attribute" "attribute" { xfail *-*-* } }
typedef T2 value_type2 __attribute__ ((aligned(8))); // { dg-bogus "attribute" "attribute" { xfail *-*-* } }
value_type v;
};
BVector<int> m;
template <template <class> class T>
struct BV2
{
typedef T<float> value_type __attribute__((aligned(8))); // { dg-bogus "attribute" "attribute" { xfail *-*-* } }
value_type v;
};
BV2<BVector> m2;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment