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: r155255
This commit is contained in:
Jakub Jelinek 2009-12-15 16:14:59 +01:00 committed by Jakub Jelinek
parent 98e78bdea2
commit 5eb770f88c
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-11-13 Jason Merrill <jason@redhat.com>
PR c++/27425

View File

@ -883,7 +883,8 @@ struct language_function GTY(())
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-11 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
Backport from mainline:

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) {}