diff options
author | Jakub Jelinek <jakub@gcc.gnu.org> | 2009-04-01 15:32:22 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2009-04-01 15:32:22 +0200 |
commit | b85eb797e2ffda39def175285b334b721c0b2b4f (patch) | |
tree | 08ff9013ac51f3577a317f758fd39f710527edf1 /gcc/c-parser.c | |
parent | 00c7e24fddb113e87566ede396a0d775664c4afb (diff) | |
download | gcc-b85eb797e2ffda39def175285b334b721c0b2b4f.zip gcc-b85eb797e2ffda39def175285b334b721c0b2b4f.tar.gz gcc-b85eb797e2ffda39def175285b334b721c0b2b4f.tar.bz2 |
re PR c/37772 (ICE with empty asm statement)
PR c/37772
* c-parser.c (c_parser_asm_statement): Skip until close paren and
return if c_parser_asm_string_literal returned NULL.
* gcc.dg/pr37772.c: New test.
* g++.dg/ext/asm11.C: New test.
From-SVN: r145401
Diffstat (limited to 'gcc/c-parser.c')
-rw-r--r-- | gcc/c-parser.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/c-parser.c b/gcc/c-parser.c index 03a7194..1be2ae5 100644 --- a/gcc/c-parser.c +++ b/gcc/c-parser.c @@ -4193,6 +4193,12 @@ c_parser_asm_statement (c_parser *parser) return NULL_TREE; } str = c_parser_asm_string_literal (parser); + if (str == NULL_TREE) + { + parser->lex_untranslated_string = false; + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, NULL); + return NULL_TREE; + } if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) { simple = true; |