diff options
author | ian <ian@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-11-04 17:49:01 +0000 |
---|---|---|
committer | ian <ian@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-11-04 17:49:01 +0000 |
commit | b80ff967a3e63a916a33f690204e06e869ac8eea (patch) | |
tree | 073dfefb57591378d14ae80840407687199c89c6 | |
parent | 8c2cffd05da2faf58036e20b7e27f2be2b1e9388 (diff) | |
download | gcc-b80ff967a3e63a916a33f690204e06e869ac8eea.tar.gz |
compiler: Logical operators should yield untyped bool for untyped operands.
Fixes issue 6671 for gccgo.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217094 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/go/gofrontend/expressions.cc | 9 | ||||
-rw-r--r-- | gcc/testsuite/go.test/test/fixedbugs/issue3924.go | 6 |
2 files changed, 3 insertions, 12 deletions
diff --git a/gcc/go/gofrontend/expressions.cc b/gcc/go/gofrontend/expressions.cc index 6f2b07ca97a..712464639a5 100644 --- a/gcc/go/gofrontend/expressions.cc +++ b/gcc/go/gofrontend/expressions.cc @@ -5314,15 +5314,6 @@ Binary_expression::do_determine_type(const Type_context* context) subcontext.type = NULL; } - if (this->op_ == OPERATOR_ANDAND || this->op_ == OPERATOR_OROR) - { - // For a logical operation, the context does not determine the - // types of the operands. The operands must be some boolean - // type but if the context has a boolean type they do not - // inherit it. See http://golang.org/issue/3924. - subcontext.type = NULL; - } - // Set the context for the left hand operand. if (is_shift_op) { diff --git a/gcc/testsuite/go.test/test/fixedbugs/issue3924.go b/gcc/testsuite/go.test/test/fixedbugs/issue3924.go index d4739b21c90..eb7a665bdc1 100644 --- a/gcc/testsuite/go.test/test/fixedbugs/issue3924.go +++ b/gcc/testsuite/go.test/test/fixedbugs/issue3924.go @@ -1,4 +1,4 @@ -// errorcheck +// compile // Copyright 2012 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style @@ -9,5 +9,5 @@ package foo type mybool bool var x, y = 1, 2 -var _ mybool = x < y && x < y // ERROR "cannot use" -var _ mybool = x < y || x < y // ERROR "cannot use" +var _ mybool = x < y && x < y +var _ mybool = x < y || x < y |