[clang] e3f5269 - [NFC] [C++20] [Modules] Add a test for no transitive changes
Chuanqi Xu via cfe-commits
cfe-commits at lists.llvm.org
Thu Feb 27 02:52:07 PST 2025
Author: Chuanqi Xu
Date: 2025-02-27T18:51:39+08:00
New Revision: e3f52690c796baca241a6771d897adc6670a1ed8
URL: https://github.com/llvm/llvm-project/commit/e3f52690c796baca241a6771d897adc6670a1ed8
DIFF: https://github.com/llvm/llvm-project/commit/e3f52690c796baca241a6771d897adc6670a1ed8.diff
LOG: [NFC] [C++20] [Modules] Add a test for no transitive changes
Added:
clang/test/Modules/no-transitive-source-location-change-2.cppm
Modified:
Removed:
################################################################################
diff --git a/clang/test/Modules/no-transitive-source-location-change-2.cppm b/clang/test/Modules/no-transitive-source-location-change-2.cppm
new file mode 100644
index 0000000000000..f16b945a04d69
--- /dev/null
+++ b/clang/test/Modules/no-transitive-source-location-change-2.cppm
@@ -0,0 +1,66 @@
+// Testing that adding a new line in a module interface unit won't cause the BMI
+// of consuming module unit changes.
+//
+// RUN: rm -rf %t
+// RUN: split-file %s %t
+//
+// RUN: %clang_cc1 -std=c++20 %t/A.part.cppm -emit-reduced-module-interface -o %t/A-part.pcm
+//
+// RUN: %clang_cc1 -std=c++20 %t/A.cppm -emit-reduced-module-interface -o %t/A.v0.pcm \
+// RUN: -fprebuilt-module-path=%t
+// RUN: %clang_cc1 -std=c++20 %t/A.v1.cppm -emit-reduced-module-interface -o %t/A.v1.pcm \
+// RUN: -fprebuilt-module-path=%t
+//
+// The BMI may not be the same since the source location
diff ers.
+// RUN: not
diff %t/A.pcm %t/A.v1.pcm &> /dev/null
+//
+// The BMI of B shouldn't change since all the locations remain the same.
+// RUN: %clang_cc1 -std=c++20 %t/B.cppm -emit-reduced-module-interface -fmodule-file=A=%t/A.v0.pcm \
+// RUN: -o %t/B.pcm -fprebuilt-module-path=%t
+// RUN: %clang_cc1 -std=c++20 %t/B.cppm -emit-reduced-module-interface -fmodule-file=A=%t/A.v1.pcm \
+// RUN: -o %t/B.v1.pcm -fprebuilt-module-path=%t
+// RUN:
diff %t/B.v1.pcm %t/B.pcm &> /dev/null
+//
+// The BMI of C may change since the locations for instantiations changes.
+// RUN: %clang_cc1 -std=c++20 %t/C.cppm -emit-reduced-module-interface -fmodule-file=A=%t/A.v0.pcm \
+// RUN: -o %t/C.pcm -fprebuilt-module-path=%t
+// RUN: %clang_cc1 -std=c++20 %t/C.cppm -emit-reduced-module-interface -fmodule-file=A=%t/A.v1.pcm \
+// RUN: -o %t/C.v1.pcm -fprebuilt-module-path=%t
+// RUN:
diff %t/C.v1.pcm %t/C.pcm &> /dev/null
+
+//--- A.part.cppm
+export module A:part;
+export template <class T>
+struct C {
+ T func() {
+ return T(43);
+ }
+};
+export int funcA() {
+ return 43;
+}
+
+//--- A.cppm
+export module A;
+export import :part;
+
+//--- A.v1.cppm
+export module A;
+
+export import :part;
+
+//--- B.cppm
+export module B;
+import A;
+
+export int funcB() {
+ return funcA();
+}
+
+//--- C.cppm
+export module C;
+import A;
+export inline void testD() {
+ C<int> c;
+ c.func();
+}
More information about the cfe-commits
mailing list