The error check for using -g with a .s file already containing dwarf .file

directives was in the wrong place and getting triggered incorectly with a
cpp .file directive.  This change fixes that and adds a test case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147951 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Kevin Enderby
2012-01-11 18:04:47 +00:00
parent 46df3adb4e
commit 8704b7897d
2 changed files with 13 additions and 4 deletions

View File

@@ -2424,13 +2424,13 @@ bool GenericAsmParser::ParseDirectiveFile(StringRef, SMLoc DirectiveLoc) {
if (getLexer().isNot(AsmToken::EndOfStatement))
return TokError("unexpected token in '.file' directive");
if (getContext().getGenDwarfForAssembly() == true)
Error(DirectiveLoc, "input can't have .file dwarf directives when -g is "
"used to generate dwarf debug info for assembly code");
if (FileNumber == -1)
getStreamer().EmitFileDirective(Filename);
else {
if (getContext().getGenDwarfForAssembly() == true)
Error(DirectiveLoc, "input can't have .file dwarf directives when -g is "
"used to generate dwarf debug info for assembly code");
if (getStreamer().EmitDwarfFileDirective(FileNumber, Directory, Filename))
Error(FileNumberLoc, "file number already allocated");
}