diff options
author | Ian Lance Taylor <iant@golang.org> | 2022-06-27 22:17:51 -0700 |
---|---|---|
committer | Ian Lance Taylor <iant@golang.org> | 2022-06-28 09:50:52 -0700 |
commit | ed06274eacc17a224b87f23111d7ca874ea53b7c (patch) | |
tree | 7299a483425de85012fdd3b61559c86e40f4934b /gcc | |
parent | 5745301983191f5a6fea9d05e36643e339dd2b52 (diff) | |
download | gcc-ed06274eacc17a224b87f23111d7ca874ea53b7c.zip gcc-ed06274eacc17a224b87f23111d7ca874ea53b7c.tar.gz gcc-ed06274eacc17a224b87f23111d7ca874ea53b7c.tar.bz2 |
compiler: permit expressions of abstract bool to remain abstract
Test case is https://go.dev/cl/414755.
Fixes golang/go#51475
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/414735
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/go/gofrontend/MERGE | 2 | ||||
-rw-r--r-- | gcc/go/gofrontend/expressions.cc | 9 |
2 files changed, 6 insertions, 5 deletions
diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index 16d274c..a0e386a 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -927528cdc112fc51e0d07ee79e7a1254b586eabe +28fe9fad4acb4e02083faf5503b06e3e6e8eecaf The first line of this file holds the git revision number of the last merge done from the gofrontend repository. diff --git a/gcc/go/gofrontend/expressions.cc b/gcc/go/gofrontend/expressions.cc index f59f61d..aadca97 100644 --- a/gcc/go/gofrontend/expressions.cc +++ b/gcc/go/gofrontend/expressions.cc @@ -6829,11 +6829,12 @@ Binary_expression::do_determine_type(const Type_context* context) { if ((tleft->integer_type() != NULL && tright->integer_type() != NULL) || (tleft->float_type() != NULL && tright->float_type() != NULL) - || (tleft->complex_type() != NULL && tright->complex_type() != NULL)) + || (tleft->complex_type() != NULL && tright->complex_type() != NULL) + || (tleft->is_boolean_type() && tright->is_boolean_type())) { - // Both sides have an abstract integer, abstract float, or - // abstract complex type. Just let CONTEXT determine - // whether they may remain abstract or not. + // Both sides have an abstract integer, abstract float, + // abstract complex, or abstract boolean type. Just let + // CONTEXT determine whether they may remain abstract or not. } else if (tleft->complex_type() != NULL) subcontext.type = tleft; |