revert http://reviews.llvm.org/D21101
authorEtienne Bergeron <etienneb@google.com>
Thu, 30 Jun 2016 17:52:24 +0000 (17:52 +0000)
committerEtienne Bergeron <etienneb@google.com>
Thu, 30 Jun 2016 17:52:24 +0000 (17:52 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274251 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/WinEHPrepare.cpp
test/CodeGen/WinEH/wineh-promote-eh.ll [deleted file]

index e4cee0ea7f6426f28a9ef0a7bc6e2cb59d1dee90..041fb7b912bf4cceeb164a489bb0875ed9933f8e 100644 (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.
diff --git a/test/CodeGen/WinEH/wineh-promote-eh.ll b/test/CodeGen/WinEH/wineh-promote-eh.ll
deleted file mode 100644 (file)
index 7bda4d7..0000000
+++ /dev/null
@@ -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
-}
-