summaryrefslogtreecommitdiff
path: root/source/d/gcc/patches/revert-asm-inline/7-8-c-asm-Do-not-handle-any-asm-qualifiers-in-top-level-asm.patch
diff options
context:
space:
mode:
Diffstat (limited to 'source/d/gcc/patches/revert-asm-inline/7-8-c-asm-Do-not-handle-any-asm-qualifiers-in-top-level-asm.patch')
-rw-r--r--source/d/gcc/patches/revert-asm-inline/7-8-c-asm-Do-not-handle-any-asm-qualifiers-in-top-level-asm.patch103
1 files changed, 103 insertions, 0 deletions
diff --git a/source/d/gcc/patches/revert-asm-inline/7-8-c-asm-Do-not-handle-any-asm-qualifiers-in-top-level-asm.patch b/source/d/gcc/patches/revert-asm-inline/7-8-c-asm-Do-not-handle-any-asm-qualifiers-in-top-level-asm.patch
new file mode 100644
index 00000000..e124f7c2
--- /dev/null
+++ b/source/d/gcc/patches/revert-asm-inline/7-8-c-asm-Do-not-handle-any-asm-qualifiers-in-top-level-asm.patch
@@ -0,0 +1,103 @@
+From patchwork Thu Dec 27 14:59:12 2018
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Subject: [7/8] c++, asm: Do not handle any asm-qualifiers in top-level asm
+X-Patchwork-Submitter: Segher Boessenkool <segher@kernel.crashing.org>
+X-Patchwork-Id: 13824
+Message-Id: <7d103b408f9dda95b9d9f5182281ae6bb3947716.1545922222.git.segher@kernel.crashing.org>
+To: gcc-patches@gcc.gnu.org
+Cc: Segher Boessenkool <segher@kernel.crashing.org>
+Date: Thu, 27 Dec 2018 14:59:12 +0000
+From: Segher Boessenkool <segher@kernel.crashing.org>
+List-Id: <gcc-patches.gcc.gnu.org>
+
+Previously, "volatile" was allowed. Changing this simplifies the code,
+makes things more regular, and makes the C and C++ frontends handle
+this the same way.
+
+2018-12-10 Segher Boessenkool <segher@kernel.crashing.org>
+
+cp/
+ * parser.c (cp_parser_asm_definition): Do not allow any asm qualifiers
+ on top-level asm.
+
+testsuite/
+ * g++.dg/asm-qual-3.C: New testcase.
+ * gcc.dg/asm-qual-3.c: New testcase.
+---
+ gcc/cp/parser.c | 7 ++-----
+ gcc/testsuite/g++.dg/asm-qual-3.C | 12 ++++++++++++
+ gcc/testsuite/gcc.dg/asm-qual-3.c | 9 +++++++++
+ 3 files changed, 23 insertions(+), 5 deletions(-)
+ create mode 100644 gcc/testsuite/g++.dg/asm-qual-3.C
+ create mode 100644 gcc/testsuite/gcc.dg/asm-qual-3.c
+
+--
+1.8.3.1
+
+diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
+index 36d82b8..afc7b96 100644
+--- a/gcc/cp/parser.c
++++ b/gcc/cp/parser.c
+@@ -19125,7 +19125,8 @@ cp_parser_asm_definition (cp_parser* parser)
+ location_t volatile_loc = UNKNOWN_LOCATION;
+ location_t inline_loc = UNKNOWN_LOCATION;
+ location_t goto_loc = UNKNOWN_LOCATION;
+- if (cp_parser_allow_gnu_extensions_p (parser))
++
++ if (cp_parser_allow_gnu_extensions_p (parser) && parser->in_function_body)
+ for (;;)
+ {
+ cp_token *token = cp_lexer_peek_token (parser->lexer);
+@@ -19144,8 +19145,6 @@ cp_parser_asm_definition (cp_parser* parser)
+ continue;
+
+ case RID_INLINE:
+- if (!parser->in_function_body)
+- break;
+ if (inline_loc)
+ {
+ error_at (loc, "duplicate asm qualifier %qT", token->u.value);
+@@ -19157,8 +19156,6 @@ cp_parser_asm_definition (cp_parser* parser)
+ continue;
+
+ case RID_GOTO:
+- if (!parser->in_function_body)
+- break;
+ if (goto_loc)
+ {
+ error_at (loc, "duplicate asm qualifier %qT", token->u.value);
+diff --git a/gcc/testsuite/g++.dg/asm-qual-3.C b/gcc/testsuite/g++.dg/asm-qual-3.C
+new file mode 100644
+index 0000000..95c9b57
+--- /dev/null
++++ b/gcc/testsuite/g++.dg/asm-qual-3.C
+@@ -0,0 +1,12 @@
++// Test that asm-qualifiers are not allowed on toplevel asm.
++// { dg-do compile }
++// { dg-options "-std=gnu++98" }
++
++asm const (""); // { dg-error {expected '\(' before 'const'} }
++asm volatile (""); // { dg-error {expected '\(' before 'volatile'} }
++asm restrict (""); // { dg-error {expected '\(' before 'restrict'} }
++asm inline (""); // { dg-error {expected '\(' before 'inline'} }
++asm goto (""); // { dg-error {expected '\(' before 'goto'} }
++
++// There are many other things wrong with this code, so:
++// { dg-excess-errors "" }
+diff --git a/gcc/testsuite/gcc.dg/asm-qual-3.c b/gcc/testsuite/gcc.dg/asm-qual-3.c
+new file mode 100644
+index 0000000..f85d8bf
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/asm-qual-3.c
+@@ -0,0 +1,9 @@
++/* Test that asm-qualifiers are not allowed on toplevel asm. */
++/* { dg-do compile } */
++/* { dg-options "-std=gnu99" } */
++
++asm const (""); /* { dg-error {expected '\(' before 'const'} } */
++asm volatile (""); /* { dg-error {expected '\(' before 'volatile'} } */
++asm restrict (""); /* { dg-error {expected '\(' before 'restrict'} } */
++asm inline (""); /* { dg-error {expected '\(' before 'inline'} } */
++asm goto (""); /* { dg-error {expected '\(' before 'goto'} } */