This bumps target-lexicon and adds support for the AppleAarch64 calling convention. Specifically for WebAssembly support, we only have to worry about the new stack slots convention. Stack slots don't need to be at least 8-bytes, they can be as small as the data type's size. For instance, if we need stack slots for (i32, i32), they can be located at offsets (+0, +4). Note that they still need to be properly aligned on the data type they're containing, though, so if we need stack slots for (i32, i64), we can't start the i64 slot at the +4 offset (it must start at the +8 offset). Added one test that was failing on the Mac M1, as well as other tests stressing different yet similar situations.
100 lines
3.6 KiB
TOML
100 lines
3.6 KiB
TOML
[package]
|
|
authors = ["The Cranelift Project Developers"]
|
|
name = "cranelift-codegen"
|
|
version = "0.72.0"
|
|
description = "Low-level code generator library"
|
|
license = "Apache-2.0 WITH LLVM-exception"
|
|
documentation = "https://docs.rs/cranelift-codegen"
|
|
repository = "https://github.com/bytecodealliance/wasmtime"
|
|
categories = ["no-std"]
|
|
readme = "README.md"
|
|
keywords = ["compile", "compiler", "jit"]
|
|
build = "build.rs"
|
|
edition = "2018"
|
|
|
|
[dependencies]
|
|
cranelift-codegen-shared = { path = "./shared", version = "0.72.0" }
|
|
cranelift-entity = { path = "../entity", version = "0.72.0" }
|
|
cranelift-bforest = { path = "../bforest", version = "0.72.0" }
|
|
hashbrown = { version = "0.9.1", optional = true }
|
|
target-lexicon = "0.12"
|
|
log = { version = "0.4.6", default-features = false }
|
|
serde = { version = "1.0.94", features = ["derive"], optional = true }
|
|
bincode = { version = "1.2.1", optional = true }
|
|
gimli = { version = "0.23.0", default-features = false, features = ["write"], optional = true }
|
|
smallvec = { version = "1.6.1" }
|
|
thiserror = "1.0.4"
|
|
byteorder = { version = "1.3.2", default-features = false }
|
|
peepmatic = { path = "../peepmatic", optional = true, version = "0.72.0" }
|
|
peepmatic-traits = { path = "../peepmatic/crates/traits", optional = true, version = "0.72.0" }
|
|
peepmatic-runtime = { path = "../peepmatic/crates/runtime", optional = true, version = "0.72.0" }
|
|
regalloc = { version = "0.0.31" }
|
|
souper-ir = { version = "2.1.0", optional = true }
|
|
wast = { version = "35.0.0", optional = true }
|
|
# It is a goal of the cranelift-codegen crate to have minimal external dependencies.
|
|
# Please don't add any unless they are essential to the task of creating binary
|
|
# machine code. Integration tests that need external dependencies can be
|
|
# accomodated in `tests`.
|
|
|
|
[build-dependencies]
|
|
cranelift-codegen-meta = { path = "meta", version = "0.72.0" }
|
|
|
|
[features]
|
|
default = ["std", "unwind"]
|
|
|
|
# The "std" feature enables use of libstd. The "core" feature enables use
|
|
# of some minimal std-like replacement libraries. At least one of these two
|
|
# features need to be enabled.
|
|
std = []
|
|
|
|
# The "core" features enables use of "hashbrown" since core doesn't have
|
|
# a HashMap implementation, and a workaround for Cargo #4866.
|
|
core = ["hashbrown"]
|
|
|
|
# This enables some additional functions useful for writing tests, but which
|
|
# can significantly increase the size of the library.
|
|
testing_hooks = []
|
|
|
|
# This enables unwind info generation functionality.
|
|
unwind = ["gimli"]
|
|
|
|
# ISA targets for which we should build.
|
|
# If no ISA targets are explicitly enabled, the ISA target for the host machine is enabled.
|
|
x86 = []
|
|
arm64 = []
|
|
riscv = []
|
|
x64 = [] # New work-in-progress codegen backend for x86_64 based on the new isel.
|
|
arm32 = [] # Work-in-progress codegen backend for ARM.
|
|
|
|
# Option to enable all architectures.
|
|
all-arch = [
|
|
"x86",
|
|
"arm64",
|
|
"riscv"
|
|
]
|
|
|
|
# For dependent crates that want to serialize some parts of cranelift
|
|
enable-serde = [
|
|
"serde",
|
|
"regalloc/enable-serde",
|
|
"cranelift-entity/enable-serde",
|
|
"cranelift-codegen-shared/enable-serde"
|
|
]
|
|
|
|
# Allow snapshotting regalloc test cases. Useful only to report bad register
|
|
# allocation failures, or for regalloc.rs developers.
|
|
regalloc-snapshot = ["bincode", "regalloc/enable-serde"]
|
|
|
|
# Recompile our optimizations that are written in the `peepmatic` DSL into a
|
|
# compact finite-state transducer automaton.
|
|
rebuild-peephole-optimizers = ["peepmatic", "peepmatic-traits", "wast"]
|
|
|
|
# Enable the use of `peepmatic`-generated peephole optimizers.
|
|
enable-peepmatic = ["peepmatic-runtime", "peepmatic-traits", "serde"]
|
|
|
|
# Enable support for the Souper harvester.
|
|
souper-harvest = ["souper-ir", "souper-ir/stringify"]
|
|
|
|
[badges]
|
|
maintenance = { status = "experimental" }
|