diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2013-10-10 03:28:22 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2013-10-10 03:28:22 +0000 |
commit | 3d317d48a799c2561349f4aba97adf576d97b0db (patch) | |
tree | 732ffbd7efa943c8760280cb9cf326fb5375e502 | |
parent | 156dbd1552a01f2057ee47785e9eedb880a50a64 (diff) | |
download | gcc-3d317d48a799c2561349f4aba97adf576d97b0db.zip gcc-3d317d48a799c2561349f4aba97adf576d97b0db.tar.gz gcc-3d317d48a799c2561349f4aba97adf576d97b0db.tar.bz2 |
compiler: Don't inherit logical operator operand type from context.
From-SVN: r203337
-rw-r--r-- | gcc/go/gofrontend/expressions.cc | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/go/gofrontend/expressions.cc b/gcc/go/gofrontend/expressions.cc index e96ab76..8b53331 100644 --- a/gcc/go/gofrontend/expressions.cc +++ b/gcc/go/gofrontend/expressions.cc @@ -5606,6 +5606,15 @@ 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) { |