From 225e01ee7925fca589bf3955e4158b3f9d64dc85 Mon Sep 17 00:00:00 2001 From: Tshepang Mbambo Date: Sat, 18 Feb 2023 09:59:41 +0200 Subject: [PATCH 1/2] link to llvm changes that prompted the special cases --- compiler/rustc_codegen_llvm/src/context.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/compiler/rustc_codegen_llvm/src/context.rs b/compiler/rustc_codegen_llvm/src/context.rs index 8848ea3bb9aee..ae9fab71f663e 100644 --- a/compiler/rustc_codegen_llvm/src/context.rs +++ b/compiler/rustc_codegen_llvm/src/context.rs @@ -145,8 +145,10 @@ pub unsafe fn create_module<'ll>( let llvm_version = llvm_util::get_version(); if llvm_version < (16, 0, 0) { if sess.target.arch == "s390x" { + // See https://reviews.llvm.org/D131158 target_data_layout = target_data_layout.replace("-v128:64", ""); } else if sess.target.arch == "riscv64" { + // See https://reviews.llvm.org/D116735 target_data_layout = target_data_layout.replace("-n32:64-", "-n64-"); } } From 8ab795ef0834e28f6c8aee85a30486c09cd2bc35 Mon Sep 17 00:00:00 2001 From: Tshepang Mbambo Date: Sat, 18 Feb 2023 11:09:40 +0200 Subject: [PATCH 2/2] add a summary, in addition to the link --- compiler/rustc_codegen_llvm/src/context.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/compiler/rustc_codegen_llvm/src/context.rs b/compiler/rustc_codegen_llvm/src/context.rs index ae9fab71f663e..37ee0e14020c3 100644 --- a/compiler/rustc_codegen_llvm/src/context.rs +++ b/compiler/rustc_codegen_llvm/src/context.rs @@ -145,10 +145,13 @@ pub unsafe fn create_module<'ll>( let llvm_version = llvm_util::get_version(); if llvm_version < (16, 0, 0) { if sess.target.arch == "s390x" { - // See https://reviews.llvm.org/D131158 + // LLVM 16 data layout changed to always set 64-bit vector alignment, + // which is conditional in earlier LLVM versions. + // https://reviews.llvm.org/D131158 for the discussion. target_data_layout = target_data_layout.replace("-v128:64", ""); } else if sess.target.arch == "riscv64" { - // See https://reviews.llvm.org/D116735 + // LLVM 16 introduced this change so as to produce more efficient code. + // See https://reviews.llvm.org/D116735 for the discussion. target_data_layout = target_data_layout.replace("-n32:64-", "-n64-"); } }