Comments on JumpTableness
authorAndrew Lenharth <andrewl@lenharth.org>
Tue, 26 Sep 2006 20:02:30 +0000 (20:02 +0000)
committerAndrew Lenharth <andrewl@lenharth.org>
Tue, 26 Sep 2006 20:02:30 +0000 (20:02 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30615 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/SelectionDAG.cpp
lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp

index c310ac7faea80d95e8cf310352ecead38659601f..c47852b0f36a4f831fbce34e0c91fdc0ebde51f1 100644 (file)
@@ -2403,6 +2403,7 @@ const char *SDNode::getOperationName(const SelectionDAG *G) const {
   case ISD::GlobalAddress: return "GlobalAddress";
   case ISD::FrameIndex:    return "FrameIndex";
   case ISD::JumpTable:     return "JumpTable";
+  case ISD::JumpTableRelocBase: return "JumpTableRelocBase";
   case ISD::ConstantPool:  return "ConstantPool";
   case ISD::ExternalSymbol: return "ExternalSymbol";
   case ISD::INTRINSIC_WO_CHAIN: {
index 27a45a1d5227bf431cc48f7e5830c9a38637369e..e9fd888eadece32fee47a7f4e1022f28896ecc2e 100644 (file)
@@ -868,6 +868,9 @@ void SelectionDAGLowering::visitJumpTable(SelectionDAGISel::JumpTable &JT) {
   SDOperand LD  = DAG.getLoad(isPIC ? MVT::i32 : PTy, Copy.getValue(1), ADD,
                               DAG.getSrcValue(0));
   if (isPIC) {
+    // For Pic, the sequence is:
+    // BRIND(load(Jumptable + index) + RelocBase)
+    // RelocBase is the JumpTable on PPC and X86, GOT on Alpha
     SDOperand Reloc = DAG.getNode(ISD::JumpTableRelocBase, PTy, TAB);
     ADD = DAG.getNode(ISD::ADD, PTy,
         ((PTy != MVT::i32) ? DAG.getNode(ISD::SIGN_EXTEND, PTy, LD) : LD), Reloc);