[llvm-commits] [llvm] r141245 - /llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp

Bill Wendling isanbard at gmail.com
Wed Oct 5 16:28:57 PDT 2011


Author: void
Date: Wed Oct  5 18:28:57 2011
New Revision: 141245

URL: http://llvm.org/viewvc/llvm-project?rev=141245&view=rev
Log:
Get the proper call site numbers for the landing pads. Also remove a magic
number (18) for the proper addressing mode.

Modified:
    llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp

Modified: llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp?rev=141245&r1=141244&r2=141245&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp (original)
+++ llvm/trunk/lib/Target/ARM/ARMISelLowering.cpp Wed Oct  5 18:28:57 2011
@@ -5598,11 +5598,15 @@
       if (!II->isEHLabel()) continue;
 
       MCSymbol *Sym = II->getOperand(0).getMCSymbol();
-      if (!MMI.hasCallSiteBeginLabel(Sym)) continue;
+      if (!MMI.hasCallSiteLandingPad(Sym)) continue;
 
-      unsigned CallSiteNum = MMI.getCallSiteBeginLabel(Sym);
-      CallSiteNumToLPad[CallSiteNum].push_back(BB);
-      MaxCSNum = std::max(MaxCSNum, CallSiteNum);
+      SmallVectorImpl<unsigned> &CallSiteIdxs = MMI.getCallSiteLandingPad(Sym);
+      for (SmallVectorImpl<unsigned>::iterator
+             CSI = CallSiteIdxs.begin(), CSE = CallSiteIdxs.end();
+           CSI != CSE; ++CSI) {
+        CallSiteNumToLPad[*CSI].push_back(BB);
+        MaxCSNum = std::max(MaxCSNum, *CSI);
+      }
       break;
     }
   }
@@ -5617,6 +5621,9 @@
       LPadList.push_back(*II);
   }
 
+  assert(!LPadList.empty() &&
+         "No landing pad destinations for the dispatch jump table!");
+
   MachineJumpTableInfo *JTI =
     MF->getOrCreateJumpTableInfo(MachineJumpTableInfo::EK_Inline);
   unsigned MJTI = JTI->createJumpTableIndex(LPadList);
@@ -5643,16 +5650,21 @@
     .addReg(ARM::CPSR);
 
 /*
-  %vreg11<def> = t2LDRi12 <fi#0>, 4, pred:14, pred:%noreg; mem:Volatile LD4[%sunkaddr131] rGPR:%vreg11
-  t2CMPri %vreg11, 6, pred:14, pred:%noreg, %CPSR<imp-def>; rGPR:%vreg11
-  t2Bcc <BB#33>, pred:8, pred:%CPSR
-*/
 
-/*
-  %vreg11<def> = t2LDRi12 <fi#0>, 4, pred:14, pred:%noreg; mem:Volatile LD4[%sunkaddr131] rGPR:%vreg11
-  %vreg12<def> = t2LEApcrelJT <jt#0>, 0, pred:14, pred:%noreg; rGPR:%vreg12
-  %vreg13<def> = t2ADDrs %vreg12<kill>, %vreg11, 18, pred:14, pred:%noreg, opt:%noreg; GPRnopc:%vreg13 rGPR:%vreg12,%vreg11
-  t2BR_JT %vreg13<kill>, %vreg11, <jt#0>, 0; GPRnopc:%vreg13 rGPR:%vreg11
+BB#32: derived from LLVM BB %eh.sjlj.setjmp.catch
+    Predecessors according to CFG: BB#0
+        %vreg11<def> = t2LDRi12 <fi#0>, 4, pred:14, pred:%noreg; mem:Volatile LD4[%sunkaddr131] rGPR:%vreg11
+        t2CMPri %vreg11, 6, pred:14, pred:%noreg, %CPSR<imp-def>; rGPR:%vreg11
+        t2Bcc <BB#33>, pred:8, pred:%CPSR
+    Successors according to CFG: BB#33 BB#35
+
+BB#35: derived from LLVM BB %eh.sjlj.setjmp.catch
+    Predecessors according to CFG: BB#32
+        %vreg12<def> = t2LEApcrelJT <jt#0>, 0, pred:14, pred:%noreg; rGPR:%vreg12
+        %vreg13<def> = t2ADDrs %vreg12<kill>, %vreg11, 18, pred:14, pred:%noreg, opt:%noreg; GPRnopc:%vreg13 rGPR:%vreg12,%vreg11
+        t2BR_JT %vreg13<kill>, %vreg11, <jt#0>, 0; GPRnopc:%vreg13 rGPR:%vreg11
+    Successors according to CFG: BB#3 BB#28 BB#26 BB#24 BB#22 BB#20 BB#31
+
 */
 
   FIMMO = MF->getMachineMemOperand(MachinePointerInfo::getFixedStack(FI),
@@ -5669,7 +5681,7 @@
       BuildMI(DispContBB, dl, TII->get(ARM::t2ADDrs), NewVReg3)
       .addReg(NewVReg2, RegState::Kill)
       .addReg(NewVReg1)
-      .addImm(18)));
+      .addImm(ARM_AM::getSORegOpc(ARM_AM::lsl, 2))));
 
   BuildMI(DispContBB, dl, TII->get(ARM::t2BR_JT))
     .addReg(NewVReg3, RegState::Kill)





More information about the llvm-commits mailing list