From: Ian Lance Taylor Date: Thu, 10 Sep 2015 03:46:03 +0000 (+0000) Subject: compiler: Don't allow shifts with non-integers. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=609df8a305e7d4a8325348078ba8d71638a3db25;p=gcc.git compiler: Don't allow shifts with non-integers. Fixes golang/go#11616. Reviewed-on: https://go-review.googlesource.com/13688 From-SVN: r227604 --- diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index 9dea1f84115..a4ec9249bf7 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -672ac2abc52d8bd70cb9fb03dd4a32fdde9c438f +913b47c957ea91db2f724491d88cb20e8f9be8c7 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 5abfb27b3f1..21b4f143b77 100644 --- a/gcc/go/gofrontend/expressions.cc +++ b/gcc/go/gofrontend/expressions.cc @@ -4523,6 +4523,12 @@ Binary_expression::eval_constant(Operator op, Numeric_constant* left_nc, return false; if (!is_shift && !right_nc->set_type(type, true, location)) return false; + if (is_shift + && ((left_type->integer_type() == NULL + && !left_type->is_abstract()) + || (right_type->integer_type() == NULL + && !right_type->is_abstract()))) + return false; bool r; if (type->complex_type() != NULL)