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
This commit is contained in:
parent
bbbf5d5ab4
commit
6c23308e70
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue