compiler: Report errors after evaluating invalid constant.
authorIan Lance Taylor <ian@gcc.gnu.org>
Tue, 20 Oct 2015 20:44:23 +0000 (20:44 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Tue, 20 Oct 2015 20:44:23 +0000 (20:44 +0000)
    The fix for golang/go#11541 made the assertion that getting an invalid
    Numeric_constant after evaluating an invalid constant must result in
    an error in a binary expression.  However, a Numeric_constant can be
    invalid if it is unset, which occurs when either operand cannot be
    converted to the right type.  These errors are issued after the
    Numeric_constant is lowered.

    Fixes golang/go#12615.

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

From-SVN: r229098

gcc/go/gofrontend/MERGE
gcc/go/gofrontend/expressions.cc

index d184a431a55bdcc03352a579a40d9c619e4eb8df..6fcd18593a608c7cffe04b28c7f741e971fca12c 100644 (file)
@@ -1,4 +1,4 @@
-302d8abbc499e28088d758ae8b2c024d8e50b9b3
+11e249a59e8c627fe9c2938c38e39cb1efefb1fb
 
 The first line of this file holds the git revision number of the last
 merge done from the gofrontend repository.
index 20ca10b05243cf69e0a64a4ba07bb96e8a352952..0d25dda1f4465afe4b74e723e440a62034b1fc48 100644 (file)
@@ -4909,14 +4909,7 @@ Binary_expression::do_lower(Gogo* gogo, Named_object*,
            Numeric_constant nc;
            if (!Binary_expression::eval_constant(op, &left_nc, &right_nc,
                                                  location, &nc))
-              {
-                if (nc.is_invalid())
-                  {
-                    go_assert(saw_errors());
-                    return Expression::make_error(location);
-                  }
                 return this;
-              }
            return nc.expression(location);
          }
       }