aboutsummaryrefslogtreecommitdiff
path: root/gcc/go
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2015-08-26 19:18:51 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2015-08-26 19:18:51 +0000
commit8a256400f549211c85425c896f81a4ffc3ece8ef (patch)
tree3470b98759341615e593b46dbfdecf711407f53c /gcc/go
parente4f019d316695dc3bd9f509b8f3e16b5954fe231 (diff)
downloadgcc-8a256400f549211c85425c896f81a4ffc3ece8ef.zip
gcc-8a256400f549211c85425c896f81a4ffc3ece8ef.tar.gz
gcc-8a256400f549211c85425c896f81a4ffc3ece8ef.tar.bz2
compiler: Don't crash on invalid arithmetic ops.
The gofrontend would crash after hitting an unreachable state while trying to determine the type of an arithmetic expression involving non-numeric values. Instead of crashing, it should fail gracefully if the relevant error is already reported. Fixes golang/go#11537. Reviewed-on: https://go-review.googlesource.com/13793 From-SVN: r227227
Diffstat (limited to 'gcc/go')
-rw-r--r--gcc/go/gofrontend/MERGE2
-rw-r--r--gcc/go/gofrontend/expressions.cc6
2 files changed, 6 insertions, 2 deletions
diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE
index ff77fd1..b3fcc04 100644
--- a/gcc/go/gofrontend/MERGE
+++ b/gcc/go/gofrontend/MERGE
@@ -1,4 +1,4 @@
-d5e6af4e6dd456075a1ec1c03d0dc41cbea5eb36
+cd5362c7bb0b207f484a8dfb8db229fd2bffef09
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.
diff --git a/gcc/go/gofrontend/expressions.cc b/gcc/go/gofrontend/expressions.cc
index c9323f5..79b772e 100644
--- a/gcc/go/gofrontend/expressions.cc
+++ b/gcc/go/gofrontend/expressions.cc
@@ -15150,7 +15150,11 @@ Numeric_constant::set_type(Type* type, bool issue_error, Location loc)
else if (type->complex_type() != NULL)
ret = this->check_complex_type(type->complex_type(), issue_error, loc);
else
- go_unreachable();
+ {
+ ret = false;
+ if (issue_error)
+ go_assert(saw_errors());
+ }
if (ret)
this->type_ = type;
return ret;