aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2014-12-08 18:05:30 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2014-12-08 18:05:30 +0000
commit942f7f5af30171ea44db18d93ea9e7d30eddc676 (patch)
tree883870dde5a60e6f288d66e677e97aadc0681fdc
parent58a3bd25ba668138bcc9ea314736736e08fa41a1 (diff)
downloadgcc-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.cc9
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());