[llvm] r201195 - DwarfUnit: Refactor DW_AT_file creation into a common function.

Eric Christopher echristo at gmail.com
Wed Feb 12 14:44:16 PST 2014


That's a silly amount of code duplication to remove.

Thanks!

-eric

On Tue, Feb 11, 2014 at 4:11 PM, David Blaikie <dblaikie at gmail.com> wrote:
> Author: dblaikie
> Date: Tue Feb 11 18:11:25 2014
> New Revision: 201195
>
> URL: http://llvm.org/viewvc/llvm-project?rev=201195&view=rev
> Log:
> DwarfUnit: Refactor DW_AT_file creation into a common function.
>
> This is preliminary work to fix type unit file strings so they appear in
> their originating CU's line table - but it's also just good/simple
> cleanup, so I'm committing it ahead of time.
>
> Modified:
>     llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
>     llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.h
>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp?rev=201195&r1=201194&r2=201195&view=diff
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.cpp Tue Feb 11 18:11:25 2014
> @@ -355,15 +355,12 @@ void DwarfUnit::addBlock(DIE *Die, dwarf
>
>  /// addSourceLine - Add location information to specified debug information
>  /// entry.
> -void DwarfUnit::addSourceLine(DIE *Die, DIVariable V) {
> -  assert(V.isVariable());
> -
> -  unsigned Line = V.getLineNumber();
> +void DwarfUnit::addSourceLine(DIE *Die, unsigned Line, StringRef File,
> +                              StringRef Directory) {
>    if (Line == 0)
>      return;
> -  unsigned FileID =
> -      DD->getOrCreateSourceID(V.getContext().getFilename(),
> -                              V.getContext().getDirectory(), getUniqueID());
> +
> +  unsigned FileID = DD->getOrCreateSourceID(File, Directory, getUniqueID());
>    assert(FileID && "Invalid file id");
>    addUInt(Die, dwarf::DW_AT_decl_file, None, FileID);
>    addUInt(Die, dwarf::DW_AT_decl_line, None, Line);
> @@ -371,17 +368,18 @@ void DwarfUnit::addSourceLine(DIE *Die,
>
>  /// addSourceLine - Add location information to specified debug information
>  /// entry.
> +void DwarfUnit::addSourceLine(DIE *Die, DIVariable V) {
> +  assert(V.isVariable());
> +
> +  addSourceLine(Die, V.getLineNumber(), V.getContext().getFilename(), V.getContext().getDirectory());
> +}
> +
> +/// addSourceLine - Add location information to specified debug information
> +/// entry.
>  void DwarfUnit::addSourceLine(DIE *Die, DIGlobalVariable G) {
>    assert(G.isGlobalVariable());
>
> -  unsigned Line = G.getLineNumber();
> -  if (Line == 0)
> -    return;
> -  unsigned FileID =
> -      DD->getOrCreateSourceID(G.getFilename(), G.getDirectory(), getUniqueID());
> -  assert(FileID && "Invalid file id");
> -  addUInt(Die, dwarf::DW_AT_decl_file, None, FileID);
> -  addUInt(Die, dwarf::DW_AT_decl_line, None, Line);
> +  addSourceLine(Die, G.getLineNumber(), G.getFilename(), G.getDirectory());
>  }
>
>  /// addSourceLine - Add location information to specified debug information
> @@ -389,16 +387,7 @@ void DwarfUnit::addSourceLine(DIE *Die,
>  void DwarfUnit::addSourceLine(DIE *Die, DISubprogram SP) {
>    assert(SP.isSubprogram());
>
> -  // If the line number is 0, don't add it.
> -  unsigned Line = SP.getLineNumber();
> -  if (Line == 0)
> -    return;
> -
> -  unsigned FileID = DD->getOrCreateSourceID(SP.getFilename(), SP.getDirectory(),
> -                                            getUniqueID());
> -  assert(FileID && "Invalid file id");
> -  addUInt(Die, dwarf::DW_AT_decl_file, None, FileID);
> -  addUInt(Die, dwarf::DW_AT_decl_line, None, Line);
> +  addSourceLine(Die, SP.getLineNumber(), SP.getFilename(), SP.getDirectory());
>  }
>
>  /// addSourceLine - Add location information to specified debug information
> @@ -406,14 +395,7 @@ void DwarfUnit::addSourceLine(DIE *Die,
>  void DwarfUnit::addSourceLine(DIE *Die, DIType Ty) {
>    assert(Ty.isType());
>
> -  unsigned Line = Ty.getLineNumber();
> -  if (Line == 0)
> -    return;
> -  unsigned FileID = DD->getOrCreateSourceID(Ty.getFilename(), Ty.getDirectory(),
> -                                            getUniqueID());
> -  assert(FileID && "Invalid file id");
> -  addUInt(Die, dwarf::DW_AT_decl_file, None, FileID);
> -  addUInt(Die, dwarf::DW_AT_decl_line, None, Line);
> +  addSourceLine(Die, Ty.getLineNumber(), Ty.getFilename(), Ty.getDirectory());
>  }
>
>  /// addSourceLine - Add location information to specified debug information
> @@ -421,15 +403,9 @@ void DwarfUnit::addSourceLine(DIE *Die,
>  void DwarfUnit::addSourceLine(DIE *Die, DIObjCProperty Ty) {
>    assert(Ty.isObjCProperty());
>
> -  unsigned Line = Ty.getLineNumber();
> -  if (Line == 0)
> -    return;
>    DIFile File = Ty.getFile();
> -  unsigned FileID = DD->getOrCreateSourceID(File.getFilename(),
> -                                            File.getDirectory(), getUniqueID());
> -  assert(FileID && "Invalid file id");
> -  addUInt(Die, dwarf::DW_AT_decl_file, None, FileID);
> -  addUInt(Die, dwarf::DW_AT_decl_line, None, Line);
> +  addSourceLine(Die, Ty.getLineNumber(), File.getFilename(),
> +                File.getDirectory());
>  }
>
>  /// addSourceLine - Add location information to specified debug information
> @@ -437,16 +413,7 @@ void DwarfUnit::addSourceLine(DIE *Die,
>  void DwarfUnit::addSourceLine(DIE *Die, DINameSpace NS) {
>    assert(NS.Verify());
>
> -  unsigned Line = NS.getLineNumber();
> -  if (Line == 0)
> -    return;
> -  StringRef FN = NS.getFilename();
> -
> -  unsigned FileID =
> -      DD->getOrCreateSourceID(FN, NS.getDirectory(), getUniqueID());
> -  assert(FileID && "Invalid file id");
> -  addUInt(Die, dwarf::DW_AT_decl_file, None, FileID);
> -  addUInt(Die, dwarf::DW_AT_decl_line, None, Line);
> +  addSourceLine(Die, NS.getLineNumber(), NS.getFilename(), NS.getDirectory());
>  }
>
>  /// addVariableAddress - Add DW_AT_location attribute for a
>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.h?rev=201195&r1=201194&r2=201195&view=diff
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.h (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfUnit.h Tue Feb 11 18:11:25 2014
> @@ -361,6 +361,8 @@ public:
>
>    /// addSourceLine - Add location information to specified debug information
>    /// entry.
> +  void addSourceLine(DIE *Die, unsigned Line, StringRef File,
> +                     StringRef Directory);
>    void addSourceLine(DIE *Die, DIVariable V);
>    void addSourceLine(DIE *Die, DIGlobalVariable G);
>    void addSourceLine(DIE *Die, DISubprogram SP);
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits



More information about the llvm-commits mailing list