summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/lib/MC/MCParser/AsmParser.cpp9
-rw-r--r--llvm/test/MC/AsmParser/directive_file-2.s11
-rw-r--r--llvm/test/MC/AsmParser/directive_file-errors.s9
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
OpenPOWER on IntegriCloud