]> Cypherpunks repositories - gostls13.git/commit
[release-branch.go1.16] cmd/compile: declare inlined result params early for empty...
authorMatthew Dempsky <mdempsky@google.com>
Thu, 18 Feb 2021 01:49:40 +0000 (17:49 -0800)
committerDmitri Shuralyov <dmitshur@golang.org>
Mon, 1 Mar 2021 18:01:46 +0000 (18:01 +0000)
commitddeae6b248e5130fe634047c3ca5964f5fa4e3dd
treeb083127b5ce2e163386a1aa669d2d411baa26e42
parentb7e0eb49d8bb76ea0d98db53beef7209d9bd96d9
[release-branch.go1.16] cmd/compile: declare inlined result params early for empty returns

The code for delayed declaration of inlined result parameters only
handles non-empty return statements. This is generally okay, because
we already early declare if there are any (non-blank) named result
parameters.

But if a user writes a function with only blank result parameters and
with exactly one return statement, which is empty, then they could end
up hitting the dreaded "Value live at entry" ICE.

This CL fixes the issue by ensuring we always early declare inlined
result parameters if there are any empty return statements.

Fixes #44358.

Change-Id: I315f3853be436452883b1ce31da1bdffdf24d506
Reviewed-on: https://go-review.googlesource.com/c/go/+/293293
TryBot-Result: Go Bot <gobot@golang.org>
Trust: Matthew Dempsky <mdempsky@google.com>
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Reviewed-by: David Chase <drchase@google.com>
Reviewed-on: https://go-review.googlesource.com/c/go/+/296569
src/cmd/compile/internal/gc/inl.go
test/fixedbugs/issue44355.dir/a.go [new file with mode: 0644]
test/fixedbugs/issue44355.dir/b.go [new file with mode: 0644]
test/fixedbugs/issue44355.go [new file with mode: 0644]