aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2010-09-17 00:41:18 +0000
committerTed Kremenek <kremenek@apple.com>2010-09-17 00:41:18 +0000
commit2346513da49f0a3e4f0deaf198e708d18390b41e (patch)
tree0294a4e98cf9272e9252219a0e7847c227235ede
parent2008feead855f08500fb01ff43ef5eebee05d1e5 (diff)
Handle '#line' in '-E' that has an empty file name. Fixes <rdar://problem/8439412>.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114142 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Frontend/PrintPreprocessedOutput.cpp4
-rw-r--r--test/Preprocessor/print_line_empty_file.c12
2 files changed, 14 insertions, 2 deletions
diff --git a/lib/Frontend/PrintPreprocessedOutput.cpp b/lib/Frontend/PrintPreprocessedOutput.cpp
index d0aef2918c..00ab3c3176 100644
--- a/lib/Frontend/PrintPreprocessedOutput.cpp
+++ b/lib/Frontend/PrintPreprocessedOutput.cpp
@@ -164,11 +164,11 @@ void PrintPPOutputPPCallbacks::WriteLineInfo(unsigned LineNo,
// Emit #line directives or GNU line markers depending on what mode we're in.
if (UseLineDirective) {
OS << "#line" << ' ' << LineNo << ' ' << '"';
- OS.write(&CurFilename[0], CurFilename.size());
+ OS.write(CurFilename.data(), CurFilename.size());
OS << '"';
} else {
OS << '#' << ' ' << LineNo << ' ' << '"';
- OS.write(&CurFilename[0], CurFilename.size());
+ OS.write(CurFilename.data(), CurFilename.size());
OS << '"';
if (ExtraLen)
diff --git a/test/Preprocessor/print_line_empty_file.c b/test/Preprocessor/print_line_empty_file.c
new file mode 100644
index 0000000000..333896ee43
--- /dev/null
+++ b/test/Preprocessor/print_line_empty_file.c
@@ -0,0 +1,12 @@
+// RUN: %clang -E %s | FileCheck %s
+
+#line 21 ""
+int foo() { return 42; }
+
+#line 4 "bug.c"
+int bar() { return 21; }
+
+// CHECK: # 21 ""
+// CHECK: int foo() { return 42; }
+// CHECK: # 4 "bug.c"
+// CHECK: int bar() { return 21; }