diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2014-12-08 18:05:30 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2014-12-08 18:05:30 +0000 |
commit | 942f7f5af30171ea44db18d93ea9e7d30eddc676 (patch) | |
tree | 883870dde5a60e6f288d66e677e97aadc0681fdc | |
parent | 58a3bd25ba668138bcc9ea314736736e08fa41a1 (diff) | |
download | gcc-942f7f5af30171ea44db18d93ea9e7d30eddc676.zip gcc-942f7f5af30171ea44db18d93ea9e7d30eddc676.tar.gz gcc-942f7f5af30171ea44db18d93ea9e7d30eddc676.tar.bz2 |
re PR go/64198 (ICE in gofrontend)
PR go/64198
compiler: Don't crash on invalid ++.
From-SVN: r218485
-rw-r--r-- | gcc/go/gofrontend/parse.cc | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/gcc/go/gofrontend/parse.cc b/gcc/go/gofrontend/parse.cc index 5731025..8e3aa3b 100644 --- a/gcc/go/gofrontend/parse.cc +++ b/gcc/go/gofrontend/parse.cc @@ -3190,9 +3190,12 @@ Parse::call(Expression* func) if (token->is_op(OPERATOR_COMMA)) token = this->advance_token(); if (!token->is_op(OPERATOR_RPAREN)) - error_at(this->location(), "missing %<)%>"); - else - this->advance_token(); + { + error_at(this->location(), "missing %<)%>"); + if (!this->skip_past_error(OPERATOR_RPAREN)) + return Expression::make_error(this->location()); + } + this->advance_token(); if (func->is_error_expression()) return func; return Expression::make_call(func, args, is_varargs, func->location()); |