diff options
Diffstat (limited to 'llvm/lib/CodeGen/WinEHPrepare.cpp')
-rw-r--r-- | llvm/lib/CodeGen/WinEHPrepare.cpp | 39 |
1 files changed, 0 insertions, 39 deletions
diff --git a/llvm/lib/CodeGen/WinEHPrepare.cpp b/llvm/lib/CodeGen/WinEHPrepare.cpp index e4cee0ea7f6..041fb7b912b 100644 --- a/llvm/lib/CodeGen/WinEHPrepare.cpp +++ b/llvm/lib/CodeGen/WinEHPrepare.cpp @@ -20,7 +20,6 @@ #include "llvm/ADT/DenseMap.h" #include "llvm/ADT/MapVector.h" #include "llvm/ADT/STLExtras.h" -#include "llvm/ADT/StringSwitch.h" #include "llvm/Analysis/CFG.h" #include "llvm/Analysis/EHPersonalities.h" #include "llvm/CodeGen/MachineBasicBlock.h" @@ -68,7 +67,6 @@ public: } private: - void promoteEHPersonality(Function &F); void insertPHIStores(PHINode *OriginalPHI, AllocaInst *SpillSlot); void insertPHIStore(BasicBlock *PredBlock, Value *PredVal, AllocaInst *SpillSlot, @@ -466,39 +464,6 @@ static int addClrEHHandler(WinEHFuncInfo &FuncInfo, int HandlerParentState, return FuncInfo.ClrEHUnwindMap.size() - 1; } -static Value *getStackGuardEHPersonality(Value *Pers) { - Function *F = - Pers ? dyn_cast<Function>(Pers->stripPointerCasts()) : nullptr; - if (!F) - return nullptr; - - // TODO(etienneb): Upgrade exception handlers when they are working. - StringRef NewName = llvm::StringSwitch<StringRef>(F->getName()) - .Case("_except_handler3", "_except_handler4") - .Default(""); - if (NewName.empty()) - return nullptr; - - Module *M = F->getParent(); - return M->getOrInsertFunction("_except_handler4", F->getFunctionType(), - F->getAttributes()); -} - -void WinEHPrepare::promoteEHPersonality(Function &F) { - // Promote the exception handler when stack protection is activated. - if (!F.hasFnAttribute(Attribute::StackProtect) && - !F.hasFnAttribute(Attribute::StackProtectReq) && - !F.hasFnAttribute(Attribute::StackProtectStrong)) - return; - - if (Value *PersonalityFn = F.getPersonalityFn()) { - if (Value *Personality = getStackGuardEHPersonality(PersonalityFn)) { - Function* PromotedFn = cast<Function>(Personality); - F.setPersonalityFn(PromotedFn); - } - } -} - void llvm::calculateClrEHStateNumbers(const Function *Fn, WinEHFuncInfo &FuncInfo) { // Return if it's already been done. @@ -1063,10 +1028,6 @@ void WinEHPrepare::verifyPreparedFunclets(Function &F) { } bool WinEHPrepare::prepareExplicitEH(Function &F) { - // When stack-protector is present, some exception handlers need to be - // promoted to a compatible handlers. - promoteEHPersonality(F); - // Remove unreachable blocks. It is not valuable to assign them a color and // their existence can trick us into thinking values are alive when they are // not. |