• David Lazar's avatar
    cmd/compile: generate code that type checks when inlining variadic functions · 5d1b53a9
    David Lazar authored
    This fixes a bug in -l=3 or higher.
    
    To inline a variadic function, the compiler generates code that constructs
    a slice of arguments for the variadic parameter. Consider the function
    
      func Foo(xs ...string)
    
    and the call Foo("hello", "world"). To inline the call to Foo, the
    compiler used to generate
    
      xs := [2]string{"hello", "world"}[:]
    
    which doesn't type check:
    
      invalid operation [2]string literal[:] (slice of unaddressable value).
    
    Now, the compiler generates
    
      xs := []string{"hello", "world"}
    
    which does type check.
    
    Fixes #18116.
    
    Change-Id: I0ee531ef2e6cc276db6fb12602b25a46d6d5db21
    Reviewed-on: https://go-review.googlesource.com/33671Reviewed-by: 's avatarKeith Randall <khr@golang.org>
    5d1b53a9
Name
Last commit
Last update
..
amd64 Loading commit data...
arm Loading commit data...
arm64 Loading commit data...
gc Loading commit data...
mips Loading commit data...
mips64 Loading commit data...
ppc64 Loading commit data...
s390x Loading commit data...
ssa Loading commit data...
syntax Loading commit data...
test Loading commit data...
x86 Loading commit data...