diff options
| author | Matthew Maurer <mmaurer@google.com> | 2024-10-15 20:56:20 +0000 |
|---|---|---|
| committer | Matthew Maurer <mmaurer@google.com> | 2024-10-16 01:16:44 +0000 |
| commit | e9853961452b56997cc127b51308879b9cd09482 (patch) | |
| tree | 83a8214b983dbeaa1d678a9ecb6cc8832fb8b20c /compiler/rustc_codegen_llvm/src | |
| parent | a0c2aba29aa9ea50a7c45c3391dd446f856bef7b (diff) | |
| download | rust-e9853961452b56997cc127b51308879b9cd09482.tar.gz rust-e9853961452b56997cc127b51308879b9cd09482.zip | |
llvm: Match aarch64 data layout to new LLVM layout
LLVM has added 3 new address spaces to support special Windows use cases. These shouldn't trouble us for now, but LLVM requires matching data layouts. See llvm/llvm-project#111879 for details
Diffstat (limited to 'compiler/rustc_codegen_llvm/src')
| -rw-r--r-- | compiler/rustc_codegen_llvm/src/context.rs | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/compiler/rustc_codegen_llvm/src/context.rs b/compiler/rustc_codegen_llvm/src/context.rs index c836dd5473f..2f830d6f941 100644 --- a/compiler/rustc_codegen_llvm/src/context.rs +++ b/compiler/rustc_codegen_llvm/src/context.rs @@ -138,6 +138,16 @@ pub(crate) unsafe fn create_module<'ll>( } } + if llvm_version < (20, 0, 0) { + if sess.target.arch == "aarch64" || sess.target.arch.starts_with("arm64") { + // LLVM 20 defines three additional address spaces for alternate + // pointer kinds used in Windows. + // See https://github.com/llvm/llvm-project/pull/111879 + target_data_layout = + target_data_layout.replace("-p270:32:32-p271:32:32-p272:64:64", ""); + } + } + // Ensure the data-layout values hardcoded remain the defaults. { let tm = crate::back::write::create_informational_target_machine(tcx.sess, false); |
