From: Rémy Oudompheng Date: Fri, 21 Sep 2012 19:54:22 +0000 (+1000) Subject: [release-branch.go1] cmd/gc: fix inlining bug with receive operator. X-Git-Tag: go1.0.3~122 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=bedafd2ddb4f758111f9d24729a8815caa6cbcb0;p=gostls13.git [release-branch.go1] cmd/gc: fix inlining bug with receive operator. ««« backport d872ed20fccb 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 »»» --- diff --git a/src/cmd/gc/fmt.c b/src/cmd/gc/fmt.c index 5672c00103..3698833a62 100644 --- a/src/cmd/gc/fmt.c +++ b/src/cmd/gc/fmt.c @@ -962,7 +962,6 @@ static int opprec[] = { [OPAREN] = 8, [OPRINTN] = 8, [OPRINT] = 8, - [ORECV] = 8, [ORUNESTR] = 8, [OSTRARRAYBYTE] = 8, [OSTRARRAYRUNE] = 8, @@ -994,6 +993,7 @@ static int opprec[] = { [OMINUS] = 7, [OADDR] = 7, [OIND] = 7, + [ORECV] = 7, [OMUL] = 6, [ODIV] = 6, diff --git a/test/fixedbugs/bug448.dir/pkg1.go b/test/fixedbugs/bug448.dir/pkg1.go new file mode 100644 index 0000000000..032e5d9de3 --- /dev/null +++ b/test/fixedbugs/bug448.dir/pkg1.go @@ -0,0 +1,11 @@ +// 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) +} diff --git a/test/fixedbugs/bug448.dir/pkg2.go b/test/fixedbugs/bug448.dir/pkg2.go new file mode 100644 index 0000000000..5c78c7d2f3 --- /dev/null +++ b/test/fixedbugs/bug448.dir/pkg2.go @@ -0,0 +1,14 @@ +// 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() +} + diff --git a/test/fixedbugs/bug448.go b/test/fixedbugs/bug448.go new file mode 100644 index 0000000000..242f5999e8 --- /dev/null +++ b/test/fixedbugs/bug448.go @@ -0,0 +1,7 @@ +// 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