compiler: correct condition for calling memclrHasPointers
authorIan Lance Taylor <iant@golang.org>
Sat, 21 Aug 2021 19:42:19 +0000 (12:42 -0700)
committerIan Lance Taylor <iant@golang.org>
Fri, 10 Sep 2021 18:14:06 +0000 (11:14 -0700)
When compiling append(s, make([]typ, ln)...), where typ has a pointer,
and the append fits within the existing capacity of s, the condition
used to clear out the new elements was reversed.

Fixes golang/go#47771

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/344189

gcc/go/gofrontend/MERGE
gcc/go/gofrontend/expressions.cc

index c377269..ff41af7 100644 (file)
@@ -1,4 +1,4 @@
-e42c7c0216aec70834e8827174458aa4a50169fa
+21b30eddc59d92a07264c3b21eb032d6c303d16f
 
 The first line of this file holds the git revision number of the last
 merge done from the gofrontend repository.
index 8d4d168..ddb1d91 100644 (file)
@@ -9350,7 +9350,7 @@ Builtin_call_expression::flatten_append(Gogo* gogo, Named_object* function,
               ref2 = Expression::make_cast(uint_type, ref2, loc);
               cond = Expression::make_binary(OPERATOR_GT, ref, ref2, loc);
               zero = Expression::make_integer_ul(0, int_type, loc);
-              call = Expression::make_conditional(cond, call, zero, loc);
+              call = Expression::make_conditional(cond, zero, call, loc);
             }
         }
       else