This addresses an issue with how the PCH preable works, specifically: 1. When using a PCH/preamble the module hash changes and a different cache directory is used 2. When the preamble is used, PCH & PCM validation is disabled. Due to combination of #1 and #2, reparsing with preamble enabled can end up loading a stale module file before a header change and using it without updating it because validation is disabled and it doesn’t check that the header has changed and the module file is out-of-date. rdar://72611253 Differential Revision: https://reviews.llvm.org/D95159
19 lines
614 B
Objective-C
19 lines
614 B
Objective-C
// REQUIRES: shell
|
|
|
|
// RUN: mkdir -p %t/mod
|
|
// RUN: touch %t/empty.h
|
|
// RUN: cp %S/Inputs/preamble-reparse-changed-module/module.modulemap %t/mod
|
|
// RUN: cp %S/Inputs/preamble-reparse-changed-module/head.h %t/mod
|
|
|
|
// RUN: env CINDEXTEST_EDITING=1 CINDEXTEST_EXECUTE_COMMAND="cp %S/Inputs/preamble-reparse-changed-module/new-head.h %t/mod/head.h" CINDEXTEST_EXECUTE_AFTER_TRIAL=1 \
|
|
// RUN: c-index-test -test-load-source-reparse 3 local %s -I %t -I %t/mod -fmodules -fmodules-cache-path=%t/mcp 2>&1 | FileCheck %s
|
|
|
|
// CHECK-NOT: warning:
|
|
|
|
#include "empty.h"
|
|
@import mod;
|
|
|
|
void test(I *o) {
|
|
[o call_me_new];
|
|
}
|