]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.boringcrypto] cmd/compile: by default accept any language
authorIan Lance Taylor <iant@golang.org>
Tue, 13 Nov 2018 23:36:02 +0000 (15:36 -0800)
committerFilippo Valsorda <filippo@golang.org>
Wed, 14 Nov 2018 18:13:28 +0000 (18:13 +0000)
The bootstrap stage 1 compiler was defaulting to the language version
used by the bootstrap compiler itself, typically 1.4. Normally this
doesn't matter since the bootstrap code has to build with 1.4 anyhow,
but it broke the boringcrypto branch which uses cgo during the
bootstrap, as cgo now generates code that uses type aliases.

Change-Id: I8a8312bb9ca4befaf65c00a8d71a78566075c2f7
Reviewed-on: https://go-review.googlesource.com/c/149459
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Filippo Valsorda <filippo@golang.org>
(cherry picked from commit 69397422c0ac74f9f9ec8e2b3e6d0b0b7ab1b697)
Reviewed-on: https://go-review.googlesource.com/c/149485
Run-TryBot: Filippo Valsorda <filippo@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/cmd/compile/internal/gc/main.go

index 059bf5d1fceecc99fba2e07ba76039a7082717aa..8e1b3b8fca2172f7fa0a5c1c019374afe77e1e0c 100644 (file)
@@ -213,7 +213,7 @@ func Main(archInit func(*Arch)) {
        flag.StringVar(&flag_installsuffix, "installsuffix", "", "set pkg directory `suffix`")
        objabi.Flagcount("j", "debug runtime-initialized variables", &Debug['j'])
        objabi.Flagcount("l", "disable inlining", &Debug['l'])
-       flag.StringVar(&flag_lang, "lang", defaultLang(), "release to compile for")
+       flag.StringVar(&flag_lang, "lang", "", "release to compile for")
        flag.StringVar(&linkobj, "linkobj", "", "write linker-specific object to `file`")
        objabi.Flagcount("live", "debug liveness analysis", &debuglive)
        objabi.Flagcount("m", "print optimization decisions", &Debug['m'])
@@ -1313,8 +1313,8 @@ func recordFlags(flags ...string) {
 // flag_lang is the language version we are compiling for, set by the -lang flag.
 var flag_lang string
 
-// defaultLang returns the default value for the -lang flag.
-func defaultLang() string {
+// currentLang returns the current language version.
+func currentLang() string {
        tags := build.Default.ReleaseTags
        return tags[len(tags)-1]
 }
@@ -1329,23 +1329,32 @@ type lang struct {
 }
 
 // langWant is the desired language version set by the -lang flag.
+// If the -lang flag is not set, this is the zero value, meaning that
+// any language version is supported.
 var langWant lang
 
 // langSupported reports whether language version major.minor is supported.
 func langSupported(major, minor int) bool {
+       if langWant.major == 0 && langWant.minor == 0 {
+               return true
+       }
        return langWant.major > major || (langWant.major == major && langWant.minor >= minor)
 }
 
 // checkLang verifies that the -lang flag holds a valid value, and
 // exits if not. It initializes data used by langSupported.
 func checkLang() {
+       if flag_lang == "" {
+               return
+       }
+
        var err error
        langWant, err = parseLang(flag_lang)
        if err != nil {
                log.Fatalf("invalid value %q for -lang: %v", flag_lang, err)
        }
 
-       if def := defaultLang(); flag_lang != def {
+       if def := currentLang(); flag_lang != def {
                defVers, err := parseLang(def)
                if err != nil {
                        log.Fatalf("internal error parsing default lang %q: %v", def, err)