summaryrefslogtreecommitdiffstats
path: root/contrib/llvm/patches/patch-r264826-llvm-r202188-variadic-fn-debug-info.diff
diff options
context:
space:
mode:
authordim <dim@FreeBSD.org>2014-11-24 18:43:37 +0000
committerdim <dim@FreeBSD.org>2014-11-24 18:43:37 +0000
commit82ca21468e7fe6a5112961ba86434579bed3f204 (patch)
treec2772f1f62ff857fee7802d46eb79f45d45d6d54 /contrib/llvm/patches/patch-r264826-llvm-r202188-variadic-fn-debug-info.diff
parent6148c19c738a92f344008aa3f88f4e008bada0ee (diff)
downloadFreeBSD-src-82ca21468e7fe6a5112961ba86434579bed3f204.zip
FreeBSD-src-82ca21468e7fe6a5112961ba86434579bed3f204.tar.gz
Cleanup patch set, and update README.TXT. Add three new patches.
Diffstat (limited to 'contrib/llvm/patches/patch-r264826-llvm-r202188-variadic-fn-debug-info.diff')
-rw-r--r--contrib/llvm/patches/patch-r264826-llvm-r202188-variadic-fn-debug-info.diff176
1 files changed, 0 insertions, 176 deletions
diff --git a/contrib/llvm/patches/patch-r264826-llvm-r202188-variadic-fn-debug-info.diff b/contrib/llvm/patches/patch-r264826-llvm-r202188-variadic-fn-debug-info.diff
deleted file mode 100644
index a91307b..0000000
--- a/contrib/llvm/patches/patch-r264826-llvm-r202188-variadic-fn-debug-info.diff
+++ /dev/null
@@ -1,176 +0,0 @@
-Merge LLVM r202188:
-
- Debug info: Support variadic functions.
- Variadic functions have an unspecified parameter tag after the last
- argument. In IR this is represented as an unspecified parameter in the
- subroutine type.
-
- Paired commit with CFE r202185.
-
- rdar://problem/13690847
-
- This re-applies r202184 + a bugfix in DwarfDebug's argument handling.
-
-This merge includes a change to use the LLVM 3.4 API in
-lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp:
-
-DwarfUnit -> CompileUnit
-
-Sponsored by: DARPA, AFRL
-
-Introduced here: http://svnweb.freebsd.org/changeset/base/264826
-
-Index: include/llvm/DIBuilder.h
-===================================================================
---- include/llvm/DIBuilder.h (revision 264825)
-+++ include/llvm/DIBuilder.h (revision 264826)
-@@ -439,7 +439,7 @@
- /// through debug info anchors.
- void retainType(DIType T);
-
-- /// createUnspecifiedParameter - Create unspeicified type descriptor
-+ /// createUnspecifiedParameter - Create unspecified type descriptor
- /// for a subroutine type.
- DIDescriptor createUnspecifiedParameter();
-
-Index: lib/CodeGen/AsmPrinter/DwarfDebug.cpp
-===================================================================
---- lib/CodeGen/AsmPrinter/DwarfDebug.cpp (revision 264825)
-+++ lib/CodeGen/AsmPrinter/DwarfDebug.cpp (revision 264826)
-@@ -404,15 +404,21 @@
- 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) {
-- DIE *Arg =
-+ 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);
-- DIType ATy(Args.getElement(i));
-- 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->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);
-+ }
- }
- DIE *SPDeclDie = SPDie;
- SPDie =
-@@ -579,7 +585,7 @@
- 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 =
-@@ -588,6 +594,16 @@
- if (ArgDV->isObjectPointer()) 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);
- for (unsigned i = 0, N = Variables.size(); i < N; ++i)
-Index: lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
-===================================================================
---- lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp (revision 264825)
-+++ lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp (revision 264826)
-@@ -1116,6 +1116,22 @@
- addSourceLine(&Buffer, DTy);
- }
-
-+/// constructSubprogramArguments - Construct function argument DIEs.
-+void CompileUnit::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);
-+ }
-+ }
-+}
-+
- /// Return true if the type is appropriately scoped to be contained inside
- /// its own type unit.
- static bool isTypeUnitScoped(DIType Ty, const DwarfDebug *DD) {
-@@ -1170,19 +1186,12 @@
- addType(&Buffer, RTy);
-
- bool isPrototyped = true;
-- // 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);
-- }
-- }
-+ if (Elements.getNumElements() == 2 &&
-+ Elements.getElement(1).isUnspecifiedParameter())
-+ isPrototyped = false;
-+
-+ constructSubprogramArguments(Buffer, Elements);
-+
- // Add prototype flag if we're dealing with a C language and the
- // function has been prototyped.
- uint16_t Language = getLanguage();
-@@ -1475,13 +1484,7 @@
-
- // Add arguments. Do not add arguments for subprogram definition. They will
- // be handled while processing variables.
-- 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);
-- }
-+ constructSubprogramArguments(*SPDie, Args);
- }
-
- if (SP.isArtificial())
-Index: lib/CodeGen/AsmPrinter/DwarfCompileUnit.h
-===================================================================
---- lib/CodeGen/AsmPrinter/DwarfCompileUnit.h (revision 264825)
-+++ lib/CodeGen/AsmPrinter/DwarfCompileUnit.h (revision 264826)
-@@ -342,6 +342,9 @@
- void emitHeader(const MCSection *ASection, const MCSymbol *ASectionSym);
-
- 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);
-
OpenPOWER on IntegriCloud