================ @@ -7367,8 +7367,72 @@ static void handleHLSLResourceBindingAttr(Sema &S, Decl *D, return; } - // FIXME: check reg type match decl. Issue - // https://github.com/llvm/llvm-project/issues/57886. + VarDecl *VD = dyn_cast<VarDecl>(D); + HLSLBufferDecl *BD = dyn_cast<HLSLBufferDecl>(D); + + if (VD || BD) { + llvm::hlsl::ResourceClass RC; + std::string varTy = ""; + if (VD) { + + const Type *Ty = VD->getType()->getPointeeOrArrayElementType(); + if (!Ty) + return; + QualType t = ((ElaboratedType *)Ty)->getNamedType(); + const CXXRecordDecl *RD = Ty->getAsCXXRecordDecl(); + if (!RD) + return; + + if (auto TDecl = dyn_cast<ClassTemplateSpecializationDecl>(RD)) + RD = TDecl->getSpecializedTemplate()->getTemplatedDecl(); + RD = RD->getCanonicalDecl(); + const auto *Attr = RD->getAttr<HLSLResourceAttr>(); + if (!Attr) + return; ---------------- bogner wrote:
These returns don't look correct - handleHLSLResourceBindingAttr still has work to do after this block of code. However, if you break this check out as I suggested elsewhere that will resolve this. https://github.com/llvm/llvm-project/pull/87578 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits