mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/compile: add constant fold comparison tests
Increases generic.rules coverage from 91% to 95%. Change-Id: I981eb94f3cd10d2f87c836576a43786787a25d83 Reviewed-on: https://go-review.googlesource.com/23556 Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Todd Neal <todd@tneal.org>
This commit is contained in:
parent
b859a78e0a
commit
79f7ccf2c3
2 changed files with 5775 additions and 0 deletions
File diff suppressed because it is too large
Load diff
|
|
@ -208,6 +208,89 @@ func main() {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Constant folding for comparisons
|
||||
for _, s := range szs {
|
||||
fmt.Fprintf(w, "func TestConstFoldCompare%s(t *testing.T) {\n", s.name)
|
||||
for _, x := range s.i {
|
||||
for _, y := range s.i {
|
||||
fmt.Fprintf(w, "\t{\n")
|
||||
fmt.Fprintf(w, "\t\tvar x %s = %d\n", s.name, x)
|
||||
fmt.Fprintf(w, "\t\tvar y %s = %d\n", s.name, y)
|
||||
if x == y {
|
||||
fmt.Fprintf(w, "\t\tif !(x == y) { t.Errorf(\"!(%%d == %%d)\", x, y) }\n")
|
||||
} else {
|
||||
fmt.Fprintf(w, "\t\tif x == y { t.Errorf(\"%%d == %%d\", x, y) }\n")
|
||||
}
|
||||
if x != y {
|
||||
fmt.Fprintf(w, "\t\tif !(x != y) { t.Errorf(\"!(%%d != %%d)\", x, y) }\n")
|
||||
} else {
|
||||
fmt.Fprintf(w, "\t\tif x != y { t.Errorf(\"%%d != %%d\", x, y) }\n")
|
||||
}
|
||||
if x < y {
|
||||
fmt.Fprintf(w, "\t\tif !(x < y) { t.Errorf(\"!(%%d < %%d)\", x, y) }\n")
|
||||
} else {
|
||||
fmt.Fprintf(w, "\t\tif x < y { t.Errorf(\"%%d < %%d\", x, y) }\n")
|
||||
}
|
||||
if x > y {
|
||||
fmt.Fprintf(w, "\t\tif !(x > y) { t.Errorf(\"!(%%d > %%d)\", x, y) }\n")
|
||||
} else {
|
||||
fmt.Fprintf(w, "\t\tif x > y { t.Errorf(\"%%d > %%d\", x, y) }\n")
|
||||
}
|
||||
if x <= y {
|
||||
fmt.Fprintf(w, "\t\tif !(x <= y) { t.Errorf(\"!(%%d <= %%d)\", x, y) }\n")
|
||||
} else {
|
||||
fmt.Fprintf(w, "\t\tif x <= y { t.Errorf(\"%%d <= %%d\", x, y) }\n")
|
||||
}
|
||||
if x >= y {
|
||||
fmt.Fprintf(w, "\t\tif !(x >= y) { t.Errorf(\"!(%%d >= %%d)\", x, y) }\n")
|
||||
} else {
|
||||
fmt.Fprintf(w, "\t\tif x >= y { t.Errorf(\"%%d >= %%d\", x, y) }\n")
|
||||
}
|
||||
fmt.Fprintf(w, "\t}\n")
|
||||
}
|
||||
}
|
||||
for _, x := range s.u {
|
||||
for _, y := range s.u {
|
||||
fmt.Fprintf(w, "\t{\n")
|
||||
fmt.Fprintf(w, "\t\tvar x %s = %d\n", s.name, x)
|
||||
fmt.Fprintf(w, "\t\tvar y %s = %d\n", s.name, y)
|
||||
if x == y {
|
||||
fmt.Fprintf(w, "\t\tif !(x == y) { t.Errorf(\"!(%%d == %%d)\", x, y) }\n")
|
||||
} else {
|
||||
fmt.Fprintf(w, "\t\tif x == y { t.Errorf(\"%%d == %%d\", x, y) }\n")
|
||||
}
|
||||
if x != y {
|
||||
fmt.Fprintf(w, "\t\tif !(x != y) { t.Errorf(\"!(%%d != %%d)\", x, y) }\n")
|
||||
} else {
|
||||
fmt.Fprintf(w, "\t\tif x != y { t.Errorf(\"%%d != %%d\", x, y) }\n")
|
||||
}
|
||||
if x < y {
|
||||
fmt.Fprintf(w, "\t\tif !(x < y) { t.Errorf(\"!(%%d < %%d)\", x, y) }\n")
|
||||
} else {
|
||||
fmt.Fprintf(w, "\t\tif x < y { t.Errorf(\"%%d < %%d\", x, y) }\n")
|
||||
}
|
||||
if x > y {
|
||||
fmt.Fprintf(w, "\t\tif !(x > y) { t.Errorf(\"!(%%d > %%d)\", x, y) }\n")
|
||||
} else {
|
||||
fmt.Fprintf(w, "\t\tif x > y { t.Errorf(\"%%d > %%d\", x, y) }\n")
|
||||
}
|
||||
if x <= y {
|
||||
fmt.Fprintf(w, "\t\tif !(x <= y) { t.Errorf(\"!(%%d <= %%d)\", x, y) }\n")
|
||||
} else {
|
||||
fmt.Fprintf(w, "\t\tif x <= y { t.Errorf(\"%%d <= %%d\", x, y) }\n")
|
||||
}
|
||||
if x >= y {
|
||||
fmt.Fprintf(w, "\t\tif !(x >= y) { t.Errorf(\"!(%%d >= %%d)\", x, y) }\n")
|
||||
} else {
|
||||
fmt.Fprintf(w, "\t\tif x >= y { t.Errorf(\"%%d >= %%d\", x, y) }\n")
|
||||
}
|
||||
fmt.Fprintf(w, "\t}\n")
|
||||
}
|
||||
}
|
||||
fmt.Fprintf(w, "}\n")
|
||||
}
|
||||
|
||||
// gofmt result
|
||||
b := w.Bytes()
|
||||
src, err := format.Source(b)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue