Avoid overflow error after negative shift count error.
authorIan Lance Taylor <ian@gcc.gnu.org>
Fri, 25 Mar 2011 19:23:10 +0000 (19:23 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Fri, 25 Mar 2011 19:23:10 +0000 (19:23 +0000)
From-SVN: r171523

gcc/go/gofrontend/expressions.cc

index 861d5c0ca9914291a20da8821faf42a24b4702d8..2ee4a696db9a4abe08f347671b34e831c1e8b34d 100644 (file)
@@ -5747,7 +5747,13 @@ Binary_expression::do_check_types(Gogo*)
          if (this->right_->integer_constant_value(true, val, &type))
            {
              if (mpz_sgn(val) < 0)
-               this->report_error(_("negative shift count"));
+               {
+                 this->report_error(_("negative shift count"));
+                 mpz_set_ui(val, 0);
+                 source_location rloc = this->right_->location();
+                 this->right_ = Expression::make_integer(&val, right_type,
+                                                         rloc);
+               }
            }
          mpz_clear(val);
        }