aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Bonzini <bonzini@gcc.gnu.org>2005-10-12 13:16:22 +0000
committerPaolo Bonzini <bonzini@gcc.gnu.org>2005-10-12 13:16:22 +0000
commit39e837db6aa45f28e5c1fe314b16d1dcaa8c99ab (patch)
treed3fe0ddcb855eb7439d3b6aa336fc350e6d0f082
parentc8c7ed52e4011b656b678a06ae477927f1c6e022 (diff)
downloadgcc-39e837db6aa45f28e5c1fe314b16d1dcaa8c99ab.zip
gcc-39e837db6aa45f28e5c1fe314b16d1dcaa8c99ab.tar.gz
gcc-39e837db6aa45f28e5c1fe314b16d1dcaa8c99ab.tar.bz2
==> cp/ChangeLog <==
2005-10-12 Paolo Bonzini <bonzini@gnu.org> PR c++/24052 * error.c (dump_expr): Pass LABEL_DECL to dump_decl. Print an ADDR_EXPR of a LABEL_DECL as &&. ==> testsuite/ChangeLog <== 2005-10-12 Paolo Bonzini <bonzini@gnu.org> PR c++/24052 * g++.dg/ext/label5.C: New. From-SVN: r105297
-rw-r--r--gcc/cp/ChangeLog8
-rw-r--r--gcc/cp/error.c3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/ext/label5.C7
4 files changed, 22 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 53a5cb0..a7e9703 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,7 +1,13 @@
+2005-10-12 Paolo Bonzini <bonzini@gnu.org>
+
+ PR c++/24052
+ * error.c (dump_expr): Pass LABEL_DECL to dump_decl. Print
+ an ADDR_EXPR of a LABEL_DECL as &&.
+
2005-10-12 Nathan Sidwell <nathan@codesourcery.com>
PR c++/19964
- * cp/class.c (walk_subobject_offsets): Don't walk error_mark_node.
+ * class.c (walk_subobject_offsets): Don't walk error_mark_node.
2005-10-11 Ian Lance Taylor <ian@airs.com>
diff --git a/gcc/cp/error.c b/gcc/cp/error.c
index 1b70bbb..8e39cca 100644
--- a/gcc/cp/error.c
+++ b/gcc/cp/error.c
@@ -1295,6 +1295,7 @@ dump_expr (tree t, int flags)
case FUNCTION_DECL:
case TEMPLATE_DECL:
case NAMESPACE_DECL:
+ case LABEL_DECL:
case OVERLOAD:
case IDENTIFIER_NODE:
dump_decl (t, (flags & ~TFF_DECL_SPECIFIERS) | TFF_NO_FUNCTION_ARGUMENTS);
@@ -1537,6 +1538,8 @@ dump_expr (tree t, int flags)
|| (TREE_TYPE (t)
&& TREE_CODE (TREE_TYPE (t)) == REFERENCE_TYPE))
dump_expr (TREE_OPERAND (t, 0), flags | TFF_EXPR_IN_PARENS);
+ else if (TREE_CODE (TREE_OPERAND (t, 0)) == LABEL_DECL)
+ dump_unary_op ("&&", t, flags);
else
dump_unary_op ("&", t, flags);
break;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 51b8119..6787a81 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2005-10-12 Paolo Bonzini <bonzini@gnu.org>
+
+ PR c++/24052
+ * g++.dg/ext/label5.C: New.
+
2005-10-12 Nathan Sidwell <nathan@codesourcery.com>
PR c++/19964
diff --git a/gcc/testsuite/g++.dg/ext/label5.C b/gcc/testsuite/g++.dg/ext/label5.C
new file mode 100644
index 0000000..0032b0f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/label5.C
@@ -0,0 +1,7 @@
+// { dg-options "" }
+// PR c++/24052
+
+struct A { };
+int main() { b: A() && && b; } // { dg-error "A\\(\\) && && *b" }
+
+// { dg-error "candidate" "additional" { target *-*-* } 5 }