Re-enable 102565 with fixes.
authorEvan Cheng <evan.cheng@apple.com>
Thu, 29 Apr 2010 06:33:38 +0000 (06:33 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Thu, 29 Apr 2010 06:33:38 +0000 (06:33 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102602 91177308-0d34-0410-b5e6-96231b3b80d8

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

index fe52040d45cdce37e087a9fff5b8e6c17890b7da..9001894d6fa789a7c4c98ab07240bbca35d2f54c 100644 (file)
@@ -3707,15 +3707,17 @@ SelectionDAGBuilder::EmitFuncArgumentDbgValue(const DbgValueInst &DI,
     }
   }
 
-  if (!Reg)
-    Reg = FuncInfo.ValueMap[V];
-  if (!Reg)
-    return false;
+  if (!Reg) {
+    DenseMap<const Value *, unsigned>::iterator VMI = FuncInfo.ValueMap.find(V);
+    if (VMI == FuncInfo.ValueMap.end())
+      return false;
+    Reg = VMI->second;
+  }
 
   const TargetInstrInfo *TII = DAG.getTarget().getInstrInfo();
   MachineInstrBuilder MIB = BuildMI(MF, getCurDebugLoc(),
                                     TII->get(TargetOpcode::DBG_VALUE))
-    .addReg(Reg).addImm(Offset).addMetadata(Variable);
+    .addReg(Reg, RegState::Debug).addImm(Offset).addMetadata(Variable);
   FuncInfo.ArgDbgValues.push_back(&*MIB);
   return true;
 }
@@ -3896,15 +3898,11 @@ SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I, unsigned Intrinsic) {
     } else {
       SDValue &N = NodeMap[V];
       if (N.getNode()) {
-#if 0
         if (!EmitFuncArgumentDbgValue(DI, V, Variable, Offset, N)) {
-#endif
           SDV = DAG.getDbgValue(Variable, N.getNode(),
                                 N.getResNo(), Offset, dl, SDNodeOrder);
           DAG.AddDbgValue(SDV, N.getNode(), false);
-#if 0
         }
-#endif
       } else {
         // We may expand this to cover more cases.  One case where we have no
         // data available is an unreferenced parameter; we need this fallback.
index 7c4ad6d03d570f836be42e799c57b2a44bf78737..b8ebe8afff471c1bde045290e34c6f5f4d1fd23a 100644 (file)
@@ -212,15 +212,12 @@ bool SelectionDAGISel::runOnMachineFunction(MachineFunction &mf) {
 
   SelectAllBasicBlocks(Fn);
 
-  FuncInfo->clear();
-
-  // If the first basic block in the function has live ins that need to be
+ // If the first basic block in the function has live ins that need to be
   // copied into vregs, emit the copies into the top of the block before
   // emitting the code for the block.
   MachineBasicBlock *EntryMBB = MF->begin();
   RegInfo->EmitLiveInCopies(EntryMBB, TRI, TII);
 
-#if 0
   // Insert DBG_VALUE instructions for function arguments to the entry block.
   for (unsigned i = 0, e = FuncInfo->ArgDbgValues.size(); i != e; ++i) {
     MachineInstr *MI = FuncInfo->ArgDbgValues[e-i-1];
@@ -237,7 +234,6 @@ bool SelectionDAGISel::runOnMachineFunction(MachineFunction &mf) {
   // Release function-specific state. SDB and CurDAG are already cleared
   // at this point.
   FuncInfo->clear();
-#endif
 
   return true;
 }