aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@codesourcery.com>2005-06-15 08:23:01 +0000
committerNathan Sidwell <nathan@gcc.gnu.org>2005-06-15 08:23:01 +0000
commitc4eacf9907eb2298d8552e02910723518203bca0 (patch)
treeaca000b905a2460fc61e96ed4169a7a16ced86ad
parent1bf5fc346a3f74999a27c5ad6ff456bb59c1783b (diff)
downloadgcc-c4eacf9907eb2298d8552e02910723518203bca0.zip
gcc-c4eacf9907eb2298d8552e02910723518203bca0.tar.gz
gcc-c4eacf9907eb2298d8552e02910723518203bca0.tar.bz2
re PR c++/20678 (Make process stopped)
cp: PR c++/20678 * error.c (dump_expr) <COMPONENT_REF case>: Check DECL_NAME is not null. testsuite: PR c++/20678 * g++.dg/other/crash-4.C: New. From-SVN: r100972
-rw-r--r--gcc/cp/ChangeLog4
-rw-r--r--gcc/cp/error.c3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/other/crash-4.C19
4 files changed, 30 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 44281fb..8a24049 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,9 @@
2005-06-15 Nathan Sidwell <nathan@codesourcery.com>
+ PR c++/20678
+ * error.c (dump_expr) <COMPONENT_REF case>: Check DECL_NAME is not
+ null.
+
* Make-lang.in: Reformat some long lines.
(gt-cp-rtti.h): New target.
(cp/rtti.o): Add dependency.
diff --git a/gcc/cp/error.c b/gcc/cp/error.c
index c247c97..3d202d6 100644
--- a/gcc/cp/error.c
+++ b/gcc/cp/error.c
@@ -1489,7 +1489,8 @@ dump_expr (tree t, int flags)
{
ob = TREE_OPERAND (ob, 0);
if (TREE_CODE (ob) != PARM_DECL
- || strcmp (IDENTIFIER_POINTER (DECL_NAME (ob)), "this"))
+ || (DECL_NAME (ob)
+ && strcmp (IDENTIFIER_POINTER (DECL_NAME (ob)), "this")))
{
dump_expr (ob, flags | TFF_EXPR_IN_PARENS);
pp_cxx_arrow (cxx_pp);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 9b38bcd..216b331 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2005-06-15 Nathan Sidwell <nathan@codesourcery.com>
+
+ PR c++/20678
+ * g++.dg/other/crash-4.C: New.
+
2005-06-14 Devang Patel <dpatel@apple.com>
* gcc.dg/vect/vect-ifcvt-1.c: Remove.
diff --git a/gcc/testsuite/g++.dg/other/crash-4.C b/gcc/testsuite/g++.dg/other/crash-4.C
new file mode 100644
index 0000000..35f23e8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/other/crash-4.C
@@ -0,0 +1,19 @@
+// Copyright (C) 2005 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 14 Jun 2005 <nathan@codesourcery.com>
+
+// PR 20678: ICE on error message
+// Origin: Andrew Pinski pinskia@gcc.gnu.org
+
+struct a
+{
+ a(const a&);
+};
+struct b
+{ // { dg-error "cannot bind packed field" }
+ a aa __attribute__((packed));
+};
+struct c
+{
+ b bb;
+ c(const b& __a): bb(__a) {} // { dg-error "synthesized" }
+};