Auto merge of #117947 - Dirbaio:drop-llvm-15, r=cuviper
Update the minimum external LLVM to 16. With this change, we'll have stable support for LLVM 16 and 17. For reference, the previous increase to LLVM 15 was #114148 [Relevant zulip discussion](https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/riscv.20forced-atomics)
This commit is contained in:
commit
49b3924bd4
6
.github/workflows/ci.yml
vendored
6
.github/workflows/ci.yml
vendored
@ -56,7 +56,7 @@ jobs:
|
|||||||
- name: mingw-check-tidy
|
- name: mingw-check-tidy
|
||||||
os: ubuntu-20.04-4core-16gb
|
os: ubuntu-20.04-4core-16gb
|
||||||
env: {}
|
env: {}
|
||||||
- name: x86_64-gnu-llvm-15
|
- name: x86_64-gnu-llvm-16
|
||||||
env:
|
env:
|
||||||
ENABLE_GCC_CODEGEN: "1"
|
ENABLE_GCC_CODEGEN: "1"
|
||||||
os: ubuntu-20.04-16core-64gb
|
os: ubuntu-20.04-16core-64gb
|
||||||
@ -302,10 +302,6 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
RUST_BACKTRACE: 1
|
RUST_BACKTRACE: 1
|
||||||
os: ubuntu-20.04-8core-32gb
|
os: ubuntu-20.04-8core-32gb
|
||||||
- name: x86_64-gnu-llvm-15
|
|
||||||
env:
|
|
||||||
RUST_BACKTRACE: 1
|
|
||||||
os: ubuntu-20.04-8core-32gb
|
|
||||||
- name: x86_64-gnu-nopt
|
- name: x86_64-gnu-nopt
|
||||||
os: ubuntu-20.04-4core-16gb
|
os: ubuntu-20.04-4core-16gb
|
||||||
env: {}
|
env: {}
|
||||||
|
@ -134,18 +134,6 @@ pub unsafe fn create_module<'ll>(
|
|||||||
|
|
||||||
let mut target_data_layout = sess.target.data_layout.to_string();
|
let mut target_data_layout = sess.target.data_layout.to_string();
|
||||||
let llvm_version = llvm_util::get_version();
|
let llvm_version = llvm_util::get_version();
|
||||||
if llvm_version < (16, 0, 0) {
|
|
||||||
if sess.target.arch == "s390x" {
|
|
||||||
// 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" {
|
|
||||||
// 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-");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if llvm_version < (17, 0, 0) {
|
if llvm_version < (17, 0, 0) {
|
||||||
if sess.target.arch.starts_with("powerpc") {
|
if sess.target.arch.starts_with("powerpc") {
|
||||||
// LLVM 17 specifies function pointer alignment for ppc:
|
// LLVM 17 specifies function pointer alignment for ppc:
|
||||||
|
@ -42,11 +42,7 @@
|
|||||||
#include "llvm/IR/IRPrintingPasses.h"
|
#include "llvm/IR/IRPrintingPasses.h"
|
||||||
#include "llvm/Linker/Linker.h"
|
#include "llvm/Linker/Linker.h"
|
||||||
|
|
||||||
#if LLVM_VERSION_GE(16, 0)
|
|
||||||
#include "llvm/TargetParser/Triple.h"
|
#include "llvm/TargetParser/Triple.h"
|
||||||
#else
|
|
||||||
#include "llvm/ADT/Triple.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
extern "C" void LLVMRustSetLastError(const char *);
|
extern "C" void LLVMRustSetLastError(const char *);
|
||||||
|
|
||||||
|
@ -204,11 +204,7 @@ enum class LLVMRustCodeModel {
|
|||||||
None,
|
None,
|
||||||
};
|
};
|
||||||
|
|
||||||
#if LLVM_VERSION_LT(16, 0)
|
|
||||||
static Optional<CodeModel::Model>
|
|
||||||
#else
|
|
||||||
static std::optional<CodeModel::Model>
|
static std::optional<CodeModel::Model>
|
||||||
#endif
|
|
||||||
fromRust(LLVMRustCodeModel Model) {
|
fromRust(LLVMRustCodeModel Model) {
|
||||||
switch (Model) {
|
switch (Model) {
|
||||||
case LLVMRustCodeModel::Tiny:
|
case LLVMRustCodeModel::Tiny:
|
||||||
@ -222,11 +218,7 @@ fromRust(LLVMRustCodeModel Model) {
|
|||||||
case LLVMRustCodeModel::Large:
|
case LLVMRustCodeModel::Large:
|
||||||
return CodeModel::Large;
|
return CodeModel::Large;
|
||||||
case LLVMRustCodeModel::None:
|
case LLVMRustCodeModel::None:
|
||||||
#if LLVM_VERSION_LT(16, 0)
|
|
||||||
return None;
|
|
||||||
#else
|
|
||||||
return std::nullopt;
|
return std::nullopt;
|
||||||
#endif
|
|
||||||
default:
|
default:
|
||||||
report_fatal_error("Bad CodeModel.");
|
report_fatal_error("Bad CodeModel.");
|
||||||
}
|
}
|
||||||
@ -452,7 +444,6 @@ extern "C" LLVMTargetMachineRef LLVMRustCreateTargetMachine(
|
|||||||
if (OutputObjFile) {
|
if (OutputObjFile) {
|
||||||
Options.ObjectFilenameForDebug = OutputObjFile;
|
Options.ObjectFilenameForDebug = OutputObjFile;
|
||||||
}
|
}
|
||||||
#if LLVM_VERSION_GE(16, 0)
|
|
||||||
if (!strcmp("zlib", DebugInfoCompression) && llvm::compression::zlib::isAvailable()) {
|
if (!strcmp("zlib", DebugInfoCompression) && llvm::compression::zlib::isAvailable()) {
|
||||||
Options.CompressDebugSections = DebugCompressionType::Zlib;
|
Options.CompressDebugSections = DebugCompressionType::Zlib;
|
||||||
} else if (!strcmp("zstd", DebugInfoCompression) && llvm::compression::zstd::isAvailable()) {
|
} else if (!strcmp("zstd", DebugInfoCompression) && llvm::compression::zstd::isAvailable()) {
|
||||||
@ -460,7 +451,6 @@ extern "C" LLVMTargetMachineRef LLVMRustCreateTargetMachine(
|
|||||||
} else if (!strcmp("none", DebugInfoCompression)) {
|
} else if (!strcmp("none", DebugInfoCompression)) {
|
||||||
Options.CompressDebugSections = DebugCompressionType::None;
|
Options.CompressDebugSections = DebugCompressionType::None;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
Options.RelaxELFRelocations = RelaxELFRelocations;
|
Options.RelaxELFRelocations = RelaxELFRelocations;
|
||||||
Options.UseInitArray = UseInitArray;
|
Options.UseInitArray = UseInitArray;
|
||||||
@ -734,22 +724,14 @@ LLVMRustOptimize(
|
|||||||
bool DebugPassManager = false;
|
bool DebugPassManager = false;
|
||||||
|
|
||||||
PassInstrumentationCallbacks PIC;
|
PassInstrumentationCallbacks PIC;
|
||||||
#if LLVM_VERSION_LT(16, 0)
|
|
||||||
StandardInstrumentations SI(DebugPassManager);
|
|
||||||
#else
|
|
||||||
StandardInstrumentations SI(TheModule->getContext(), DebugPassManager);
|
StandardInstrumentations SI(TheModule->getContext(), DebugPassManager);
|
||||||
#endif
|
|
||||||
SI.registerCallbacks(PIC);
|
SI.registerCallbacks(PIC);
|
||||||
|
|
||||||
if (LlvmSelfProfiler){
|
if (LlvmSelfProfiler){
|
||||||
LLVMSelfProfileInitializeCallbacks(PIC,LlvmSelfProfiler,BeforePassCallback,AfterPassCallback);
|
LLVMSelfProfileInitializeCallbacks(PIC,LlvmSelfProfiler,BeforePassCallback,AfterPassCallback);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if LLVM_VERSION_LT(16, 0)
|
|
||||||
Optional<PGOOptions> PGOOpt;
|
|
||||||
#else
|
|
||||||
std::optional<PGOOptions> PGOOpt;
|
std::optional<PGOOptions> PGOOpt;
|
||||||
#endif
|
|
||||||
#if LLVM_VERSION_GE(17, 0)
|
#if LLVM_VERSION_GE(17, 0)
|
||||||
auto FS = vfs::getRealFileSystem();
|
auto FS = vfs::getRealFileSystem();
|
||||||
#endif
|
#endif
|
||||||
@ -882,12 +864,7 @@ LLVMRustOptimize(
|
|||||||
/*EagerChecks=*/true);
|
/*EagerChecks=*/true);
|
||||||
OptimizerLastEPCallbacks.push_back(
|
OptimizerLastEPCallbacks.push_back(
|
||||||
[Options](ModulePassManager &MPM, OptimizationLevel Level) {
|
[Options](ModulePassManager &MPM, OptimizationLevel Level) {
|
||||||
#if LLVM_VERSION_LT(16, 0)
|
|
||||||
MPM.addPass(ModuleMemorySanitizerPass(Options));
|
|
||||||
MPM.addPass(createModuleToFunctionPassAdaptor(MemorySanitizerPass(Options)));
|
|
||||||
#else
|
|
||||||
MPM.addPass(MemorySanitizerPass(Options));
|
MPM.addPass(MemorySanitizerPass(Options));
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -912,11 +889,7 @@ LLVMRustOptimize(
|
|||||||
/*UseAfterScope=*/true,
|
/*UseAfterScope=*/true,
|
||||||
AsanDetectStackUseAfterReturnMode::Runtime,
|
AsanDetectStackUseAfterReturnMode::Runtime,
|
||||||
};
|
};
|
||||||
#if LLVM_VERSION_LT(16, 0)
|
|
||||||
MPM.addPass(ModuleAddressSanitizerPass(opts));
|
|
||||||
#else
|
|
||||||
MPM.addPass(AddressSanitizerPass(opts));
|
MPM.addPass(AddressSanitizerPass(opts));
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -14,18 +14,13 @@
|
|||||||
#include "llvm/Remarks/RemarkSerializer.h"
|
#include "llvm/Remarks/RemarkSerializer.h"
|
||||||
#include "llvm/Remarks/RemarkFormat.h"
|
#include "llvm/Remarks/RemarkFormat.h"
|
||||||
#include "llvm/Support/ToolOutputFile.h"
|
#include "llvm/Support/ToolOutputFile.h"
|
||||||
#if LLVM_VERSION_GE(16, 0)
|
|
||||||
#include "llvm/Support/ModRef.h"
|
#include "llvm/Support/ModRef.h"
|
||||||
#endif
|
|
||||||
#include "llvm/Object/Archive.h"
|
#include "llvm/Object/Archive.h"
|
||||||
#include "llvm/Object/COFFImportFile.h"
|
#include "llvm/Object/COFFImportFile.h"
|
||||||
#include "llvm/Object/ObjectFile.h"
|
#include "llvm/Object/ObjectFile.h"
|
||||||
#include "llvm/Pass.h"
|
#include "llvm/Pass.h"
|
||||||
#include "llvm/Bitcode/BitcodeWriter.h"
|
#include "llvm/Bitcode/BitcodeWriter.h"
|
||||||
#include "llvm/Support/Signals.h"
|
#include "llvm/Support/Signals.h"
|
||||||
#if LLVM_VERSION_LT(16, 0)
|
|
||||||
#include "llvm/ADT/Optional.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
@ -347,13 +342,7 @@ extern "C" LLVMAttributeRef LLVMRustCreateUWTableAttr(LLVMContextRef C, bool Asy
|
|||||||
}
|
}
|
||||||
|
|
||||||
extern "C" LLVMAttributeRef LLVMRustCreateAllocSizeAttr(LLVMContextRef C, uint32_t ElementSizeArg) {
|
extern "C" LLVMAttributeRef LLVMRustCreateAllocSizeAttr(LLVMContextRef C, uint32_t ElementSizeArg) {
|
||||||
return wrap(Attribute::getWithAllocSizeArgs(*unwrap(C), ElementSizeArg,
|
return wrap(Attribute::getWithAllocSizeArgs(*unwrap(C), ElementSizeArg, std::nullopt));
|
||||||
#if LLVM_VERSION_LT(16, 0)
|
|
||||||
None
|
|
||||||
#else
|
|
||||||
std::nullopt
|
|
||||||
#endif
|
|
||||||
));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// These values **must** match ffi::AllocKindFlags.
|
// These values **must** match ffi::AllocKindFlags.
|
||||||
@ -416,7 +405,6 @@ enum class LLVMRustMemoryEffects {
|
|||||||
|
|
||||||
extern "C" LLVMAttributeRef LLVMRustCreateMemoryEffectsAttr(LLVMContextRef C,
|
extern "C" LLVMAttributeRef LLVMRustCreateMemoryEffectsAttr(LLVMContextRef C,
|
||||||
LLVMRustMemoryEffects Effects) {
|
LLVMRustMemoryEffects Effects) {
|
||||||
#if LLVM_VERSION_GE(16, 0)
|
|
||||||
switch (Effects) {
|
switch (Effects) {
|
||||||
case LLVMRustMemoryEffects::None:
|
case LLVMRustMemoryEffects::None:
|
||||||
return wrap(Attribute::getWithMemoryEffects(*unwrap(C), MemoryEffects::none()));
|
return wrap(Attribute::getWithMemoryEffects(*unwrap(C), MemoryEffects::none()));
|
||||||
@ -428,18 +416,6 @@ extern "C" LLVMAttributeRef LLVMRustCreateMemoryEffectsAttr(LLVMContextRef C,
|
|||||||
default:
|
default:
|
||||||
report_fatal_error("bad MemoryEffects.");
|
report_fatal_error("bad MemoryEffects.");
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
switch (Effects) {
|
|
||||||
case LLVMRustMemoryEffects::None:
|
|
||||||
return wrap(Attribute::get(*unwrap(C), Attribute::ReadNone));
|
|
||||||
case LLVMRustMemoryEffects::ReadOnly:
|
|
||||||
return wrap(Attribute::get(*unwrap(C), Attribute::ReadOnly));
|
|
||||||
case LLVMRustMemoryEffects::InaccessibleMemOnly:
|
|
||||||
return wrap(Attribute::get(*unwrap(C), Attribute::InaccessibleMemOnly));
|
|
||||||
default:
|
|
||||||
report_fatal_error("bad MemoryEffects.");
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Enable a fast-math flag
|
// Enable a fast-math flag
|
||||||
@ -726,18 +702,10 @@ enum class LLVMRustChecksumKind {
|
|||||||
SHA256,
|
SHA256,
|
||||||
};
|
};
|
||||||
|
|
||||||
#if LLVM_VERSION_LT(16, 0)
|
|
||||||
static Optional<DIFile::ChecksumKind> fromRust(LLVMRustChecksumKind Kind) {
|
|
||||||
#else
|
|
||||||
static std::optional<DIFile::ChecksumKind> fromRust(LLVMRustChecksumKind Kind) {
|
static std::optional<DIFile::ChecksumKind> fromRust(LLVMRustChecksumKind Kind) {
|
||||||
#endif
|
|
||||||
switch (Kind) {
|
switch (Kind) {
|
||||||
case LLVMRustChecksumKind::None:
|
case LLVMRustChecksumKind::None:
|
||||||
#if LLVM_VERSION_LT(16, 0)
|
|
||||||
return None;
|
|
||||||
#else
|
|
||||||
return std::nullopt;
|
return std::nullopt;
|
||||||
#endif
|
|
||||||
case LLVMRustChecksumKind::MD5:
|
case LLVMRustChecksumKind::MD5:
|
||||||
return DIFile::ChecksumKind::CSK_MD5;
|
return DIFile::ChecksumKind::CSK_MD5;
|
||||||
case LLVMRustChecksumKind::SHA1:
|
case LLVMRustChecksumKind::SHA1:
|
||||||
@ -810,17 +778,8 @@ extern "C" LLVMMetadataRef LLVMRustDIBuilderCreateFile(
|
|||||||
const char *Directory, size_t DirectoryLen, LLVMRustChecksumKind CSKind,
|
const char *Directory, size_t DirectoryLen, LLVMRustChecksumKind CSKind,
|
||||||
const char *Checksum, size_t ChecksumLen) {
|
const char *Checksum, size_t ChecksumLen) {
|
||||||
|
|
||||||
#if LLVM_VERSION_LT(16, 0)
|
|
||||||
Optional<DIFile::ChecksumKind> llvmCSKind = fromRust(CSKind);
|
|
||||||
#else
|
|
||||||
std::optional<DIFile::ChecksumKind> llvmCSKind = fromRust(CSKind);
|
std::optional<DIFile::ChecksumKind> llvmCSKind = fromRust(CSKind);
|
||||||
#endif
|
|
||||||
|
|
||||||
#if LLVM_VERSION_LT(16, 0)
|
|
||||||
Optional<DIFile::ChecksumInfo<StringRef>> CSInfo{};
|
|
||||||
#else
|
|
||||||
std::optional<DIFile::ChecksumInfo<StringRef>> CSInfo{};
|
std::optional<DIFile::ChecksumInfo<StringRef>> CSInfo{};
|
||||||
#endif
|
|
||||||
if (llvmCSKind)
|
if (llvmCSKind)
|
||||||
CSInfo.emplace(*llvmCSKind, StringRef{Checksum, ChecksumLen});
|
CSInfo.emplace(*llvmCSKind, StringRef{Checksum, ChecksumLen});
|
||||||
return wrap(Builder->createFile(StringRef(Filename, FilenameLen),
|
return wrap(Builder->createFile(StringRef(Filename, FilenameLen),
|
||||||
@ -2053,17 +2012,9 @@ extern "C" bool LLVMRustIsNonGVFunctionPointerTy(LLVMValueRef V) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
extern "C" bool LLVMRustLLVMHasZlibCompressionForDebugSymbols() {
|
extern "C" bool LLVMRustLLVMHasZlibCompressionForDebugSymbols() {
|
||||||
#if LLVM_VERSION_GE(16, 0)
|
|
||||||
return llvm::compression::zlib::isAvailable();
|
return llvm::compression::zlib::isAvailable();
|
||||||
#else
|
|
||||||
return false;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" bool LLVMRustLLVMHasZstdCompressionForDebugSymbols() {
|
extern "C" bool LLVMRustLLVMHasZstdCompressionForDebugSymbols() {
|
||||||
#if LLVM_VERSION_GE(16, 0)
|
|
||||||
return llvm::compression::zstd::isAvailable();
|
return llvm::compression::zstd::isAvailable();
|
||||||
#else
|
|
||||||
return false;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
@ -1155,10 +1155,6 @@ pub enum StackProbeType {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl StackProbeType {
|
impl StackProbeType {
|
||||||
// LLVM X86 targets (ix86 and x86_64) can use inline-asm stack probes starting with LLVM 16.
|
|
||||||
// Notable past issues were rust#83139 (fixed in 14) and rust#84667 (fixed in 16).
|
|
||||||
const X86: Self = Self::InlineOrCall { min_llvm_version_for_inline: (16, 0, 0) };
|
|
||||||
|
|
||||||
fn from_json(json: &Json) -> Result<Self, String> {
|
fn from_json(json: &Json) -> Result<Self, String> {
|
||||||
let object = json.as_object().ok_or_else(|| "expected a JSON object")?;
|
let object = json.as_object().ok_or_else(|| "expected a JSON object")?;
|
||||||
let kind = object
|
let kind = object
|
||||||
|
@ -16,7 +16,7 @@ pub fn target() -> Target {
|
|||||||
arch: arch.target_arch(),
|
arch: arch.target_arch(),
|
||||||
options: TargetOptions {
|
options: TargetOptions {
|
||||||
max_atomic_width: Some(64),
|
max_atomic_width: Some(64),
|
||||||
stack_probes: StackProbeType::X86,
|
stack_probes: StackProbeType::Inline,
|
||||||
..opts("ios", arch)
|
..opts("ios", arch)
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,7 @@ pub fn target() -> Target {
|
|||||||
&["-Vgcc_ntox86_cxx"],
|
&["-Vgcc_ntox86_cxx"],
|
||||||
),
|
),
|
||||||
env: "nto70".into(),
|
env: "nto70".into(),
|
||||||
stack_probes: StackProbeType::X86,
|
stack_probes: StackProbeType::Inline,
|
||||||
..base::nto_qnx::opts()
|
..base::nto_qnx::opts()
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@ pub fn target() -> Target {
|
|||||||
let mut base = opts("macos", arch);
|
let mut base = opts("macos", arch);
|
||||||
base.max_atomic_width = Some(64);
|
base.max_atomic_width = Some(64);
|
||||||
base.add_pre_link_args(LinkerFlavor::Darwin(Cc::Yes, Lld::No), &["-m32"]);
|
base.add_pre_link_args(LinkerFlavor::Darwin(Cc::Yes, Lld::No), &["-m32"]);
|
||||||
base.stack_probes = StackProbeType::X86;
|
base.stack_probes = StackProbeType::Inline;
|
||||||
base.frame_pointer = FramePointer::Always;
|
base.frame_pointer = FramePointer::Always;
|
||||||
|
|
||||||
Target {
|
Target {
|
||||||
|
@ -11,7 +11,7 @@ pub fn target() -> Target {
|
|||||||
// https://developer.android.com/ndk/guides/abis.html#x86
|
// https://developer.android.com/ndk/guides/abis.html#x86
|
||||||
base.cpu = "pentiumpro".into();
|
base.cpu = "pentiumpro".into();
|
||||||
base.features = "+mmx,+sse,+sse2,+sse3,+ssse3".into();
|
base.features = "+mmx,+sse,+sse2,+sse3,+ssse3".into();
|
||||||
base.stack_probes = StackProbeType::X86;
|
base.stack_probes = StackProbeType::Inline;
|
||||||
|
|
||||||
Target {
|
Target {
|
||||||
llvm_target: "i686-linux-android".into(),
|
llvm_target: "i686-linux-android".into(),
|
||||||
|
@ -5,7 +5,7 @@ pub fn target() -> Target {
|
|||||||
base.cpu = "pentium4".into();
|
base.cpu = "pentium4".into();
|
||||||
base.max_atomic_width = Some(64);
|
base.max_atomic_width = Some(64);
|
||||||
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m32", "-Wl,-znotext"]);
|
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m32", "-Wl,-znotext"]);
|
||||||
base.stack_probes = StackProbeType::X86;
|
base.stack_probes = StackProbeType::Inline;
|
||||||
|
|
||||||
Target {
|
Target {
|
||||||
llvm_target: "i686-unknown-freebsd".into(),
|
llvm_target: "i686-unknown-freebsd".into(),
|
||||||
|
@ -5,7 +5,7 @@ pub fn target() -> Target {
|
|||||||
base.cpu = "pentium4".into();
|
base.cpu = "pentium4".into();
|
||||||
base.max_atomic_width = Some(64);
|
base.max_atomic_width = Some(64);
|
||||||
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m32"]);
|
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m32"]);
|
||||||
base.stack_probes = StackProbeType::X86;
|
base.stack_probes = StackProbeType::Inline;
|
||||||
|
|
||||||
Target {
|
Target {
|
||||||
llvm_target: "i686-unknown-haiku".into(),
|
llvm_target: "i686-unknown-haiku".into(),
|
||||||
|
@ -6,7 +6,7 @@ pub fn target() -> Target {
|
|||||||
base.max_atomic_width = Some(64);
|
base.max_atomic_width = Some(64);
|
||||||
base.supported_sanitizers = SanitizerSet::ADDRESS;
|
base.supported_sanitizers = SanitizerSet::ADDRESS;
|
||||||
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m32"]);
|
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m32"]);
|
||||||
base.stack_probes = StackProbeType::X86;
|
base.stack_probes = StackProbeType::Inline;
|
||||||
|
|
||||||
Target {
|
Target {
|
||||||
llvm_target: "i686-unknown-linux-gnu".into(),
|
llvm_target: "i686-unknown-linux-gnu".into(),
|
||||||
|
@ -5,7 +5,7 @@ pub fn target() -> Target {
|
|||||||
base.cpu = "pentium4".into();
|
base.cpu = "pentium4".into();
|
||||||
base.max_atomic_width = Some(64);
|
base.max_atomic_width = Some(64);
|
||||||
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m32", "-Wl,-melf_i386"]);
|
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m32", "-Wl,-melf_i386"]);
|
||||||
base.stack_probes = StackProbeType::X86;
|
base.stack_probes = StackProbeType::Inline;
|
||||||
|
|
||||||
// The unwinder used by i686-unknown-linux-musl, the LLVM libunwind
|
// The unwinder used by i686-unknown-linux-musl, the LLVM libunwind
|
||||||
// implementation, apparently relies on frame pointers existing... somehow.
|
// implementation, apparently relies on frame pointers existing... somehow.
|
||||||
|
@ -5,7 +5,7 @@ pub fn target() -> Target {
|
|||||||
base.cpu = "pentium4".into();
|
base.cpu = "pentium4".into();
|
||||||
base.max_atomic_width = Some(64);
|
base.max_atomic_width = Some(64);
|
||||||
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m32"]);
|
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m32"]);
|
||||||
base.stack_probes = StackProbeType::X86;
|
base.stack_probes = StackProbeType::Inline;
|
||||||
|
|
||||||
Target {
|
Target {
|
||||||
llvm_target: "i686-unknown-netbsdelf".into(),
|
llvm_target: "i686-unknown-netbsdelf".into(),
|
||||||
|
@ -5,7 +5,7 @@ pub fn target() -> Target {
|
|||||||
base.cpu = "pentium4".into();
|
base.cpu = "pentium4".into();
|
||||||
base.max_atomic_width = Some(64);
|
base.max_atomic_width = Some(64);
|
||||||
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m32", "-fuse-ld=lld"]);
|
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m32", "-fuse-ld=lld"]);
|
||||||
base.stack_probes = StackProbeType::X86;
|
base.stack_probes = StackProbeType::Inline;
|
||||||
|
|
||||||
Target {
|
Target {
|
||||||
llvm_target: "i686-unknown-openbsd".into(),
|
llvm_target: "i686-unknown-openbsd".into(),
|
||||||
|
@ -5,7 +5,7 @@ pub fn target() -> Target {
|
|||||||
base.cpu = "pentium4".into();
|
base.cpu = "pentium4".into();
|
||||||
base.max_atomic_width = Some(64);
|
base.max_atomic_width = Some(64);
|
||||||
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m32"]);
|
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m32"]);
|
||||||
base.stack_probes = StackProbeType::X86;
|
base.stack_probes = StackProbeType::Inline;
|
||||||
|
|
||||||
Target {
|
Target {
|
||||||
llvm_target: "i686-unknown-linux-gnu".into(),
|
llvm_target: "i686-unknown-linux-gnu".into(),
|
||||||
|
@ -8,7 +8,7 @@ pub fn target() -> Target {
|
|||||||
base.max_atomic_width = Some(128); // penryn+ supports cmpxchg16b
|
base.max_atomic_width = Some(128); // penryn+ supports cmpxchg16b
|
||||||
base.frame_pointer = FramePointer::Always;
|
base.frame_pointer = FramePointer::Always;
|
||||||
base.add_pre_link_args(LinkerFlavor::Darwin(Cc::Yes, Lld::No), &["-m64"]);
|
base.add_pre_link_args(LinkerFlavor::Darwin(Cc::Yes, Lld::No), &["-m64"]);
|
||||||
base.stack_probes = StackProbeType::X86;
|
base.stack_probes = StackProbeType::Inline;
|
||||||
base.supported_sanitizers =
|
base.supported_sanitizers =
|
||||||
SanitizerSet::ADDRESS | SanitizerSet::CFI | SanitizerSet::LEAK | SanitizerSet::THREAD;
|
SanitizerSet::ADDRESS | SanitizerSet::CFI | SanitizerSet::LEAK | SanitizerSet::THREAD;
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ pub fn target() -> Target {
|
|||||||
arch: arch.target_arch(),
|
arch: arch.target_arch(),
|
||||||
options: TargetOptions {
|
options: TargetOptions {
|
||||||
max_atomic_width: Some(128),
|
max_atomic_width: Some(128),
|
||||||
stack_probes: StackProbeType::X86,
|
stack_probes: StackProbeType::Inline,
|
||||||
..base
|
..base
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,7 @@ pub fn target() -> Target {
|
|||||||
arch: arch.target_arch(),
|
arch: arch.target_arch(),
|
||||||
options: TargetOptions {
|
options: TargetOptions {
|
||||||
max_atomic_width: Some(128),
|
max_atomic_width: Some(128),
|
||||||
stack_probes: StackProbeType::X86,
|
stack_probes: StackProbeType::Inline,
|
||||||
..base
|
..base
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@ pub fn target() -> Target {
|
|||||||
arch: arch.target_arch(),
|
arch: arch.target_arch(),
|
||||||
options: TargetOptions {
|
options: TargetOptions {
|
||||||
max_atomic_width: Some(128),
|
max_atomic_width: Some(128),
|
||||||
stack_probes: StackProbeType::X86,
|
stack_probes: StackProbeType::Inline,
|
||||||
..opts("tvos", arch)
|
..opts("tvos", arch)
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@ pub fn target() -> Target {
|
|||||||
arch: arch.target_arch(),
|
arch: arch.target_arch(),
|
||||||
options: TargetOptions {
|
options: TargetOptions {
|
||||||
max_atomic_width: Some(128),
|
max_atomic_width: Some(128),
|
||||||
stack_probes: StackProbeType::X86,
|
stack_probes: StackProbeType::Inline,
|
||||||
..opts("watchos", arch)
|
..opts("watchos", arch)
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,7 @@ pub fn target() -> Target {
|
|||||||
base.features = "+mmx,+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+popcnt".into();
|
base.features = "+mmx,+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+popcnt".into();
|
||||||
base.max_atomic_width = Some(64);
|
base.max_atomic_width = Some(64);
|
||||||
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
|
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
|
||||||
base.stack_probes = StackProbeType::X86;
|
base.stack_probes = StackProbeType::Inline;
|
||||||
base.supports_xray = true;
|
base.supports_xray = true;
|
||||||
|
|
||||||
Target {
|
Target {
|
||||||
|
@ -7,7 +7,7 @@ pub fn target() -> Target {
|
|||||||
base.plt_by_default = false;
|
base.plt_by_default = false;
|
||||||
base.vendor = "pc".into();
|
base.vendor = "pc".into();
|
||||||
base.max_atomic_width = Some(64);
|
base.max_atomic_width = Some(64);
|
||||||
base.stack_probes = StackProbeType::X86;
|
base.stack_probes = StackProbeType::Inline;
|
||||||
base.supported_sanitizers = SanitizerSet::ADDRESS | SanitizerSet::CFI | SanitizerSet::THREAD;
|
base.supported_sanitizers = SanitizerSet::ADDRESS | SanitizerSet::CFI | SanitizerSet::THREAD;
|
||||||
|
|
||||||
Target {
|
Target {
|
||||||
|
@ -12,7 +12,7 @@ pub fn target() -> Target {
|
|||||||
plt_by_default: false,
|
plt_by_default: false,
|
||||||
pre_link_args: TargetOptions::link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]),
|
pre_link_args: TargetOptions::link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]),
|
||||||
max_atomic_width: Some(64),
|
max_atomic_width: Some(64),
|
||||||
stack_probes: StackProbeType::X86,
|
stack_probes: StackProbeType::Inline,
|
||||||
..base::unikraft_linux_musl::opts()
|
..base::unikraft_linux_musl::opts()
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@ pub fn target() -> Target {
|
|||||||
base.plt_by_default = false;
|
base.plt_by_default = false;
|
||||||
base.max_atomic_width = Some(64);
|
base.max_atomic_width = Some(64);
|
||||||
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
|
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
|
||||||
base.stack_probes = StackProbeType::X86;
|
base.stack_probes = StackProbeType::Inline;
|
||||||
|
|
||||||
Target {
|
Target {
|
||||||
llvm_target: "x86_64-unknown-dragonfly".into(),
|
llvm_target: "x86_64-unknown-dragonfly".into(),
|
||||||
|
@ -6,7 +6,7 @@ pub fn target() -> Target {
|
|||||||
base.plt_by_default = false;
|
base.plt_by_default = false;
|
||||||
base.max_atomic_width = Some(64);
|
base.max_atomic_width = Some(64);
|
||||||
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
|
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
|
||||||
base.stack_probes = StackProbeType::X86;
|
base.stack_probes = StackProbeType::Inline;
|
||||||
base.supported_sanitizers =
|
base.supported_sanitizers =
|
||||||
SanitizerSet::ADDRESS | SanitizerSet::CFI | SanitizerSet::MEMORY | SanitizerSet::THREAD;
|
SanitizerSet::ADDRESS | SanitizerSet::CFI | SanitizerSet::MEMORY | SanitizerSet::THREAD;
|
||||||
base.supports_xray = true;
|
base.supports_xray = true;
|
||||||
|
@ -5,7 +5,7 @@ pub fn target() -> Target {
|
|||||||
base.cpu = "x86-64".into();
|
base.cpu = "x86-64".into();
|
||||||
base.plt_by_default = false;
|
base.plt_by_default = false;
|
||||||
base.max_atomic_width = Some(64);
|
base.max_atomic_width = Some(64);
|
||||||
base.stack_probes = StackProbeType::X86;
|
base.stack_probes = StackProbeType::Inline;
|
||||||
base.supported_sanitizers = SanitizerSet::ADDRESS | SanitizerSet::CFI;
|
base.supported_sanitizers = SanitizerSet::ADDRESS | SanitizerSet::CFI;
|
||||||
|
|
||||||
Target {
|
Target {
|
||||||
|
@ -6,7 +6,7 @@ pub fn target() -> Target {
|
|||||||
base.plt_by_default = false;
|
base.plt_by_default = false;
|
||||||
base.max_atomic_width = Some(64);
|
base.max_atomic_width = Some(64);
|
||||||
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
|
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
|
||||||
base.stack_probes = StackProbeType::X86;
|
base.stack_probes = StackProbeType::Inline;
|
||||||
// This option is required to build executables on Haiku x86_64
|
// This option is required to build executables on Haiku x86_64
|
||||||
base.position_independent_executables = true;
|
base.position_independent_executables = true;
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@ pub fn target() -> Target {
|
|||||||
features: "+rdrnd,+rdseed".into(),
|
features: "+rdrnd,+rdseed".into(),
|
||||||
plt_by_default: false,
|
plt_by_default: false,
|
||||||
max_atomic_width: Some(64),
|
max_atomic_width: Some(64),
|
||||||
stack_probes: StackProbeType::X86,
|
stack_probes: StackProbeType::Inline,
|
||||||
..base::hermit::opts()
|
..base::hermit::opts()
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@ pub fn target() -> Target {
|
|||||||
base.plt_by_default = false;
|
base.plt_by_default = false;
|
||||||
base.max_atomic_width = Some(64);
|
base.max_atomic_width = Some(64);
|
||||||
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
|
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
|
||||||
base.stack_probes = StackProbeType::X86;
|
base.stack_probes = StackProbeType::Inline;
|
||||||
base.static_position_independent_executables = true;
|
base.static_position_independent_executables = true;
|
||||||
base.supported_sanitizers = SanitizerSet::ADDRESS
|
base.supported_sanitizers = SanitizerSet::ADDRESS
|
||||||
| SanitizerSet::CFI
|
| SanitizerSet::CFI
|
||||||
|
@ -6,7 +6,7 @@ pub fn target() -> Target {
|
|||||||
base.abi = "x32".into();
|
base.abi = "x32".into();
|
||||||
base.max_atomic_width = Some(64);
|
base.max_atomic_width = Some(64);
|
||||||
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-mx32"]);
|
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-mx32"]);
|
||||||
base.stack_probes = StackProbeType::X86;
|
base.stack_probes = StackProbeType::Inline;
|
||||||
base.has_thread_local = false;
|
base.has_thread_local = false;
|
||||||
// BUG(GabrielMajeri): disabling the PLT on x86_64 Linux with x32 ABI
|
// BUG(GabrielMajeri): disabling the PLT on x86_64 Linux with x32 ABI
|
||||||
// breaks code gen. See LLVM bug 36743
|
// breaks code gen. See LLVM bug 36743
|
||||||
|
@ -6,7 +6,7 @@ pub fn target() -> Target {
|
|||||||
base.plt_by_default = false;
|
base.plt_by_default = false;
|
||||||
base.max_atomic_width = Some(64);
|
base.max_atomic_width = Some(64);
|
||||||
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
|
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
|
||||||
base.stack_probes = StackProbeType::X86;
|
base.stack_probes = StackProbeType::Inline;
|
||||||
base.static_position_independent_executables = true;
|
base.static_position_independent_executables = true;
|
||||||
base.supported_sanitizers = SanitizerSet::ADDRESS
|
base.supported_sanitizers = SanitizerSet::ADDRESS
|
||||||
| SanitizerSet::CFI
|
| SanitizerSet::CFI
|
||||||
|
@ -5,7 +5,7 @@ pub fn target() -> Target {
|
|||||||
base.cpu = "x86-64".into();
|
base.cpu = "x86-64".into();
|
||||||
base.max_atomic_width = Some(64);
|
base.max_atomic_width = Some(64);
|
||||||
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
|
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
|
||||||
base.stack_probes = StackProbeType::X86;
|
base.stack_probes = StackProbeType::Inline;
|
||||||
base.static_position_independent_executables = true;
|
base.static_position_independent_executables = true;
|
||||||
base.supported_sanitizers = SanitizerSet::ADDRESS
|
base.supported_sanitizers = SanitizerSet::ADDRESS
|
||||||
| SanitizerSet::CFI
|
| SanitizerSet::CFI
|
||||||
|
@ -8,7 +8,7 @@ pub fn target() -> Target {
|
|||||||
base.plt_by_default = false;
|
base.plt_by_default = false;
|
||||||
base.max_atomic_width = Some(64);
|
base.max_atomic_width = Some(64);
|
||||||
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
|
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
|
||||||
base.stack_probes = StackProbeType::X86;
|
base.stack_probes = StackProbeType::Inline;
|
||||||
base.supported_sanitizers = SanitizerSet::ADDRESS
|
base.supported_sanitizers = SanitizerSet::ADDRESS
|
||||||
| SanitizerSet::CFI
|
| SanitizerSet::CFI
|
||||||
| SanitizerSet::LEAK
|
| SanitizerSet::LEAK
|
||||||
|
@ -12,7 +12,7 @@ pub fn target() -> Target {
|
|||||||
cpu: "x86-64".into(),
|
cpu: "x86-64".into(),
|
||||||
plt_by_default: false,
|
plt_by_default: false,
|
||||||
max_atomic_width: Some(64),
|
max_atomic_width: Some(64),
|
||||||
stack_probes: StackProbeType::X86,
|
stack_probes: StackProbeType::Inline,
|
||||||
position_independent_executables: true,
|
position_independent_executables: true,
|
||||||
static_position_independent_executables: true,
|
static_position_independent_executables: true,
|
||||||
relro_level: RelroLevel::Full,
|
relro_level: RelroLevel::Full,
|
||||||
|
@ -6,7 +6,7 @@ pub fn target() -> Target {
|
|||||||
base.plt_by_default = false;
|
base.plt_by_default = false;
|
||||||
base.max_atomic_width = Some(64);
|
base.max_atomic_width = Some(64);
|
||||||
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
|
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
|
||||||
base.stack_probes = StackProbeType::X86;
|
base.stack_probes = StackProbeType::Inline;
|
||||||
base.supports_xray = true;
|
base.supports_xray = true;
|
||||||
|
|
||||||
Target {
|
Target {
|
||||||
|
@ -6,7 +6,7 @@ pub fn target() -> Target {
|
|||||||
base.plt_by_default = false;
|
base.plt_by_default = false;
|
||||||
base.max_atomic_width = Some(64);
|
base.max_atomic_width = Some(64);
|
||||||
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
|
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
|
||||||
base.stack_probes = StackProbeType::X86;
|
base.stack_probes = StackProbeType::Inline;
|
||||||
|
|
||||||
Target {
|
Target {
|
||||||
llvm_target: "x86_64-unknown-redox".into(),
|
llvm_target: "x86_64-unknown-redox".into(),
|
||||||
|
@ -6,7 +6,7 @@ pub fn target() -> Target {
|
|||||||
base.plt_by_default = false;
|
base.plt_by_default = false;
|
||||||
base.max_atomic_width = Some(64);
|
base.max_atomic_width = Some(64);
|
||||||
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
|
base.add_pre_link_args(LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-m64"]);
|
||||||
base.stack_probes = StackProbeType::X86;
|
base.stack_probes = StackProbeType::Inline;
|
||||||
base.disable_redzone = true;
|
base.disable_redzone = true;
|
||||||
|
|
||||||
Target {
|
Target {
|
||||||
|
@ -8,7 +8,7 @@ pub fn target() -> Target {
|
|||||||
base.max_atomic_width = Some(128);
|
base.max_atomic_width = Some(128);
|
||||||
base.frame_pointer = FramePointer::Always;
|
base.frame_pointer = FramePointer::Always;
|
||||||
base.add_pre_link_args(LinkerFlavor::Darwin(Cc::Yes, Lld::No), &["-m64"]);
|
base.add_pre_link_args(LinkerFlavor::Darwin(Cc::Yes, Lld::No), &["-m64"]);
|
||||||
base.stack_probes = StackProbeType::X86;
|
base.stack_probes = StackProbeType::Inline;
|
||||||
base.supported_sanitizers =
|
base.supported_sanitizers =
|
||||||
SanitizerSet::ADDRESS | SanitizerSet::CFI | SanitizerSet::LEAK | SanitizerSet::THREAD;
|
SanitizerSet::ADDRESS | SanitizerSet::CFI | SanitizerSet::LEAK | SanitizerSet::THREAD;
|
||||||
|
|
||||||
|
@ -569,11 +569,11 @@ fn check_llvm_version(builder: &Builder<'_>, llvm_config: &Path) {
|
|||||||
let version = output(cmd.arg("--version"));
|
let version = output(cmd.arg("--version"));
|
||||||
let mut parts = version.split('.').take(2).filter_map(|s| s.parse::<u32>().ok());
|
let mut parts = version.split('.').take(2).filter_map(|s| s.parse::<u32>().ok());
|
||||||
if let (Some(major), Some(_minor)) = (parts.next(), parts.next()) {
|
if let (Some(major), Some(_minor)) = (parts.next(), parts.next()) {
|
||||||
if major >= 15 {
|
if major >= 16 {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
panic!("\n\nbad LLVM version: {version}, need >=15.0\n\n")
|
panic!("\n\nbad LLVM version: {version}, need >=16.0\n\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
fn configure_cmake(
|
fn configure_cmake(
|
||||||
|
@ -1,59 +0,0 @@
|
|||||||
FROM ubuntu:22.04
|
|
||||||
|
|
||||||
ARG DEBIAN_FRONTEND=noninteractive
|
|
||||||
|
|
||||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
||||||
g++ \
|
|
||||||
gcc-multilib \
|
|
||||||
make \
|
|
||||||
ninja-build \
|
|
||||||
file \
|
|
||||||
curl \
|
|
||||||
ca-certificates \
|
|
||||||
python3.11 \
|
|
||||||
git \
|
|
||||||
cmake \
|
|
||||||
sudo \
|
|
||||||
gdb \
|
|
||||||
llvm-15-tools \
|
|
||||||
llvm-15-dev \
|
|
||||||
libedit-dev \
|
|
||||||
libssl-dev \
|
|
||||||
pkg-config \
|
|
||||||
zlib1g-dev \
|
|
||||||
xz-utils \
|
|
||||||
nodejs \
|
|
||||||
mingw-w64 \
|
|
||||||
libgccjit-12-dev \
|
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
# Install powershell (universal package) so we can test x.ps1 on Linux
|
|
||||||
RUN curl -sL "https://github.com/PowerShell/PowerShell/releases/download/v7.3.1/powershell_7.3.1-1.deb_amd64.deb" > powershell.deb && \
|
|
||||||
dpkg -i powershell.deb && \
|
|
||||||
rm -f powershell.deb
|
|
||||||
|
|
||||||
COPY scripts/sccache.sh /scripts/
|
|
||||||
RUN sh /scripts/sccache.sh
|
|
||||||
|
|
||||||
# Make `libgccjit.so` accessible to the linker.
|
|
||||||
RUN ln -s /usr/lib/gcc/x86_64-linux-gnu/12/libgccjit.so /usr/lib/x86_64-linux-gnu/libgccjit.so
|
|
||||||
|
|
||||||
# We are disabling CI LLVM since this builder is intentionally using a host
|
|
||||||
# LLVM, rather than the typical src/llvm-project LLVM.
|
|
||||||
ENV NO_DOWNLOAD_CI_LLVM 1
|
|
||||||
|
|
||||||
# This is not the latest LLVM version, so some components required by tests may
|
|
||||||
# be missing.
|
|
||||||
ENV IS_NOT_LATEST_LLVM 1
|
|
||||||
|
|
||||||
# Using llvm-link-shared due to libffi issues -- see #34486
|
|
||||||
ENV RUST_CONFIGURE_ARGS \
|
|
||||||
--build=x86_64-unknown-linux-gnu \
|
|
||||||
--llvm-root=/usr/lib/llvm-15 \
|
|
||||||
--enable-llvm-link-shared \
|
|
||||||
$USE_NEW_MANGLING \
|
|
||||||
--set rust.thin-lto-import-instr-limit=10
|
|
||||||
|
|
||||||
COPY host-x86_64/x86_64-gnu-llvm-15/script.sh /tmp/
|
|
||||||
|
|
||||||
ENV SCRIPT /tmp/script.sh
|
|
@ -49,6 +49,6 @@ ENV RUST_CONFIGURE_ARGS \
|
|||||||
--enable-llvm-link-shared \
|
--enable-llvm-link-shared \
|
||||||
--set rust.thin-lto-import-instr-limit=10
|
--set rust.thin-lto-import-instr-limit=10
|
||||||
|
|
||||||
COPY host-x86_64/x86_64-gnu-llvm-15/script.sh /tmp/
|
COPY host-x86_64/x86_64-gnu-llvm-16/script.sh /tmp/
|
||||||
|
|
||||||
ENV SCRIPT /tmp/script.sh
|
ENV SCRIPT /tmp/script.sh
|
||||||
|
@ -45,6 +45,6 @@ ENV RUST_CONFIGURE_ARGS \
|
|||||||
--enable-llvm-link-shared \
|
--enable-llvm-link-shared \
|
||||||
--set rust.thin-lto-import-instr-limit=10
|
--set rust.thin-lto-import-instr-limit=10
|
||||||
|
|
||||||
COPY host-x86_64/x86_64-gnu-llvm-15/script.sh /tmp/
|
COPY host-x86_64/x86_64-gnu-llvm-16/script.sh /tmp/
|
||||||
|
|
||||||
ENV SCRIPT /tmp/script.sh
|
ENV SCRIPT /tmp/script.sh
|
||||||
|
@ -334,7 +334,7 @@ jobs:
|
|||||||
- name: mingw-check-tidy
|
- name: mingw-check-tidy
|
||||||
<<: *job-linux-4c
|
<<: *job-linux-4c
|
||||||
|
|
||||||
- name: x86_64-gnu-llvm-15
|
- name: x86_64-gnu-llvm-16
|
||||||
env:
|
env:
|
||||||
ENABLE_GCC_CODEGEN: "1"
|
ENABLE_GCC_CODEGEN: "1"
|
||||||
<<: *job-linux-16c
|
<<: *job-linux-16c
|
||||||
@ -486,11 +486,6 @@ jobs:
|
|||||||
RUST_BACKTRACE: 1
|
RUST_BACKTRACE: 1
|
||||||
<<: *job-linux-8c
|
<<: *job-linux-8c
|
||||||
|
|
||||||
- name: x86_64-gnu-llvm-15
|
|
||||||
env:
|
|
||||||
RUST_BACKTRACE: 1
|
|
||||||
<<: *job-linux-8c
|
|
||||||
|
|
||||||
- name: x86_64-gnu-nopt
|
- name: x86_64-gnu-nopt
|
||||||
<<: *job-linux-4c
|
<<: *job-linux-4c
|
||||||
|
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
// min-llvm-version: 16.0
|
|
||||||
// assembly-output: emit-asm
|
// assembly-output: emit-asm
|
||||||
// compile-flags: --target loongarch64-unknown-linux-gnu
|
// compile-flags: --target loongarch64-unknown-linux-gnu
|
||||||
// needs-llvm-components: loongarch
|
// needs-llvm-components: loongarch
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
// min-llvm-version: 16
|
|
||||||
// revisions: x86_64 i686
|
// revisions: x86_64 i686
|
||||||
// assembly-output: emit-asm
|
// assembly-output: emit-asm
|
||||||
//[x86_64] compile-flags: --target x86_64-unknown-linux-gnu
|
//[x86_64] compile-flags: --target x86_64-unknown-linux-gnu
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
// compile-flags: -O
|
// compile-flags: -O
|
||||||
// min-llvm-version: 16
|
|
||||||
|
|
||||||
#![crate_type = "lib"]
|
#![crate_type = "lib"]
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
// compile-flags: -O
|
// compile-flags: -O
|
||||||
// min-llvm-version: 16
|
|
||||||
// ignore-debug: the debug assertions get in the way
|
// ignore-debug: the debug assertions get in the way
|
||||||
|
|
||||||
#![crate_type = "lib"]
|
#![crate_type = "lib"]
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
// compile-flags: -O
|
// compile-flags: -O
|
||||||
// min-llvm-version: 16
|
|
||||||
// ignore-debug: the debug assertions get in the way
|
// ignore-debug: the debug assertions get in the way
|
||||||
|
|
||||||
#![crate_type = "lib"]
|
#![crate_type = "lib"]
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
// compile-flags: -O -C overflow-checks
|
// compile-flags: -O -C overflow-checks
|
||||||
// min-llvm-version: 16
|
|
||||||
|
|
||||||
#![crate_type = "lib"]
|
#![crate_type = "lib"]
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
// compile-flags: -O
|
// compile-flags: -O
|
||||||
// min-llvm-version: 16
|
|
||||||
|
|
||||||
#![crate_type = "lib"]
|
#![crate_type = "lib"]
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
// compile-flags: -O
|
// compile-flags: -O
|
||||||
// min-llvm-version: 16.0
|
|
||||||
#![crate_type = "lib"]
|
#![crate_type = "lib"]
|
||||||
|
|
||||||
pub fn foo(t: &mut Vec<usize>) {
|
pub fn foo(t: &mut Vec<usize>) {
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
// compile-flags: -O
|
// compile-flags: -O
|
||||||
// min-llvm-version: 16
|
|
||||||
|
|
||||||
#![crate_type = "lib"]
|
#![crate_type = "lib"]
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
// compile-flags: -O
|
// compile-flags: -O
|
||||||
// min-llvm-version: 16
|
|
||||||
|
|
||||||
#![crate_type = "lib"]
|
#![crate_type = "lib"]
|
||||||
|
|
||||||
|
@ -6,10 +6,8 @@
|
|||||||
//[aarch64] needs-llvm-components: aarch64
|
//[aarch64] needs-llvm-components: aarch64
|
||||||
//[riscv64imac] compile-flags: --target riscv64imac-unknown-none-elf
|
//[riscv64imac] compile-flags: --target riscv64imac-unknown-none-elf
|
||||||
//[riscv64imac] needs-llvm-components: riscv
|
//[riscv64imac] needs-llvm-components: riscv
|
||||||
//[riscv64imac] min-llvm-version: 16
|
|
||||||
//[riscv64gc] compile-flags: --target riscv64gc-unknown-none-elf
|
//[riscv64gc] compile-flags: --target riscv64gc-unknown-none-elf
|
||||||
//[riscv64gc] needs-llvm-components: riscv
|
//[riscv64gc] needs-llvm-components: riscv
|
||||||
//[riscv64gc] min-llvm-version: 16
|
|
||||||
//[x86_64] compile-flags: --target x86_64-unknown-none
|
//[x86_64] compile-flags: --target x86_64-unknown-none
|
||||||
//[x86_64] needs-llvm-components: x86
|
//[x86_64] needs-llvm-components: x86
|
||||||
|
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
// ignore-debug: the debug assertions get in the way
|
// ignore-debug: the debug assertions get in the way
|
||||||
// compile-flags: -O
|
// compile-flags: -O
|
||||||
// min-llvm-version: 16
|
|
||||||
#![crate_type = "lib"]
|
#![crate_type = "lib"]
|
||||||
|
|
||||||
// CHECK-LABEL: @slice_fold_to_last
|
// CHECK-LABEL: @slice_fold_to_last
|
||||||
|
@ -1,24 +0,0 @@
|
|||||||
// Check the "probe-stack" attribute for targets with `StackProbeType::Call`,
|
|
||||||
// or `StackProbeType::InlineOrCall` when running on older LLVM.
|
|
||||||
|
|
||||||
// compile-flags: -C no-prepopulate-passes
|
|
||||||
// revisions: i686 x86_64
|
|
||||||
//[i686] compile-flags: --target i686-unknown-linux-gnu
|
|
||||||
//[i686] needs-llvm-components: x86
|
|
||||||
//[i686] ignore-llvm-version: 16 - 99
|
|
||||||
//[x86_64] compile-flags: --target x86_64-unknown-linux-gnu
|
|
||||||
//[x86_64] needs-llvm-components: x86
|
|
||||||
//[x86_64] ignore-llvm-version: 16 - 99
|
|
||||||
|
|
||||||
#![crate_type = "rlib"]
|
|
||||||
#![feature(no_core, lang_items)]
|
|
||||||
#![no_core]
|
|
||||||
|
|
||||||
#[lang = "sized"]
|
|
||||||
trait Sized {}
|
|
||||||
|
|
||||||
#[no_mangle]
|
|
||||||
pub fn foo() {
|
|
||||||
// CHECK: @foo() unnamed_addr #0
|
|
||||||
// CHECK: attributes #0 = { {{.*}}"probe-stack"="__rust_probestack"{{.*}} }
|
|
||||||
}
|
|
@ -13,10 +13,8 @@
|
|||||||
//[s390x] needs-llvm-components: systemz
|
//[s390x] needs-llvm-components: systemz
|
||||||
//[i686] compile-flags: --target i686-unknown-linux-gnu
|
//[i686] compile-flags: --target i686-unknown-linux-gnu
|
||||||
//[i686] needs-llvm-components: x86
|
//[i686] needs-llvm-components: x86
|
||||||
//[i686] min-llvm-version: 16
|
|
||||||
//[x86_64] compile-flags: --target x86_64-unknown-linux-gnu
|
//[x86_64] compile-flags: --target x86_64-unknown-linux-gnu
|
||||||
//[x86_64] needs-llvm-components: x86
|
//[x86_64] needs-llvm-components: x86
|
||||||
//[x86_64] min-llvm-version: 16
|
|
||||||
|
|
||||||
#![crate_type = "rlib"]
|
#![crate_type = "rlib"]
|
||||||
#![feature(no_core, lang_items)]
|
#![feature(no_core, lang_items)]
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
// ignore-debug: the debug assertions get in the way
|
// ignore-debug: the debug assertions get in the way
|
||||||
// compile-flags: -O -Z merge-functions=disabled
|
// compile-flags: -O -Z merge-functions=disabled
|
||||||
// min-llvm-version: 16
|
|
||||||
#![crate_type = "lib"]
|
#![crate_type = "lib"]
|
||||||
|
|
||||||
// Ensure that trivial casts of vec elements are O(1)
|
// Ensure that trivial casts of vec elements are O(1)
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
include ../tools.mk
|
include ../tools.mk
|
||||||
|
|
||||||
# only-linux
|
# only-linux
|
||||||
# min-llvm-version: 16.0
|
|
||||||
#
|
#
|
||||||
# This tests debuginfo-compression.
|
# This tests debuginfo-compression.
|
||||||
|
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
// run-pass
|
// run-pass
|
||||||
// compile-flags: -O -Zmir-opt-level=3 -Cno-prepopulate-passes
|
// compile-flags: -O -Zmir-opt-level=3 -Cno-prepopulate-passes
|
||||||
// min-llvm-version: 16.0 (requires APFloat fixes in LLVM)
|
|
||||||
|
|
||||||
// Regression test for a broken MIR optimization (issue #113407).
|
// Regression test for a broken MIR optimization (issue #113407).
|
||||||
pub fn main() {
|
pub fn main() {
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
// run-pass
|
// run-pass
|
||||||
// only-x86
|
// only-x86
|
||||||
// min-system-llvm-version: 16
|
|
||||||
// compile-flags: -Ctarget-feature=+sse2
|
// compile-flags: -Ctarget-feature=+sse2
|
||||||
|
|
||||||
use std::hint::black_box;
|
use std::hint::black_box;
|
||||||
|
@ -8,10 +8,8 @@
|
|||||||
//[aarch64] needs-llvm-components: aarch64
|
//[aarch64] needs-llvm-components: aarch64
|
||||||
//[riscv64imac] compile-flags: --target riscv64imac-unknown-none-elf
|
//[riscv64imac] compile-flags: --target riscv64imac-unknown-none-elf
|
||||||
//[riscv64imac] needs-llvm-components: riscv
|
//[riscv64imac] needs-llvm-components: riscv
|
||||||
//[riscv64imac] min-llvm-version: 16
|
|
||||||
//[riscv64gc] compile-flags: --target riscv64gc-unknown-none-elf
|
//[riscv64gc] compile-flags: --target riscv64gc-unknown-none-elf
|
||||||
//[riscv64gc] needs-llvm-components: riscv
|
//[riscv64gc] needs-llvm-components: riscv
|
||||||
//[riscv64gc] min-llvm-version: 16
|
|
||||||
//[x86_64] compile-flags: --target x86_64-unknown-none
|
//[x86_64] compile-flags: --target x86_64-unknown-none
|
||||||
//[x86_64] needs-llvm-components: x86
|
//[x86_64] needs-llvm-components: x86
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user