[llvm] r327083 - Revert "[DWARF] Fix mixing assembler -g with DWARF .file directives."
Paul Robinson via llvm-commits
llvm-commits at lists.llvm.org
Thu Mar 8 16:11:54 PST 2018
Author: probinson
Date: Thu Mar 8 16:11:54 2018
New Revision: 327083
URL: http://llvm.org/viewvc/llvm-project?rev=327083&view=rev
Log:
Revert "[DWARF] Fix mixing assembler -g with DWARF .file directives."
This reverts commit d6d9ac1ab5039ba1fe0f63c36eac2bdd9f0a79c9.
aka r327073
Modified:
llvm/trunk/lib/MC/MCParser/AsmParser.cpp
llvm/trunk/test/MC/AsmParser/directive_file-2.s
Modified: llvm/trunk/lib/MC/MCParser/AsmParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCParser/AsmParser.cpp?rev=327083&r1=327082&r2=327083&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MCParser/AsmParser.cpp (original)
+++ llvm/trunk/lib/MC/MCParser/AsmParser.cpp Thu Mar 8 16:11:54 2018
@@ -311,11 +311,6 @@ private:
}
static void DiagHandler(const SMDiagnostic &Diag, void *Context);
- /// Should we emit DWARF describing this assembler source? (Returns false if
- /// the source has .file directives, which means we don't want to generate
- /// info describing the assembler source itself.)
- bool enabledGenDwarfForAssembly();
-
/// \brief Enter the specified file. This returns true on failure.
bool enterIncludeFile(const std::string &Filename);
@@ -829,19 +824,6 @@ const AsmToken &AsmParser::Lex() {
return *tok;
}
-bool AsmParser::enabledGenDwarfForAssembly() {
- // Check whether the user specified -g.
- if (!getContext().getGenDwarfForAssembly())
- return false;
- // If we haven't encountered any .file directives (which would imply that
- // the assembler source was produced with debug info already) then emit one
- // describing the assembler source file itself.
- if (getContext().getGenDwarfFileNumber() == 0)
- getContext().setGenDwarfFileNumber(getStreamer().EmitDwarfFileDirective(
- 0, StringRef(), getContext().getMainFileName()));
- return true;
-}
-
bool AsmParser::Run(bool NoInitialTextSection, bool NoFinalize) {
// Create the initial section, if requested.
if (!NoInitialTextSection)
@@ -855,9 +837,7 @@ bool AsmParser::Run(bool NoInitialTextSe
SmallVector<AsmRewrite, 4> AsmStrRewrites;
// If we are generating dwarf for assembly source files save the initial text
- // section. (Don't use enabledGenDwarfForAssembly() here, as we aren't
- // emitting any actual debug info yet and haven't had a chance to parse any
- // embedded .file directives.)
+ // section and generate a .file directive.
if (getContext().getGenDwarfForAssembly()) {
MCSection *Sec = getStreamer().getCurrentSectionOnly();
if (!Sec->getBeginSymbol()) {
@@ -868,6 +848,8 @@ bool AsmParser::Run(bool NoInitialTextSe
bool InsertResult = getContext().addGenDwarfSection(Sec);
assert(InsertResult && ".text section should not have debug info yet");
(void)InsertResult;
+ getContext().setGenDwarfFileNumber(getStreamer().EmitDwarfFileDirective(
+ 0, StringRef(), getContext().getMainFileName()));
}
// While we have input, parse each statement.
@@ -1802,7 +1784,7 @@ bool AsmParser::parseStatement(ParseStat
// If we are generating dwarf for assembly source files then gather the
// info to make a dwarf label entry for this label if needed.
- if (enabledGenDwarfForAssembly())
+ if (getContext().getGenDwarfForAssembly())
MCGenDwarfLabelEntry::Make(Sym, &getStreamer(), getSourceManager(),
IDLoc);
@@ -2171,7 +2153,7 @@ bool AsmParser::parseStatement(ParseStat
// If we are generating dwarf for the current section then generate a .loc
// directive for the instruction.
- if (!ParseHadError && enabledGenDwarfForAssembly() &&
+ if (!ParseHadError && getContext().getGenDwarfForAssembly() &&
getContext().getGenDwarfSectionSyms().count(
getStreamer().getCurrentSectionOnly())) {
unsigned Line;
@@ -3354,12 +3336,15 @@ bool AsmParser::parseDirectiveFile(SMLoc
}
// If there is -g option as well as debug info from directive file,
// we turn off -g option, directly use the existing debug info instead.
- getContext().setGenDwarfForAssembly(false);
- Expected<unsigned> FileNumOrErr = getStreamer().tryEmitDwarfFileDirective(
- FileNumber, Directory, Filename, CKMem, Source);
- if (!FileNumOrErr)
- return Error(DirectiveLoc, toString(FileNumOrErr.takeError()));
- FileNumber = FileNumOrErr.get();
+ if (getContext().getGenDwarfForAssembly())
+ getContext().setGenDwarfForAssembly(false);
+ else {
+ Expected<unsigned> FileNumOrErr = getStreamer().tryEmitDwarfFileDirective(
+ FileNumber, Directory, Filename, CKMem, Source);
+ if (!FileNumOrErr)
+ return Error(DirectiveLoc, toString(FileNumOrErr.takeError()));
+ FileNumber = FileNumOrErr.get();
+ }
}
return false;
Modified: llvm/trunk/test/MC/AsmParser/directive_file-2.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/AsmParser/directive_file-2.s?rev=327083&r1=327082&r2=327083&view=diff
==============================================================================
--- llvm/trunk/test/MC/AsmParser/directive_file-2.s (original)
+++ llvm/trunk/test/MC/AsmParser/directive_file-2.s Thu Mar 8 16:11:54 2018
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -g -triple i386-unknown-unknown %s | FileCheck %s
+// RUN: llvm-mc -triple i386-unknown-unknown %s | FileCheck %s
// Test for Bug 11740
// This testcase has two directive files,
// when compiled with -g, this testcase will not report error,
More information about the llvm-commits
mailing list