riscv and riscv64 reserved as GOARCH values reserved for the future.

Minor additions, like -race on linux/ppc64le and -msan on linux/arm64 .

A replacement for x/tools/go/loader with several advantages:

The tweaked heuristic now gives us:

DWARF sections (debugging info) are now compressed by default

Optimized binaries now include more accurate info, like:

-l=4 makes the inlining more agressive, also enabling mid-stack inlining

Compiler #6 - prove pass

The prove pass derives facts from code, to be used to delete unnecessary

branches and bounds checks.

Most importantly, it now recognizes transitive relations:

Inside if n < 10 {}, it can prove n < 10

After s := make([]int, 20), it can prove len(s) == 20

Globally, 10 < 20, so n < len(s)

s := make([]int, 20); if n < 10 { _ = s[n] } can never panic

The bounds check is what panics if the index is out of bounds, so in this case

it can be removed.

15