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");
}

View File

@ -0,0 +1,9 @@
// RUN: not llvm-mc -g -triple i386-unknown-unknown %s 2> %t.err | FileCheck %s
// RUN: FileCheck --check-prefix=CHECK-ERRORS %s < %t.err
// Test for Bug 11740
.file "hello"
.file 1 "world"
// CHECK: .file "hello"
// CHECK-ERRORS:6:9: error: input can't have .file dwarf directives when -g is used to generate dwarf debug info for assembly code