From 719f6a9d9cf29d7daa33cfe43a9e7fe671b24df1 Mon Sep 17 00:00:00 2001 From: Devang Patel Date: Thu, 29 Apr 2010 20:40:36 +0000 Subject: [PATCH] Refactor. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102661 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Analysis/DebugInfo.cpp | 11 +++++++++++ lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp | 6 ++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/lib/Analysis/DebugInfo.cpp b/lib/Analysis/DebugInfo.cpp index 8ba19020b09..d33bb6042b2 100644 --- a/lib/Analysis/DebugInfo.cpp +++ b/lib/Analysis/DebugInfo.cpp @@ -402,6 +402,17 @@ uint64_t DIDerivedType::getOriginalTypeSize() const { return getSizeInBits(); } +/// isInlinedFnArgument - Return trule if this variable provides debugging +/// information for an inlined function arguments. +bool DIVariable::isInlinedFnArgument(const Function *CurFn) { + assert(CurFn && "Invalid function"); + if (!getContext().isSubprogram()) + return false; + // This variable is not inlined function argument if its scope + // does not describe current function. + return !(DISubprogram(getContext().getNode()).describes(CurFn)); +} + /// describes - Return true if this subprogram provides debugging /// information for the function F. bool DISubprogram::describes(const Function *F) { diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp index 3f81268c91a..791482906d8 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp @@ -3691,14 +3691,12 @@ SelectionDAGBuilder::EmitFuncArgumentDbgValue(const DbgValueInst &DI, if (!isa(V)) return false; + MachineFunction &MF = DAG.getMachineFunction(); // Ignore inlined function arguments here. DIVariable DV(Variable); - if (DV.getContext().isSubprogram() - && DISubprogram(DV.getContext().getNode()).getLinkageName() - != cast(V)->getParent()->getName()) + if (DV.isInlinedFnArgument(MF.getFunction())) return false; - MachineFunction &MF = DAG.getMachineFunction(); MachineBasicBlock *MBB = FuncInfo.MBBMap[DI.getParent()]; if (MBB != &MF.front()) return false; -- 2.34.1