<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style>
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Comment inline (Outlook handles quoting terribly, so I'm not sure how much it'll end up standing out, but I believe you typo'd "preprocessor" as " prepreocssor").<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="margin-left:.5in"><b><span style="font-size:12.0pt;color:black">From:
</span></b><span style="font-size:12.0pt;color:black">cfe-commits <cfe-commits-bounces@lists.llvm.org> on behalf of Richard Smith via cfe-commits <cfe-commits@lists.llvm.org><br>
<b>Reply-To: </b>Richard Smith <richard-llvm@metafoo.co.uk><br>
<b>Date: </b>Wednesday, October 31, 2018 at 5:49 PM<br>
<b>To: </b>"cfe-commits@lists.llvm.org" <cfe-commits@lists.llvm.org><br>
<b>Subject: </b>r345803 - Fix regression in behavior of clang -x c++-header -fmodule-name=XXX<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Author: rsmith<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Date: Wed Oct 31 17:46:54 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">New Revision: 345803<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D345803-26view-3Drev&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=fuhDqKU4xiQGQizq6Oszj5RJTGnnRK6S35y0Pk_bRcg&s=xpyBxlufGiJ3htehnYAB4PVF1WQvpPF9AR-tGM8UMfQ&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D345803-26view-3Drev&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=fuhDqKU4xiQGQizq6Oszj5RJTGnnRK6S35y0Pk_bRcg&s=xpyBxlufGiJ3htehnYAB4PVF1WQvpPF9AR-tGM8UMfQ&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Log:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Fix regression in behavior of clang -x c++-header -fmodule-name=XXX<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-fsyntax-only.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">The driver accidentally stopped passing the input filenames on to -cc1<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">in this mode due to confusion over what action was being requested.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">This change also fixes a couple of crashes I encountered when passing<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">multiple files to such a -cc1 invocation.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Added:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/test/Modules/strict-decluse-headers.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/lib/Driver/ToolChains/Clang.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/lib/Frontend/CompilerInstance.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/lib/Lex/ModuleMap.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">    cfe/trunk/test/Driver/header-module.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/lib/Driver/ToolChains/Clang.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Driver_ToolChains_Clang.cpp-3Frev-3D345803-26r1-3D345802-26r2-3D345803-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=fuhDqKU4xiQGQizq6Oszj5RJTGnnRK6S35y0Pk_bRcg&s=ffTui8JxCdjW5IP4JDgCIPKtFCLV4p96l0j4dM3OM4o&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Driver_ToolChains_Clang.cpp-3Frev-3D345803-26r1-3D345802-26r2-3D345803-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=fuhDqKU4xiQGQizq6Oszj5RJTGnnRK6S35y0Pk_bRcg&s=ffTui8JxCdjW5IP4JDgCIPKtFCLV4p96l0j4dM3OM4o&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/lib/Driver/ToolChains/Clang.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/lib/Driver/ToolChains/Clang.cpp Wed Oct 31 17:46:54 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -3250,8 +3250,6 @@ void Clang::ConstructJob(Compilation &C,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   bool IsCuda = JA.isOffloading(Action::OFK_Cuda);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   bool IsHIP = JA.isOffloading(Action::OFK_HIP);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   bool IsOpenMPDevice = JA.isDeviceOffloading(Action::OFK_OpenMP);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-  bool IsModulePrecompile =<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-      isa<PrecompileJobAction>(JA) && JA.getType() == types::TY_ModuleFile;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   bool IsHeaderModulePrecompile = isa<HeaderModulePrecompileJobAction>(JA);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   // A header module compilation doesn't have a main input file, so invent a<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -3272,7 +3270,7 @@ void Clang::ConstructJob(Compilation &C,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   for (const InputInfo &I : Inputs) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     if (&I == &Input) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       // This is the primary input.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-    } else if (IsModulePrecompile &&<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+    } else if (IsHeaderModulePrecompile &&<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">                types::getPrecompiledType(I.getType()) == types::TY_PCH) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">       types::ID Expected =<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">           types::lookupHeaderTypeForSourceType(Inputs[0].getType());<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/lib/Frontend/CompilerInstance.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Frontend_CompilerInstance.cpp-3Frev-3D345803-26r1-3D345802-26r2-3D345803-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=fuhDqKU4xiQGQizq6Oszj5RJTGnnRK6S35y0Pk_bRcg&s=KzBhYXfmPHLMrIoUboynLdE1ADPHU0qpcmI6eN5hG9w&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Frontend_CompilerInstance.cpp-3Frev-3D345803-26r1-3D345802-26r2-3D345803-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=fuhDqKU4xiQGQizq6Oszj5RJTGnnRK6S35y0Pk_bRcg&s=KzBhYXfmPHLMrIoUboynLdE1ADPHU0qpcmI6eN5hG9w&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/lib/Frontend/CompilerInstance.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/lib/Frontend/CompilerInstance.cpp Wed Oct 31 17:46:54 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -372,6 +372,9 @@ static void InitializeFileRemapping(Diag<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">void CompilerInstance::createPreprocessor(TranslationUnitKind TUKind) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   const PreprocessorOptions &PPOpts = getPreprocessorOpts();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  // The module manager holds a reference to the old prepreocssor (if any).<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I'm guessing this was meant to be "preprocessor"?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  ModuleManager.reset();<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   // Create a PTH manager if we are using some form of a token cache.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   PTHManager *PTHMgr = nullptr;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   if (!PPOpts.TokenCache.empty())<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/lib/Lex/ModuleMap.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Lex_ModuleMap.cpp-3Frev-3D345803-26r1-3D345802-26r2-3D345803-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=fuhDqKU4xiQGQizq6Oszj5RJTGnnRK6S35y0Pk_bRcg&s=nNcoGXKyPGb6zXQpXy0g-2NVm65eDiskYntWuXgkrmQ&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Lex_ModuleMap.cpp-3Frev-3D345803-26r1-3D345802-26r2-3D345803-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=fuhDqKU4xiQGQizq6Oszj5RJTGnnRK6S35y0Pk_bRcg&s=nNcoGXKyPGb6zXQpXy0g-2NVm65eDiskYntWuXgkrmQ&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/lib/Lex/ModuleMap.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/lib/Lex/ModuleMap.cpp Wed Oct 31 17:46:54 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -523,7 +523,7 @@ void ModuleMap::diagnoseHeaderInclusion(<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   // At this point, only non-modular includes remain.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">-  if (LangOpts.ModulesStrictDeclUse) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+  if (RequestingModule && LangOpts.ModulesStrictDeclUse) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">     Diags.Report(FilenameLoc, diag::err_undeclared_use_of_module)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">         << RequestingModule->getTopLevelModule()->Name << Filename;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">   } else if (RequestingModule && RequestingModuleIsModuleInterface &&<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Modified: cfe/trunk/test/Driver/header-module.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_test_Driver_header-2Dmodule.cpp-3Frev-3D345803-26r1-3D345802-26r2-3D345803-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=fuhDqKU4xiQGQizq6Oszj5RJTGnnRK6S35y0Pk_bRcg&s=NZLaogjPrzbf0BsFHDpWA5l8cTRJDs11eDYky1EWLkg&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_test_Driver_header-2Dmodule.cpp-3Frev-3D345803-26r1-3D345802-26r2-3D345803-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=fuhDqKU4xiQGQizq6Oszj5RJTGnnRK6S35y0Pk_bRcg&s=NZLaogjPrzbf0BsFHDpWA5l8cTRJDs11eDYky1EWLkg&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/test/Driver/header-module.cpp (original)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/test/Driver/header-module.cpp Wed Oct 31 17:46:54 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -11,3 +11,14 @@<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">// CHECK-PRECOMPILE-SAME: header1.h<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">// CHECK-PRECOMPILE-SAME: header2.h<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">// CHECK-PRECOMPILE-SAME: header3.h<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+//<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+// RUN: %clang -fmodules-ts -fmodule-name=foobar -x c++-header -fsyntax-only %S/Inputs/header1.h %S/Inputs/header2.h %S/Inputs/header3.h -v 2>&1 | FileCheck %s --check-prefix=CHECK-SYNTAX-ONLY<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+// CHECK-SYNTAX-ONLY: -cc1 {{.*}} -fsyntax-only<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+// CHECK-SYNTAX-ONLY-SAME: -fmodules-ts<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+// CHECK-SYNTAX-ONLY-SAME: -fno-implicit-modules<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+// CHECK-SYNTAX-ONLY-SAME: -fmodule-name=foobar<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+// CHECK-SYNTAX-ONLY-NOT: -o{{ }}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+// CHECK-SYNTAX-ONLY-SAME: -x c++<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+// CHECK-SYNTAX-ONLY-SAME: header1.h<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+// CHECK-SYNTAX-ONLY-SAME: header2.h<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+// CHECK-SYNTAX-ONLY-SAME: header3.h<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Added: cfe/trunk/test/Modules/strict-decluse-headers.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_test_Modules_strict-2Ddecluse-2Dheaders.cpp-3Frev-3D345803-26view-3Dauto&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=fuhDqKU4xiQGQizq6Oszj5RJTGnnRK6S35y0Pk_bRcg&s=J0oYrXB66AueyeEEv8WPnwoGPl1lemvbwRTcoLhC5wA&e=">
https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_test_Modules_strict-2Ddecluse-2Dheaders.cpp-3Frev-3D345803-26view-3Dauto&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=fuhDqKU4xiQGQizq6Oszj5RJTGnnRK6S35y0Pk_bRcg&s=J0oYrXB66AueyeEEv8WPnwoGPl1lemvbwRTcoLhC5wA&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">==============================================================================<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">--- cfe/trunk/test/Modules/strict-decluse-headers.cpp (added)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+++ cfe/trunk/test/Modules/strict-decluse-headers.cpp Wed Oct 31 17:46:54 2018<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">@@ -0,0 +1,17 @@<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+// RUN: rm -rf %t<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+// RUN: mkdir %t<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+// RUN: touch %t/foo.h<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+// RUN: echo '#include "foo.h"' > %t/bar.h<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+// RUN: touch %t/baz.h<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+// RUN: echo 'module X { header "bar.h" header "baz.h" }' > %t/map<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+//<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+// RUN: not %clang_cc1 -fsyntax-only -fmodules -fmodule-map-file=%t/map -I%t -fmodules-strict-decluse -fmodule-name=X -x c++ %t/bar.h %t/baz.h 2>&1 | FileCheck %s<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+// RUN: not %clang_cc1 -fsyntax-only -fmodules -fmodule-map-file=%t/map -I%t -fmodules-strict-decluse -fmodule-name=X -x c++ %t/baz.h %t/bar.h 2>&1 | FileCheck %s<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+//<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+// Don't crash on this: (FIXME: we should produce an error that the specified module name is not known)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+// RUN: %clang_cc1 -fsyntax-only -fmodules -I%t -fmodules-strict-decluse -fmodule-name=X -x c++ %t/baz.h %t/bar.h<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+//<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+// Don't crash on this: (FIXME: we should produce an error that the specified file is not part of the specified module)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+// RUN: %clang_cc1 -fsyntax-only -fmodules -fmodule-map-file=%t/map -I%t -fmodules-strict-decluse -fmodule-name=X -x c++ %t/foo.h<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+//<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">+// CHECK: module X does not depend on a module exporting 'foo.h'<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">_______________________________________________<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">cfe-commits mailing list<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><a href="mailto:cfe-commits@lists.llvm.org">cfe-commits@lists.llvm.org</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_cfe-2Dcommits&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=fuhDqKU4xiQGQizq6Oszj5RJTGnnRK6S35y0Pk_bRcg&s=9N-FCRVsXGX1zREUCH5S_6grC4c09So-ZYXshtWepWI&e=">https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_cfe-2Dcommits&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=fuhDqKU4xiQGQizq6Oszj5RJTGnnRK6S35y0Pk_bRcg&s=9N-FCRVsXGX1zREUCH5S_6grC4c09So-ZYXshtWepWI&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
</div>
</body>
</html>