r338503 - [Modules] Do not emit relocation error when -fno-validate-pch is set
Yuka Takahashi via cfe-commits
cfe-commits at lists.llvm.org
Wed Aug 1 02:50:02 PDT 2018
Author: yamaguchi
Date: Wed Aug 1 02:50:02 2018
New Revision: 338503
URL: http://llvm.org/viewvc/llvm-project?rev=338503&view=rev
Log:
[Modules] Do not emit relocation error when -fno-validate-pch is set
Summary:
Clang emits error when implicit modules was relocated from the
first build directory. However this was biting our usecase where we copy
the contents of build directory to another directory in order to
distribute.
Differential Revision: https://reviews.llvm.org/D49852
Modified:
cfe/trunk/lib/Serialization/ASTReader.cpp
cfe/trunk/test/Modules/resolution-change.m
Modified: cfe/trunk/lib/Serialization/ASTReader.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTReader.cpp?rev=338503&r1=338502&r2=338503&view=diff
==============================================================================
--- cfe/trunk/lib/Serialization/ASTReader.cpp (original)
+++ cfe/trunk/lib/Serialization/ASTReader.cpp Wed Aug 1 02:50:02 2018
@@ -2632,7 +2632,9 @@ ASTReader::ReadControlBlock(ModuleFile &
if (M && M->Directory) {
// If we're implicitly loading a module, the base directory can't
// change between the build and use.
- if (F.Kind != MK_ExplicitModule && F.Kind != MK_PrebuiltModule) {
+ // Don't emit module relocation error if we have -fno-validate-pch
+ if (!PP.getPreprocessorOpts().DisablePCHValidation &&
+ F.Kind != MK_ExplicitModule && F.Kind != MK_PrebuiltModule) {
const DirectoryEntry *BuildDir =
PP.getFileManager().getDirectory(Blob);
if (!BuildDir || BuildDir != M->Directory) {
@@ -3602,7 +3604,8 @@ ASTReader::ReadModuleMapFileBlock(Record
Module *M = PP.getHeaderSearchInfo().lookupModule(F.ModuleName);
auto &Map = PP.getHeaderSearchInfo().getModuleMap();
const FileEntry *ModMap = M ? Map.getModuleMapFileForUniquing(M) : nullptr;
- if (!ModMap) {
+ // Don't emit module relocation error if we have -fno-validate-pch
+ if (!PP.getPreprocessorOpts().DisablePCHValidation && !ModMap) {
assert(ImportedBy && "top-level import should be verified");
if ((ClientLoadCapabilities & ARR_OutOfDate) == 0) {
if (auto *ASTFE = M ? M->getASTFile() : nullptr) {
@@ -5039,7 +5042,9 @@ ASTReader::ReadSubmoduleBlock(ModuleFile
if (!ParentModule) {
if (const FileEntry *CurFile = CurrentModule->getASTFile()) {
- if (CurFile != F.File) {
+ // Don't emit module relocation error if we have -fno-validate-pch
+ if (!PP.getPreprocessorOpts().DisablePCHValidation &&
+ CurFile != F.File) {
if (!Diags.isDiagnosticInFlight()) {
Diag(diag::err_module_file_conflict)
<< CurrentModule->getTopLevelModuleName()
Modified: cfe/trunk/test/Modules/resolution-change.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/resolution-change.m?rev=338503&r1=338502&r2=338503&view=diff
==============================================================================
--- cfe/trunk/test/Modules/resolution-change.m (original)
+++ cfe/trunk/test/Modules/resolution-change.m Wed Aug 1 02:50:02 2018
@@ -21,6 +21,8 @@
// RUN: not %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I %S/Inputs/modules-with-same-name/DependsOnA -I %S/Inputs/modules-with-same-name/path2/A -include-pch %t-A.pch %s -fsyntax-only 2>&1 | FileCheck -check-prefix=CHECK-WRONGA %s
// CHECK-WRONGA: module 'A' was built in directory '{{.*Inputs.modules-with-same-name.path1.A}}' but now resides in directory '{{.*Inputs.modules-with-same-name.path2.A}}'
+// RUN: %clang_cc1 -fno-validate-pch -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I %S/Inputs/modules-with-same-name/DependsOnA -I %S/Inputs/modules-with-same-name/path2/A -include-pch %t-A.pch %s -fsyntax-only
+
#ifndef HEADER
#define HEADER
@import DependsOnA;
More information about the cfe-commits
mailing list