Go patch committed: Correct condition for calling memclrHasPointers

Message ID CAOyqgcU8zLQoz9q=+fcYN2aa5gYFjyj-O9Gupqzpg-C-nc22Ag@mail.gmail.com
State New
Headers show
  • Go patch committed: Correct condition for calling memclrHasPointers
Related show

Commit Message

Jonathan Wakely via Gcc-patches Sept. 10, 2021, 6:15 p.m.
This Go frontend patch corrects the condition under which we call
memclrHasPointers.  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.  This fixes https://golang.org/issue/47771.  Bootstrapped
and ran Go tests on x86_64-pc-linux-gnu.  Committed to trunk and to
GCC 10 and 11 branches.




diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE
index c3772694780..ff41af787b1 100644
--- a/gcc/go/gofrontend/MERGE
+++ b/gcc/go/gofrontend/MERGE
@@ -1,4 +1,4 @@ 
 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 8d4d168f4e3..ddb1d91f3e5 100644
--- a/gcc/go/gofrontend/expressions.cc
+++ b/gcc/go/gofrontend/expressions.cc
@@ -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);