Commit b6ea905e authored by Rémy Oudompheng's avatar Rémy Oudompheng

cmd/gc: fix inlining bug with receive operator.

The receive operator was given incorrect precedence
resulting in incorrect deletion of parentheses.

Fixes #3843.

R=rsc
CC=golang-dev, remy
https://golang.org/cl/6442049
parent cbc3268d
......@@ -964,7 +964,6 @@ static int opprec[] = {
[OPAREN] = 8,
[OPRINTN] = 8,
[OPRINT] = 8,
[ORECV] = 8,
[ORUNESTR] = 8,
[OSTRARRAYBYTE] = 8,
[OSTRARRAYRUNE] = 8,
......@@ -996,6 +995,7 @@ static int opprec[] = {
[OMINUS] = 7,
[OADDR] = 7,
[OIND] = 7,
[ORECV] = 7,
[OMUL] = 6,
[ODIV] = 6,
......
// Copyright 2012 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package pkg1
var x = make(chan interface{})
func Do() int {
return (<-x).(int)
}
// Copyright 2012 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// Issue 3843: inlining bug due to wrong receive operator precedence.
package pkg2
import "./pkg1"
func F() {
pkg1.Do()
}
// compiledir
// Copyright 2012 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package ignored
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment