Index: gcc/go/gofrontend/MERGE =================================================================== --- gcc/go/gofrontend/MERGE (revision 273713) +++ gcc/go/gofrontend/MERGE (working copy) @@ -1,4 +1,4 @@ -b7bce0dbccb978d33eb8ce0bffc02fae2c2857c1 +480477ca64c3001b9c7e92ef8b978dc92a5912d2 The first line of this file holds the git revision number of the last merge done from the gofrontend repository. Index: gcc/go/gofrontend/statements.cc =================================================================== --- gcc/go/gofrontend/statements.cc (revision 273577) +++ gcc/go/gofrontend/statements.cc (working copy) @@ -5880,6 +5880,7 @@ Select_statement::lower_two_case(Block* : this->clauses_->at(1)); Location loc = this->location(); Expression* chan = chancase.channel(); + Type* valtype = chan->type()->channel_type()->element_type(); Temporary_statement* chantmp = Statement::make_temporary(NULL, chan, loc); b->add_statement(chantmp); @@ -5891,7 +5892,8 @@ Select_statement::lower_two_case(Block* { // if selectnbsend(chan, &val) { body } else { default body } - Temporary_statement* ts = Statement::make_temporary(NULL, chancase.val(), loc); + Temporary_statement* ts = + Statement::make_temporary(valtype, chancase.val(), loc); // Tell the escape analysis that the value escapes, as it may be sent // to a channel. ts->set_value_escapes(); @@ -5904,7 +5906,6 @@ Select_statement::lower_two_case(Block* } else { - Type* valtype = chan->type()->channel_type()->element_type(); Temporary_statement* ts = Statement::make_temporary(valtype, NULL, loc); b->add_statement(ts);