diff options
author | Jason Merrill <jason@redhat.com> | 2012-01-25 12:16:28 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2012-01-25 12:16:28 -0500 |
commit | b3310d490144dd291d0e26279e5bf70772ea2da9 (patch) | |
tree | 1b411d991175462cc0575e5e3ab707d45afaa067 | |
parent | 06e1d03dc90b2daf18c06346ff5cabe266f0b6f3 (diff) | |
download | gcc-b3310d490144dd291d0e26279e5bf70772ea2da9.zip gcc-b3310d490144dd291d0e26279e5bf70772ea2da9.tar.gz gcc-b3310d490144dd291d0e26279e5bf70772ea2da9.tar.bz2 |
re PR c++/51992 (internal compiler error: tree code ‘target_expr’ is not supported in LTO streams)
PR c++/51992
* tree.c (find_decls_types_in_node): Walk gimple_call_fntype.
From-SVN: r183527
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/lto/pr51992_0.C | 53 | ||||
-rw-r--r-- | gcc/tree.c | 3 |
4 files changed, 66 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b3be4c0..82e5165 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2012-01-25 Jason Merrill <jason@redhat.com> + + PR c++/51992 + * tree.c (find_decls_types_in_node): Walk gimple_call_fntype. + 2012-01-25 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/51987 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ea0cc24..493b040 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-01-25 Jason Merrill <jason@redhat.com> + + PR c++/51992 + * g++.dg/lto/pr51992_0.C: New. + 2012-01-25 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/51987 diff --git a/gcc/testsuite/g++.dg/lto/pr51992_0.C b/gcc/testsuite/g++.dg/lto/pr51992_0.C new file mode 100644 index 0000000..deb232c --- /dev/null +++ b/gcc/testsuite/g++.dg/lto/pr51992_0.C @@ -0,0 +1,53 @@ +// PR c++/51992 +// { dg-lto-do assemble } + +template<typename Enum> +class QFlags +{ + int i; + inline QFlags(Enum f) : i(f) {} +}; +class QString {}; +class KComponentData; +class KConfig +{ +public: + enum OpenFlag { + IncludeGlobals = 0x01, + CascadeConfig = 0x02, + FullConfig = IncludeGlobals|CascadeConfig + }; + typedef QFlags<OpenFlag> OpenFlags; +}; +template <class T> +class KSharedPtr {}; +class KSharedConfig : public KConfig +{ +public: + typedef KSharedPtr<KSharedConfig> Ptr; + static KSharedConfig::Ptr openConfig(const QString& fileName = QString(), + OpenFlags mode = FullConfig, + const char *resourceType = "config"); + static KSharedConfig::Ptr openConfig(const KComponentData &componentData, + const QString &fileName = QString(), + OpenFlags mode = FullConfig, + const char *resourceType = "config"); +}; +typedef KSharedConfig::Ptr KSharedConfigPtr; +namespace KGlobal +{ + KComponentData &mainComponent(); +}; +KSharedConfigPtr KSharedConfig::openConfig(const QString& fileName, + OpenFlags flags, + const char *resType) +{ + return openConfig(KGlobal::mainComponent(), fileName, flags, resType); +} +KSharedConfigPtr KSharedConfig::openConfig(const KComponentData &componentData, + const QString& fileName, + OpenFlags flags, + const char *resType) +{ + return KSharedConfigPtr(); +} @@ -5037,6 +5037,9 @@ find_decls_types_in_node (struct cgraph_node *n, struct free_lang_data_d *fld) { gimple stmt = gsi_stmt (si); + if (is_gimple_call (stmt)) + find_decls_types (gimple_call_fntype (stmt), fld); + for (i = 0; i < gimple_num_ops (stmt); i++) { tree arg = gimple_op (stmt, i); |