Author: Chuanqi Xu Date: 2023-03-17T15:58:10+08:00 New Revision: c21790d02302ca0c00fab15c49c14db6514ceb5e
URL: https://github.com/llvm/llvm-project/commit/c21790d02302ca0c00fab15c49c14db6514ceb5e DIFF: https://github.com/llvm/llvm-project/commit/c21790d02302ca0c00fab15c49c14db6514ceb5e.diff LOG: [NFC] [C++20] [Modules] Tests that the duplicated declarations in GMF won't get generated again As the test shows, we don't want to see the specialized function bodies if it is already contained in the imported modules. So we can save a lot of compiling time then. Added: clang/test/Modules/no-duplicate-codegen-in-GMF.cppm Modified: Removed: ################################################################################ diff --git a/clang/test/Modules/no-duplicate-codegen-in-GMF.cppm b/clang/test/Modules/no-duplicate-codegen-in-GMF.cppm new file mode 100644 index 000000000000..e4d06415fabd --- /dev/null +++ b/clang/test/Modules/no-duplicate-codegen-in-GMF.cppm @@ -0,0 +1,40 @@ +// Tests that the declaration won't get emitted after being merged. +// +// RUN: rm -rf %t +// RUN: mkdir -p %t +// RUN: split-file %s %t +// +// RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple %t/A.cppm -emit-module-interface -o %t/A.pcm +// RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple %t/B.cppm -emit-module-interface -o %t/B.pcm \ +// RUN: -fprebuilt-module-path=%t +// RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple %t/B.pcm -S -emit-llvm -o - | FileCheck %t/B.cppm + +//--- foo.h + +template <class T> +class foo { +public: + T value; + T GetValue() { return value; } +}; + +template class foo<int>; + +//--- A.cppm +module; +#include "foo.h" +export module A; +export using ::foo; + +//--- B.cppm +module; +#include "foo.h" +export module B; +import A; +export using ::foo; +export int B() { + foo<int> f; + return f.GetValue(); +} + +// CHECK-NOT: define{{.*}}@_ZN3fooIiE8GetValueEv _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits