Rollup merge of #66973 - cuviper:min-llvm7, r=alexcrichton
Update the minimum external LLVM to 7 LLVM 7 is over a year old, which should be plenty for compatibility. The last LLVM 6 holdout was llvm-emscripten, which went away in #65501. I've also included a fix for LLVM 8 lacking `MemorySanitizerOptions`, which was broken by #66522.
This commit is contained in:
commit
8dcb5326dd
18 changed files with 16 additions and 95 deletions
|
@ -294,11 +294,11 @@ fn check_llvm_version(builder: &Builder<'_>, llvm_config: &Path) {
|
||||||
let mut parts = version.split('.').take(2)
|
let mut parts = version.split('.').take(2)
|
||||||
.filter_map(|s| s.parse::<u32>().ok());
|
.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 >= 6 {
|
if major >= 7 {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
panic!("\n\nbad LLVM version: {}, need >=6.0\n\n", version)
|
panic!("\n\nbad LLVM version: {}, need >=7.0\n\n", version)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn configure_cmake(builder: &Builder<'_>,
|
fn configure_cmake(builder: &Builder<'_>,
|
||||||
|
|
|
@ -18,7 +18,7 @@ jobs:
|
||||||
- template: steps/run.yml
|
- template: steps/run.yml
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
x86_64-gnu-llvm-6.0:
|
x86_64-gnu-llvm-7:
|
||||||
RUST_BACKTRACE: 1
|
RUST_BACKTRACE: 1
|
||||||
dist-x86_64-linux: {}
|
dist-x86_64-linux: {}
|
||||||
dist-x86_64-linux-alt:
|
dist-x86_64-linux-alt:
|
||||||
|
|
|
@ -18,7 +18,7 @@ jobs:
|
||||||
- template: steps/run.yml
|
- template: steps/run.yml
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
x86_64-gnu-llvm-6.0: {}
|
x86_64-gnu-llvm-7: {}
|
||||||
mingw-check: {}
|
mingw-check: {}
|
||||||
x86_64-gnu-tools:
|
x86_64-gnu-tools:
|
||||||
CI_ONLY_WHEN_SUBMODULES_CHANGED: 1
|
CI_ONLY_WHEN_SUBMODULES_CHANGED: 1
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
FROM ubuntu:16.04
|
FROM ubuntu:18.04
|
||||||
|
|
||||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||||
g++ \
|
g++ \
|
||||||
|
@ -11,7 +11,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||||
cmake \
|
cmake \
|
||||||
sudo \
|
sudo \
|
||||||
gdb \
|
gdb \
|
||||||
llvm-6.0-tools \
|
llvm-7-tools \
|
||||||
libedit-dev \
|
libedit-dev \
|
||||||
libssl-dev \
|
libssl-dev \
|
||||||
pkg-config \
|
pkg-config \
|
||||||
|
@ -24,7 +24,7 @@ RUN sh /scripts/sccache.sh
|
||||||
# using llvm-link-shared due to libffi issues -- see #34486
|
# using llvm-link-shared due to libffi issues -- see #34486
|
||||||
ENV RUST_CONFIGURE_ARGS \
|
ENV RUST_CONFIGURE_ARGS \
|
||||||
--build=x86_64-unknown-linux-gnu \
|
--build=x86_64-unknown-linux-gnu \
|
||||||
--llvm-root=/usr/lib/llvm-6.0 \
|
--llvm-root=/usr/lib/llvm-7 \
|
||||||
--enable-llvm-link-shared
|
--enable-llvm-link-shared
|
||||||
ENV SCRIPT python2.7 ../x.py test src/tools/tidy && python2.7 ../x.py test
|
ENV SCRIPT python2.7 ../x.py test src/tools/tidy && python2.7 ../x.py test
|
||||||
|
|
|
@ -442,32 +442,11 @@ impl IntrinsicCallMethods<'tcx> for Builder<'a, 'll, 'tcx> {
|
||||||
let is_left = name == "rotate_left";
|
let is_left = name == "rotate_left";
|
||||||
let val = args[0].immediate();
|
let val = args[0].immediate();
|
||||||
let raw_shift = args[1].immediate();
|
let raw_shift = args[1].immediate();
|
||||||
if llvm_util::get_major_version() >= 7 {
|
|
||||||
// rotate = funnel shift with first two args the same
|
// rotate = funnel shift with first two args the same
|
||||||
let llvm_name = &format!("llvm.fsh{}.i{}",
|
let llvm_name = &format!("llvm.fsh{}.i{}",
|
||||||
if is_left { 'l' } else { 'r' }, width);
|
if is_left { 'l' } else { 'r' }, width);
|
||||||
let llfn = self.get_intrinsic(llvm_name);
|
let llfn = self.get_intrinsic(llvm_name);
|
||||||
self.call(llfn, &[val, val, raw_shift], None)
|
self.call(llfn, &[val, val, raw_shift], None)
|
||||||
} else {
|
|
||||||
// rotate_left: (X << (S % BW)) | (X >> ((BW - S) % BW))
|
|
||||||
// rotate_right: (X << ((BW - S) % BW)) | (X >> (S % BW))
|
|
||||||
let width = self.const_uint(
|
|
||||||
self.type_ix(width),
|
|
||||||
width,
|
|
||||||
);
|
|
||||||
let shift = self.urem(raw_shift, width);
|
|
||||||
let width_minus_raw_shift = self.sub(width, raw_shift);
|
|
||||||
let inv_shift = self.urem(width_minus_raw_shift, width);
|
|
||||||
let shift1 = self.shl(
|
|
||||||
val,
|
|
||||||
if is_left { shift } else { inv_shift },
|
|
||||||
);
|
|
||||||
let shift2 = self.lshr(
|
|
||||||
val,
|
|
||||||
if !is_left { shift } else { inv_shift },
|
|
||||||
);
|
|
||||||
self.or(shift1, shift2)
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"saturating_add" | "saturating_sub" => {
|
"saturating_add" | "saturating_sub" => {
|
||||||
let is_add = name == "saturating_add";
|
let is_add = name == "saturating_add";
|
||||||
|
|
|
@ -101,11 +101,13 @@ extern "C" LLVMPassRef LLVMRustCreateModuleAddressSanitizerPass(bool Recover) {
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" LLVMPassRef LLVMRustCreateMemorySanitizerPass(int TrackOrigins, bool Recover) {
|
extern "C" LLVMPassRef LLVMRustCreateMemorySanitizerPass(int TrackOrigins, bool Recover) {
|
||||||
#if LLVM_VERSION_GE(8, 0)
|
#if LLVM_VERSION_GE(9, 0)
|
||||||
const bool CompileKernel = false;
|
const bool CompileKernel = false;
|
||||||
|
|
||||||
return wrap(createMemorySanitizerLegacyPassPass(
|
return wrap(createMemorySanitizerLegacyPassPass(
|
||||||
MemorySanitizerOptions{TrackOrigins, Recover, CompileKernel}));
|
MemorySanitizerOptions{TrackOrigins, Recover, CompileKernel}));
|
||||||
|
#elif LLVM_VERSION_GE(8, 0)
|
||||||
|
return wrap(createMemorySanitizerLegacyPassPass(TrackOrigins, Recover));
|
||||||
#else
|
#else
|
||||||
return wrap(createMemorySanitizerPass(TrackOrigins, Recover));
|
return wrap(createMemorySanitizerPass(TrackOrigins, Recover));
|
||||||
#endif
|
#endif
|
||||||
|
@ -451,9 +453,7 @@ extern "C" void LLVMRustConfigurePassManagerBuilder(
|
||||||
LLVMPassManagerBuilderRef PMBR, LLVMRustCodeGenOptLevel OptLevel,
|
LLVMPassManagerBuilderRef PMBR, LLVMRustCodeGenOptLevel OptLevel,
|
||||||
bool MergeFunctions, bool SLPVectorize, bool LoopVectorize, bool PrepareForThinLTO,
|
bool MergeFunctions, bool SLPVectorize, bool LoopVectorize, bool PrepareForThinLTO,
|
||||||
const char* PGOGenPath, const char* PGOUsePath) {
|
const char* PGOGenPath, const char* PGOUsePath) {
|
||||||
#if LLVM_VERSION_GE(7, 0)
|
|
||||||
unwrap(PMBR)->MergeFunctions = MergeFunctions;
|
unwrap(PMBR)->MergeFunctions = MergeFunctions;
|
||||||
#endif
|
|
||||||
unwrap(PMBR)->SLPVectorize = SLPVectorize;
|
unwrap(PMBR)->SLPVectorize = SLPVectorize;
|
||||||
unwrap(PMBR)->OptLevel = fromRust(OptLevel);
|
unwrap(PMBR)->OptLevel = fromRust(OptLevel);
|
||||||
unwrap(PMBR)->LoopVectorize = LoopVectorize;
|
unwrap(PMBR)->LoopVectorize = LoopVectorize;
|
||||||
|
@ -560,12 +560,8 @@ LLVMRustWriteOutputFile(LLVMTargetMachineRef Target, LLVMPassManagerRef PMR,
|
||||||
return LLVMRustResult::Failure;
|
return LLVMRustResult::Failure;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if LLVM_VERSION_GE(7, 0)
|
|
||||||
buffer_ostream BOS(OS);
|
buffer_ostream BOS(OS);
|
||||||
unwrap(Target)->addPassesToEmitFile(*PM, BOS, nullptr, FileType, false);
|
unwrap(Target)->addPassesToEmitFile(*PM, BOS, nullptr, FileType, false);
|
||||||
#else
|
|
||||||
unwrap(Target)->addPassesToEmitFile(*PM, OS, FileType, false);
|
|
||||||
#endif
|
|
||||||
PM->run(*unwrap(M));
|
PM->run(*unwrap(M));
|
||||||
|
|
||||||
// Apparently `addPassesToEmitFile` adds a pointer to our on-the-stack output
|
// Apparently `addPassesToEmitFile` adds a pointer to our on-the-stack output
|
||||||
|
@ -849,9 +845,7 @@ struct LLVMRustThinLTOData {
|
||||||
StringMap<FunctionImporter::ExportSetTy> ExportLists;
|
StringMap<FunctionImporter::ExportSetTy> ExportLists;
|
||||||
StringMap<GVSummaryMapTy> ModuleToDefinedGVSummaries;
|
StringMap<GVSummaryMapTy> ModuleToDefinedGVSummaries;
|
||||||
|
|
||||||
#if LLVM_VERSION_GE(7, 0)
|
|
||||||
LLVMRustThinLTOData() : Index(/* HaveGVs = */ false) {}
|
LLVMRustThinLTOData() : Index(/* HaveGVs = */ false) {}
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Just an argument to the `LLVMRustCreateThinLTOData` function below.
|
// Just an argument to the `LLVMRustCreateThinLTOData` function below.
|
||||||
|
@ -922,7 +916,6 @@ LLVMRustCreateThinLTOData(LLVMRustThinLTOModule *modules,
|
||||||
// combined index
|
// combined index
|
||||||
//
|
//
|
||||||
// This is copied from `lib/LTO/ThinLTOCodeGenerator.cpp`
|
// This is copied from `lib/LTO/ThinLTOCodeGenerator.cpp`
|
||||||
#if LLVM_VERSION_GE(7, 0)
|
|
||||||
auto deadIsPrevailing = [&](GlobalValue::GUID G) {
|
auto deadIsPrevailing = [&](GlobalValue::GUID G) {
|
||||||
return PrevailingType::Unknown;
|
return PrevailingType::Unknown;
|
||||||
};
|
};
|
||||||
|
@ -934,9 +927,6 @@ LLVMRustCreateThinLTOData(LLVMRustThinLTOModule *modules,
|
||||||
deadIsPrevailing, /* ImportEnabled = */ false);
|
deadIsPrevailing, /* ImportEnabled = */ false);
|
||||||
#else
|
#else
|
||||||
computeDeadSymbols(Ret->Index, Ret->GUIDPreservedSymbols, deadIsPrevailing);
|
computeDeadSymbols(Ret->Index, Ret->GUIDPreservedSymbols, deadIsPrevailing);
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
computeDeadSymbols(Ret->Index, Ret->GUIDPreservedSymbols);
|
|
||||||
#endif
|
#endif
|
||||||
ComputeCrossModuleImport(
|
ComputeCrossModuleImport(
|
||||||
Ret->Index,
|
Ret->Index,
|
||||||
|
|
|
@ -88,11 +88,7 @@ extern "C" char *LLVMRustGetLastError(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" unsigned int LLVMRustGetInstructionCount(LLVMModuleRef M) {
|
extern "C" unsigned int LLVMRustGetInstructionCount(LLVMModuleRef M) {
|
||||||
#if LLVM_VERSION_GE(7, 0)
|
|
||||||
return unwrap(M)->getInstructionCount();
|
return unwrap(M)->getInstructionCount();
|
||||||
#else
|
|
||||||
report_fatal_error("Module::getInstructionCount not available before LLVM 7");
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" void LLVMRustSetLastError(const char *Err) {
|
extern "C" void LLVMRustSetLastError(const char *Err) {
|
||||||
|
@ -761,14 +757,10 @@ extern "C" LLVMMetadataRef LLVMRustDIBuilderCreateVariantPart(
|
||||||
LLVMMetadataRef File, unsigned LineNumber, uint64_t SizeInBits,
|
LLVMMetadataRef File, unsigned LineNumber, uint64_t SizeInBits,
|
||||||
uint32_t AlignInBits, LLVMRustDIFlags Flags, LLVMMetadataRef Discriminator,
|
uint32_t AlignInBits, LLVMRustDIFlags Flags, LLVMMetadataRef Discriminator,
|
||||||
LLVMMetadataRef Elements, const char *UniqueId) {
|
LLVMMetadataRef Elements, const char *UniqueId) {
|
||||||
#if LLVM_VERSION_GE(7, 0)
|
|
||||||
return wrap(Builder->createVariantPart(
|
return wrap(Builder->createVariantPart(
|
||||||
unwrapDI<DIDescriptor>(Scope), Name, unwrapDI<DIFile>(File), LineNumber,
|
unwrapDI<DIDescriptor>(Scope), Name, unwrapDI<DIFile>(File), LineNumber,
|
||||||
SizeInBits, AlignInBits, fromRust(Flags), unwrapDI<DIDerivedType>(Discriminator),
|
SizeInBits, AlignInBits, fromRust(Flags), unwrapDI<DIDerivedType>(Discriminator),
|
||||||
DINodeArray(unwrapDI<MDTuple>(Elements)), UniqueId));
|
DINodeArray(unwrapDI<MDTuple>(Elements)), UniqueId));
|
||||||
#else
|
|
||||||
abort();
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" LLVMMetadataRef LLVMRustDIBuilderCreateMemberType(
|
extern "C" LLVMMetadataRef LLVMRustDIBuilderCreateMemberType(
|
||||||
|
@ -787,7 +779,6 @@ extern "C" LLVMMetadataRef LLVMRustDIBuilderCreateVariantMemberType(
|
||||||
const char *Name, LLVMMetadataRef File, unsigned LineNo, uint64_t SizeInBits,
|
const char *Name, LLVMMetadataRef File, unsigned LineNo, uint64_t SizeInBits,
|
||||||
uint32_t AlignInBits, uint64_t OffsetInBits, LLVMValueRef Discriminant,
|
uint32_t AlignInBits, uint64_t OffsetInBits, LLVMValueRef Discriminant,
|
||||||
LLVMRustDIFlags Flags, LLVMMetadataRef Ty) {
|
LLVMRustDIFlags Flags, LLVMMetadataRef Ty) {
|
||||||
#if LLVM_VERSION_GE(7, 0)
|
|
||||||
llvm::ConstantInt* D = nullptr;
|
llvm::ConstantInt* D = nullptr;
|
||||||
if (Discriminant) {
|
if (Discriminant) {
|
||||||
D = unwrap<llvm::ConstantInt>(Discriminant);
|
D = unwrap<llvm::ConstantInt>(Discriminant);
|
||||||
|
@ -796,12 +787,6 @@ extern "C" LLVMMetadataRef LLVMRustDIBuilderCreateVariantMemberType(
|
||||||
unwrapDI<DIFile>(File), LineNo,
|
unwrapDI<DIFile>(File), LineNo,
|
||||||
SizeInBits, AlignInBits, OffsetInBits, D,
|
SizeInBits, AlignInBits, OffsetInBits, D,
|
||||||
fromRust(Flags), unwrapDI<DIType>(Ty)));
|
fromRust(Flags), unwrapDI<DIType>(Ty)));
|
||||||
#else
|
|
||||||
return wrap(Builder->createMemberType(unwrapDI<DIDescriptor>(Scope), Name,
|
|
||||||
unwrapDI<DIFile>(File), LineNo,
|
|
||||||
SizeInBits, AlignInBits, OffsetInBits,
|
|
||||||
fromRust(Flags), unwrapDI<DIType>(Ty)));
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" LLVMMetadataRef LLVMRustDIBuilderCreateLexicalBlock(
|
extern "C" LLVMMetadataRef LLVMRustDIBuilderCreateLexicalBlock(
|
||||||
|
@ -911,18 +896,10 @@ extern "C" LLVMMetadataRef LLVMRustDIBuilderCreateEnumerationType(
|
||||||
LLVMMetadataRef File, unsigned LineNumber, uint64_t SizeInBits,
|
LLVMMetadataRef File, unsigned LineNumber, uint64_t SizeInBits,
|
||||||
uint32_t AlignInBits, LLVMMetadataRef Elements,
|
uint32_t AlignInBits, LLVMMetadataRef Elements,
|
||||||
LLVMMetadataRef ClassTy, bool IsScoped) {
|
LLVMMetadataRef ClassTy, bool IsScoped) {
|
||||||
#if LLVM_VERSION_GE(7, 0)
|
|
||||||
return wrap(Builder->createEnumerationType(
|
return wrap(Builder->createEnumerationType(
|
||||||
unwrapDI<DIDescriptor>(Scope), Name, unwrapDI<DIFile>(File), LineNumber,
|
unwrapDI<DIDescriptor>(Scope), Name, unwrapDI<DIFile>(File), LineNumber,
|
||||||
SizeInBits, AlignInBits, DINodeArray(unwrapDI<MDTuple>(Elements)),
|
SizeInBits, AlignInBits, DINodeArray(unwrapDI<MDTuple>(Elements)),
|
||||||
unwrapDI<DIType>(ClassTy), "", IsScoped));
|
unwrapDI<DIType>(ClassTy), "", IsScoped));
|
||||||
#else
|
|
||||||
// Ignore IsScoped on older LLVM.
|
|
||||||
return wrap(Builder->createEnumerationType(
|
|
||||||
unwrapDI<DIDescriptor>(Scope), Name, unwrapDI<DIFile>(File), LineNumber,
|
|
||||||
SizeInBits, AlignInBits, DINodeArray(unwrapDI<MDTuple>(Elements)),
|
|
||||||
unwrapDI<DIType>(ClassTy), ""));
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" LLVMMetadataRef LLVMRustDIBuilderCreateUnionType(
|
extern "C" LLVMMetadataRef LLVMRustDIBuilderCreateUnionType(
|
||||||
|
@ -1275,34 +1252,20 @@ extern "C" LLVMValueRef LLVMRustBuildMemCpy(LLVMBuilderRef B,
|
||||||
LLVMValueRef Dst, unsigned DstAlign,
|
LLVMValueRef Dst, unsigned DstAlign,
|
||||||
LLVMValueRef Src, unsigned SrcAlign,
|
LLVMValueRef Src, unsigned SrcAlign,
|
||||||
LLVMValueRef Size, bool IsVolatile) {
|
LLVMValueRef Size, bool IsVolatile) {
|
||||||
#if LLVM_VERSION_GE(7, 0)
|
|
||||||
return wrap(unwrap(B)->CreateMemCpy(
|
return wrap(unwrap(B)->CreateMemCpy(
|
||||||
unwrap(Dst), DstAlign,
|
unwrap(Dst), DstAlign,
|
||||||
unwrap(Src), SrcAlign,
|
unwrap(Src), SrcAlign,
|
||||||
unwrap(Size), IsVolatile));
|
unwrap(Size), IsVolatile));
|
||||||
#else
|
|
||||||
unsigned Align = std::min(DstAlign, SrcAlign);
|
|
||||||
return wrap(unwrap(B)->CreateMemCpy(
|
|
||||||
unwrap(Dst), unwrap(Src),
|
|
||||||
unwrap(Size), Align, IsVolatile));
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" LLVMValueRef LLVMRustBuildMemMove(LLVMBuilderRef B,
|
extern "C" LLVMValueRef LLVMRustBuildMemMove(LLVMBuilderRef B,
|
||||||
LLVMValueRef Dst, unsigned DstAlign,
|
LLVMValueRef Dst, unsigned DstAlign,
|
||||||
LLVMValueRef Src, unsigned SrcAlign,
|
LLVMValueRef Src, unsigned SrcAlign,
|
||||||
LLVMValueRef Size, bool IsVolatile) {
|
LLVMValueRef Size, bool IsVolatile) {
|
||||||
#if LLVM_VERSION_GE(7, 0)
|
|
||||||
return wrap(unwrap(B)->CreateMemMove(
|
return wrap(unwrap(B)->CreateMemMove(
|
||||||
unwrap(Dst), DstAlign,
|
unwrap(Dst), DstAlign,
|
||||||
unwrap(Src), SrcAlign,
|
unwrap(Src), SrcAlign,
|
||||||
unwrap(Size), IsVolatile));
|
unwrap(Size), IsVolatile));
|
||||||
#else
|
|
||||||
unsigned Align = std::min(DstAlign, SrcAlign);
|
|
||||||
return wrap(unwrap(B)->CreateMemMove(
|
|
||||||
unwrap(Dst), unwrap(Src),
|
|
||||||
unwrap(Size), Align, IsVolatile));
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" LLVMValueRef
|
extern "C" LLVMValueRef
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
// compile-flags: -C no-prepopulate-passes
|
// compile-flags: -C no-prepopulate-passes
|
||||||
// ignore-tidy-linelength
|
// ignore-tidy-linelength
|
||||||
// min-llvm-version 7.0
|
|
||||||
|
|
||||||
#![crate_type = "lib"]
|
#![crate_type = "lib"]
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
// compile-flags: -C no-prepopulate-passes
|
// compile-flags: -C no-prepopulate-passes
|
||||||
// ignore-tidy-linelength
|
// ignore-tidy-linelength
|
||||||
// min-llvm-version 7.0
|
|
||||||
|
|
||||||
#![crate_type = "lib"]
|
#![crate_type = "lib"]
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
// compile-flags: -C no-prepopulate-passes
|
// compile-flags: -C no-prepopulate-passes
|
||||||
// ignore-tidy-linelength
|
// ignore-tidy-linelength
|
||||||
// min-llvm-version 7.0
|
|
||||||
|
|
||||||
#![crate_type = "lib"]
|
#![crate_type = "lib"]
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
// ignore-tidy-linelength
|
// ignore-tidy-linelength
|
||||||
// compile-flags: -C no-prepopulate-passes
|
// compile-flags: -C no-prepopulate-passes
|
||||||
// min-llvm-version 7.0
|
|
||||||
|
|
||||||
#![crate_type = "lib"]
|
#![crate_type = "lib"]
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
// compile-flags: -O
|
// compile-flags: -O
|
||||||
// ignore-tidy-linelength
|
// ignore-tidy-linelength
|
||||||
// min-llvm-version 7.0
|
|
||||||
|
|
||||||
#![crate_type = "lib"]
|
#![crate_type = "lib"]
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
// min-llvm-version 7.0
|
|
||||||
|
|
||||||
// compile-flags: -C no-prepopulate-passes
|
// compile-flags: -C no-prepopulate-passes
|
||||||
|
|
||||||
#![crate_type = "lib"]
|
#![crate_type = "lib"]
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
// compile-flags: -C no-prepopulate-passes
|
// compile-flags: -C no-prepopulate-passes
|
||||||
// ignore-tidy-linelength
|
// ignore-tidy-linelength
|
||||||
// min-llvm-version 7.0
|
|
||||||
|
|
||||||
#![crate_type = "lib"]
|
#![crate_type = "lib"]
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
|
|
||||||
# ignore-windows
|
# ignore-windows
|
||||||
# ignore-macos
|
# ignore-macos
|
||||||
# min-llvm-version 6.0
|
|
||||||
#
|
#
|
||||||
# This feature only works when the output object format is ELF so we ignore
|
# This feature only works when the output object format is ELF so we ignore
|
||||||
# macOS and Windows
|
# macOS and Windows
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
// run-pass
|
// run-pass
|
||||||
// ignore-emscripten
|
// ignore-emscripten
|
||||||
// min-llvm-version 7.0
|
|
||||||
|
|
||||||
// Test that the simd_f{min,max} intrinsics produce the correct results.
|
// Test that the simd_f{min,max} intrinsics produce the correct results.
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,6 @@
|
||||||
// gate-test-movbe_target_feature
|
// gate-test-movbe_target_feature
|
||||||
// gate-test-rtm_target_feature
|
// gate-test-rtm_target_feature
|
||||||
// gate-test-f16c_target_feature
|
// gate-test-f16c_target_feature
|
||||||
// min-llvm-version 6.0
|
|
||||||
|
|
||||||
#[target_feature(enable = "avx512bw")]
|
#[target_feature(enable = "avx512bw")]
|
||||||
//~^ ERROR: currently unstable
|
//~^ ERROR: currently unstable
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
error[E0658]: the target feature `avx512bw` is currently unstable
|
error[E0658]: the target feature `avx512bw` is currently unstable
|
||||||
--> $DIR/gate.rs:30:18
|
--> $DIR/gate.rs:29:18
|
||||||
|
|
|
|
||||||
LL | #[target_feature(enable = "avx512bw")]
|
LL | #[target_feature(enable = "avx512bw")]
|
||||||
| ^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue