mstorsjo added inline comments.

================
Comment at: lib/Driver/Job.cpp:104-105
+  std::string Buf;
+  if (PathStyle == llvm::sys::path::Style::posix) {
+    Buf = llvm::sys::path::convert_to_slash(Arg);
+    Arg = Buf;
----------------
rnk wrote:
> mstorsjo wrote:
> > rnk wrote:
> > > This is blindly treating every argument as if it were a path. I can 
> > > imagine someone wanting to define a macro to a string value containing 
> > > backslashes, such as: `-DAWESOME_MACRO="\"asdf\""`
> > > Given that this is used for -### and crash diagnostic printing, I'm 
> > > hesitant to do this here. I think it might be better to, in a cygming 
> > > environment, try to convert all our paths to forward slashes before we 
> > > add them to the command line.
> > A quick test of the concept is at 
> > http://martin.st/temp/clang-forward-slash.patch; this seems to be roughly 
> > enough to get forward slashes for all paths in the linker command at least. 
> > Does this look like what you have in mind?
> > 
> > For a plain "clang -v test.c", this takes care of everything except the 
> > temporary object file. It doesn't do anything for the compile command 
> > though. This should be roughly the minimal amount needed for this 
> > particular case of libtool, but then again makes the -v output wildly 
> > inconsistent.
> > 
> > Changing the path separator earlier would kinda require changing the 
> > preferred path separator throughout all callsites to any path api, or 
> > change the path utils to allow overriding the global default somehow.
> I think our output is already pretty inconsistent. Most build systems use 
> forward slash paths internally, so that's what the compiler sees on the 
> command line. Then, we dutifully take those paths and join them with the 
> "preferred" separator (`\`), and make paths with mixed slashes, which nobody 
> wants.
> 
> I would go with the patch you put forward, if that solves the issue. 
> Everything there is very gnu toolchain oriented, it makes sense to try to 
> match their path style.
> 
> The one change I might object to is `ToolChain::GetProgramPath`, since cmd 
> really wants the name of the program to have back slashes. As long as that 
> comes out with backslashes in -### and crash report .sh files, I'd be OK with 
> it.
Ok, thanks - I'll test run things with that patch (minus the executable change) 
and update this review properly later then.


Repository:
  rC Clang

https://reviews.llvm.org/D53066



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to