[C++20] [Modules] Treat in class defined member functions in language linkage as...
authorChuanqi Xu <yedeng.yd@linux.alibaba.com>
Wed, 18 Sep 2024 02:07:57 +0000 (10:07 +0800)
committerTobias Hieta <tobias@hieta.se>
Tue, 24 Sep 2024 06:29:59 +0000 (08:29 +0200)
Close https://github.com/llvm/llvm-project/issues/108732

This looks liek an oversight mostly.

(cherry picked from commit 7046a9fb05f65f4699a2e88abbcb7dad8a21db2d)

clang/lib/Sema/SemaDecl.cpp
clang/test/Modules/pr108732.cppm [new file with mode: 0644]

index d3c07d0a76f12efcf1497b893ca7da108afe01fc..717ddb8339584cf7c200164ad8ba60b7af50a2cb 100644 (file)
@@ -9734,7 +9734,7 @@ Sema::ActOnFunctionDeclarator(Scope *S, Declarator &D, DeclContext *DC,
     bool ImplicitInlineCXX20 = !getLangOpts().CPlusPlusModules ||
                                NewFD->isConstexpr() || NewFD->isConsteval() ||
                                !NewFD->getOwningModule() ||
-                               NewFD->isFromExplicitGlobalModule() ||
+                               NewFD->isFromGlobalModule() ||
                                NewFD->getOwningModule()->isHeaderLikeModule();
     bool isInline = D.getDeclSpec().isInlineSpecified();
     bool isVirtual = D.getDeclSpec().isVirtualSpecified();
diff --git a/clang/test/Modules/pr108732.cppm b/clang/test/Modules/pr108732.cppm
new file mode 100644 (file)
index 0000000..f3b495a
--- /dev/null
@@ -0,0 +1,14 @@
+// RUN: %clang_cc1 -std=c++20 %s -ast-dump | FileCheck %s
+export module mod;
+
+extern "C++" {
+class C
+{
+public:
+bool foo() const {
+    return true;
+}
+};
+}
+
+// CHECK: foo {{.*}}implicit-inline