diff options
| -rw-r--r-- | llvm/lib/MC/MCParser/AsmParser.cpp | 9 | ||||
| -rw-r--r-- | llvm/test/MC/AsmParser/directive_file-2.s | 11 | ||||
| -rw-r--r-- | llvm/test/MC/AsmParser/directive_file-errors.s | 9 |
3 files changed, 15 insertions, 14 deletions
diff --git a/llvm/lib/MC/MCParser/AsmParser.cpp b/llvm/lib/MC/MCParser/AsmParser.cpp index 7da00e89d78..5de8c7d603a 100644 --- a/llvm/lib/MC/MCParser/AsmParser.cpp +++ b/llvm/lib/MC/MCParser/AsmParser.cpp @@ -3001,12 +3001,11 @@ bool AsmParser::parseDirectiveFile(SMLoc DirectiveLoc) { if (FileNumber == -1) getStreamer().EmitFileDirective(Filename); else { + // 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. if (getContext().getGenDwarfForAssembly()) - 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) == + getContext().setGenDwarfForAssembly(false); + else if (getStreamer().EmitDwarfFileDirective(FileNumber, Directory, Filename) == 0) Error(FileNumberLoc, "file number already allocated"); } diff --git a/llvm/test/MC/AsmParser/directive_file-2.s b/llvm/test/MC/AsmParser/directive_file-2.s new file mode 100644 index 00000000000..ff6df5116ad --- /dev/null +++ b/llvm/test/MC/AsmParser/directive_file-2.s @@ -0,0 +1,11 @@ +// 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, +// but keep the debug info existing in the assembly file. + + .file "hello" + .file 1 "world" + +// CHECK: .file "hello" +// CHECK: .file 1 "world" diff --git a/llvm/test/MC/AsmParser/directive_file-errors.s b/llvm/test/MC/AsmParser/directive_file-errors.s deleted file mode 100644 index 5ae2bbe8005..00000000000 --- a/llvm/test/MC/AsmParser/directive_file-errors.s +++ /dev/null @@ -1,9 +0,0 @@ -// 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 |

