darwin: add support for ThinLTO

Этот коммит содержится в:
Ayke van Laethem 2022-05-22 15:29:47 +02:00 коммит произвёл Ron Evans
родитель c23a5b65ef
коммит 046070074d
2 изменённых файлов: 9 добавлений и 8 удалений

Просмотреть файл

@ -695,10 +695,15 @@ func Build(pkgName, outpath string, config *compileopts.Config, action func(Buil
} }
if config.UseThinLTO() { if config.UseThinLTO() {
ldflags = append(ldflags, ldflags = append(ldflags,
"--thinlto-cache-dir="+filepath.Join(cacheDir, "thinlto"), "-mllvm", "-mcpu="+config.CPU(),
"-plugin-opt=mcpu="+config.CPU(), "--lto-O"+strconv.Itoa(optLevel))
"-plugin-opt=O"+strconv.Itoa(optLevel), if config.GOOS() == "darwin" {
"-plugin-opt=thinlto") // Options for the ld64-compatible lld linker.
ldflags = append(ldflags, "-cache_path_lto", filepath.Join(cacheDir, "thinlto"))
} else {
// Options for the ELF linker.
ldflags = append(ldflags, "--thinlto-cache-dir="+filepath.Join(cacheDir, "thinlto"))
}
if config.CodeModel() != "default" { if config.CodeModel() != "default" {
ldflags = append(ldflags, ldflags = append(ldflags,
"-mllvm", "-code-model="+config.CodeModel()) "-mllvm", "-code-model="+config.CodeModel())

Просмотреть файл

@ -192,10 +192,6 @@ func (c *Config) UseThinLTO() bool {
// through a plugin, but it's too much hassle to set up. // through a plugin, but it's too much hassle to set up.
return false return false
} }
if len(parts) >= 2 && strings.HasPrefix(parts[2], "macos") {
// We use an external linker here at the moment.
return false
}
if len(parts) >= 2 && parts[2] == "windows" { if len(parts) >= 2 && parts[2] == "windows" {
// Linker error (undefined runtime.trackedGlobalsBitmap) when linking // Linker error (undefined runtime.trackedGlobalsBitmap) when linking
// for Windows. Disable it for now until that's figured out and fixed. // for Windows. Disable it for now until that's figured out and fixed.