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

Reply via email to