1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 02:52:53 +02:00
llvm-svn: 274251
This commit is contained in:
Etienne Bergeron 2016-06-30 17:52:24 +00:00
parent ea10bd5e79
commit 259b632b0f
2 changed files with 0 additions and 55 deletions

View File

@ -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.

View File

@ -1,16 +0,0 @@
; RUN: opt -mtriple=i686-windows-msvc -S -winehprepare %s | FileCheck %s
declare i32 @_except_handler3(...)
define void @test1a() personality i32 (...)* @_except_handler3 {
; CHECK: define void @test1a() personality i32 (...)* @_except_handler3
entry:
ret void
}
define void @test1b() ssp personality i32 (...)* @_except_handler3 {
; CHECK: define void @test1b() [[attr:.*]] personality i32 (...)* @_except_handler4
entry:
ret void
}