[PATCH] D19289: MarkEOLs should only be true for clang-cl.exe.
Stephen Hines via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 19 17:38:51 PDT 2016
This revision was automatically updated to reflect the committed changes.
Closed by commit rL266840: MarkEOLs should only be true for clang-cl.exe. (authored by srhines).
Changed prior to commit:
http://reviews.llvm.org/D19289?vs=54276&id=54302#toc
Repository:
rL LLVM
http://reviews.llvm.org/D19289
Files:
cfe/trunk/test/Driver/response-file-extra-whitespace.c
cfe/trunk/test/Driver/response-file.c
cfe/trunk/tools/driver/driver.cpp
Index: cfe/trunk/test/Driver/response-file-extra-whitespace.c
===================================================================
--- cfe/trunk/test/Driver/response-file-extra-whitespace.c
+++ cfe/trunk/test/Driver/response-file-extra-whitespace.c
@@ -0,0 +1,12 @@
+// Check that clang is able to process response files with extra whitespace.
+// We generate a dos-style file with \r\n for line endings, and then split
+// some joined arguments (like "-x c") across lines to ensure that regular
+// clang (not clang-cl) can process it correctly.
+//
+// RUN: echo -en "-x\r\nc\r\n-DTEST\r\n" > %t.0.txt
+// RUN: %clang -E @%t.0.txt %s -v 2>&1 | FileCheck %s -check-prefix=SHORT
+// SHORT: extern int it_works;
+
+#ifdef TEST
+extern int it_works;
+#endif
Index: cfe/trunk/test/Driver/response-file.c
===================================================================
--- cfe/trunk/test/Driver/response-file.c
+++ cfe/trunk/test/Driver/response-file.c
@@ -4,7 +4,7 @@
// Since this is a short response file, clang must not use a response file
// to pass its parameters to other tools. This is only necessary for a large
// number of parameters.
-// RUN: echo "-DTEST" >> %t.0.txt
+// RUN: echo "-DTEST" > %t.0.txt
// RUN: %clang -E @%t.0.txt %s -v 2>&1 | FileCheck %s -check-prefix=SHORT
// SHORT-NOT: Arguments passed via response file
// SHORT: extern int it_works;
Index: cfe/trunk/tools/driver/driver.cpp
===================================================================
--- cfe/trunk/tools/driver/driver.cpp
+++ cfe/trunk/tools/driver/driver.cpp
@@ -338,18 +338,26 @@
// have to manually search for a --driver-mode=cl argument the hard way.
// Finally, our -cc1 tools don't care which tokenization mode we use because
// response files written by clang will tokenize the same way in either mode.
- llvm::cl::TokenizerCallback Tokenizer = &llvm::cl::TokenizeGNUCommandLine;
+ bool ClangCLMode = false;
if (TargetAndMode.second == "--driver-mode=cl" ||
std::find_if(argv.begin(), argv.end(), [](const char *F) {
return F && strcmp(F, "--driver-mode=cl") == 0;
}) != argv.end()) {
- Tokenizer = &llvm::cl::TokenizeWindowsCommandLine;
+ ClangCLMode = true;
}
// Determines whether we want nullptr markers in argv to indicate response
- // files end-of-lines. We only use this for the /LINK driver argument.
- bool MarkEOLs = true;
- if (argv.size() > 1 && StringRef(argv[1]).startswith("-cc1"))
+ // files end-of-lines. We only use this for the /LINK driver argument with
+ // clang-cl.exe on Windows.
+ bool MarkEOLs = false;
+
+ llvm::cl::TokenizerCallback Tokenizer = &llvm::cl::TokenizeGNUCommandLine;
+ if (ClangCLMode) {
+ Tokenizer = &llvm::cl::TokenizeWindowsCommandLine;
+ MarkEOLs = true;
+ }
+
+ if (MarkEOLs && argv.size() > 1 && StringRef(argv[1]).startswith("-cc1"))
MarkEOLs = false;
llvm::cl::ExpandResponseFiles(Saver, Tokenizer, argv, MarkEOLs);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D19289.54302.patch
Type: text/x-patch
Size: 2950 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160420/43f3d826/attachment.bin>
More information about the llvm-commits
mailing list