forked from OSchip/llvm-project
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. llvm-svn: 234799
This commit is contained in:
parent
168ddf4dc1
commit
745a5db444
|
@ -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;
|
||||
};
|
||||
|
||||
|
|
|
@ -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<MachineOperand> Op;
|
||||
|
|
|
@ -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<MDSubprogram>(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));
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue