OSDN Git Service

Avoid overflow error after negative shift count error.
authorian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 25 Mar 2011 19:23:10 +0000 (19:23 +0000)
committerian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 25 Mar 2011 19:23:10 +0000 (19:23 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@171523 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/go/gofrontend/expressions.cc

index 861d5c0..2ee4a69 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);
        }