[clang] [C++20][Modules][Serialization] Add an additional test case for #120277. (PR #126349)
Michael Park via cfe-commits
cfe-commits at lists.llvm.org
Fri Feb 7 21:31:35 PST 2025
https://github.com/mpark created https://github.com/llvm/llvm-project/pull/126349
https://github.com/llvm/llvm-project/commit/4b35dd57b88a59b169c3471cbc398113d3bf98e8 was shipped to address https://github.com/llvm/llvm-project/issues/120277 .
It was thought to be a regression in 19.x according to this comment: https://github.com/llvm/llvm-project/issues/120277#issuecomment-2558991129
This is a test case that fails even in 17.x but nevertheless is also fixed by: https://github.com/llvm/llvm-project/commit/4b35dd57b88a59b169c3471cbc398113d3bf98e8 .
>From 832f6dc5a6b4d8cb72ba161e2a5d9e808ec9b340 Mon Sep 17 00:00:00 2001
From: Michael Park <mcypark at gmail.com>
Date: Fri, 7 Feb 2025 21:23:26 -0800
Subject: [PATCH] [C++20][Modules][Serialization] Add an additional test case
for #120277.
https://github.com/llvm/llvm-project/commit/4b35dd57b88a59b169c3471cbc398113d3bf98e8
was shipped to address https://github.com/llvm/llvm-project/issues/120277 .
It was thought to be a regression in 19.x according to this comment:
https://github.com/llvm/llvm-project/issues/120277#issuecomment-2558991129
This is a test case that fails even in 17.x but nevertheless is also fixed by:
https://github.com/llvm/llvm-project/commit/4b35dd57b88a59b169c3471cbc398113d3bf98e8 .
---
clang/test/Modules/pr120277-2.cpp | 69 +++++++++++++++++++++++++++++++
1 file changed, 69 insertions(+)
create mode 100644 clang/test/Modules/pr120277-2.cpp
diff --git a/clang/test/Modules/pr120277-2.cpp b/clang/test/Modules/pr120277-2.cpp
new file mode 100644
index 000000000000000..1ed8fc52cb1ef7a
--- /dev/null
+++ b/clang/test/Modules/pr120277-2.cpp
@@ -0,0 +1,69 @@
+// RUN: rm -rf %t
+// RUN: mkdir -p %t
+// RUN: split-file %s %t
+// RUN: cd %t
+
+// RUN: %clang_cc1 -std=c++20 -emit-header-unit -xc++-user-header %t/hu-01.h \
+// RUN: -fcxx-exceptions -o %t/hu-01.pcm
+
+// RUN: %clang_cc1 -std=c++20 -emit-header-unit -xc++-user-header %t/hu-02.h \
+// RUN: -Wno-experimental-header-units -fcxx-exceptions \
+// RUN: -fmodule-file=%t/hu-01.pcm -o %t/hu-02.pcm
+
+// RUN: %clang_cc1 -std=c++20 -emit-header-unit -xc++-user-header %t/hu-03.h \
+// RUN: -Wno-experimental-header-units -fcxx-exceptions \
+// RUN: -fmodule-file=%t/hu-01.pcm -o %t/hu-03.pcm
+
+// RUN: %clang_cc1 -std=c++20 -emit-header-unit -xc++-user-header %t/hu-04.h \
+// RUN: -Wno-experimental-header-units -fcxx-exceptions \
+// RUN: -fmodule-file=%t/hu-02.pcm -fmodule-file=%t/hu-03.pcm -o %t/hu-04.pcm
+
+// RUN: %clang_cc1 -std=c++20 -emit-obj %t/main.cpp \
+// RUN: -Wno-experimental-header-units -fcxx-exceptions \
+// RUN: -fmodule-file=%t/hu-04.pcm
+//--- hu-01.h
+template <typename T>
+struct A {
+ ~A() { f(); }
+ auto f() const { return 0; }
+};
+
+template <typename T>
+struct B {
+ int g() const { return a.f(); }
+ A<T> a;
+};
+
+//--- hu-02.h
+import "hu-01.h";
+
+template <typename = void>
+struct C {
+ void h() {
+ B<int>().g();
+ }
+};
+
+template struct A<double>;
+
+//--- hu-03.h
+import "hu-01.h";
+
+inline B<int> b() {
+ return {};
+}
+
+//--- hu-04.h
+import "hu-02.h";
+import "hu-03.h";
+
+inline void f4() {
+ C{}.h();
+}
+
+//--- main.cpp
+import "hu-04.h";
+
+int main() {
+ f4();
+}
More information about the cfe-commits
mailing list