Remove LLVMRustMarkAllFunctionsNounwind
This was originally introduced in #10916 as a way to remove all landing pads when performing LTO. However this is no longer necessary today since rustc properly marks all functions and call-sites as nounwind where appropriate. In fact this is incorrect in the presence of `extern "C-unwind"` which must create a landing pad when compiled with `-C panic=abort` so that foreign exceptions are caught and properly turned into aborts.
This commit is contained in:
parent
22e491ac7e
commit
606d9c0c0e
4 changed files with 1 additions and 40 deletions
|
@ -1168,25 +1168,6 @@ extern "C" void LLVMRustRunRestrictionPass(LLVMModuleRef M, char **Symbols,
|
|||
passes.run(*unwrap(M));
|
||||
}
|
||||
|
||||
extern "C" void LLVMRustMarkAllFunctionsNounwind(LLVMModuleRef M) {
|
||||
for (Module::iterator GV = unwrap(M)->begin(), E = unwrap(M)->end(); GV != E;
|
||||
++GV) {
|
||||
GV->setDoesNotThrow();
|
||||
Function *F = dyn_cast<Function>(GV);
|
||||
if (F == nullptr)
|
||||
continue;
|
||||
|
||||
for (Function::iterator B = F->begin(), BE = F->end(); B != BE; ++B) {
|
||||
for (BasicBlock::iterator I = B->begin(), IE = B->end(); I != IE; ++I) {
|
||||
if (isa<InvokeInst>(I)) {
|
||||
InvokeInst *CI = cast<InvokeInst>(I);
|
||||
CI->setDoesNotThrow();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extern "C" void
|
||||
LLVMRustSetDataLayoutFromTargetMachine(LLVMModuleRef Module,
|
||||
LLVMTargetMachineRef TMR) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue