go/test/fixedbugs/issue29215.go
Cherry Zhang dca707b2a0 cmd/compile: guard against loads with negative offset from readonly constants
CL 154057 adds guards agaist out-of-bound reads from readonly
constants. It turns out that in dead code, the offset can also
be negative. Guard against negative offset as well.

Fixes #30257.

Change-Id: I47c2a2e434dd466c08ae6f50f213999a358c796e
Reviewed-on: https://go-review.googlesource.com/c/162819
Reviewed-by: Keith Randall <khr@golang.org>
2019-02-16 02:02:31 +00:00

36 lines
596 B
Go

// compile
// Copyright 2018 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 main
func f() {
var s string
var p, q bool
s = "a"
for p {
p = false == (true != q)
s = ""
}
_ = s == "bbb"
}
// Another case: load from negative offset of a symbol
// in dead code (issue 30257).
func g() {
var i int
var s string
if true {
s = "a"
}
if f := 0.0; -f < 0 {
i = len(s[:4])
}
_ = s[i-1:0] != "bb" && true
}