[clang] 5cff68f - [Module] Respect `-fno-pch-timestamps` when building modules

Steven Wu via cfe-commits cfe-commits at lists.llvm.org
Wed Feb 1 10:34:46 PST 2023


Author: Steven Wu
Date: 2023-02-01T10:34:35-08:00
New Revision: 5cff68fca0bc21ccad20cc7c8fb9845e32b4c925

URL: https://github.com/llvm/llvm-project/commit/5cff68fca0bc21ccad20cc7c8fb9845e32b4c925
DIFF: https://github.com/llvm/llvm-project/commit/5cff68fca0bc21ccad20cc7c8fb9845e32b4c925.diff

LOG: [Module] Respect `-fno-pch-timestamps` when building modules

Always respect the FrontendOption to not include timestamps in PCH or
Modules when `-fno-pch-timestamps` is specified.

Reviewed By: benlangmuir

Differential Revision: https://reviews.llvm.org/D141632

Added: 
    clang/test/Modules/timestamps.c

Modified: 
    clang/lib/Frontend/FrontendActions.cpp

Removed: 
    


################################################################################
diff  --git a/clang/lib/Frontend/FrontendActions.cpp b/clang/lib/Frontend/FrontendActions.cpp
index 2d81178fa60e2..b5e868fd67687 100644
--- a/clang/lib/Frontend/FrontendActions.cpp
+++ b/clang/lib/Frontend/FrontendActions.cpp
@@ -202,7 +202,8 @@ GenerateModuleAction::CreateASTConsumer(CompilerInstance &CI,
       /*AllowASTWithErrors=*/
       +CI.getFrontendOpts().AllowPCMWithCompilerErrors,
       /*IncludeTimestamps=*/
-      +CI.getFrontendOpts().BuildingImplicitModule,
+      +CI.getFrontendOpts().BuildingImplicitModule &&
+          +CI.getFrontendOpts().IncludeTimestamps,
       /*ShouldCacheASTInMemory=*/
       +CI.getFrontendOpts().BuildingImplicitModule));
   Consumers.push_back(CI.getPCHContainerWriter().CreatePCHContainerGenerator(

diff  --git a/clang/test/Modules/timestamps.c b/clang/test/Modules/timestamps.c
new file mode 100644
index 0000000000000..5315750b81590
--- /dev/null
+++ b/clang/test/Modules/timestamps.c
@@ -0,0 +1,30 @@
+/// Verify timestamps that gets embedded in the module
+#include <c-header.h>
+
+// RUN: rm -rf %t
+// RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fdisable-module-hash \
+// RUN:   -fmodules-cache-path=%t -I %S/Inputs %s
+// RUN: cp %t/c_library.pcm %t1.pcm
+// RUN: llvm-bcanalyzer --dump --disable-histogram %t1.pcm > %t1.dump
+// RUN: FileCheck %s --check-prefix=CHECK --check-prefix=TIMESTAMP --input-file %t1.dump
+// RUN: rm -rf %t
+// RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fdisable-module-hash \
+// RUN:   -fmodules-cache-path=%t -I %S/Inputs -fno-pch-timestamp %s
+// RUN: cp %t/c_library.pcm %t2.pcm
+// RUN: llvm-bcanalyzer --dump --disable-histogram %t2.pcm > %t2.dump
+// RUN: FileCheck %s --check-prefix=CHECK --check-prefix=NOTIMESTAMP --input-file %t2.dump
+// RUN: not 
diff  %t1.dump %t2.dump
+
+
+// CHECK: <INPUT_FILES_BLOCK NumWords=[[#]] BlockCodeSize=[[#]]>
+// CHECK-NEXT: <INPUT_FILE abbrevid=4 op0=1 op1=[[#]]
+// TIMESTAMP-NOT: op2=0
+// NOTIMESTAMP: op2=0
+// CHECK-SAME: blob data = 'module.map'
+// CHECK-NEXT: <INPUT_FILE_HASH abbrevid=[[#]] op0=[[#]] op1=[[#]]/>
+// CHECK-NEXT: <INPUT_FILE abbrevid=4 op0=2 op1=[[#]]
+// TIMESTAMP-NOT: op2=0
+// NOTIMESTAMP: op2=0
+// CHECK-SAME: blob data = 'c-header.h'
+// CHECK-NEXT: <INPUT_FILE_HASH abbrevid=[[#]] op0=[[#]] op1=[[#]]/>
+// CHECK-NEXT: </INPUT_FILES_BLOCK>


        


More information about the cfe-commits mailing list