Commit 6c23308e by Ian Lance Taylor

compiler: Fix comparison of struct/array with interface.

The compiler used to crash when the struct/array was not
addressable.

The test case is https://codereview.appspot.com/135170043 .

This fixes http://golang.org/issue/8612 .

From-SVN: r214713
parent bbbf5d5a
......@@ -5187,10 +5187,13 @@ Binary_expression::do_lower(Gogo* gogo, Named_object*,
// Lower struct, array, and some interface comparisons.
if (op == OPERATOR_EQEQ || op == OPERATOR_NOTEQ)
{
if (left->type()->struct_type() != NULL)
if (left->type()->struct_type() != NULL
&& right->type()->struct_type() != NULL)
return this->lower_struct_comparison(gogo, inserter);
else if (left->type()->array_type() != NULL
&& !left->type()->is_slice_type())
&& !left->type()->is_slice_type()
&& right->type()->array_type() != NULL
&& !right->type()->is_slice_type())
return this->lower_array_comparison(gogo, inserter);
else if ((left->type()->interface_type() != NULL
&& right->type()->interface_type() == NULL)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment