aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>1999-04-08 20:16:51 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>1999-04-08 20:16:51 +0000
commit5082a35587f3bc483ab5d1730d9a179251ff9f09 (patch)
treeeac8067e3bbcbef5008c44f1b4d6d760dd28e3cc
parentd4ca58b3e001758ce57da07cfd636a52c012aa4d (diff)
downloadgcc-5082a35587f3bc483ab5d1730d9a179251ff9f09.zip
gcc-5082a35587f3bc483ab5d1730d9a179251ff9f09.tar.gz
gcc-5082a35587f3bc483ab5d1730d9a179251ff9f09.tar.bz2
error.c (dump_expr): Don't crash on INDIRECT_REFs whose operands don't have types.
* error.c (dump_expr): Don't crash on INDIRECT_REFs whose operands don't have types. From-SVN: r26300
-rw-r--r--gcc/cp/ChangeLog3
-rw-r--r--gcc/cp/error.c1
-rw-r--r--gcc/testsuite/g++.old-deja/g++.pt/crash35.C11
3 files changed, 15 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 21cf5a9..c1c04e7 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,8 @@
1999-04-08 Mark Mitchell <mark@codesourcery.com>
+ * error.c (dump_expr): Don't crash on INDIRECT_REFs whose operands
+ don't have types.
+
* search.c (template_self_reference_p): Tweak.
1999-04-07 Mark Mitchell <mark@codesourcery.com>
diff --git a/gcc/cp/error.c b/gcc/cp/error.c
index 45b96d7..055f92a 100644
--- a/gcc/cp/error.c
+++ b/gcc/cp/error.c
@@ -1564,6 +1564,7 @@ dump_expr (t, nop)
else
{
if (TREE_OPERAND (t,0) != NULL_TREE
+ && TREE_TYPE (TREE_OPERAND (t, 0))
&& NEXT_CODE (TREE_OPERAND (t, 0)) == REFERENCE_TYPE)
dump_expr (TREE_OPERAND (t, 0), nop);
else
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash35.C b/gcc/testsuite/g++.old-deja/g++.pt/crash35.C
new file mode 100644
index 0000000..d4084fe
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.pt/crash35.C
@@ -0,0 +1,11 @@
+// Build don't link:
+// Origin: Miniussi <miniussi@ilog.fr>
+
+template <class O>
+struct Str {
+ Str(int& val= (*new int()));
+};
+
+template<class O>
+Str<O>::Str(int& val) {}
+