Lgtm On Wed, Sep 12, 2018 at 3:23 AM Dávid Bolvanský via Phabricator < revi...@reviews.llvm.org> wrote:
> xbolva00 updated this revision to Diff 165052. > xbolva00 added a comment. > > - Fixed failing test > > > https://reviews.llvm.org/D51847 > > Files: > lib/Frontend/DependencyFile.cpp > test/Frontend/dependency-gen-escaping.c > > > Index: test/Frontend/dependency-gen-escaping.c > =================================================================== > --- test/Frontend/dependency-gen-escaping.c > +++ test/Frontend/dependency-gen-escaping.c > @@ -21,7 +21,7 @@ > // Backslash followed by # or space should escape both characters, because > // that's what GNU Make wants. GCC does the right thing with space, but > not > // #, so Clang does too. (There should be 3 backslashes before the #.) > -// SEP2F: a\b\\#c\\\ d.h > +// SEP2F: a{{[/\\]}}b{{[/\\]}}\#c{{/|\\\\}}\ d.h > // With -fms-compatibility, Backslashes in #include are treated as path > separators. > // Backslashes are given in the emission for special characters, like > 0x20 or 0x23. > // SEP5C: a{{[/\\]}}b{{[/\\]}}\#c{{/|\\\\}}\ d.h > Index: lib/Frontend/DependencyFile.cpp > =================================================================== > --- lib/Frontend/DependencyFile.cpp > +++ lib/Frontend/DependencyFile.cpp > @@ -386,28 +386,32 @@ > /// for Windows file-naming info. > static void PrintFilename(raw_ostream &OS, StringRef Filename, > DependencyOutputFormat OutputFormat) { > + // Convert filename to platform native path > + llvm::SmallString<256> NativePath; > + llvm::sys::path::native(Filename.str(), NativePath); > + > if (OutputFormat == DependencyOutputFormat::NMake) { > // Add quotes if needed. These are the characters listed as "special" > to > // NMake, that are legal in a Windows filespec, and that could cause > // misinterpretation of the dependency string. > - if (Filename.find_first_of(" #${}^!") != StringRef::npos) > - OS << '\"' << Filename << '\"'; > + if (NativePath.find_first_of(" #${}^!") != StringRef::npos) > + OS << '\"' << NativePath << '\"'; > else > - OS << Filename; > + OS << NativePath; > return; > } > assert(OutputFormat == DependencyOutputFormat::Make); > - for (unsigned i = 0, e = Filename.size(); i != e; ++i) { > - if (Filename[i] == '#') // Handle '#' the broken gcc way. > + for (unsigned i = 0, e = NativePath.size(); i != e; ++i) { > + if (NativePath[i] == '#') // Handle '#' the broken gcc way. > OS << '\\'; > - else if (Filename[i] == ' ') { // Handle space correctly. > + else if (NativePath[i] == ' ') { // Handle space correctly. > OS << '\\'; > unsigned j = i; > - while (j > 0 && Filename[--j] == '\\') > + while (j > 0 && NativePath[--j] == '\\') > OS << '\\'; > - } else if (Filename[i] == '$') // $ is escaped by $$. > + } else if (NativePath[i] == '$') // $ is escaped by $$. > OS << '$'; > - OS << Filename[i]; > + OS << NativePath[i]; > } > } > > > >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits