re PR c++/34619 (ICE with "-fmudflap" and templates)

PR c++/34619
	* cgraphunit.c (cgraph_build_static_cdtor): set_cfun back to NULL
	before returning.

	* testsuite/libmudflap.c++/pass61-frag.cxx: New test.

From-SVN: r131302
This commit is contained in:
Jakub Jelinek 2008-01-03 11:28:30 +01:00 committed by Jakub Jelinek
parent e0658eda3c
commit cac67c0835
4 changed files with 32 additions and 1 deletions

View File

@ -1,5 +1,9 @@
2008-01-03 Jakub Jelinek <jakub@redhat.com>
PR c++/34619
* cgraphunit.c (cgraph_build_static_cdtor): set_cfun back to NULL
before returning.
PR tree-optimization/29484
* tree-inline.c (inline_forbidden_p_2): New function.
(inline_forbidden_p): Disallow inlining if some static var

View File

@ -1,5 +1,6 @@
/* Callgraph based interprocedural optimizations.
Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Jan Hubicka
This file is part of GCC.
@ -1515,6 +1516,7 @@ cgraph_build_static_cdtor (char which, tree body, int priority)
cgraph_add_new_function (decl, false);
cgraph_mark_needed_node (cgraph_node (decl));
set_cfun (NULL);
}
void

View File

@ -1,3 +1,8 @@
2008-01-03 Jakub Jelinek <jakub@redhat.com>
PR c++/34619
* testsuite/libmudflap.c++/pass61-frag.cxx: New test.
2008-01-01 Volker Reichelt <v.reichelt@netcologne.de>
PR libmudflap/26442

View File

@ -0,0 +1,20 @@
// PR c++/34619
// { dg-do compile }
template <typename> struct A
{
typedef int X;
static const int N = 1;
};
template <typename T> struct B
{
typedef typename A <int [A <T>::N]>::X Y;
template <typename U> B (Y, U) {}
};
int main ()
{
}
B <int>b (0, 0);