re PR c++/41183 (ICE compiling chromium)

PR c++/41183
	* cp-tree.h (current_class_ptr): Give NULL even when cfun
	has NULL cfun->language.

	* g++.dg/torture/pr41183.C: New test.

From-SVN: r155254
This commit is contained in:
Jakub Jelinek 2009-12-15 16:13:08 +01:00 committed by Jakub Jelinek
parent bb194134ac
commit 3efd49f9df
4 changed files with 43 additions and 1 deletions

View file

@ -1,3 +1,9 @@
2009-12-15 Jakub Jelinek <jakub@redhat.com>
PR c++/41183
* cp-tree.h (current_class_ptr): Give NULL even when cfun
has NULL cfun->language.
2009-12-14 Jason Merrill <jason@redhat.com>
PR c++/42364

View file

@ -1026,7 +1026,8 @@ struct GTY(()) language_function {
expression for `*this'. */
#define current_class_ptr \
(cfun ? cp_function_chain->x_current_class_ptr : NULL_TREE)
(cfun && cp_function_chain \
? cp_function_chain->x_current_class_ptr : NULL_TREE)
#define current_class_ref \
(cfun ? cp_function_chain->x_current_class_ref : NULL_TREE)

View file

@ -1,3 +1,8 @@
2009-12-15 Jakub Jelinek <jakub@redhat.com>
PR c++/41183
* g++.dg/torture/pr41183.C: New test.
2009-12-15 Tobias Burnus <burnus@net-b.de>
PR fortran/41235

View file

@ -0,0 +1,30 @@
// PR c++/41183
// { dg-do compile }
void foo (const char *);
template <int *>
struct A
{
template <typename T> A (const int &, T);
int i;
};
template <int *X>
template <typename T>
A<X>::A (const int &j, T) : i(j)
{
foo (0);
foo (0);
foo (__PRETTY_FUNCTION__);
}
int N;
struct B
{
B ();
A<&N> a;
};
B::B() : a(N, 0) {}