[clang] [clang-tools-extra] [CudaSPIRV] Allow using integral non-type template parameters as attribute args (PR #131546)
Matt Arsenault via cfe-commits
cfe-commits at lists.llvm.org
Sun Mar 16 20:44:59 PDT 2025
================
@@ -53,15 +53,15 @@ void TCETargetCodeGenInfo::setTargetAttributes(
SmallVector<llvm::Metadata *, 5> Operands;
Operands.push_back(llvm::ConstantAsMetadata::get(F));
- Operands.push_back(
- llvm::ConstantAsMetadata::get(llvm::Constant::getIntegerValue(
- M.Int32Ty, llvm::APInt(32, Attr->getXDim()))));
- Operands.push_back(
- llvm::ConstantAsMetadata::get(llvm::Constant::getIntegerValue(
- M.Int32Ty, llvm::APInt(32, Attr->getYDim()))));
- Operands.push_back(
- llvm::ConstantAsMetadata::get(llvm::Constant::getIntegerValue(
- M.Int32Ty, llvm::APInt(32, Attr->getZDim()))));
+ auto Eval = [&](Expr *E) {
+ return E->EvaluateKnownConstInt(FD->getASTContext());
+ };
+ Operands.push_back(llvm::ConstantAsMetadata::get(
+ llvm::Constant::getIntegerValue(M.Int32Ty, Eval(Attr->getXDim()))));
+ Operands.push_back(llvm::ConstantAsMetadata::get(
+ llvm::Constant::getIntegerValue(M.Int32Ty, Eval(Attr->getYDim()))));
+ Operands.push_back(llvm::ConstantAsMetadata::get(
+ llvm::Constant::getIntegerValue(M.Int32Ty, Eval(Attr->getZDim()))));
----------------
arsenm wrote:
Can move all this into the Operands initializer list
https://github.com/llvm/llvm-project/pull/131546
More information about the cfe-commits
mailing list