diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index f7b4c09162a..8cdb94c152a 100644 --- a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -2081,6 +2081,11 @@ void DwarfDebug::collectVariableInfo() { // FIXME : Lift this restriction. if (MInsn->getNumOperands() != 3) continue; + + // Ignore Undef values. + if (!MInsn->getOperand(0).getReg()) + continue; + DIVariable DV( const_cast(MInsn->getOperand(MInsn->getNumOperands() - 1) .getMetadata())); diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp index 9d239c1bd7c..d663521abaf 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp @@ -3834,15 +3834,10 @@ SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I, unsigned Intrinsic) { return 0; DAG.AddDbgValue(SDV, N.getNode(), isParameter); } else { - // Generating Undefs here seems to be actively harmful because it - // affects the line numbers. - return 0; -#if 0 // This isn't useful, but it shows what we're missing. SDV = DAG.getDbgValue(Variable, UndefValue::get(Address->getType()), 0, dl, SDNodeOrder); DAG.AddDbgValue(SDV, 0, isParameter); -#endif } return 0; }