diff options
author | Adrian Prantl <aprantl@apple.com> | 2014-02-25 19:48:36 +0000 |
---|---|---|
committer | Adrian Prantl <aprantl@apple.com> | 2014-02-25 19:48:36 +0000 |
commit | 9791b3f9ae71f5d418c2cad08ffb142f3bdbb6dc (patch) | |
tree | f6eaf4a0049d9622b1da88156d2a6cd456d08161 /lib | |
parent | d225511ea7b7f28b17f43023c0243dd5ad0dd3df (diff) | |
download | llvm-9791b3f9ae71f5d418c2cad08ffb142f3bdbb6dc.tar.gz llvm-9791b3f9ae71f5d418c2cad08ffb142f3bdbb6dc.tar.bz2 llvm-9791b3f9ae71f5d418c2cad08ffb142f3bdbb6dc.tar.xz |
Revert "Debug info: Support variadic functions."
This reverts commit r202184 because of buildbot breakage.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@202187 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/CodeGen/AsmPrinter/DwarfDebug.cpp | 12 | ||||
-rw-r--r-- | lib/CodeGen/AsmPrinter/DwarfUnit.cpp | 43 | ||||
-rw-r--r-- | lib/CodeGen/AsmPrinter/DwarfUnit.h | 3 |
3 files changed, 21 insertions, 37 deletions
diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index f9ee2705a3..2425948ae9 100644 --- a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -582,7 +582,7 @@ DIE *DwarfDebug::createScopeChildrenDIE(DwarfCompileUnit *TheCU, DIE *ObjectPointer = NULL; // Collect arguments for current function. - if (LScopes.isCurrentFunctionScope(Scope)) { + if (LScopes.isCurrentFunctionScope(Scope)) for (unsigned i = 0, N = CurrentFnArguments.size(); i < N; ++i) if (DbgVariable *ArgDV = CurrentFnArguments[i]) if (DIE *Arg = @@ -592,16 +592,6 @@ DIE *DwarfDebug::createScopeChildrenDIE(DwarfCompileUnit *TheCU, ObjectPointer = Arg; } - // Create the unspecified parameter that marks a function as variadic. - 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); - Children.push_back(Ellipsis); - } - } - // Collect lexical scope children first. const SmallVectorImpl<DbgVariable *> &Variables = ScopeVariables.lookup(Scope); diff --git a/lib/CodeGen/AsmPrinter/DwarfUnit.cpp b/lib/CodeGen/AsmPrinter/DwarfUnit.cpp index 4626c43f56..81dbfc505a 100644 --- a/lib/CodeGen/AsmPrinter/DwarfUnit.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfUnit.cpp @@ -1139,22 +1139,6 @@ void DwarfUnit::constructTypeDIE(DIE &Buffer, DIDerivedType DTy) { addSourceLine(&Buffer, 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); - } - } -} - /// constructTypeDIE - Construct type DIE from DICompositeType. void DwarfUnit::constructTypeDIE(DIE &Buffer, DICompositeType CTy) { // Add name if not anonymous or intermediate type. @@ -1178,12 +1162,19 @@ void DwarfUnit::constructTypeDIE(DIE &Buffer, DICompositeType CTy) { addType(&Buffer, RTy); bool isPrototyped = true; - if (Elements.getNumElements() == 2 && - Elements.getElement(1).isUnspecifiedParameter()) - isPrototyped = false; - - constructSubprogramArguments(Buffer, Elements); - + // Add arguments. + for (unsigned i = 1, N = Elements.getNumElements(); i < N; ++i) { + DIDescriptor Ty = Elements.getElement(i); + if (Ty.isUnspecifiedParameter()) { + createAndAddDIE(dwarf::DW_TAG_unspecified_parameters, Buffer); + isPrototyped = false; + } else { + DIE *Arg = createAndAddDIE(dwarf::DW_TAG_formal_parameter, Buffer); + addType(Arg, DIType(Ty)); + if (DIType(Ty).isArtificial()) + addFlag(Arg, dwarf::DW_AT_artificial); + } + } // Add prototype flag if we're dealing with a C language and the // function has been prototyped. uint16_t Language = getLanguage(); @@ -1466,7 +1457,13 @@ DIE *DwarfUnit::getOrCreateSubprogramDIE(DISubprogram SP) { // Add arguments. Do not add arguments for subprogram definition. They will // be handled while processing variables. - constructSubprogramArguments(*SPDie, Args); + for (unsigned i = 1, N = Args.getNumElements(); i < N; ++i) { + DIE *Arg = createAndAddDIE(dwarf::DW_TAG_formal_parameter, *SPDie); + DIType ATy(Args.getElement(i)); + addType(Arg, ATy); + if (ATy.isArtificial()) + addFlag(Arg, dwarf::DW_AT_artificial); + } } if (SP.isArtificial()) diff --git a/lib/CodeGen/AsmPrinter/DwarfUnit.h b/lib/CodeGen/AsmPrinter/DwarfUnit.h index bf77272b8a..370ecbf831 100644 --- a/lib/CodeGen/AsmPrinter/DwarfUnit.h +++ b/lib/CodeGen/AsmPrinter/DwarfUnit.h @@ -476,9 +476,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); |