Auto merge of #90175 - cuviper:min-llvm-12, r=nagisa
Update the minimum external LLVM to 12 With this change, we'll have stable support for LLVM 12 and 13. For reference, the previous increase to LLVM 10 was #83387, and this replaces the pending increase to LLVM 11 in #90062. r? `@nagisa` `@nikic`
This commit is contained in:
commit
45591408b1
64 changed files with 63 additions and 328 deletions
4
.github/workflows/ci.yml
vendored
4
.github/workflows/ci.yml
vendored
|
@ -43,7 +43,7 @@ jobs:
|
|||
- name: mingw-check
|
||||
os: ubuntu-latest-xl
|
||||
env: {}
|
||||
- name: x86_64-gnu-llvm-10
|
||||
- name: x86_64-gnu-llvm-12
|
||||
os: ubuntu-latest-xl
|
||||
env: {}
|
||||
- name: x86_64-gnu-tools
|
||||
|
@ -274,7 +274,7 @@ jobs:
|
|||
- name: x86_64-gnu-distcheck
|
||||
os: ubuntu-latest-xl
|
||||
env: {}
|
||||
- name: x86_64-gnu-llvm-10
|
||||
- name: x86_64-gnu-llvm-12
|
||||
env:
|
||||
RUST_BACKTRACE: 1
|
||||
os: ubuntu-latest-xl
|
||||
|
|
|
@ -95,8 +95,7 @@ unsafe fn configure_llvm(sess: &Session) {
|
|||
// Ref:
|
||||
// - https://github.com/rust-lang/rust/issues/85351
|
||||
// - https://reviews.llvm.org/D103167
|
||||
let llvm_version = llvm_util::get_version();
|
||||
if llvm_version >= (11, 0, 0) && llvm_version < (13, 0, 0) {
|
||||
if llvm_util::get_version() < (13, 0, 0) {
|
||||
add("-enable-machine-outliner=never", false);
|
||||
}
|
||||
|
||||
|
|
|
@ -98,10 +98,7 @@ extern "C" void LLVMRustCoverageWriteMapSectionNameToString(LLVMModuleRef M,
|
|||
|
||||
extern "C" void LLVMRustCoverageWriteFuncSectionNameToString(LLVMModuleRef M,
|
||||
RustStringRef Str) {
|
||||
#if LLVM_VERSION_GE(11, 0)
|
||||
WriteSectionNameToString(M, IPSK_covfun, Str);
|
||||
// else do nothing; the `Version` check will abort codegen on the Rust side
|
||||
#endif
|
||||
}
|
||||
|
||||
extern "C" void LLVMRustCoverageWriteMappingVarNameToString(RustStringRef Str) {
|
||||
|
@ -111,9 +108,5 @@ extern "C" void LLVMRustCoverageWriteMappingVarNameToString(RustStringRef Str) {
|
|||
}
|
||||
|
||||
extern "C" uint32_t LLVMRustCoverageMappingVersion() {
|
||||
#if LLVM_VERSION_GE(11, 0)
|
||||
return coverage::CovMapVersion::Version4;
|
||||
#else
|
||||
return coverage::CovMapVersion::Version3;
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -54,10 +54,6 @@ typedef struct LLVMOpaqueTargetMachine *LLVMTargetMachineRef;
|
|||
|
||||
DEFINE_STDCXX_CONVERSION_FUNCTIONS(Pass, LLVMPassRef)
|
||||
DEFINE_STDCXX_CONVERSION_FUNCTIONS(TargetMachine, LLVMTargetMachineRef)
|
||||
#if LLVM_VERSION_LT(11, 0)
|
||||
DEFINE_STDCXX_CONVERSION_FUNCTIONS(PassManagerBuilder,
|
||||
LLVMPassManagerBuilderRef)
|
||||
#endif
|
||||
|
||||
extern "C" void LLVMInitializePasses() {
|
||||
PassRegistry &Registry = *PassRegistry::getPassRegistry();
|
||||
|
@ -685,7 +681,6 @@ void LLVMSelfProfileInitializeCallbacks(
|
|||
PassInstrumentationCallbacks& PIC, void* LlvmSelfProfiler,
|
||||
LLVMRustSelfProfileBeforePassCallback BeforePassCallback,
|
||||
LLVMRustSelfProfileAfterPassCallback AfterPassCallback) {
|
||||
#if LLVM_VERSION_GE(12, 0)
|
||||
PIC.registerBeforeNonSkippedPassCallback([LlvmSelfProfiler, BeforePassCallback](
|
||||
StringRef Pass, llvm::Any Ir) {
|
||||
std::string PassName = Pass.str();
|
||||
|
@ -703,25 +698,6 @@ void LLVMSelfProfileInitializeCallbacks(
|
|||
[LlvmSelfProfiler, AfterPassCallback](StringRef Pass, const PreservedAnalyses &Preserved) {
|
||||
AfterPassCallback(LlvmSelfProfiler);
|
||||
});
|
||||
#else
|
||||
PIC.registerBeforePassCallback([LlvmSelfProfiler, BeforePassCallback](
|
||||
StringRef Pass, llvm::Any Ir) {
|
||||
std::string PassName = Pass.str();
|
||||
std::string IrName = LLVMRustwrappedIrGetName(Ir);
|
||||
BeforePassCallback(LlvmSelfProfiler, PassName.c_str(), IrName.c_str());
|
||||
return true;
|
||||
});
|
||||
|
||||
PIC.registerAfterPassCallback(
|
||||
[LlvmSelfProfiler, AfterPassCallback](StringRef Pass, llvm::Any Ir) {
|
||||
AfterPassCallback(LlvmSelfProfiler);
|
||||
});
|
||||
|
||||
PIC.registerAfterPassInvalidatedCallback(
|
||||
[LlvmSelfProfiler, AfterPassCallback](StringRef Pass) {
|
||||
AfterPassCallback(LlvmSelfProfiler);
|
||||
});
|
||||
#endif
|
||||
|
||||
PIC.registerBeforeAnalysisCallback([LlvmSelfProfiler, BeforePassCallback](
|
||||
StringRef Pass, llvm::Any Ir) {
|
||||
|
@ -782,22 +758,13 @@ LLVMRustOptimizeWithNewPassManager(
|
|||
PTO.LoopInterleaving = UnrollLoops;
|
||||
PTO.LoopVectorization = LoopVectorize;
|
||||
PTO.SLPVectorization = SLPVectorize;
|
||||
#if LLVM_VERSION_GE(12, 0)
|
||||
PTO.MergeFunctions = MergeFunctions;
|
||||
#else
|
||||
// MergeFunctions is not supported by NewPM in older LLVM versions.
|
||||
(void) MergeFunctions;
|
||||
#endif
|
||||
|
||||
// FIXME: We may want to expose this as an option.
|
||||
bool DebugPassManager = false;
|
||||
|
||||
PassInstrumentationCallbacks PIC;
|
||||
#if LLVM_VERSION_GE(12, 0)
|
||||
StandardInstrumentations SI(DebugPassManager);
|
||||
#else
|
||||
StandardInstrumentations SI;
|
||||
#endif
|
||||
SI.registerCallbacks(PIC);
|
||||
|
||||
if (LlvmSelfProfiler){
|
||||
|
@ -821,18 +788,14 @@ LLVMRustOptimizeWithNewPassManager(
|
|||
PGOOptions::NoCSAction, DebugInfoForProfiling);
|
||||
}
|
||||
|
||||
#if LLVM_VERSION_GE(12, 0) && !LLVM_VERSION_GE(13,0)
|
||||
PassBuilder PB(DebugPassManager, TM, PTO, PGOOpt, &PIC);
|
||||
#else
|
||||
PassBuilder PB(TM, PTO, PGOOpt, &PIC);
|
||||
#endif
|
||||
|
||||
#if LLVM_VERSION_GE(13, 0)
|
||||
PassBuilder PB(TM, PTO, PGOOpt, &PIC);
|
||||
LoopAnalysisManager LAM;
|
||||
FunctionAnalysisManager FAM;
|
||||
CGSCCAnalysisManager CGAM;
|
||||
ModuleAnalysisManager MAM;
|
||||
#else
|
||||
PassBuilder PB(DebugPassManager, TM, PTO, PGOOpt, &PIC);
|
||||
LoopAnalysisManager LAM(DebugPassManager);
|
||||
FunctionAnalysisManager FAM(DebugPassManager);
|
||||
CGSCCAnalysisManager CGAM(DebugPassManager);
|
||||
|
@ -857,13 +820,8 @@ LLVMRustOptimizeWithNewPassManager(
|
|||
// PassBuilder does not create a pipeline.
|
||||
std::vector<std::function<void(ModulePassManager &, OptimizationLevel)>>
|
||||
PipelineStartEPCallbacks;
|
||||
#if LLVM_VERSION_GE(11, 0)
|
||||
std::vector<std::function<void(ModulePassManager &, OptimizationLevel)>>
|
||||
OptimizerLastEPCallbacks;
|
||||
#else
|
||||
std::vector<std::function<void(FunctionPassManager &, OptimizationLevel)>>
|
||||
OptimizerLastEPCallbacks;
|
||||
#endif
|
||||
|
||||
if (VerifyIR) {
|
||||
PipelineStartEPCallbacks.push_back(
|
||||
|
@ -896,7 +854,6 @@ LLVMRustOptimizeWithNewPassManager(
|
|||
SanitizerOptions->SanitizeMemoryTrackOrigins,
|
||||
SanitizerOptions->SanitizeMemoryRecover,
|
||||
/*CompileKernel=*/false);
|
||||
#if LLVM_VERSION_GE(11, 0)
|
||||
OptimizerLastEPCallbacks.push_back(
|
||||
[Options](ModulePassManager &MPM, OptimizationLevel Level) {
|
||||
#if LLVM_VERSION_GE(14, 0)
|
||||
|
@ -907,22 +864,9 @@ LLVMRustOptimizeWithNewPassManager(
|
|||
MPM.addPass(createModuleToFunctionPassAdaptor(MemorySanitizerPass(Options)));
|
||||
}
|
||||
);
|
||||
#else
|
||||
PipelineStartEPCallbacks.push_back(
|
||||
[Options](ModulePassManager &MPM, OptimizationLevel Level) {
|
||||
MPM.addPass(MemorySanitizerPass(Options));
|
||||
}
|
||||
);
|
||||
OptimizerLastEPCallbacks.push_back(
|
||||
[Options](FunctionPassManager &FPM, OptimizationLevel Level) {
|
||||
FPM.addPass(MemorySanitizerPass(Options));
|
||||
}
|
||||
);
|
||||
#endif
|
||||
}
|
||||
|
||||
if (SanitizerOptions->SanitizeThread) {
|
||||
#if LLVM_VERSION_GE(11, 0)
|
||||
OptimizerLastEPCallbacks.push_back(
|
||||
[](ModulePassManager &MPM, OptimizationLevel Level) {
|
||||
#if LLVM_VERSION_GE(14, 0)
|
||||
|
@ -933,22 +877,9 @@ LLVMRustOptimizeWithNewPassManager(
|
|||
MPM.addPass(createModuleToFunctionPassAdaptor(ThreadSanitizerPass()));
|
||||
}
|
||||
);
|
||||
#else
|
||||
PipelineStartEPCallbacks.push_back(
|
||||
[](ModulePassManager &MPM, OptimizationLevel Level) {
|
||||
MPM.addPass(ThreadSanitizerPass());
|
||||
}
|
||||
);
|
||||
OptimizerLastEPCallbacks.push_back(
|
||||
[](FunctionPassManager &FPM, OptimizationLevel Level) {
|
||||
FPM.addPass(ThreadSanitizerPass());
|
||||
}
|
||||
);
|
||||
#endif
|
||||
}
|
||||
|
||||
if (SanitizerOptions->SanitizeAddress) {
|
||||
#if LLVM_VERSION_GE(11, 0)
|
||||
OptimizerLastEPCallbacks.push_back(
|
||||
[SanitizerOptions](ModulePassManager &MPM, OptimizationLevel Level) {
|
||||
MPM.addPass(RequireAnalysisPass<ASanGlobalsMetadataAnalysis, Module>());
|
||||
|
@ -967,29 +898,8 @@ LLVMRustOptimizeWithNewPassManager(
|
|||
#endif
|
||||
}
|
||||
);
|
||||
#else
|
||||
PipelineStartEPCallbacks.push_back(
|
||||
[&](ModulePassManager &MPM, OptimizationLevel Level) {
|
||||
MPM.addPass(RequireAnalysisPass<ASanGlobalsMetadataAnalysis, Module>());
|
||||
}
|
||||
);
|
||||
OptimizerLastEPCallbacks.push_back(
|
||||
[SanitizerOptions](FunctionPassManager &FPM, OptimizationLevel Level) {
|
||||
FPM.addPass(AddressSanitizerPass(
|
||||
/*CompileKernel=*/false, SanitizerOptions->SanitizeAddressRecover,
|
||||
/*UseAfterScope=*/true));
|
||||
}
|
||||
);
|
||||
PipelineStartEPCallbacks.push_back(
|
||||
[SanitizerOptions](ModulePassManager &MPM, OptimizationLevel Level) {
|
||||
MPM.addPass(ModuleAddressSanitizerPass(
|
||||
/*CompileKernel=*/false, SanitizerOptions->SanitizeAddressRecover));
|
||||
}
|
||||
);
|
||||
#endif
|
||||
}
|
||||
if (SanitizerOptions->SanitizeHWAddress) {
|
||||
#if LLVM_VERSION_GE(11, 0)
|
||||
OptimizerLastEPCallbacks.push_back(
|
||||
[SanitizerOptions](ModulePassManager &MPM, OptimizationLevel Level) {
|
||||
#if LLVM_VERSION_GE(14, 0)
|
||||
|
@ -1003,14 +913,6 @@ LLVMRustOptimizeWithNewPassManager(
|
|||
#endif
|
||||
}
|
||||
);
|
||||
#else
|
||||
PipelineStartEPCallbacks.push_back(
|
||||
[SanitizerOptions](ModulePassManager &MPM, OptimizationLevel Level) {
|
||||
MPM.addPass(HWAddressSanitizerPass(
|
||||
/*CompileKernel=*/false, SanitizerOptions->SanitizeHWAddressRecover));
|
||||
}
|
||||
);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1025,7 +927,6 @@ LLVMRustOptimizeWithNewPassManager(
|
|||
// At the same time, the LTO pipelines do support O0 and using them is required.
|
||||
bool IsLTO = OptStage == LLVMRustOptStage::ThinLTO || OptStage == LLVMRustOptStage::FatLTO;
|
||||
if (OptLevel == OptimizationLevel::O0 && !IsLTO) {
|
||||
#if LLVM_VERSION_GE(12, 0)
|
||||
for (const auto &C : PipelineStartEPCallbacks)
|
||||
PB.registerPipelineStartEPCallback(C);
|
||||
for (const auto &C : OptimizerLastEPCallbacks)
|
||||
|
@ -1033,40 +934,9 @@ LLVMRustOptimizeWithNewPassManager(
|
|||
|
||||
// Pass false as we manually schedule ThinLTOBufferPasses below.
|
||||
MPM = PB.buildO0DefaultPipeline(OptLevel, /* PreLinkLTO */ false);
|
||||
#else
|
||||
for (const auto &C : PipelineStartEPCallbacks)
|
||||
C(MPM, OptLevel);
|
||||
|
||||
# if LLVM_VERSION_GE(11, 0)
|
||||
for (const auto &C : OptimizerLastEPCallbacks)
|
||||
C(MPM, OptLevel);
|
||||
# else
|
||||
if (!OptimizerLastEPCallbacks.empty()) {
|
||||
FunctionPassManager FPM(DebugPassManager);
|
||||
for (const auto &C : OptimizerLastEPCallbacks)
|
||||
C(FPM, OptLevel);
|
||||
MPM.addPass(createModuleToFunctionPassAdaptor(std::move(FPM)));
|
||||
}
|
||||
# endif
|
||||
|
||||
MPM.addPass(AlwaysInlinerPass(EmitLifetimeMarkers));
|
||||
|
||||
if (PGOOpt) {
|
||||
PB.addPGOInstrPassesForO0(
|
||||
MPM, DebugPassManager, PGOOpt->Action == PGOOptions::IRInstr,
|
||||
/*IsCS=*/false, PGOOpt->ProfileFile, PGOOpt->ProfileRemappingFile);
|
||||
}
|
||||
#endif
|
||||
} else {
|
||||
#if LLVM_VERSION_GE(12, 0)
|
||||
for (const auto &C : PipelineStartEPCallbacks)
|
||||
PB.registerPipelineStartEPCallback(C);
|
||||
#else
|
||||
for (const auto &C : PipelineStartEPCallbacks)
|
||||
PB.registerPipelineStartEPCallback([C, OptLevel](ModulePassManager &MPM) {
|
||||
C(MPM, OptLevel);
|
||||
});
|
||||
#endif
|
||||
if (OptStage != LLVMRustOptStage::PreLinkThinLTO) {
|
||||
for (const auto &C : OptimizerLastEPCallbacks)
|
||||
PB.registerOptimizerLastEPCallback(C);
|
||||
|
@ -1077,7 +947,6 @@ LLVMRustOptimizeWithNewPassManager(
|
|||
MPM = PB.buildPerModuleDefaultPipeline(OptLevel, DebugPassManager);
|
||||
break;
|
||||
case LLVMRustOptStage::PreLinkThinLTO:
|
||||
#if LLVM_VERSION_GE(12, 0)
|
||||
MPM = PB.buildThinLTOPreLinkDefaultPipeline(OptLevel);
|
||||
// The ThinLTOPreLink pipeline already includes ThinLTOBuffer passes. However, callback
|
||||
// passes may still run afterwards. This means we need to run the buffer passes again.
|
||||
|
@ -1085,44 +954,20 @@ LLVMRustOptimizeWithNewPassManager(
|
|||
// before the RequiredLTOPreLinkPasses, in which case we can remove these hacks.
|
||||
if (OptimizerLastEPCallbacks.empty())
|
||||
NeedThinLTOBufferPasses = false;
|
||||
#else
|
||||
MPM = PB.buildThinLTOPreLinkDefaultPipeline(OptLevel, DebugPassManager);
|
||||
#endif
|
||||
#if LLVM_VERSION_GE(11, 0)
|
||||
for (const auto &C : OptimizerLastEPCallbacks)
|
||||
C(MPM, OptLevel);
|
||||
#else
|
||||
if (!OptimizerLastEPCallbacks.empty()) {
|
||||
FunctionPassManager FPM(DebugPassManager);
|
||||
for (const auto &C : OptimizerLastEPCallbacks)
|
||||
C(FPM, OptLevel);
|
||||
MPM.addPass(createModuleToFunctionPassAdaptor(std::move(FPM)));
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
case LLVMRustOptStage::PreLinkFatLTO:
|
||||
#if LLVM_VERSION_GE(12, 0)
|
||||
MPM = PB.buildLTOPreLinkDefaultPipeline(OptLevel);
|
||||
NeedThinLTOBufferPasses = false;
|
||||
#else
|
||||
MPM = PB.buildLTOPreLinkDefaultPipeline(OptLevel, DebugPassManager);
|
||||
#endif
|
||||
break;
|
||||
case LLVMRustOptStage::ThinLTO:
|
||||
// FIXME: Does it make sense to pass the ModuleSummaryIndex?
|
||||
// It only seems to be needed for C++ specific optimizations.
|
||||
#if LLVM_VERSION_GE(12, 0)
|
||||
MPM = PB.buildThinLTODefaultPipeline(OptLevel, nullptr);
|
||||
#else
|
||||
MPM = PB.buildThinLTODefaultPipeline(OptLevel, DebugPassManager, nullptr);
|
||||
#endif
|
||||
break;
|
||||
case LLVMRustOptStage::FatLTO:
|
||||
#if LLVM_VERSION_GE(12, 0)
|
||||
MPM = PB.buildLTODefaultPipeline(OptLevel, nullptr);
|
||||
#else
|
||||
MPM = PB.buildLTODefaultPipeline(OptLevel, DebugPassManager, nullptr);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1552,7 +1397,6 @@ LLVMRustFreeThinLTOData(LLVMRustThinLTOData *Data) {
|
|||
// `ProcessThinLTOModule` function. Here they're split up into separate steps
|
||||
// so rustc can save off the intermediate bytecode between each step.
|
||||
|
||||
#if LLVM_VERSION_GE(11, 0)
|
||||
static bool
|
||||
clearDSOLocalOnDeclarations(Module &Mod, TargetMachine &TM) {
|
||||
// When linking an ELF shared object, dso_local should be dropped. We
|
||||
|
@ -1563,7 +1407,6 @@ clearDSOLocalOnDeclarations(Module &Mod, TargetMachine &TM) {
|
|||
Mod.getPIELevel() == PIELevel::Default;
|
||||
return ClearDSOLocalOnDeclarations;
|
||||
}
|
||||
#endif
|
||||
|
||||
extern "C" bool
|
||||
LLVMRustPrepareThinLTORename(const LLVMRustThinLTOData *Data, LLVMModuleRef M,
|
||||
|
@ -1571,12 +1414,8 @@ LLVMRustPrepareThinLTORename(const LLVMRustThinLTOData *Data, LLVMModuleRef M,
|
|||
Module &Mod = *unwrap(M);
|
||||
TargetMachine &Target = *unwrap(TM);
|
||||
|
||||
#if LLVM_VERSION_GE(11, 0)
|
||||
bool ClearDSOLocal = clearDSOLocalOnDeclarations(Mod, Target);
|
||||
bool error = renameModuleForThinLTO(Mod, Data->Index, ClearDSOLocal);
|
||||
#else
|
||||
bool error = renameModuleForThinLTO(Mod, Data->Index);
|
||||
#endif
|
||||
|
||||
if (error) {
|
||||
LLVMRustSetLastError("renameModuleForThinLTO failed");
|
||||
|
@ -1645,12 +1484,8 @@ LLVMRustPrepareThinLTOImport(const LLVMRustThinLTOData *Data, LLVMModuleRef M,
|
|||
|
||||
return MOrErr;
|
||||
};
|
||||
#if LLVM_VERSION_GE(11, 0)
|
||||
bool ClearDSOLocal = clearDSOLocalOnDeclarations(Mod, Target);
|
||||
FunctionImporter Importer(Data->Index, Loader, ClearDSOLocal);
|
||||
#else
|
||||
FunctionImporter Importer(Data->Index, Loader);
|
||||
#endif
|
||||
Expected<bool> Result = Importer.importFunctions(Mod, ImportList);
|
||||
if (!Result) {
|
||||
LLVMRustSetLastError(toString(Result.takeError()).c_str());
|
||||
|
|
|
@ -263,11 +263,7 @@ extern "C" void LLVMRustAddByValCallSiteAttr(LLVMValueRef Instr, unsigned Index,
|
|||
extern "C" void LLVMRustAddStructRetCallSiteAttr(LLVMValueRef Instr, unsigned Index,
|
||||
LLVMTypeRef Ty) {
|
||||
CallBase *Call = unwrap<CallBase>(Instr);
|
||||
#if LLVM_VERSION_GE(12, 0)
|
||||
Attribute Attr = Attribute::getWithStructRetType(Call->getContext(), unwrap(Ty));
|
||||
#else
|
||||
Attribute Attr = Attribute::get(Call->getContext(), Attribute::StructRet);
|
||||
#endif
|
||||
AddAttribute(Call, Index, Attr);
|
||||
}
|
||||
|
||||
|
@ -311,11 +307,7 @@ extern "C" void LLVMRustAddByValAttr(LLVMValueRef Fn, unsigned Index,
|
|||
extern "C" void LLVMRustAddStructRetAttr(LLVMValueRef Fn, unsigned Index,
|
||||
LLVMTypeRef Ty) {
|
||||
Function *F = unwrap<Function>(Fn);
|
||||
#if LLVM_VERSION_GE(12, 0)
|
||||
Attribute Attr = Attribute::getWithStructRetType(F->getContext(), unwrap(Ty));
|
||||
#else
|
||||
Attribute Attr = Attribute::get(F->getContext(), Attribute::StructRet);
|
||||
#endif
|
||||
AddAttribute(F, Index, Attr);
|
||||
}
|
||||
|
||||
|
@ -681,10 +673,8 @@ static Optional<DIFile::ChecksumKind> fromRust(LLVMRustChecksumKind Kind) {
|
|||
return DIFile::ChecksumKind::CSK_MD5;
|
||||
case LLVMRustChecksumKind::SHA1:
|
||||
return DIFile::ChecksumKind::CSK_SHA1;
|
||||
#if (LLVM_VERSION_MAJOR >= 11)
|
||||
case LLVMRustChecksumKind::SHA256:
|
||||
return DIFile::ChecksumKind::CSK_SHA256;
|
||||
#endif
|
||||
default:
|
||||
report_fatal_error("bad ChecksumKind.");
|
||||
}
|
||||
|
@ -999,14 +989,9 @@ extern "C" LLVMMetadataRef LLVMRustDIBuilderCreateUnionType(
|
|||
extern "C" LLVMMetadataRef LLVMRustDIBuilderCreateTemplateTypeParameter(
|
||||
LLVMRustDIBuilderRef Builder, LLVMMetadataRef Scope,
|
||||
const char *Name, size_t NameLen, LLVMMetadataRef Ty) {
|
||||
#if LLVM_VERSION_GE(11, 0)
|
||||
bool IsDefault = false; // FIXME: should we ever set this true?
|
||||
return wrap(Builder->createTemplateTypeParameter(
|
||||
unwrapDI<DIDescriptor>(Scope), StringRef(Name, NameLen), unwrapDI<DIType>(Ty), IsDefault));
|
||||
#else
|
||||
return wrap(Builder->createTemplateTypeParameter(
|
||||
unwrapDI<DIDescriptor>(Scope), StringRef(Name, NameLen), unwrapDI<DIType>(Ty)));
|
||||
#endif
|
||||
}
|
||||
|
||||
extern "C" LLVMMetadataRef LLVMRustDIBuilderCreateNameSpace(
|
||||
|
@ -1031,17 +1016,11 @@ extern "C" LLVMMetadataRef
|
|||
LLVMRustDIBuilderCreateDebugLocation(unsigned Line, unsigned Column,
|
||||
LLVMMetadataRef ScopeRef,
|
||||
LLVMMetadataRef InlinedAt) {
|
||||
#if LLVM_VERSION_GE(12, 0)
|
||||
MDNode *Scope = unwrapDIPtr<MDNode>(ScopeRef);
|
||||
DILocation *Loc = DILocation::get(
|
||||
Scope->getContext(), Line, Column, Scope,
|
||||
unwrapDIPtr<MDNode>(InlinedAt));
|
||||
return wrap(Loc);
|
||||
#else
|
||||
DebugLoc debug_loc = DebugLoc::get(Line, Column, unwrapDIPtr<MDNode>(ScopeRef),
|
||||
unwrapDIPtr<MDNode>(InlinedAt));
|
||||
return wrap(debug_loc.getAsMDNode());
|
||||
#endif
|
||||
}
|
||||
|
||||
extern "C" int64_t LLVMRustDIBuilderCreateOpDeref() {
|
||||
|
@ -1246,27 +1225,18 @@ extern "C" LLVMTypeKind LLVMRustGetTypeKind(LLVMTypeRef Ty) {
|
|||
return LLVMArrayTypeKind;
|
||||
case Type::PointerTyID:
|
||||
return LLVMPointerTypeKind;
|
||||
#if LLVM_VERSION_GE(11, 0)
|
||||
case Type::FixedVectorTyID:
|
||||
return LLVMVectorTypeKind;
|
||||
#else
|
||||
case Type::VectorTyID:
|
||||
return LLVMVectorTypeKind;
|
||||
#endif
|
||||
case Type::X86_MMXTyID:
|
||||
return LLVMX86_MMXTypeKind;
|
||||
case Type::TokenTyID:
|
||||
return LLVMTokenTypeKind;
|
||||
#if LLVM_VERSION_GE(11, 0)
|
||||
case Type::ScalableVectorTyID:
|
||||
return LLVMScalableVectorTypeKind;
|
||||
case Type::BFloatTyID:
|
||||
return LLVMBFloatTypeKind;
|
||||
#endif
|
||||
#if LLVM_VERSION_GE(12, 0)
|
||||
case Type::X86_AMXTyID:
|
||||
return LLVMX86_AMXTypeKind;
|
||||
#endif
|
||||
}
|
||||
report_fatal_error("Unhandled TypeID.");
|
||||
}
|
||||
|
@ -1724,23 +1694,15 @@ LLVMRustBuildVectorReduceMax(LLVMBuilderRef B, LLVMValueRef Src, bool IsSigned)
|
|||
}
|
||||
extern "C" LLVMValueRef
|
||||
LLVMRustBuildVectorReduceFMin(LLVMBuilderRef B, LLVMValueRef Src, bool NoNaN) {
|
||||
#if LLVM_VERSION_GE(12, 0)
|
||||
Instruction *I = unwrap(B)->CreateFPMinReduce(unwrap(Src));
|
||||
I->setHasNoNaNs(NoNaN);
|
||||
return wrap(I);
|
||||
#else
|
||||
return wrap(unwrap(B)->CreateFPMinReduce(unwrap(Src), NoNaN));
|
||||
#endif
|
||||
}
|
||||
extern "C" LLVMValueRef
|
||||
LLVMRustBuildVectorReduceFMax(LLVMBuilderRef B, LLVMValueRef Src, bool NoNaN) {
|
||||
#if LLVM_VERSION_GE(12, 0)
|
||||
Instruction *I = unwrap(B)->CreateFPMaxReduce(unwrap(Src));
|
||||
I->setHasNoNaNs(NoNaN);
|
||||
return wrap(I);
|
||||
#else
|
||||
return wrap(unwrap(B)->CreateFPMaxReduce(unwrap(Src), NoNaN));
|
||||
#endif
|
||||
}
|
||||
|
||||
extern "C" LLVMValueRef
|
||||
|
|
|
@ -378,11 +378,11 @@ fn check_llvm_version(builder: &Builder<'_>, llvm_config: &Path) {
|
|||
let version = output(cmd.arg("--version"));
|
||||
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 major >= 10 {
|
||||
if major >= 12 {
|
||||
return;
|
||||
}
|
||||
}
|
||||
panic!("\n\nbad LLVM version: {}, need >=10.0\n\n", version)
|
||||
panic!("\n\nbad LLVM version: {}, need >=12.0\n\n", version)
|
||||
}
|
||||
|
||||
fn configure_cmake(
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
FROM ubuntu:18.04
|
||||
FROM ubuntu:20.04
|
||||
|
||||
ARG DEBIAN_FRONTEND=noninteractive
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
g++ \
|
||||
gcc-multilib \
|
||||
|
@ -13,8 +14,8 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
|||
cmake \
|
||||
sudo \
|
||||
gdb \
|
||||
llvm-10-tools \
|
||||
llvm-10-dev \
|
||||
llvm-12-tools \
|
||||
llvm-12-dev \
|
||||
libedit-dev \
|
||||
libssl-dev \
|
||||
pkg-config \
|
||||
|
@ -28,7 +29,7 @@ RUN sh /scripts/sccache.sh
|
|||
# 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-10 \
|
||||
--llvm-root=/usr/lib/llvm-12 \
|
||||
--enable-llvm-link-shared \
|
||||
--set rust.thin-lto-import-instr-limit=10
|
||||
|
|
@ -284,7 +284,7 @@ jobs:
|
|||
- name: mingw-check
|
||||
<<: *job-linux-xl
|
||||
|
||||
- name: x86_64-gnu-llvm-10
|
||||
- name: x86_64-gnu-llvm-12
|
||||
<<: *job-linux-xl
|
||||
|
||||
- name: x86_64-gnu-tools
|
||||
|
@ -431,7 +431,7 @@ jobs:
|
|||
- name: x86_64-gnu-distcheck
|
||||
<<: *job-linux-xl
|
||||
|
||||
- name: x86_64-gnu-llvm-10
|
||||
- name: x86_64-gnu-llvm-12
|
||||
env:
|
||||
RUST_BACKTRACE: 1
|
||||
<<: *job-linux-xl
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
// min-llvm-version: 10.0.1
|
||||
// assembly-output: emit-asm
|
||||
// compile-flags: -O
|
||||
// compile-flags: --target aarch64-unknown-linux-gnu
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
// min-llvm-version: 12.0
|
||||
// assembly-output: emit-asm
|
||||
// compile-flags: -O
|
||||
// compile-flags: --target aarch64-unknown-linux-gnu
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
// min-llvm-version: 10.0.1
|
||||
// assembly-output: emit-asm
|
||||
// compile-flags: --target aarch64-unknown-linux-gnu
|
||||
// needs-llvm-components: aarch64
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
// min-llvm-version: 10.0.1
|
||||
// assembly-output: emit-asm
|
||||
// compile-flags: -O
|
||||
// compile-flags: --target armv7-unknown-linux-gnueabihf
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
// min-llvm-version: 10.0.1
|
||||
// assembly-output: emit-asm
|
||||
// compile-flags: --target armv7-unknown-linux-gnueabihf
|
||||
// compile-flags: -C target-feature=+neon
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
// min-llvm-version: 10.0.1
|
||||
// only-x86_64
|
||||
// assembly-output: emit-asm
|
||||
// compile-flags: -C llvm-args=--x86-asm-syntax=intel
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
// min-llvm-version: 10.0.1
|
||||
// assembly-output: emit-asm
|
||||
// compile-flags: --target hexagon-unknown-linux-musl
|
||||
// needs-llvm-components: hexagon
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
// min-llvm-version: 10.0.1
|
||||
// revisions: mips32 mips64
|
||||
// assembly-output: emit-asm
|
||||
//[mips32] compile-flags: --target mips-unknown-linux-gnu
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
// min-llvm-version: 10.0.1
|
||||
// assembly-output: emit-asm
|
||||
// compile-flags: --target nvptx64-nvidia-cuda
|
||||
// compile-flags: --crate-type cdylib
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// min-llvm-version: 10.0.1
|
||||
// min-llvm-version: 12.0.1
|
||||
// revisions: powerpc powerpc64
|
||||
// assembly-output: emit-asm
|
||||
//[powerpc] compile-flags: --target powerpc-unknown-linux-gnu
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
// min-llvm-version: 10.0.1
|
||||
// revisions: riscv64 riscv32
|
||||
// assembly-output: emit-asm
|
||||
//[riscv64] compile-flags: --target riscv64imac-unknown-none-elf
|
||||
|
@ -6,7 +5,6 @@
|
|||
//[riscv32] compile-flags: --target riscv32imac-unknown-none-elf
|
||||
//[riscv32] needs-llvm-components: riscv
|
||||
// compile-flags: -C target-feature=+d
|
||||
// min-system-llvm-version: 12.0
|
||||
|
||||
#![feature(no_core, lang_items, rustc_attrs)]
|
||||
#![crate_type = "rlib"]
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
// min-llvm-version: 10.0.1
|
||||
// revisions: s390x
|
||||
// assembly-output: emit-asm
|
||||
//[s390x] compile-flags: --target s390x-unknown-linux-gnu
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
// min-llvm-version: 10.0.1
|
||||
// assembly-output: emit-asm
|
||||
// compile-flags: --target wasm32-unknown-unknown
|
||||
// compile-flags: --crate-type cdylib
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
// min-llvm-version: 10.0.1
|
||||
// revisions: x86_64 i686
|
||||
// assembly-output: emit-asm
|
||||
// compile-flags: -O
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
// min-llvm-version: 10.0.1
|
||||
// revisions: x86_64 i686
|
||||
// assembly-output: emit-asm
|
||||
//[x86_64] compile-flags: --target x86_64-unknown-linux-gnu
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
// min-llvm-version: 12.0.0
|
||||
// revisions: x64 A64 ppc64le
|
||||
// assembly-output: emit-asm
|
||||
// [x64] compile-flags: --target x86_64-unknown-linux-gnu -Crelocation-model=static
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
//
|
||||
// no-system-llvm
|
||||
// min-llvm-version: 10.0.1
|
||||
// compile-flags: -O
|
||||
#![crate_type="lib"]
|
||||
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
// min-llvm-version: 10.0.1
|
||||
// revisions: powerpc powerpc64 powerpc64le
|
||||
//[powerpc] compile-flags: --target powerpc-unknown-linux-gnu
|
||||
//[powerpc] needs-llvm-components: powerpc
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
// min-llvm-version: 11.0.0
|
||||
// compile-flags: -O
|
||||
// ignore-debug: the debug assertions get in the way
|
||||
#![crate_type = "lib"]
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
// This test checks an optimization that is not guaranteed to work. This test case should not block
|
||||
// a future LLVM update.
|
||||
// compile-flags: -O
|
||||
// min-llvm-version: 11.0
|
||||
|
||||
#![crate_type = "lib"]
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
// This test checks an optimization that is not guaranteed to work. This test case should not block
|
||||
// a future LLVM update.
|
||||
// compile-flags: -O
|
||||
// min-llvm-version: 11.0
|
||||
|
||||
#![crate_type = "lib"]
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
// compile-flags: -O
|
||||
// min-llvm-version: 11.0
|
||||
|
||||
#![crate_type = "lib"]
|
||||
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
// compile-flags: -O -C no-prepopulate-passes
|
||||
//
|
||||
// min-system-llvm-version: 12.0
|
||||
|
||||
#![crate_type = "lib"]
|
||||
#![feature(rustc_attrs)]
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
// compile-flags: -O
|
||||
// min-llvm-version: 11.0
|
||||
|
||||
#![crate_type = "lib"]
|
||||
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
// min-llvm-version: 12.0.0
|
||||
// compile-flags: -O
|
||||
#![crate_type = "lib"]
|
||||
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
// min-llvm-version: 11.0.0
|
||||
// compile-flags: -O
|
||||
// ignore-debug: the debug assertions get in the way
|
||||
#![crate_type = "lib"]
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
// This test checks that bounds checks are elided when
|
||||
// index is part of a (x | y) < C style condition
|
||||
|
||||
// min-llvm-version: 11.0.0
|
||||
// compile-flags: -O
|
||||
|
||||
#![crate_type = "lib"]
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
// Regression test for #75525, verifies that no bounds checks are generated.
|
||||
|
||||
// min-llvm-version: 12.0.0
|
||||
// compile-flags: -O
|
||||
|
||||
#![crate_type = "lib"]
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
// min-llvm-version: 12.0.0
|
||||
// compile-flags: -O
|
||||
#![crate_type = "lib"]
|
||||
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
// min-llvm-version: 12.0.0
|
||||
// compile-flags: -O
|
||||
#![crate_type = "lib"]
|
||||
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
// min-llvm-version: 12.0
|
||||
// compile-flags: -C opt-level=3
|
||||
|
||||
#![crate_type = "lib"]
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
// min-llvm-version: 12.0
|
||||
// compile-flags: -C opt-level=3
|
||||
|
||||
#![crate_type = "lib"]
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
// min-llvm-version: 12.0
|
||||
// compile-flags: -C opt-level=3
|
||||
|
||||
#![crate_type = "lib"]
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
// min-llvm-version: 12.0
|
||||
// compile-flags: -C opt-level=3
|
||||
|
||||
#![crate_type = "lib"]
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
// compile-flags: -C no-prepopulate-passes
|
||||
//
|
||||
|
||||
// min-system-llvm-version: 12.0
|
||||
// ignore-arm
|
||||
// ignore-aarch64
|
||||
// ignore-mips
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
// compile-flags: -C no-prepopulate-passes
|
||||
//
|
||||
|
||||
// min-system-llvm-version: 12.0
|
||||
// ignore-aarch64
|
||||
// ignore-emscripten
|
||||
// ignore-mips64
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
// compile-flags: -C no-prepopulate-passes
|
||||
//
|
||||
|
||||
// min-system-llvm-version: 12.0
|
||||
// only-mips64
|
||||
// See repr-transparent.rs
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
// compile-flags: -g -Z src-hash-algorithm=sha256
|
||||
// min-llvm-version: 11.0
|
||||
|
||||
#![crate_type = "lib"]
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
// ignore-debug: the debug assertions get in the way
|
||||
// compile-flags: -O
|
||||
// min-llvm-version: 11.0
|
||||
#![crate_type = "lib"]
|
||||
|
||||
// Ensure that trivial casts of vec elements are O(1)
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
// only-wasm32
|
||||
// compile-flags: -C target-feature=-nontrapping-fptoint
|
||||
// min-llvm-version: 12.0
|
||||
#![crate_type = "lib"]
|
||||
|
||||
// CHECK-LABEL: @cast_f64_i64
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
# needs-profiler-support
|
||||
# min-llvm-version: 11.0
|
||||
|
||||
-include ../coverage/coverage_tools.mk
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
# needs-profiler-support
|
||||
# ignore-windows-gnu
|
||||
# min-llvm-version: 11.0
|
||||
|
||||
# FIXME(mati865): MinGW GCC miscompiles compiler-rt profiling library but with Clang it works
|
||||
# properly. Since we only have GCC on the CI ignore the test for now.
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
-include ../tools.mk
|
||||
|
||||
# min-llvm-version: 11.0
|
||||
|
||||
all: off packed unpacked
|
||||
|
||||
ifeq ($(UNAME),Darwin)
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
-include ../tools.mk
|
||||
|
||||
# only-linux
|
||||
# min-llvm-version: 11.0
|
||||
|
||||
all:
|
||||
$(RUSTC) -Z unstable-options -C split-debuginfo=packed -C debuginfo=2 foo.rs -g
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
// min-llvm-version: 10.0.1
|
||||
// only-aarch64
|
||||
// run-pass
|
||||
// revisions: mirunsafeck thirunsafeck
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
// min-llvm-version: 10.0.1
|
||||
// only-aarch64
|
||||
// build-fail
|
||||
// compile-flags: -Ccodegen-units=1
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
error: unrecognized instruction mnemonic
|
||||
--> $DIR/srcloc.rs:11:15
|
||||
--> $DIR/srcloc.rs:10:15
|
||||
|
|
||||
LL | asm!("invalid_instruction");
|
||||
| ^
|
||||
|
@ -11,7 +11,7 @@ LL | invalid_instruction
|
|||
| ^
|
||||
|
||||
error: unrecognized instruction mnemonic
|
||||
--> $DIR/srcloc.rs:15:13
|
||||
--> $DIR/srcloc.rs:14:13
|
||||
|
|
||||
LL | invalid_instruction
|
||||
| ^
|
||||
|
@ -23,7 +23,7 @@ LL | invalid_instruction
|
|||
| ^
|
||||
|
||||
error: unrecognized instruction mnemonic
|
||||
--> $DIR/srcloc.rs:20:13
|
||||
--> $DIR/srcloc.rs:19:13
|
||||
|
|
||||
LL | invalid_instruction
|
||||
| ^
|
||||
|
@ -35,7 +35,7 @@ LL | invalid_instruction
|
|||
| ^
|
||||
|
||||
error: unrecognized instruction mnemonic
|
||||
--> $DIR/srcloc.rs:26:13
|
||||
--> $DIR/srcloc.rs:25:13
|
||||
|
|
||||
LL | invalid_instruction
|
||||
| ^
|
||||
|
@ -47,7 +47,7 @@ LL | invalid_instruction
|
|||
| ^
|
||||
|
||||
error: unrecognized instruction mnemonic
|
||||
--> $DIR/srcloc.rs:33:13
|
||||
--> $DIR/srcloc.rs:32:13
|
||||
|
|
||||
LL | invalid_instruction
|
||||
| ^
|
||||
|
@ -59,7 +59,7 @@ LL | invalid_instruction
|
|||
| ^
|
||||
|
||||
error: unrecognized instruction mnemonic
|
||||
--> $DIR/srcloc.rs:38:14
|
||||
--> $DIR/srcloc.rs:37:14
|
||||
|
|
||||
LL | asm!(concat!("invalid", "_", "instruction"));
|
||||
| ^
|
||||
|
@ -71,7 +71,7 @@ LL | invalid_instruction
|
|||
| ^
|
||||
|
||||
error: unrecognized instruction mnemonic
|
||||
--> $DIR/srcloc.rs:42:14
|
||||
--> $DIR/srcloc.rs:41:14
|
||||
|
|
||||
LL | "invalid_instruction",
|
||||
| ^
|
||||
|
@ -83,7 +83,7 @@ LL | invalid_instruction
|
|||
| ^
|
||||
|
||||
error: unrecognized instruction mnemonic
|
||||
--> $DIR/srcloc.rs:48:14
|
||||
--> $DIR/srcloc.rs:47:14
|
||||
|
|
||||
LL | "invalid_instruction",
|
||||
| ^
|
||||
|
@ -95,7 +95,7 @@ LL | invalid_instruction
|
|||
| ^
|
||||
|
||||
error: unrecognized instruction mnemonic
|
||||
--> $DIR/srcloc.rs:55:14
|
||||
--> $DIR/srcloc.rs:54:14
|
||||
|
|
||||
LL | "invalid_instruction",
|
||||
| ^
|
||||
|
@ -107,7 +107,7 @@ LL | invalid_instruction
|
|||
| ^
|
||||
|
||||
error: unrecognized instruction mnemonic
|
||||
--> $DIR/srcloc.rs:62:13
|
||||
--> $DIR/srcloc.rs:61:13
|
||||
|
|
||||
LL | concat!("invalid", "_", "instruction"),
|
||||
| ^
|
||||
|
@ -119,7 +119,7 @@ LL | invalid_instruction
|
|||
| ^
|
||||
|
||||
error: unrecognized instruction mnemonic
|
||||
--> $DIR/srcloc.rs:69:13
|
||||
--> $DIR/srcloc.rs:68:13
|
||||
|
|
||||
LL | concat!("invalid", "_", "instruction"),
|
||||
| ^
|
||||
|
@ -131,7 +131,7 @@ LL | invalid_instruction
|
|||
| ^
|
||||
|
||||
error: unrecognized instruction mnemonic
|
||||
--> $DIR/srcloc.rs:76:14
|
||||
--> $DIR/srcloc.rs:75:14
|
||||
|
|
||||
LL | "invalid_instruction1",
|
||||
| ^
|
||||
|
@ -143,7 +143,7 @@ LL | invalid_instruction1
|
|||
| ^
|
||||
|
||||
error: unrecognized instruction mnemonic
|
||||
--> $DIR/srcloc.rs:77:14
|
||||
--> $DIR/srcloc.rs:76:14
|
||||
|
|
||||
LL | "invalid_instruction2",
|
||||
| ^
|
||||
|
@ -155,7 +155,7 @@ LL | invalid_instruction2
|
|||
| ^
|
||||
|
||||
error: unrecognized instruction mnemonic
|
||||
--> $DIR/srcloc.rs:83:13
|
||||
--> $DIR/srcloc.rs:82:13
|
||||
|
|
||||
LL | concat!(
|
||||
| ^
|
||||
|
@ -167,7 +167,7 @@ LL | invalid_instruction1
|
|||
| ^
|
||||
|
||||
error: unrecognized instruction mnemonic
|
||||
--> $DIR/srcloc.rs:83:13
|
||||
--> $DIR/srcloc.rs:82:13
|
||||
|
|
||||
LL | concat!(
|
||||
| ^
|
||||
|
@ -179,7 +179,7 @@ LL | invalid_instruction2
|
|||
| ^
|
||||
|
||||
error: unrecognized instruction mnemonic
|
||||
--> $DIR/srcloc.rs:92:13
|
||||
--> $DIR/srcloc.rs:91:13
|
||||
|
|
||||
LL | concat!(
|
||||
| ^
|
||||
|
@ -191,7 +191,7 @@ LL | invalid_instruction1
|
|||
| ^
|
||||
|
||||
error: unrecognized instruction mnemonic
|
||||
--> $DIR/srcloc.rs:92:13
|
||||
--> $DIR/srcloc.rs:91:13
|
||||
|
|
||||
LL | concat!(
|
||||
| ^
|
||||
|
@ -203,7 +203,7 @@ LL | invalid_instruction2
|
|||
| ^
|
||||
|
||||
error: unrecognized instruction mnemonic
|
||||
--> $DIR/srcloc.rs:96:13
|
||||
--> $DIR/srcloc.rs:95:13
|
||||
|
|
||||
LL | concat!(
|
||||
| ^
|
||||
|
@ -215,7 +215,7 @@ LL | invalid_instruction3
|
|||
| ^
|
||||
|
||||
error: unrecognized instruction mnemonic
|
||||
--> $DIR/srcloc.rs:96:13
|
||||
--> $DIR/srcloc.rs:95:13
|
||||
|
|
||||
LL | concat!(
|
||||
| ^
|
||||
|
@ -227,7 +227,7 @@ LL | invalid_instruction4
|
|||
| ^
|
||||
|
||||
error: unrecognized instruction mnemonic
|
||||
--> $DIR/srcloc.rs:107:13
|
||||
--> $DIR/srcloc.rs:106:13
|
||||
|
|
||||
LL | concat!(
|
||||
| ^
|
||||
|
@ -239,7 +239,7 @@ LL | invalid_instruction1
|
|||
| ^
|
||||
|
||||
error: unrecognized instruction mnemonic
|
||||
--> $DIR/srcloc.rs:107:13
|
||||
--> $DIR/srcloc.rs:106:13
|
||||
|
|
||||
LL | concat!(
|
||||
| ^
|
||||
|
@ -251,7 +251,7 @@ LL | invalid_instruction2
|
|||
| ^
|
||||
|
||||
error: unrecognized instruction mnemonic
|
||||
--> $DIR/srcloc.rs:111:13
|
||||
--> $DIR/srcloc.rs:110:13
|
||||
|
|
||||
LL | concat!(
|
||||
| ^
|
||||
|
@ -263,7 +263,7 @@ LL | invalid_instruction3
|
|||
| ^
|
||||
|
||||
error: unrecognized instruction mnemonic
|
||||
--> $DIR/srcloc.rs:111:13
|
||||
--> $DIR/srcloc.rs:110:13
|
||||
|
|
||||
LL | concat!(
|
||||
| ^
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
// min-llvm-version: 10.0.1
|
||||
// only-aarch64
|
||||
// only-linux
|
||||
// run-pass
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
// min-llvm-version: 10.0.1
|
||||
// only-x86_64
|
||||
// run-pass
|
||||
// revisions: mirunsafeck thirunsafeck
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
// min-llvm-version: 10.0.1
|
||||
// only-x86_64
|
||||
// build-fail
|
||||
// compile-flags: -Ccodegen-units=1
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
error: invalid instruction mnemonic 'invalid_instruction'
|
||||
--> $DIR/srcloc.rs:11:15
|
||||
--> $DIR/srcloc.rs:10:15
|
||||
|
|
||||
LL | asm!("invalid_instruction");
|
||||
| ^
|
||||
|
@ -11,7 +11,7 @@ LL | invalid_instruction
|
|||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: invalid instruction mnemonic 'invalid_instruction'
|
||||
--> $DIR/srcloc.rs:15:13
|
||||
--> $DIR/srcloc.rs:14:13
|
||||
|
|
||||
LL | invalid_instruction
|
||||
| ^
|
||||
|
@ -23,7 +23,7 @@ LL | invalid_instruction
|
|||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: invalid instruction mnemonic 'invalid_instruction'
|
||||
--> $DIR/srcloc.rs:20:13
|
||||
--> $DIR/srcloc.rs:19:13
|
||||
|
|
||||
LL | invalid_instruction
|
||||
| ^
|
||||
|
@ -35,7 +35,7 @@ LL | invalid_instruction
|
|||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: invalid instruction mnemonic 'invalid_instruction'
|
||||
--> $DIR/srcloc.rs:26:13
|
||||
--> $DIR/srcloc.rs:25:13
|
||||
|
|
||||
LL | invalid_instruction
|
||||
| ^
|
||||
|
@ -47,7 +47,7 @@ LL | invalid_instruction
|
|||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: invalid instruction mnemonic 'invalid_instruction'
|
||||
--> $DIR/srcloc.rs:33:13
|
||||
--> $DIR/srcloc.rs:32:13
|
||||
|
|
||||
LL | invalid_instruction
|
||||
| ^
|
||||
|
@ -59,7 +59,7 @@ LL | invalid_instruction
|
|||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: invalid instruction mnemonic 'invalid_instruction'
|
||||
--> $DIR/srcloc.rs:38:14
|
||||
--> $DIR/srcloc.rs:37:14
|
||||
|
|
||||
LL | asm!(concat!("invalid", "_", "instruction"));
|
||||
| ^
|
||||
|
@ -71,7 +71,7 @@ LL | invalid_instruction
|
|||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: scale factor without index register is ignored
|
||||
--> $DIR/srcloc.rs:41:15
|
||||
--> $DIR/srcloc.rs:40:15
|
||||
|
|
||||
LL | asm!("movaps %xmm3, (%esi, 2)", options(att_syntax));
|
||||
| ^
|
||||
|
@ -83,7 +83,7 @@ LL | movaps %xmm3, (%esi, 2)
|
|||
| ^
|
||||
|
||||
error: invalid instruction mnemonic 'invalid_instruction'
|
||||
--> $DIR/srcloc.rs:45:14
|
||||
--> $DIR/srcloc.rs:44:14
|
||||
|
|
||||
LL | "invalid_instruction",
|
||||
| ^
|
||||
|
@ -95,7 +95,7 @@ LL | invalid_instruction
|
|||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: invalid instruction mnemonic 'invalid_instruction'
|
||||
--> $DIR/srcloc.rs:51:14
|
||||
--> $DIR/srcloc.rs:50:14
|
||||
|
|
||||
LL | "invalid_instruction",
|
||||
| ^
|
||||
|
@ -107,7 +107,7 @@ LL | invalid_instruction
|
|||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: invalid instruction mnemonic 'invalid_instruction'
|
||||
--> $DIR/srcloc.rs:58:14
|
||||
--> $DIR/srcloc.rs:57:14
|
||||
|
|
||||
LL | "invalid_instruction",
|
||||
| ^
|
||||
|
@ -119,7 +119,7 @@ LL | invalid_instruction
|
|||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: invalid instruction mnemonic 'invalid_instruction'
|
||||
--> $DIR/srcloc.rs:65:13
|
||||
--> $DIR/srcloc.rs:64:13
|
||||
|
|
||||
LL | concat!("invalid", "_", "instruction"),
|
||||
| ^
|
||||
|
@ -131,7 +131,7 @@ LL | invalid_instruction
|
|||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: invalid instruction mnemonic 'invalid_instruction'
|
||||
--> $DIR/srcloc.rs:72:13
|
||||
--> $DIR/srcloc.rs:71:13
|
||||
|
|
||||
LL | concat!("invalid", "_", "instruction"),
|
||||
| ^
|
||||
|
@ -143,7 +143,7 @@ LL | invalid_instruction
|
|||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: invalid instruction mnemonic 'invalid_instruction1'
|
||||
--> $DIR/srcloc.rs:79:14
|
||||
--> $DIR/srcloc.rs:78:14
|
||||
|
|
||||
LL | "invalid_instruction1",
|
||||
| ^
|
||||
|
@ -155,7 +155,7 @@ LL | invalid_instruction1
|
|||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: invalid instruction mnemonic 'invalid_instruction2'
|
||||
--> $DIR/srcloc.rs:80:14
|
||||
--> $DIR/srcloc.rs:79:14
|
||||
|
|
||||
LL | "invalid_instruction2",
|
||||
| ^
|
||||
|
@ -167,7 +167,7 @@ LL | invalid_instruction2
|
|||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: invalid instruction mnemonic 'invalid_instruction1'
|
||||
--> $DIR/srcloc.rs:86:13
|
||||
--> $DIR/srcloc.rs:85:13
|
||||
|
|
||||
LL | concat!(
|
||||
| ^
|
||||
|
@ -179,7 +179,7 @@ LL | invalid_instruction1
|
|||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: invalid instruction mnemonic 'invalid_instruction2'
|
||||
--> $DIR/srcloc.rs:86:13
|
||||
--> $DIR/srcloc.rs:85:13
|
||||
|
|
||||
LL | concat!(
|
||||
| ^
|
||||
|
@ -191,7 +191,7 @@ LL | invalid_instruction2
|
|||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: invalid instruction mnemonic 'invalid_instruction1'
|
||||
--> $DIR/srcloc.rs:95:13
|
||||
--> $DIR/srcloc.rs:94:13
|
||||
|
|
||||
LL | concat!(
|
||||
| ^
|
||||
|
@ -203,7 +203,7 @@ LL | invalid_instruction1
|
|||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: invalid instruction mnemonic 'invalid_instruction2'
|
||||
--> $DIR/srcloc.rs:95:13
|
||||
--> $DIR/srcloc.rs:94:13
|
||||
|
|
||||
LL | concat!(
|
||||
| ^
|
||||
|
@ -215,7 +215,7 @@ LL | invalid_instruction2
|
|||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: invalid instruction mnemonic 'invalid_instruction3'
|
||||
--> $DIR/srcloc.rs:99:13
|
||||
--> $DIR/srcloc.rs:98:13
|
||||
|
|
||||
LL | concat!(
|
||||
| ^
|
||||
|
@ -227,7 +227,7 @@ LL | invalid_instruction3
|
|||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: invalid instruction mnemonic 'invalid_instruction4'
|
||||
--> $DIR/srcloc.rs:99:13
|
||||
--> $DIR/srcloc.rs:98:13
|
||||
|
|
||||
LL | concat!(
|
||||
| ^
|
||||
|
@ -239,7 +239,7 @@ LL | invalid_instruction4
|
|||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: invalid instruction mnemonic 'invalid_instruction1'
|
||||
--> $DIR/srcloc.rs:110:13
|
||||
--> $DIR/srcloc.rs:109:13
|
||||
|
|
||||
LL | concat!(
|
||||
| ^
|
||||
|
@ -251,7 +251,7 @@ LL | invalid_instruction1
|
|||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: invalid instruction mnemonic 'invalid_instruction2'
|
||||
--> $DIR/srcloc.rs:110:13
|
||||
--> $DIR/srcloc.rs:109:13
|
||||
|
|
||||
LL | concat!(
|
||||
| ^
|
||||
|
@ -263,7 +263,7 @@ LL | invalid_instruction2
|
|||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: invalid instruction mnemonic 'invalid_instruction3'
|
||||
--> $DIR/srcloc.rs:114:13
|
||||
--> $DIR/srcloc.rs:113:13
|
||||
|
|
||||
LL | concat!(
|
||||
| ^
|
||||
|
@ -275,7 +275,7 @@ LL | invalid_instruction3
|
|||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: invalid instruction mnemonic 'invalid_instruction4'
|
||||
--> $DIR/srcloc.rs:114:13
|
||||
--> $DIR/srcloc.rs:113:13
|
||||
|
|
||||
LL | concat!(
|
||||
| ^
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// min-llvm-version: 10.0.1
|
||||
// min-llvm-version: 12.0.1
|
||||
// only-x86_64
|
||||
// only-linux
|
||||
// run-pass
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
// build-fail
|
||||
// compile-flags: --target thumbv8m.main-none-eabi --crate-type lib
|
||||
// needs-llvm-components: arm
|
||||
// min-llvm-version: 11.0
|
||||
#![feature(abi_c_cmse_nonsecure_call, no_core, lang_items, intrinsics)]
|
||||
#![no_core]
|
||||
#[lang="sized"]
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
// build-fail
|
||||
// compile-flags: --target thumbv8m.main-none-eabi --crate-type lib
|
||||
// needs-llvm-components: arm
|
||||
// min-llvm-version: 11.0
|
||||
#![feature(cmse_nonsecure_entry, no_core, lang_items)]
|
||||
#![no_core]
|
||||
#[lang="sized"]
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
// min-llvm-version: 12.0
|
||||
// compile-flags: -C opt-level=3
|
||||
// run-pass
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
// run-fail
|
||||
// compile-flags: -C opt-level=3
|
||||
// min-llvm-version: 11.0
|
||||
// error-pattern: index out of bounds: the len is 0 but the index is 16777216
|
||||
// ignore-wasm no panic or subprocess support
|
||||
// ignore-emscripten no panic or subprocess support
|
||||
|
|
Loading…
Add table
Reference in a new issue