diff options
author | Alexandre Oliva <aoliva@redhat.com> | 2017-04-15 03:28:31 +0000 |
---|---|---|
committer | Alexandre Oliva <aoliva@gcc.gnu.org> | 2017-04-15 03:28:31 +0000 |
commit | e072b0c410818178beda7e3da622d7ff29d0c3be (patch) | |
tree | 4d33781a146f21c9564a837fd95a447a96ac847c /libcc1 | |
parent | 51477ac2b9eeaf48c330942e281518d8b6b5c230 (diff) | |
download | gcc-e072b0c410818178beda7e3da622d7ff29d0c3be.tar.gz |
[libcp1] handle anon aggregates linkage-named by typedefs
Arrange for the first typedef to an anonymous type in the same context
to be used as the linkage name for the type.
for gcc/cp/ChangeLog
* decl.c (name_unnamed_type): Split out of...
(grokdeclarator): ... this.
* decl.h (name_unnamed_type): Declare.
for libcc1/ChangeLog
* libcp1plugin.cc (plugin_build_decl): Call name_unnamed_type.
From-SVN: r246938
Diffstat (limited to 'libcc1')
-rw-r--r-- | libcc1/ChangeLog | 4 | ||||
-rw-r--r-- | libcc1/libcp1plugin.cc | 9 |
2 files changed, 13 insertions, 0 deletions
diff --git a/libcc1/ChangeLog b/libcc1/ChangeLog index 5db05c58ba7..a6b9985e4ab 100644 --- a/libcc1/ChangeLog +++ b/libcc1/ChangeLog @@ -1,3 +1,7 @@ +2017-04-15 Alexandre Oliva <aoliva@redhat.com> + + * libcp1plugin.cc (plugin_build_decl): Call name_unnamed_type. + 2017-01-30 Alexandre Oliva <aoliva@redhat.com> Introduce C++ support. diff --git a/libcc1/libcp1plugin.cc b/libcc1/libcp1plugin.cc index 545f28b9861..2464aa2f39d 100644 --- a/libcc1/libcp1plugin.cc +++ b/libcc1/libcp1plugin.cc @@ -1494,6 +1494,15 @@ plugin_build_decl (cc1_plugin::connection *self, set_access_flags (decl, acc_flags); + /* If this is the typedef that names an otherwise anonymous type, + propagate the typedef name to the type. In normal compilation, + this is done in grokdeclarator. */ + if (sym_kind == GCC_CP_SYMBOL_TYPEDEF + && !template_decl_p + && DECL_CONTEXT (decl) == TYPE_CONTEXT (sym_type) + && TYPE_UNNAMED_P (sym_type)) + name_unnamed_type (sym_type, decl); + if (sym_kind != GCC_CP_SYMBOL_TYPEDEF && sym_kind != GCC_CP_SYMBOL_CLASS && sym_kind != GCC_CP_SYMBOL_UNION |