From 28c64f64a40843a5951225a2c5949f21a6bc15b4 Mon Sep 17 00:00:00 2001
From: Ian Lance Taylor <ian@gcc.gnu.org>
Date: Tue, 20 Oct 2015 18:14:30 +0000
Subject: [PATCH] compiler: Report errors for non-integral shift counts.

    Fixes golang/go#12618.

    Reviewed-on: https://go-review.googlesource.com/14647

From-SVN: r229096
---
 gcc/go/gofrontend/MERGE          | 2 +-
 gcc/go/gofrontend/expressions.cc | 4 +++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE
index dda00329d065..d184a431a55b 100644
--- a/gcc/go/gofrontend/MERGE
+++ b/gcc/go/gofrontend/MERGE
@@ -1,4 +1,4 @@
-a4bcd319d98ddc52b3e7d16ec87d92aad868ab05
+302d8abbc499e28088d758ae8b2c024d8e50b9b3
 
 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 80f8b4cbb273..20ca10b05243 100644
--- a/gcc/go/gofrontend/expressions.cc
+++ b/gcc/go/gofrontend/expressions.cc
@@ -5601,7 +5601,9 @@ Binary_expression::do_check_types(Gogo*)
       if (left_type->integer_type() == NULL)
 	this->report_error(_("shift of non-integer operand"));
 
-      if (!right_type->is_abstract()
+      if (right_type->is_string_type())
+        this->report_error(_("shift count not unsigned integer"));
+      else if (!right_type->is_abstract()
 	  && (right_type->integer_type() == NULL
 	      || !right_type->integer_type()->is_unsigned()))
 	this->report_error(_("shift count not unsigned integer"));
-- 
GitLab