================ @@ -3808,11 +3796,101 @@ void SemaHLSL::createResourceRecordCtorArgs( } bool SemaHLSL::initGlobalResourceDecl(VarDecl *VD) { - SmallVector<Expr *> Args; - createResourceRecordCtorArgs(VD->getType().getTypePtr(), VD->getName(), - VD->getAttr<HLSLResourceBindingAttr>(), - VD->getAttr<HLSLVkBindingAttr>(), 0, Args); - return initVarDeclWithCtor(SemaRef, VD, Args); + assert(VD->getType()->isHLSLResourceRecord() && + "expected resource record type"); + + ASTContext &AST = SemaRef.getASTContext(); + uint64_t UIntTySize = AST.getTypeSize(AST.UnsignedIntTy); + uint64_t IntTySize = AST.getTypeSize(AST.IntTy); + + // Gather resource binding information from attributes. + HLSLResourceBindingAttr *RBA = VD->getAttr<HLSLResourceBindingAttr>(); + HLSLVkBindingAttr *VkBinding = VD->getAttr<HLSLVkBindingAttr>(); + std::optional<uint32_t> RegisterSlot; + uint32_t SpaceNo = 0; + if (VkBinding) { + RegisterSlot = VkBinding->getBinding(); + SpaceNo = VkBinding->getSet(); + } else if (RBA) { + if (RBA->hasRegisterSlot()) + RegisterSlot = RBA->getSlotNumber(); + SpaceNo = RBA->getSpaceNumber(); + } + + // Find correct initialization method and create its arguments. + QualType ResourceTy = VD->getType(); + CXXRecordDecl *ResourceDecl = ResourceTy->getAsCXXRecordDecl(); ---------------- llvm-beanz wrote:
I did look up the call tree here to be sure, but it does seem like we're guaranteed that ResourceTy will be complete by the time we get here. https://github.com/llvm/llvm-project/pull/156544 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits