diff options
Diffstat (limited to 'source/d/gcc/patches/revert-asm-inline/4-8-c-c-asm-Write-the-asm-qualifier-loop-without-done-boolean.patch')
-rw-r--r-- | source/d/gcc/patches/revert-asm-inline/4-8-c-c-asm-Write-the-asm-qualifier-loop-without-done-boolean.patch | 194 |
1 files changed, 0 insertions, 194 deletions
diff --git a/source/d/gcc/patches/revert-asm-inline/4-8-c-c-asm-Write-the-asm-qualifier-loop-without-done-boolean.patch b/source/d/gcc/patches/revert-asm-inline/4-8-c-c-asm-Write-the-asm-qualifier-loop-without-done-boolean.patch deleted file mode 100644 index 0c73f538..00000000 --- a/source/d/gcc/patches/revert-asm-inline/4-8-c-c-asm-Write-the-asm-qualifier-loop-without-done-boolean.patch +++ /dev/null @@ -1,194 +0,0 @@ -From patchwork Thu Dec 27 14:59:09 2018 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -Subject: [4/8] c/c++, asm: Write the asm-qualifier loop without "done" boolean -X-Patchwork-Submitter: Segher Boessenkool <segher@kernel.crashing.org> -X-Patchwork-Id: 13821 -Message-Id: <5bbbd04162b8546d9c72da11cf33e6e61d1128d7.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:09 +0000 -From: Segher Boessenkool <segher@kernel.crashing.org> -List-Id: <gcc-patches.gcc.gnu.org> - -As suggested by Jason. - -Segher - -2018-12-10 Segher Boessenkool <segher@kernel.crashing.org> - -c/ - * c-parser.c (c_parser_asm_statement): Rewrite the loop to work without - "done" boolean variable. - -cp/ - * parser.c (cp_parser_asm_definition): Rewrite the loop to work without - "done" boolean variable. ---- - gcc/c/c-parser.c | 65 +++++++++++++++++++++++++-------------------------- - gcc/cp/parser.c | 71 +++++++++++++++++++++++++------------------------------- - 2 files changed, 62 insertions(+), 74 deletions(-) - --- -1.8.3.1 - -diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c -index e45f70b..b632f68 100644 ---- a/gcc/c/c-parser.c -+++ b/gcc/c/c-parser.c -@@ -6304,40 +6304,37 @@ c_parser_asm_statement (c_parser *parser) - is_volatile = false; - is_inline = false; - is_goto = false; -- for (bool done = false; !done; ) -- switch (c_parser_peek_token (parser)->keyword) -- { -- case RID_VOLATILE: -- if (!is_volatile) -- { -- is_volatile = true; -- quals = c_parser_peek_token (parser)->value; -- c_parser_consume_token (parser); -- } -- else -- done = true; -- break; -- case RID_INLINE: -- if (!is_inline) -- { -- is_inline = true; -- c_parser_consume_token (parser); -- } -- else -- done = true; -- break; -- case RID_GOTO: -- if (!is_goto) -- { -- is_goto = true; -- c_parser_consume_token (parser); -- } -- else -- done = true; -- break; -- default: -- done = true; -- } -+ for (;;) -+ { -+ switch (c_parser_peek_token (parser)->keyword) -+ { -+ case RID_VOLATILE: -+ if (is_volatile) -+ break; -+ is_volatile = true; -+ quals = c_parser_peek_token (parser)->value; -+ c_parser_consume_token (parser); -+ continue; -+ -+ case RID_INLINE: -+ if (is_inline) -+ break; -+ is_inline = true; -+ c_parser_consume_token (parser); -+ continue; -+ -+ case RID_GOTO: -+ if (is_goto) -+ break; -+ is_goto = true; -+ c_parser_consume_token (parser); -+ continue; -+ -+ default: -+ break; -+ } -+ break; -+ } - - /* ??? Follow the C++ parser rather than using the - lex_untranslated_string kludge. */ -diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c -index 3fd9a02..7660565 100644 ---- a/gcc/cp/parser.c -+++ b/gcc/cp/parser.c -@@ -19124,47 +19124,38 @@ cp_parser_asm_definition (cp_parser* parser) - cp_function_chain->invalid_constexpr = true; - } - -- /* See if the next token is `volatile'. */ -+ /* Handle the asm-qualifier-list. */ - if (cp_parser_allow_gnu_extensions_p (parser)) -- for (bool done = false; !done ; ) -- switch (cp_lexer_peek_token (parser->lexer)->keyword) -- { -- case RID_VOLATILE: -- if (!volatile_p) -- { -- /* Remember that we saw the `volatile' keyword. */ -- volatile_p = true; -- /* Consume the token. */ -- cp_lexer_consume_token (parser->lexer); -- } -- else -- done = true; -- break; -- case RID_INLINE: -- if (!inline_p && parser->in_function_body) -- { -- /* Remember that we saw the `inline' keyword. */ -- inline_p = true; -- /* Consume the token. */ -- cp_lexer_consume_token (parser->lexer); -- } -- else -- done = true; -- break; -- case RID_GOTO: -- if (!goto_p && parser->in_function_body) -- { -- /* Remember that we saw the `goto' keyword. */ -- goto_p = true; -- /* Consume the token. */ -- cp_lexer_consume_token (parser->lexer); -- } -- else -- done = true; -- break; -- default: -- done = true; -- } -+ for (;;) -+ { -+ switch (cp_lexer_peek_token (parser->lexer)->keyword) -+ { -+ case RID_VOLATILE: -+ if (volatile_p) -+ break; -+ volatile_p = true; -+ cp_lexer_consume_token (parser->lexer); -+ continue; -+ -+ case RID_INLINE: -+ if (inline_p || !parser->in_function_body) -+ break; -+ inline_p = true; -+ cp_lexer_consume_token (parser->lexer); -+ continue; -+ -+ case RID_GOTO: -+ if (goto_p || !parser->in_function_body) -+ break; -+ goto_p = true; -+ cp_lexer_consume_token (parser->lexer); -+ continue; -+ -+ default: -+ break; -+ } -+ break; -+ } - - /* Look for the opening `('. */ - if (!cp_parser_require (parser, CPP_OPEN_PAREN, RT_OPEN_PAREN)) |