[clang] [clang] Don't use `VarDecl` of local variables as `ManglingContextDecl` for lambdas (PR #179035)

Chuanqi Xu via cfe-commits cfe-commits at lists.llvm.org
Sun Feb 8 18:08:04 PST 2026


Jan =?utf-8?q?Kokemüller?= <jan.kokemueller at gmail.com>,
Jan =?utf-8?q?Kokemüller?= <jan.kokemueller at gmail.com>,
Jan =?utf-8?q?Kokemüller?= <jan.kokemueller at gmail.com>,
Jan =?utf-8?q?Kokemüller?= <jan.kokemueller at gmail.com>,
Jan =?utf-8?q?Kokemüller?= <jan.kokemueller at gmail.com>,
Jan =?utf-8?q?Kokemüller?= <jan.kokemueller at gmail.com>,
Jan =?utf-8?q?Kokemüller?= <jan.kokemueller at gmail.com>,
Jan =?utf-8?q?Kokemüller?= <jan.kokemueller at gmail.com>,
Jan =?utf-8?q?Kokemüller?= <jan.kokemueller at gmail.com>,
Jan =?utf-8?q?Kokemüller?= <jan.kokemueller at gmail.com>,
Jan =?utf-8?q?Kokemüller?= <jan.kokemueller at gmail.com>,
Jan =?utf-8?q?Kokemüller?= <jan.kokemueller at gmail.com>,
Jan =?utf-8?q?Kokemüller?= <jan.kokemueller at gmail.com>,
Jan =?utf-8?q?Kokemüller?= <jan.kokemueller at gmail.com>
Message-ID:
In-Reply-To: <llvm.org/llvm/llvm-project/pull/179035 at github.com>


================
@@ -261,12 +261,25 @@ Sema::createLambdaClosureType(SourceRange IntroducerRange, TypeSourceInfo *Info,
   return Class;
 }
 
+// See discussion in https://github.com/itanium-cxx-abi/cxx-abi/issues/186
+//
+// zygoloid:
+//    Yeah, I think the only cases left where lambdas don't need a
+//    mangling are when they have (effectively) internal linkage or
+//    appear in a non-inline function in a non-module translation unit.
+static bool isNonInlineInModulePurview(const Decl *D) {
----------------
ChuanqiXu9 wrote:

The function name is inconsistent with the implementation. The impl doesn't check if they are inline.

Maybe we can call it as `isExternallyVisibleInModulePurview`

https://github.com/llvm/llvm-project/pull/179035


More information about the cfe-commits mailing list