[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