<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">Good catch, r243727.</div><div class="">Thanks for reviewing!</div><br class=""><div><blockquote type="cite" class=""><div class="">On Jul 30, 2015, at 6:04 PM, Richard Smith <<a href="mailto:richard@metafoo.co.uk" class="">richard@metafoo.co.uk</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><div class="gmail_extra"><div class="gmail_quote">On Thu, Jul 30, 2015 at 5:58 PM, Argyrios Kyrtzidis<span class="Apple-converted-space"> </span><span dir="ltr" class=""><<a href="mailto:akyrtzi@gmail.com" target="_blank" class="">akyrtzi@gmail.com</a>></span><span class="Apple-converted-space"> </span>wrote:<br class=""><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;">Author: akirtzidis<br class="">Date: Thu Jul 30 19:58:32 2015<br class="">New Revision: 243718<br class=""><br class="">URL:<span class="Apple-converted-space"> </span><a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D243718-26view-3Drev&d=AwMFAg&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=wTJ2KuyiMlUKW1QpD8_bL3QsL2tIlq8pym-yv6CMOIY&s=vT57aqZ4fGKU8YCbpiPMeu0usvcf0x3_dOrvziri_n0&e=" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project?rev=243718&view=rev</a><br class="">Log:<br class="">[modules] Fix issue where building a module from a relative path when -working-directory option is set, results in error.<br class=""><br class="">The error was "module '<name>' was built in directory '<path>' but now resides in directory '<path>'<br class=""><a href="rdar://21330027" class="">rdar://21330027</a><br class=""><br class="">Added:<br class="">   <span class="Apple-converted-space"> </span>cfe/trunk/test/Modules/Inputs/working-dir-test/<br class="">   <span class="Apple-converted-space"> </span>cfe/trunk/test/Modules/Inputs/working-dir-test/Test.framework/<br class="">   <span class="Apple-converted-space"> </span>cfe/trunk/test/Modules/Inputs/working-dir-test/Test.framework/Headers/<br class="">   <span class="Apple-converted-space"> </span>cfe/trunk/test/Modules/Inputs/working-dir-test/Test.framework/Headers/Test.h<br class="">   <span class="Apple-converted-space"> </span>cfe/trunk/test/Modules/Inputs/working-dir-test/Test.framework/Modules/<br class="">   <span class="Apple-converted-space"> </span>cfe/trunk/test/Modules/Inputs/working-dir-test/Test.framework/Modules/module.modulemap<br class="">   <span class="Apple-converted-space"> </span>cfe/trunk/test/Modules/working-dir-flag.m<br class="">Modified:<br class="">   <span class="Apple-converted-space"> </span>cfe/trunk/include/clang/Basic/FileManager.h<br class="">   <span class="Apple-converted-space"> </span>cfe/trunk/lib/Basic/FileManager.cpp<br class="">   <span class="Apple-converted-space"> </span>cfe/trunk/lib/Serialization/ASTWriter.cpp<br class=""><br class="">Modified: cfe/trunk/include/clang/Basic/FileManager.h<br class="">URL:<span class="Apple-converted-space"> </span><a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_include_clang_Basic_FileManager.h-3Frev-3D243718-26r1-3D243717-26r2-3D243718-26view-3Ddiff&d=AwMFAg&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=wTJ2KuyiMlUKW1QpD8_bL3QsL2tIlq8pym-yv6CMOIY&s=WexRpeTjiVa3_wLTFrw3vKcI65JVR2nWipvg1JiyAzU&e=" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/FileManager.h?rev=243718&r1=243717&r2=243718&view=diff</a><br class="">==============================================================================<br class="">--- cfe/trunk/include/clang/Basic/FileManager.h (original)<br class="">+++ cfe/trunk/include/clang/Basic/FileManager.h Thu Jul 30 19:58:32 2015<br class="">@@ -254,7 +254,13 @@ public:<br class="">   /// \brief If path is not absolute and FileSystemOptions set the working<br class="">   /// directory, the path is modified to be relative to the given<br class="">   /// working directory.<br class="">-  void FixupRelativePath(SmallVectorImpl<char> &path) const;<br class="">+  /// \returns true if \c path changed.<br class="">+  bool FixupRelativePath(SmallVectorImpl<char> &path) const;<br class="">+<br class="">+  /// Makes \c Path absolute taking into account FileSystemOptions and the<br class="">+  /// working directory option.<br class="">+  /// \returns true if \c Path changed to absolute.<br class="">+  bool makeAbsolutePath(SmallVectorImpl<char> &Path) const;<br class=""><br class="">   /// \brief Produce an array mapping from the unique IDs assigned to each<br class="">   /// file to the corresponding FileEntry pointer.<br class=""><br class="">Modified: cfe/trunk/lib/Basic/FileManager.cpp<br class="">URL:<span class="Apple-converted-space"> </span><a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Basic_FileManager.cpp-3Frev-3D243718-26r1-3D243717-26r2-3D243718-26view-3Ddiff&d=AwMFAg&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=wTJ2KuyiMlUKW1QpD8_bL3QsL2tIlq8pym-yv6CMOIY&s=EZP1iVfuzGE6knWSA6bv-3xOyzLY7snWsCLWuhPSWpM&e=" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/FileManager.cpp?rev=243718&r1=243717&r2=243718&view=diff</a><br class="">==============================================================================<br class="">--- cfe/trunk/lib/Basic/FileManager.cpp (original)<br class="">+++ cfe/trunk/lib/Basic/FileManager.cpp Thu Jul 30 19:58:32 2015<br class="">@@ -389,16 +389,28 @@ FileManager::getVirtualFile(StringRef Fi<br class="">   return UFE;<br class=""> }<br class=""><br class="">-void FileManager::FixupRelativePath(SmallVectorImpl<char> &path) const {<br class="">+bool FileManager::FixupRelativePath(SmallVectorImpl<char> &path) const {<br class="">   StringRef pathRef(path.data(), path.size());<br class=""><br class="">   if (FileSystemOpts.WorkingDir.empty()<br class="">       || llvm::sys::path::is_absolute(pathRef))<br class="">-    return;<br class="">+    return false;<br class=""><br class="">   SmallString<128> NewPath(FileSystemOpts.WorkingDir);<br class="">   llvm::sys::path::append(NewPath, pathRef);<br class="">   path = NewPath;<br class="">+  return true;<br class="">+}<br class="">+<br class="">+bool FileManager::makeAbsolutePath(SmallVectorImpl<char> &Path) const {<br class="">+  bool Changed = FixupRelativePath(Path);<br class="">+<br class="">+  if (!llvm::sys::path::is_absolute(StringRef(Path.data(), Path.size()))) {<br class="">+    llvm::sys::fs::make_absolute(Path);<br class="">+    Changed = true;<br class="">+  }<br class="">+<br class="">+  return Changed;<br class=""> }<br class=""><br class=""> llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>><br class=""><br class="">Modified: cfe/trunk/lib/Serialization/ASTWriter.cpp<br class="">URL:<span class="Apple-converted-space"> </span><a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Serialization_ASTWriter.cpp-3Frev-3D243718-26r1-3D243717-26r2-3D243718-26view-3Ddiff&d=AwMFAg&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=wTJ2KuyiMlUKW1QpD8_bL3QsL2tIlq8pym-yv6CMOIY&s=emPsCdDNmo_lrqWf-BQCGR-xjYOyLerHuEYxwyOApmw&e=" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTWriter.cpp?rev=243718&r1=243717&r2=243718&view=diff</a><br class="">==============================================================================<br class="">--- cfe/trunk/lib/Serialization/ASTWriter.cpp (original)<br class="">+++ cfe/trunk/lib/Serialization/ASTWriter.cpp Thu Jul 30 19:58:32 2015<br class="">@@ -1074,14 +1074,7 @@ void ASTWriter::WriteBlockInfoBlock() {<br class=""> /// \return \c true if the path was changed.<br class=""> static bool cleanPathForOutput(FileManager &FileMgr,<br class="">                               <span class="Apple-converted-space"> </span>SmallVectorImpl<char> &Path) {<br class="">-  bool Changed = false;<br class="">-<br class="">-  if (!llvm::sys::path::is_absolute(StringRef(Path.data(), Path.size()))) {<br class="">-    llvm::sys::fs::make_absolute(Path);<br class="">-    Changed = true;<br class="">-  }<br class="">-<br class="">-  return Changed | FileMgr.removeDotPaths(Path);<br class="">+  return FileMgr.makeAbsolutePath(Path) | FileMgr.removeDotPaths(Path);<br class=""></blockquote><div class=""><br class=""></div><div class="">These two operations are unsequenced, and I suspect the order in which they're performed matters...</div><div class=""> </div><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;"> }<br class=""><br class=""> /// \brief Adjusts the given filename to only write out the portion of the<br class="">@@ -1429,7 +1422,7 @@ void ASTWriter::WriteControlBlock(Prepro<br class=""><br class="">     SmallString<128> OutputPath(OutputFile);<br class=""><br class="">-    llvm::sys::fs::make_absolute(OutputPath);<br class="">+    SM.getFileManager().makeAbsolutePath(OutputPath);<br class="">     StringRef origDir = llvm::sys::path::parent_path(OutputPath);<br class=""><br class="">     RecordData Record;<br class=""><br class="">Added: cfe/trunk/test/Modules/Inputs/working-dir-test/Test.framework/Headers/Test.h<br class="">URL:<span class="Apple-converted-space"> </span><a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_test_Modules_Inputs_working-2Ddir-2Dtest_Test.framework_Headers_Test.h-3Frev-3D243718-26view-3Dauto&d=AwMFAg&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=wTJ2KuyiMlUKW1QpD8_bL3QsL2tIlq8pym-yv6CMOIY&s=3GnIBb2ZtZ2SWlo-9zqVun9Y5axlHIpPnuw9VADaURY&e=" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/Inputs/working-dir-test/Test.framework/Headers/Test.h?rev=243718&view=auto</a><br class="">==============================================================================<br class="">--- cfe/trunk/test/Modules/Inputs/working-dir-test/Test.framework/Headers/Test.h (added)<br class="">+++ cfe/trunk/test/Modules/Inputs/working-dir-test/Test.framework/Headers/Test.h Thu Jul 30 19:58:32 2015<br class="">@@ -0,0 +1 @@<br class="">+void test_me_call(void);<br class=""><br class="">Added: cfe/trunk/test/Modules/Inputs/working-dir-test/Test.framework/Modules/module.modulemap<br class="">URL:<span class="Apple-converted-space"> </span><a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_test_Modules_Inputs_working-2Ddir-2Dtest_Test.framework_Modules_module.modulemap-3Frev-3D243718-26view-3Dauto&d=AwMFAg&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=wTJ2KuyiMlUKW1QpD8_bL3QsL2tIlq8pym-yv6CMOIY&s=TRCSeJnqBC0BfnLazRkZv10jmEt1_e0mRr04N_vlsNk&e=" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/Inputs/working-dir-test/Test.framework/Modules/module.modulemap?rev=243718&view=auto</a><br class="">==============================================================================<br class="">--- cfe/trunk/test/Modules/Inputs/working-dir-test/Test.framework/Modules/module.modulemap (added)<br class="">+++ cfe/trunk/test/Modules/Inputs/working-dir-test/Test.framework/Modules/module.modulemap Thu Jul 30 19:58:32 2015<br class="">@@ -0,0 +1,6 @@<br class="">+framework module Test {<br class="">+  umbrella header "Test.h"<br class="">+<br class="">+  export *<br class="">+  module * { export * }<br class="">+}<br class=""><br class="">Added: cfe/trunk/test/Modules/working-dir-flag.m<br class="">URL:<span class="Apple-converted-space"> </span><a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_test_Modules_working-2Ddir-2Dflag.m-3Frev-3D243718-26view-3Dauto&d=AwMFAg&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=wTJ2KuyiMlUKW1QpD8_bL3QsL2tIlq8pym-yv6CMOIY&s=DxpayDF8aXP3oQ5QpxHkJYJ6mlYdgi6yhg41JdbLsPs&e=" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/working-dir-flag.m?rev=243718&view=auto</a><br class="">==============================================================================<br class="">--- cfe/trunk/test/Modules/working-dir-flag.m (added)<br class="">+++ cfe/trunk/test/Modules/working-dir-flag.m Thu Jul 30 19:58:32 2015<br class="">@@ -0,0 +1,9 @@<br class="">+// RUN: rm -rf %t.mcp<br class="">+// RUN: %clang_cc1 -fmodules-cache-path=%t.mcp -fmodules -fimplicit-module-maps -F . -working-directory=%S/Inputs/working-dir-test %s -verify<br class="">+// expected-no-diagnostics<br class="">+<br class="">+@import Test;<br class="">+<br class="">+void foo() {<br class="">+  test_me_call();<br class="">+}<br class=""><br class=""><br class="">_______________________________________________<br class="">cfe-commits mailing list<br class=""><a href="mailto:cfe-commits@cs.uiuc.edu" class="">cfe-commits@cs.uiuc.edu</a><br class=""><a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank" class="">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a></blockquote></div></div></div></div></blockquote></div><br class=""></body></html>