================
@@ -14794,9 +14803,36 @@ void
ASTContext::getFunctionFeatureMap(llvm::StringMap<bool> &FeatureMap,
}
}
-static SYCLKernelInfo BuildSYCLKernelInfo(CanQualType KernelNameType,
+static SYCLKernelInfo BuildSYCLKernelInfo(ASTContext &Context,
+ CanQualType KernelNameType,
const FunctionDecl *FD) {
- return {KernelNameType, FD};
+ // Host and device compilation may use different ABIs and different ABIs
+ // may allocate name mangling discriminators differently. A discriminator
+ // override is used to ensure consistent discriminator allocation across
+ // host and device compilation.
+ auto DeviceDiscriminatorOverrider =
+ [](ASTContext &Ctx, const NamedDecl *ND) -> std::optional<unsigned> {
+ if (const auto *RD = dyn_cast<CXXRecordDecl>(ND))
+ if (RD->isLambda())
+ return RD->getDeviceLambdaManglingNumber();
+ return std::nullopt;
+ };
+ std::unique_ptr<MangleContext> MC{ItaniumMangleContext::create(
+ Context, Context.getDiagnostics(), DeviceDiscriminatorOverrider)};
+
+ // Construct a mangled name for the SYCL kernel caller offload entry point.
+ // FIXME: The Itanium typeinfo mangling (_ZTS<type>) is currently used to
+ // FIXME: name the SYCL kernel caller offload entry point function. This
----------------
tahonermann wrote:
This is my preferred style because it makes it possible to grep for "FIXME" and
get all related comments. But I agree it isn't consistent with use elsewhere;
I'll change it.
https://github.com/llvm/llvm-project/pull/133030
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits