Use gcc's rules for parsing gcc-style response files
authorNico Weber <nicolasweber@gmx.de>
Tue, 26 Apr 2016 13:53:56 +0000 (13:53 +0000)
committerNico Weber <nicolasweber@gmx.de>
Tue, 26 Apr 2016 13:53:56 +0000 (13:53 +0000)
commitfa7f4898a9acebeb9b3927d53efdede863de0860
tree53b390ea8153bb0e70810933966ee44bbd511afe
parent9e32e4fe860534c1002d65e913287e309582d97c
Use gcc's rules for parsing gcc-style response files

In gcc, \ escapes every character in response files. It is true that this makes
it harder to mention Windows files in rsp files, but not doing this means clang
disagrees with gcc, and also disagrees with the shell (on non-Windows) which
rsp file quoting is supposed to match. clang isn't free to choose what to do
here.

In general, the idea for response files is to take bits of your command line
and write them to a file unchanged, and have things work the same way. Since
the command line would've been interpreted by the shell, things in the rsp file
need to be subject to the same shell quoting rules.

People who want to put Windows-style paths in their response files either need
to do any of:
* escape their backslashes
* or use clang-cl which uses cl.exe/cmd.exe quoting rules
* pass --rsp-quoting=windows to clang to tell it to use
  cl.exe/cmd.exe quoting rules for response files.

Fixes PR27464.
http://reviews.llvm.org/D19417

llvm-svn: 267556
llvm/lib/Support/CommandLine.cpp
llvm/unittests/Support/CommandLineTest.cpp