From fafe7a41a567ad53d95c85e5e4891638a16206a2 Mon Sep 17 00:00:00 2001 From: "Duncan P. N. Exon Smith" Date: Mon, 13 Apr 2015 21:38:48 +0000 Subject: [PATCH] SelectionDAG: Stop using DIVariable::isInlinedFnArgument() Instead of calling the somewhat confusingly-named `DIVariable::isInlinedFnArgument()`, do the check directly here. There's possibly a small functionality change here: instead of `dyn_cast<>`'ing `DV->getScope()` to `MDSubprogram`, I'm looking up the scope chain for the actual subprogram. I suspect that this is a no-op for function arguments so in practise there isn't a real difference. I've also added a `FIXME` to check the `inlinedAt:` chain instead, since I wonder if that would be more reliable than the `MDSubprogram::describes()` function. Since this was the only user of `DIVariable::isInlinedFnArgument()`, delete it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@234799 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/IR/DebugInfo.h | 3 --- lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp | 4 +++- lib/IR/DebugInfo.cpp | 10 ---------- 3 files changed, 3 insertions(+), 14 deletions(-) diff --git a/include/llvm/IR/DebugInfo.h b/include/llvm/IR/DebugInfo.h index f0832325e3c..8592b2cf922 100644 --- a/include/llvm/IR/DebugInfo.h +++ b/include/llvm/IR/DebugInfo.h @@ -724,9 +724,6 @@ public: return (getType().resolve(Map)).isBlockByrefStruct(); } - /// \brief Check if this is an inlined function argument. - bool isInlinedFnArgument(const Function *CurFn); - void printExtendedName(raw_ostream &OS) const; }; diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp index bb0d24a6d0b..5c626beff42 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp @@ -4461,8 +4461,10 @@ bool SelectionDAGBuilder::EmitFuncArgumentDbgValue( const TargetInstrInfo *TII = DAG.getSubtarget().getInstrInfo(); // Ignore inlined function arguments here. + // + // FIXME: Should we be checking DL->inlinedAt() to determine this? DIVariable DV(Variable); - if (DV.isInlinedFnArgument(MF.getFunction())) + if (!DV->getScope()->getSubprogram()->describes(MF.getFunction())) return false; Optional Op; diff --git a/lib/IR/DebugInfo.cpp b/lib/IR/DebugInfo.cpp index 20467c93adb..fc302010b6e 100644 --- a/lib/IR/DebugInfo.cpp +++ b/lib/IR/DebugInfo.cpp @@ -39,16 +39,6 @@ using namespace llvm::dwarf; DIScopeRef DIScope::getRef() const { return MDScopeRef::get(get()); } -bool DIVariable::isInlinedFnArgument(const Function *CurFn) { - assert(CurFn && "Invalid function"); - DISubprogram SP = dyn_cast(getContext()); - if (!SP) - return false; - // This variable is not inlined function argument if its scope - // does not describe current function. - return !SP.describes(CurFn); -} - void DICompileUnit::replaceSubprograms(DIArray Subprograms) { get()->replaceSubprograms(MDSubprogramArray(Subprograms)); } -- 2.34.1