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
This commit is contained in:
Jason Merrill 2012-01-25 12:16:28 -05:00 committed by Jason Merrill
parent 06e1d03dc9
commit b3310d4901
4 changed files with 66 additions and 0 deletions

View File

@ -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

View File

@ -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

View File

@ -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();
}

View File

@ -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);