]> Cypherpunks repositories - gostls13.git/commit
cmd/compile: don't constant-fold non-Go constants in the frontend
authorKeith Randall <khr@google.com>
Mon, 26 Nov 2018 20:59:54 +0000 (12:59 -0800)
committerKeith Randall <khr@golang.org>
Mon, 26 Nov 2018 22:49:57 +0000 (22:49 +0000)
commit1602e497012a27071e200d54ebfe13ca23d1f8af
treefc09efa28d8f6829281e70cf81cd0f18e7094fad
parent57c8eb92b78785d2bb8303b0ee7a7771d5df1be6
cmd/compile: don't constant-fold non-Go constants in the frontend

Abort evconst if its argument isn't a Go constant. The SSA backend
will do the optimizations in question later. They tend to be weird
cases, like uintptr(unsafe.Pointer(uintptr(1))).

Fix OADDSTR and OCOMPLEX cases in isGoConst.
OADDSTR has its arguments in n.List, not n.Left and n.Right.
OCOMPLEX might have a 2-result function as its arg in List[0]
(in which case it isn't a Go constant).

Fixes #24760

Change-Id: Iab312d994240d99b3f69bfb33a443607e872b01d
Reviewed-on: https://go-review.googlesource.com/c/151338
Run-TryBot: Keith Randall <khr@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
src/cmd/compile/internal/gc/const.go
src/cmd/compile/internal/gc/fmt.go
src/cmd/compile/internal/gc/syntax.go
test/fixedbugs/issue17038.go
test/fixedbugs/issue24760.go [new file with mode: 0644]