This patch to the Go frontend initializes a couple of saw_send_stmt
local variables that were incorrectly left uninitialized.  These are
variables in the compiler source, not in the generated code.  The C++
compiler wasn't warning because we take their address.  This fixes
https://golang.org/issue/43252.  Bootstrapped and ran Go testsuite on
x86_64-pc-linux-gnu.  Committed to mainline.

Ian
7b89979747684476c371208a274c77ec9e402caf
diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE
index c70b60c657f..e67aa3622fb 100644
--- a/gcc/go/gofrontend/MERGE
+++ b/gcc/go/gofrontend/MERGE
@@ -1,4 +1,4 @@
-d091cd25a5894ac751fe1868197648fc486cf322
+013a4ddcae2e8b840561c4411bab87f4f0f9ef42
 
 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/parse.cc b/gcc/go/gofrontend/parse.cc
index 3b2e5a7aa86..1664fe36c28 100644
--- a/gcc/go/gofrontend/parse.cc
+++ b/gcc/go/gofrontend/parse.cc
@@ -4491,7 +4491,7 @@ Parse::switch_stat(Label* label)
 
   bool saw_simple_stat = false;
   Expression* switch_val = NULL;
-  bool saw_send_stmt;
+  bool saw_send_stmt = false;
   Type_switch type_switch;
   bool have_type_switch_block = false;
   if (this->simple_stat_may_start_here())
@@ -5326,7 +5326,7 @@ Parse::for_stat(Label* label)
        {
          // We might be looking at a Condition, an InitStat, or a
          // RangeClause.
-         bool saw_send_stmt;
+         bool saw_send_stmt = false;
          cond = this->simple_stat(false, &saw_send_stmt, &range_clause, NULL);
          if (!this->peek_token()->is_op(OPERATOR_SEMICOLON))
            {

Reply via email to