[llvm-commits] [llvm] r143509 - in /llvm/trunk: include/llvm/MC/MCContext.h lib/MC/MCContext.cpp lib/MC/MCParser/AsmParser.cpp tools/llvm-mc/llvm-mc.cpp
Nick Lewycky
nicholas at mxc.ca
Tue Nov 1 20:56:05 PDT 2011
Kevin Enderby wrote:
> Author: enderby
> Date: Tue Nov 1 17:27:22 2011
> New Revision: 143509
>
> URL: http://llvm.org/viewvc/llvm-project?rev=143509&view=rev
> Log:
> First part of support for generating dwarf for assembly source files with the
> -g flag. In this part we generate the .file for the source being assembled and
> the .loc's for the assembled instructions.
>
> The next part will be to generate the dwarf Compile Unit DIE and a dwarf
> subprogram DIE for each non-temporary label.
Cool!
> Modified: llvm/trunk/lib/MC/MCParser/AsmParser.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCParser/AsmParser.cpp?rev=143509&r1=143508&r2=143509&view=diff
> ==============================================================================
> --- llvm/trunk/lib/MC/MCParser/AsmParser.cpp (original)
> +++ llvm/trunk/lib/MC/MCParser/AsmParser.cpp Tue Nov 1 17:27:22 2011
> @@ -464,6 +464,14 @@
> HadError = false;
> AsmCond StartingCondState = TheCondState;
>
> + // If we are generating dwarf for assembly source files save the initial text
> + // section and generate a .file directive.
> + if (getContext().getGenDwarfForAssembly()) {
> + getContext().setGenDwarfSection(getStreamer().getCurrentSection());
> + getStreamer().EmitDwarfFileDirective(getContext().nextGenDwarfFileNumber(),
> + StringRef(), SrcMgr.getMemoryBuffer(CurBuffer)->getBufferIdentifier());
> + }
> +
> // While we have input, parse each statement.
> while (Lexer.isNot(AsmToken::Eof)) {
> if (!ParseStatement()) continue;
> @@ -1211,6 +1219,18 @@
> PrintMessage(IDLoc, SourceMgr::DK_Note, OS.str());
> }
>
> + // If we are generating dwarf for assembly source files and the current
> + // section is the initial text section then generate a .loc directive for
> + // the instruction.
> + if (!HadError&& getContext().getGenDwarfForAssembly()&&
> + getContext().getGenDwarfSection() == getStreamer().getCurrentSection() ) {
> + getStreamer().EmitDwarfLocDirective(getContext().getGenDwarfFileNumber(),
> + SrcMgr.FindLineNumber(IDLoc, CurBuffer),
> + 0, DWARF2_LINE_DEFAULT_IS_STMT ?
> + DWARF2_FLAG_IS_STMT : 0, 0, 0,
Tabs.
Nick
More information about the llvm-commits
mailing list