diff options
author | Adrian Prantl <aprantl@apple.com> | 2014-02-25 22:27:14 +0000 |
---|---|---|
committer | Adrian Prantl <aprantl@apple.com> | 2014-02-25 22:27:14 +0000 |
commit | 35989a76ac4aed266df17ee37eba4a138ff99f34 (patch) | |
tree | 63e02f78098d23cf55766b6683cec9505dee62f6 /lib | |
parent | 3f0a9af13bec64f3bc4bee06a57e18feeb766570 (diff) | |
download | llvm-35989a76ac4aed266df17ee37eba4a138ff99f34.tar.gz llvm-35989a76ac4aed266df17ee37eba4a138ff99f34.tar.bz2 llvm-35989a76ac4aed266df17ee37eba4a138ff99f34.tar.xz |
Address review comments for r202188.
This is refactoring / simplifying code, updating comments and enabling the
testcase on non-x86 platforms.
No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@202199 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/CodeGen/AsmPrinter/DwarfDebug.cpp | 20 | ||||
-rw-r--r-- | lib/CodeGen/AsmPrinter/DwarfUnit.cpp | 22 | ||||
-rw-r--r-- | lib/CodeGen/AsmPrinter/DwarfUnit.h | 6 |
3 files changed, 16 insertions, 32 deletions
diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index 3c5868111d..b18e8d49ac 100644 --- a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -403,22 +403,7 @@ DIE *DwarfDebug::updateSubprogramScopeDIE(DwarfCompileUnit *SPCU, DIArray Args = SPTy.getTypeArray(); uint16_t SPTag = SPTy.getTag(); if (SPTag == dwarf::DW_TAG_subroutine_type) - // FIXME: Use DwarfUnit::constructSubprogramArguments() here. - for (unsigned i = 1, N = Args.getNumElements(); i < N; ++i) { - DIType ATy(Args.getElement(i)); - if (ATy.isUnspecifiedParameter()) { - assert(i == N-1 && "ellipsis must be the last argument"); - SPCU->createAndAddDIE(dwarf::DW_TAG_unspecified_parameters, *SPDie); - } else { - DIE *Arg = - SPCU->createAndAddDIE(dwarf::DW_TAG_formal_parameter, *SPDie); - SPCU->addType(Arg, ATy); - if (ATy.isArtificial()) - SPCU->addFlag(Arg, dwarf::DW_AT_artificial); - if (ATy.isObjectPointer()) - SPCU->addDIEEntry(SPDie, dwarf::DW_AT_object_pointer, Arg); - } - } + SPCU->constructSubprogramArguments(*SPDie, Args); DIE *SPDeclDie = SPDie; SPDie = SPCU->createAndAddDIE(dwarf::DW_TAG_subprogram, *SPCU->getUnitDie()); @@ -598,9 +583,8 @@ DIE *DwarfDebug::createScopeChildrenDIE(DwarfCompileUnit *TheCU, ObjectPointer = Arg; } - // Create the unspecified parameter that marks a function as variadic. + // If this is a variadic function, add an unspecified parameter. DISubprogram SP(Scope->getScopeNode()); - assert(SP.Verify()); DIArray FnArgs = SP.getType().getTypeArray(); if (FnArgs.getElement(FnArgs.getNumElements()-1).isUnspecifiedParameter()) { DIE *Ellipsis = new DIE(dwarf::DW_TAG_unspecified_parameters); diff --git a/lib/CodeGen/AsmPrinter/DwarfUnit.cpp b/lib/CodeGen/AsmPrinter/DwarfUnit.cpp index 4626c43f56..dadb536691 100644 --- a/lib/CodeGen/AsmPrinter/DwarfUnit.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfUnit.cpp @@ -1141,18 +1141,18 @@ void DwarfUnit::constructTypeDIE(DIE &Buffer, DIDerivedType DTy) { /// constructSubprogramArguments - Construct function argument DIEs. void DwarfUnit::constructSubprogramArguments(DIE &Buffer, DIArray Args) { - for (unsigned i = 1, N = Args.getNumElements(); i < N; ++i) { - DIDescriptor Ty = Args.getElement(i); - if (Ty.isUnspecifiedParameter()) { - assert(i == N-1 && "ellipsis must be the last argument"); - createAndAddDIE(dwarf::DW_TAG_unspecified_parameters, Buffer); - } else { - DIE *Arg = createAndAddDIE(dwarf::DW_TAG_formal_parameter, Buffer); - addType(Arg, DIType(Ty)); - if (DIType(Ty).isArtificial()) - addFlag(Arg, dwarf::DW_AT_artificial); - } + for (unsigned i = 1, N = Args.getNumElements(); i < N; ++i) { + DIDescriptor Ty = Args.getElement(i); + if (Ty.isUnspecifiedParameter()) { + assert(i == N-1 && "Unspecified parameter must be the last argument"); + createAndAddDIE(dwarf::DW_TAG_unspecified_parameters, Buffer); + } else { + DIE *Arg = createAndAddDIE(dwarf::DW_TAG_formal_parameter, Buffer); + addType(Arg, DIType(Ty)); + if (DIType(Ty).isArtificial()) + addFlag(Arg, dwarf::DW_AT_artificial); } + } } /// constructTypeDIE - Construct type DIE from DICompositeType. diff --git a/lib/CodeGen/AsmPrinter/DwarfUnit.h b/lib/CodeGen/AsmPrinter/DwarfUnit.h index bf77272b8a..8dd25a0a1d 100644 --- a/lib/CodeGen/AsmPrinter/DwarfUnit.h +++ b/lib/CodeGen/AsmPrinter/DwarfUnit.h @@ -452,6 +452,9 @@ public: /// constructVariableDIE - Construct a DIE for the given DbgVariable. DIE *constructVariableDIE(DbgVariable &DV, bool isScopeAbstract); + /// constructSubprogramArguments - Construct function argument DIEs. + void constructSubprogramArguments(DIE &Buffer, DIArray Args); + /// Create a DIE with the given Tag, add the DIE to its parent, and /// call insertDIE if MD is not null. DIE *createAndAddDIE(unsigned Tag, DIE &Parent, @@ -476,9 +479,6 @@ protected: DIE *getOrCreateStaticMemberDIE(DIDerivedType DT); private: - /// constructSubprogramArguments - Construct function argument DIEs. - void constructSubprogramArguments(DIE &Buffer, DIArray Args); - /// constructTypeDIE - Construct basic type die from DIBasicType. void constructTypeDIE(DIE &Buffer, DIBasicType BTy); |