aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/decl.c2
-rw-r--r--gcc/cp/decl2.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/ext/asmspec1.C8
5 files changed, 21 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index de1f4f1..d8b8652 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2006-07-14 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+
+ PR c++/28343
+ * decl.c (cp_finish_decl): Check asmspec_tree for error_mark_node.
+ * decl2.c (grokfield): Likewise.
+
2006-07-12 Geoffrey Keating <geoffk@apple.com>
* decl2.c (determine_visibility): Don't change visibility of
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 1d5be58..b74a1a9 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -5056,7 +5056,7 @@ cp_finish_decl (tree decl, tree init, bool init_const_expr_p,
/* If a name was specified, get the string. */
if (global_scope_p (current_binding_level))
asmspec_tree = maybe_apply_renaming_pragma (decl, asmspec_tree);
- if (asmspec_tree)
+ if (asmspec_tree && asmspec_tree != error_mark_node)
asmspec = TREE_STRING_POINTER (asmspec_tree);
if (current_class_type
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index 3a78c40..11c4901 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -837,7 +837,7 @@ grokfield (const cp_declarator *declarator,
return void_type_node;
}
- if (asmspec_tree)
+ if (asmspec_tree && asmspec_tree != error_mark_node)
asmspec = TREE_STRING_POINTER (asmspec_tree);
if (init)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 8b71199..fa86c81 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2006-07-14 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+
+ PR c++/28343
+ * g++.dg/ext/asmspec1.C: New test.
+
2006-07-13 Janis Johnson <janis187@us.ibm.com>
* lib/gcc-dg.exp (tool_load): Wrapper to support shouldfail tests.
diff --git a/gcc/testsuite/g++.dg/ext/asmspec1.C b/gcc/testsuite/g++.dg/ext/asmspec1.C
new file mode 100644
index 0000000..3df2483
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/asmspec1.C
@@ -0,0 +1,8 @@
+// PR c++/28343
+// { dg-do compile }
+
+struct A
+{
+ int i __asm__(int); // { dg-error "before" }
+ static int j __asm__(int); // { dg-error "before" }
+};