mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-21 23:51:18 +08:00
re PR c++/50800 (Internal compiler error in finish_member_declarations, possibly related to may_alias attribute)
PR c++/50800 * tree.c (apply_identity_attributes): Fix handling of classes. From-SVN: r222591
This commit is contained in:
parent
0373796b4d
commit
9f7fb685d9
gcc
@ -1,3 +1,8 @@
|
||||
2015-04-29 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/50800
|
||||
* tree.c (apply_identity_attributes): Fix handling of classes.
|
||||
|
||||
2015-04-29 Thomas Schwinge <thomas@codesourcery.com>
|
||||
|
||||
* parser.c (cp_parser_oacc_enter_exit_data): Use
|
||||
|
@ -1187,6 +1187,13 @@ apply_identity_attributes (tree result, tree attribs, bool *remove_attributes)
|
||||
tree new_attribs = NULL_TREE;
|
||||
tree *p = &new_attribs;
|
||||
|
||||
if (OVERLOAD_TYPE_P (result))
|
||||
{
|
||||
/* On classes and enums all attributes are ingrained. */
|
||||
gcc_assert (attribs == TYPE_ATTRIBUTES (result));
|
||||
return result;
|
||||
}
|
||||
|
||||
for (tree a = attribs; a; a = TREE_CHAIN (a))
|
||||
{
|
||||
const attribute_spec *as
|
||||
|
20
gcc/testsuite/g++.dg/cpp0x/alignas3.C
Normal file
20
gcc/testsuite/g++.dg/cpp0x/alignas3.C
Normal file
@ -0,0 +1,20 @@
|
||||
// PR c++/50800
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
template <typename> struct A;
|
||||
template <typename _Up> struct A<_Up *> { typedef _Up type; };
|
||||
template <typename T> struct B { typedef typename A<T>::type type; };
|
||||
template <typename> struct C;
|
||||
template <typename From> struct C<const From> {
|
||||
typedef typename B<From>::type SimpleType;
|
||||
};
|
||||
template <class> struct D { typedef int ret_type; };
|
||||
template <class From> struct F {
|
||||
typedef typename D<typename C<From>::SimpleType>::ret_type ret_type;
|
||||
};
|
||||
template <class, class Y> typename F<Y>::ret_type cast(Y &);
|
||||
class CompoundStmt;
|
||||
class alignas(8) Stmt {
|
||||
Stmt *Children[1];
|
||||
CompoundStmt *getBlock() const { cast<CompoundStmt>(Children[0]); }
|
||||
};
|
Loading…
x
Reference in New Issue
Block a user