re PR c++/42555 (16-byte aligned double is disallowed only in templates)
PR c++/42555 * pt.c (tsubst_decl): Don't apply type attributes in place. From-SVN: r155628
This commit is contained in:
parent
4b4a42c40a
commit
282c399b39
@ -1,5 +1,8 @@
|
||||
2010-01-04 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/42555
|
||||
* pt.c (tsubst_decl): Don't apply type attributes in place.
|
||||
|
||||
PR c++/42567
|
||||
* semantics.c (describable_type): Remove decltype comment and
|
||||
semantics.
|
||||
|
@ -9400,7 +9400,7 @@ tsubst_decl (tree t, tree args, tsubst_flags_t complain)
|
||||
TREE_CHAIN (r) = NULL_TREE;
|
||||
|
||||
apply_late_template_attributes (&r, DECL_ATTRIBUTES (r),
|
||||
(int) ATTR_FLAG_TYPE_IN_PLACE,
|
||||
/*flags=*/0,
|
||||
args, complain, in_decl);
|
||||
|
||||
/* Preserve a typedef that names a type. */
|
||||
|
@ -1,5 +1,8 @@
|
||||
2010-01-04 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/42555
|
||||
* g++.dg/ext/attrib35.C: New.
|
||||
|
||||
PR c++/42567
|
||||
* g++.dg/cpp0x/auto17.C: New.
|
||||
|
||||
|
19
gcc/testsuite/g++.dg/ext/attrib35.C
Normal file
19
gcc/testsuite/g++.dg/ext/attrib35.C
Normal file
@ -0,0 +1,19 @@
|
||||
// { dg-do compile { target i*86-*-* x86_64-*-* } }
|
||||
// { dg-options "-O3 -msse2" }
|
||||
|
||||
// You can make NON-template typedefs with a large alignment.
|
||||
typedef double AlignedDoubleType __attribute__((aligned(16)));
|
||||
|
||||
template <typename RealType>
|
||||
RealType f(const RealType* p)
|
||||
{
|
||||
// But if you use a template parameter it complains.
|
||||
typedef RealType AlignedRealType __attribute__((aligned(16)));
|
||||
|
||||
return p[0];
|
||||
}
|
||||
|
||||
double f2(const double* p)
|
||||
{
|
||||
return f<double>(p);
|
||||
}
|
Loading…
Reference in New Issue
Block a user