refactor: replace LLVMRustAtomicLoad/Store with LLVM built-in functions
This commit is contained in:
@@ -60,29 +60,6 @@ using namespace llvm::object;
|
||||
static_assert(dwarf::DW_OP_LLVM_fragment == 0x1000);
|
||||
static_assert(dwarf::DW_OP_stack_value == 0x9f);
|
||||
|
||||
// LLVMAtomicOrdering is already an enum - don't create another
|
||||
// one.
|
||||
static AtomicOrdering fromRust(LLVMAtomicOrdering Ordering) {
|
||||
switch (Ordering) {
|
||||
case LLVMAtomicOrderingNotAtomic:
|
||||
return AtomicOrdering::NotAtomic;
|
||||
case LLVMAtomicOrderingUnordered:
|
||||
return AtomicOrdering::Unordered;
|
||||
case LLVMAtomicOrderingMonotonic:
|
||||
return AtomicOrdering::Monotonic;
|
||||
case LLVMAtomicOrderingAcquire:
|
||||
return AtomicOrdering::Acquire;
|
||||
case LLVMAtomicOrderingRelease:
|
||||
return AtomicOrdering::Release;
|
||||
case LLVMAtomicOrderingAcquireRelease:
|
||||
return AtomicOrdering::AcquireRelease;
|
||||
case LLVMAtomicOrderingSequentiallyConsistent:
|
||||
return AtomicOrdering::SequentiallyConsistent;
|
||||
}
|
||||
|
||||
report_fatal_error("Invalid LLVMAtomicOrdering value!");
|
||||
}
|
||||
|
||||
static LLVM_THREAD_LOCAL char *LastError;
|
||||
|
||||
// Custom error handler for fatal LLVM errors.
|
||||
@@ -623,24 +600,6 @@ extern "C" void LLVMRustSetAllowReassoc(LLVMValueRef V) {
|
||||
}
|
||||
}
|
||||
|
||||
extern "C" LLVMValueRef
|
||||
LLVMRustBuildAtomicLoad(LLVMBuilderRef B, LLVMTypeRef Ty, LLVMValueRef Source,
|
||||
const char *Name, LLVMAtomicOrdering Order) {
|
||||
Value *Ptr = unwrap(Source);
|
||||
LoadInst *LI = unwrap(B)->CreateLoad(unwrap(Ty), Ptr, Name);
|
||||
LI->setAtomic(fromRust(Order));
|
||||
return wrap(LI);
|
||||
}
|
||||
|
||||
extern "C" LLVMValueRef LLVMRustBuildAtomicStore(LLVMBuilderRef B,
|
||||
LLVMValueRef V,
|
||||
LLVMValueRef Target,
|
||||
LLVMAtomicOrdering Order) {
|
||||
StoreInst *SI = unwrap(B)->CreateStore(unwrap(V), unwrap(Target));
|
||||
SI->setAtomic(fromRust(Order));
|
||||
return wrap(SI);
|
||||
}
|
||||
|
||||
extern "C" uint64_t LLVMRustGetArrayNumElements(LLVMTypeRef Ty) {
|
||||
return unwrap(Ty)->getArrayNumElements();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user