From 85334a211349c538a80505673fcc9411091e7570 Mon Sep 17 00:00:00 2001 From: ian Date: Thu, 10 Sep 2015 03:46:03 +0000 Subject: [PATCH] compiler: Don't allow shifts with non-integers. Fixes golang/go#11616. Reviewed-on: https://go-review.googlesource.com/13688 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@227604 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/go/gofrontend/MERGE | 2 +- gcc/go/gofrontend/expressions.cc | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index 9dea1f84115a1..a4ec9249bf7fa 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 5abfb27b3f1c8..21b4f143b7784 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)