xref: /llvm-project/clang/test/Modules/no-transitive-decl-change-2.cppm (revision 1ecc5ae13b9061cfb37ef0c409c8a4fc4bad42c9)
1// Test that adding a new unused decl within reduced BMI may not produce a transitive change.
2//
3// RUN: rm -rf %t
4// RUN: split-file %s %t
5//
6// RUN: %clang_cc1 -std=c++20 -emit-reduced-module-interface %t/A.cppm -o %t/A.pcm
7// RUN: %clang_cc1 -std=c++20 -emit-reduced-module-interface %t/B.cppm -o %t/B.pcm \
8// RUN:     -fmodule-file=A=%t/A.pcm
9//
10// RUN: %clang_cc1 -std=c++20 -emit-reduced-module-interface %t/A.v1.cppm -o %t/A.v1.pcm
11// RUN: %clang_cc1 -std=c++20 -emit-reduced-module-interface %t/B.cppm -o %t/B.v1.pcm \
12// RUN:     -fmodule-file=A=%t/A.v1.pcm
13//
14// RUN: diff %t/B.pcm %t/B.v1.pcm &> /dev/null
15
16//--- A.cppm
17export module A;
18export int a() { return 44; }
19
20//--- A.v1.cppm
21export module A;
22int a_impl() { return 48; }
23export int a() { return a_impl(); }
24
25//--- B.cppm
26export module B;
27import A;
28export int b() { return a(); }
29