aboutsummaryrefslogtreecommitdiffhomepage
path: root/compileopts/target.go
diff options
context:
space:
mode:
authorAyke van Laethem <[email protected]>2022-11-27 14:18:22 +0100
committerRon Evans <[email protected]>2023-09-18 21:58:02 +0200
commit1d7543e2bfcba3eed51f5340dcaf607d11b0bdeb (patch)
tree2125653ea6b465f39b05a9d76af9282c255959d2 /compileopts/target.go
parentff32fbbb4ff266f5f29080479a29d941cad2a57e (diff)
downloadtinygo-1d7543e2bfcba3eed51f5340dcaf607d11b0bdeb.tar.gz
tinygo-1d7543e2bfcba3eed51f5340dcaf607d11b0bdeb.zip
all: switch to LLVM 16
This commit adds support for LLVM 16 and switches to it by default. That means three LLVM versions are supported at the same time: LLVM 14, 15, and 16. This commit includes work by QuLogic: * Part of this work was based on a PR by QuLogic: https://github.com/tinygo-org/tinygo/pull/3649 But I also had parts of this already implemented in an old branch I already made for LLVM 16. * QuLogic also provided a CGo fix here, which is also incorporated in this commit: https://github.com/tinygo-org/tinygo/pull/3869 The difference with the original PR by QuLogic is that this commit is more complete: * It switches to LLVM 16 by default. * It updates some things to also make it work with a self-built LLVM. * It fixes the CGo bug in a slightly different way, and also fixes another one not included in the original PR. * It does not keep compiler tests passing on older LLVM versions. I have found this to be quite burdensome and therefore don't generally do this - the smoke tests should hopefully catch most regressions.
Diffstat (limited to 'compileopts/target.go')
-rw-r--r--compileopts/target.go8
1 files changed, 6 insertions, 2 deletions
diff --git a/compileopts/target.go b/compileopts/target.go
index 003c8aac0..82ee2e3b4 100644
--- a/compileopts/target.go
+++ b/compileopts/target.go
@@ -281,10 +281,14 @@ func defaultTarget(goos, goarch, triple string) (*TargetSpec, error) {
}
case "arm64":
spec.CPU = "generic"
- spec.Features = "+neon"
+ if goos == "darwin" {
+ spec.Features = "+neon"
+ } else { // windows, linux
+ spec.Features = "+neon,-fmv"
+ }
case "wasm":
spec.CPU = "generic"
- spec.Features = "+bulk-memory,+nontrapping-fptoint,+sign-ext"
+ spec.Features = "+bulk-memory,+mutable-globals,+nontrapping-fptoint,+sign-ext"
spec.BuildTags = append(spec.BuildTags, "tinygo.wasm")
spec.CFlags = append(spec.CFlags,
"-mbulk-memory",