[llvm-branch-commits] [llvm-branch] r107652 - in /llvm/branches/wendling/eh/lib/CodeGen/SelectionDAG: FastISel.cpp SelectionDAGBuilder.cpp

Bill Wendling isanbard at gmail.com
Tue Jul 6 04:32:15 PDT 2010


Author: void
Date: Tue Jul  6 06:32:15 2010
New Revision: 107652

URL: http://llvm.org/viewvc/llvm-project?rev=107652&view=rev
Log:
Handle llvm.eh.filter intrinsic in FastISel. Also add some FIXMEs.

Modified:
    llvm/branches/wendling/eh/lib/CodeGen/SelectionDAG/FastISel.cpp
    llvm/branches/wendling/eh/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp

Modified: llvm/branches/wendling/eh/lib/CodeGen/SelectionDAG/FastISel.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/wendling/eh/lib/CodeGen/SelectionDAG/FastISel.cpp?rev=107652&r1=107651&r2=107652&view=diff
==============================================================================
--- llvm/branches/wendling/eh/lib/CodeGen/SelectionDAG/FastISel.cpp (original)
+++ llvm/branches/wendling/eh/lib/CodeGen/SelectionDAG/FastISel.cpp Tue Jul  6 06:32:15 2010
@@ -453,11 +453,20 @@
     }     
     return true;
   }
+  case Intrinsic::eh_filter: {
+    // Add the filter IDs to the machine function.
+    const IntrinsicInst *II = cast<IntrinsicInst>(I);
+    for (unsigned i = 0, e = II->getNumArgOperands(); i != e; ++i)
+      MF.addFilterID(II->getArgOperand(i)->stripPointerCasts());
+
+    return true;
+  }
   case Intrinsic::eh_exception: {
     EVT VT = TLI.getValueType(I->getType());
     switch (TLI.getOperationAction(ISD::EXCEPTIONADDR, VT)) {
     default: break;
     case TargetLowering::Expand: {
+      // EH-FIXME: I don't think that this should be a hard/fast rule anymore.
       assert(MBB->isLandingPad() && "Call to eh.exception not in landing pad!");
       unsigned Reg = TLI.getExceptionAddressRegister();
       const TargetRegisterClass *RC = TLI.getRegClassFor(VT);

Modified: llvm/branches/wendling/eh/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/wendling/eh/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp?rev=107652&r1=107651&r2=107652&view=diff
==============================================================================
--- llvm/branches/wendling/eh/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp (original)
+++ llvm/branches/wendling/eh/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp Tue Jul  6 06:32:15 2010
@@ -4173,6 +4173,7 @@
   }
   case Intrinsic::eh_exception: {
     // Insert the EXCEPTIONADDR instruction.
+    // EH-FIXME: I don't think that this should be a hard/fast rule anymore.
     assert(FuncInfo.MBBMap[I.getParent()]->isLandingPad() &&
            "Call to eh.exception not in landing pad!");
     SDVTList VTs = DAG.getVTList(TLI.getPointerTy(), MVT::Other);





More information about the llvm-branch-commits mailing list