Commit 5f11a50a by Richard Guenther Committed by Richard Biener

re PR c++/48073 (ICE with -flto in templated C++ code)

2011-03-11  Richard Guenther  <rguenther@suse.de>

	PR lto/48073
	* tree.c (find_decls_types_r): Do not walk types only reachable
	from IDENTIFIER_NODEs.

	* g++.dg/lto/20110311-1_0.C: New testcase.

From-SVN: r170875
parent e33eba75
2011-03-11 Richard Guenther <rguenther@suse.de>
PR lto/48073
* tree.c (find_decls_types_r): Do not walk types only reachable
from IDENTIFIER_NODEs.
2011-03-11 Jakub Jelinek <jakub@redhat.com> 2011-03-11 Jakub Jelinek <jakub@redhat.com>
PR middle-end/48044 PR middle-end/48044
......
2011-03-11 Richard Guenther <rguenther@suse.de>
PR lto/48073
* g++.dg/lto/20110311-1_0.C: New testcase.
2011-03-11 Jakub Jelinek <jakub@redhat.com> 2011-03-11 Jakub Jelinek <jakub@redhat.com>
PR c++/48035 PR c++/48035
......
/* { dg-lto-do link } */
/* { dg-extra-ld-options "-r -nostdlib" } */
struct NullType {};
template <class T, class U>
struct TList
{
typedef T Head;
typedef U Tail;
};
template <class T>
struct TListLength {};
template <class T, class U>
struct TListLength<TList<T,U> >
{
enum
{
Ret = 1 + TListLength<U>::Ret
};
};
template <>
struct TListLength<NullType>
{
enum
{
Ret = 0
};
};
template <class Moves>
class DDQMC
{
public:
int* moves[TListLength<Moves>::Ret];
inline DDQMC();
private:
};
template <class Moves>
DDQMC<Moves>::DDQMC()
{
}
int main()
{
typedef DDQMC< TList<float, TList<int, NullType> > > mytype;
}
...@@ -4822,7 +4822,8 @@ find_decls_types_r (tree *tp, int *ws, void *data) ...@@ -4822,7 +4822,8 @@ find_decls_types_r (tree *tp, int *ws, void *data)
fld_worklist_push (BLOCK_ABSTRACT_ORIGIN (t), fld); fld_worklist_push (BLOCK_ABSTRACT_ORIGIN (t), fld);
} }
fld_worklist_push (TREE_TYPE (t), fld); if (TREE_CODE (t) != IDENTIFIER_NODE)
fld_worklist_push (TREE_TYPE (t), fld);
return NULL_TREE; return NULL_TREE;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment