[llvm-commits] CVS: llvm/lib/Transforms/Utils/LowerInvoke.cpp

Jim Laskey jlaskey at apple.com
Thu Feb 22 08:21:35 PST 2007



Changes in directory llvm/lib/Transforms/Utils:

LowerInvoke.cpp updated: 1.56 -> 1.57
---
Log message:

Revert changes for a simplier solution.

---
Diffs of the changes:  (+36 -50)

 LowerInvoke.cpp |   86 +++++++++++++++++++++++---------------------------------
 1 files changed, 36 insertions(+), 50 deletions(-)


Index: llvm/lib/Transforms/Utils/LowerInvoke.cpp
diff -u llvm/lib/Transforms/Utils/LowerInvoke.cpp:1.56 llvm/lib/Transforms/Utils/LowerInvoke.cpp:1.57
--- llvm/lib/Transforms/Utils/LowerInvoke.cpp:1.56	Wed Feb 21 16:49:50 2007
+++ llvm/lib/Transforms/Utils/LowerInvoke.cpp	Thu Feb 22 10:21:18 2007
@@ -57,9 +57,6 @@
 
 static cl::opt<bool> ExpensiveEHSupport("enable-correct-eh-support",
  cl::desc("Make the -lowerinvoke pass insert expensive, but correct, EH code"));
- 
-static cl::opt<bool> ItaniumEHSupport("enable-real-eh-support",
- cl::desc("Make the -lowerinvoke pass insert itanium ABI EH code"));
 
 namespace {
   class VISIBILITY_HIDDEN LowerInvoke : public FunctionPass {
@@ -97,7 +94,6 @@
     void splitLiveRangesLiveAcrossInvokes(std::vector<InvokeInst*> &Invokes);
     void rewriteExpensiveInvoke(InvokeInst *II, unsigned InvokeNo,
                                 AllocaInst *InvokeNum, SwitchInst *CatchSwitch);
-    bool insertItaniumEHSupport(Function &F);
     bool insertExpensiveEHSupport(Function &F);
   };
 
@@ -115,50 +111,46 @@
 // doInitialization - Make sure that there is a prototype for abort in the
 // current module.
 bool LowerInvoke::doInitialization(Module &M) {
-  if (ItaniumEHSupport) {
-    // Let Invoke pass through for ItaniumEHSupport support.
-  } else {
-    const Type *VoidPtrTy = PointerType::get(Type::Int8Ty);
-    AbortMessage = 0;
-    if (ExpensiveEHSupport) {
-      // Insert a type for the linked list of jump buffers.
-      unsigned JBSize = TLI ? TLI->getJumpBufSize() : 0;
-      JBSize = JBSize ? JBSize : 200;
-      const Type *JmpBufTy = ArrayType::get(VoidPtrTy, JBSize);
-
-      { // The type is recursive, so use a type holder.
-        std::vector<const Type*> Elements;
-        Elements.push_back(JmpBufTy);
-        OpaqueType *OT = OpaqueType::get();
-        Elements.push_back(PointerType::get(OT));
-        PATypeHolder JBLType(StructType::get(Elements));
-        OT->refineAbstractTypeTo(JBLType.get());  // Complete the cycle.
-        JBLinkTy = JBLType.get();
-        M.addTypeName("llvm.sjljeh.jmpbufty", JBLinkTy);
-      }
+  const Type *VoidPtrTy = PointerType::get(Type::Int8Ty);
+  AbortMessage = 0;
+  if (ExpensiveEHSupport) {
+    // Insert a type for the linked list of jump buffers.
+    unsigned JBSize = TLI ? TLI->getJumpBufSize() : 0;
+    JBSize = JBSize ? JBSize : 200;
+    const Type *JmpBufTy = ArrayType::get(VoidPtrTy, JBSize);
+
+    { // The type is recursive, so use a type holder.
+      std::vector<const Type*> Elements;
+      Elements.push_back(JmpBufTy);
+      OpaqueType *OT = OpaqueType::get();
+      Elements.push_back(PointerType::get(OT));
+      PATypeHolder JBLType(StructType::get(Elements));
+      OT->refineAbstractTypeTo(JBLType.get());  // Complete the cycle.
+      JBLinkTy = JBLType.get();
+      M.addTypeName("llvm.sjljeh.jmpbufty", JBLinkTy);
+    }
 
-      const Type *PtrJBList = PointerType::get(JBLinkTy);
+    const Type *PtrJBList = PointerType::get(JBLinkTy);
 
-      // Now that we've done that, insert the jmpbuf list head global, unless it
-      // already exists.
-      if (!(JBListHead = M.getGlobalVariable("llvm.sjljeh.jblist", PtrJBList))){
-        JBListHead = new GlobalVariable(PtrJBList, false,
-                                        GlobalValue::LinkOnceLinkage,
-                                        Constant::getNullValue(PtrJBList),
-                                        "llvm.sjljeh.jblist", &M);
-      }
-      SetJmpFn = M.getOrInsertFunction("llvm.setjmp", Type::Int32Ty,
-                                       PointerType::get(JmpBufTy), (Type *)0);
-      LongJmpFn = M.getOrInsertFunction("llvm.longjmp", Type::VoidTy,
-                                        PointerType::get(JmpBufTy),
-                                        Type::Int32Ty, (Type *)0);
+    // Now that we've done that, insert the jmpbuf list head global, unless it
+    // already exists.
+    if (!(JBListHead = M.getGlobalVariable("llvm.sjljeh.jblist", PtrJBList))) {
+      JBListHead = new GlobalVariable(PtrJBList, false,
+                                      GlobalValue::LinkOnceLinkage,
+                                      Constant::getNullValue(PtrJBList),
+                                      "llvm.sjljeh.jblist", &M);
     }
-
-    // We need the 'write' and 'abort' functions for both models.
-    AbortFn = M.getOrInsertFunction("abort", Type::VoidTy, (Type *)0);
-    WriteFn = M.getOrInsertFunction("write", Type::VoidTy, Type::Int32Ty,
-                                    VoidPtrTy, Type::Int32Ty, (Type *)0);
+    SetJmpFn = M.getOrInsertFunction("llvm.setjmp", Type::Int32Ty,
+                                     PointerType::get(JmpBufTy), (Type *)0);
+    LongJmpFn = M.getOrInsertFunction("llvm.longjmp", Type::VoidTy,
+                                      PointerType::get(JmpBufTy),
+                                      Type::Int32Ty, (Type *)0);
   }
+
+  // We need the 'write' and 'abort' functions for both models.
+  AbortFn = M.getOrInsertFunction("abort", Type::VoidTy, (Type *)0);
+  WriteFn = M.getOrInsertFunction("write", Type::VoidTy, Type::Int32Ty,
+                                  VoidPtrTy, Type::Int32Ty, (Type *)0);
   return true;
 }
 
@@ -396,10 +388,6 @@
     }
 }
 
-bool LowerInvoke::insertItaniumEHSupport(Function &F) {
-  return true;
-}
-
 bool LowerInvoke::insertExpensiveEHSupport(Function &F) {
   std::vector<ReturnInst*> Returns;
   std::vector<UnwindInst*> Unwinds;
@@ -581,8 +569,6 @@
 }
 
 bool LowerInvoke::runOnFunction(Function &F) {
-  if (ItaniumEHSupport)
-    return insertItaniumEHSupport(F);
   if (ExpensiveEHSupport)
     return insertExpensiveEHSupport(F);
   else






More information about the llvm-commits mailing list