From: Jonathan Wakely Date: Thu, 3 Feb 2011 22:34:51 +0000 (+0000) Subject: re PR c++/47589 (internal compiler error: Segmentation fault) X-Git-Tag: releases/gcc-4.4.6~142 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9fec765f9cdb08df9383ddcc630302745a0931c7;p=thirdparty%2Fgcc.git re PR c++/47589 (internal compiler error: Segmentation fault) 2011-02-03 Jonathan Wakely PR c++/47589 Backport from mainline 2010-11-09 Jakub Jelinek PR c++/45894 * tree.c (lvalue_kind): Don't crash if ref has NULL type. From-SVN: r169813 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index e780d2a25bae..2dc4781655bd 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,12 @@ +2011-02-03 Jonathan Wakely + + PR c++/47589 + Backport from mainline + 2010-11-09 Jakub Jelinek + + PR c++/45894 + * tree.c (lvalue_kind): Don't crash if ref has NULL type. + 2010-12-07 Jakub Jelinek Backport from mainline diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index 45e0c33bd582..ec069b0ca216 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -72,7 +72,8 @@ lvalue_p_1 (tree ref) == REFERENCE_TYPE) return lvalue_p_1 (TREE_OPERAND (ref, 0)); - if (TREE_CODE (TREE_TYPE (ref)) == REFERENCE_TYPE) + if (TREE_TYPE (ref) + && TREE_CODE (TREE_TYPE (ref)) == REFERENCE_TYPE) { /* unnamed rvalue references are rvalues */ if (TYPE_REF_IS_RVALUE (TREE_TYPE (ref)) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index dc19e213f65e..438f912b3485 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-02-03 Jonathan Wakely + + PR c++/47589 + * g++.dg/pr47589.C: New test. + 2011-01-31 Nathan Froyd Backport from mainline: diff --git a/gcc/testsuite/g++.dg/pr47589.C b/gcc/testsuite/g++.dg/pr47589.C new file mode 100644 index 000000000000..6bc3c80347dc --- /dev/null +++ b/gcc/testsuite/g++.dg/pr47589.C @@ -0,0 +1,26 @@ +// PR c++/47589 +// { dg-do compile } + +struct F +{ + typedef void(*Cb)(); + + F(Cb); +}; + +struct C +{ + template static void f(); +}; + +template +struct TF : F +{ + TF() : F(C::f) { } +}; + +struct DTC : TF +{ + DTC() { } +}; +