@@ -1908,7 +1908,7 @@ static bool CheckResourceHandle(
19081908 const HLSLAttributedResourceType *ResTy =
19091909 ArgType.getTypePtr ()->getAs <HLSLAttributedResourceType>();
19101910 if (!ResTy) {
1911- S->Diag (TheCall->getArg (0 )->getBeginLoc (),
1911+ S->Diag (TheCall->getArg (ArgIndex )->getBeginLoc (),
19121912 diag::err_typecheck_expect_hlsl_resource)
19131913 << ArgType;
19141914 return true ;
@@ -1927,17 +1927,15 @@ static bool CheckResourceHandle(
19271927bool SemaHLSL::CheckBuiltinFunctionCall (unsigned BuiltinID, CallExpr *TheCall) {
19281928 switch (BuiltinID) {
19291929 case Builtin::BI__builtin_hlsl_resource_getpointer: {
1930- if (SemaRef.checkArgCount (TheCall, 2 ))
1931- return true ;
1932- auto *ResourceTy =
1933- TheCall->getArg (0 )->getType ()->getAs <HLSLAttributedResourceType>();
1934- if (!ResourceTy) {
1935- SemaRef.Diag (TheCall->getBeginLoc (),
1936- diag::err_hlsl_builtin_requires_resource)
1937- << TheCall->getArg (0 )->getSourceRange ();
1930+ if (SemaRef.checkArgCount (TheCall, 2 ) ||
1931+ CheckResourceHandle (&SemaRef, TheCall, 0 ) ||
1932+ CheckArgTypeMatches (&SemaRef, TheCall->getArg (1 ),
1933+ SemaRef.getASTContext ().UnsignedIntTy ))
19381934 return true ;
1939- }
19401935
1936+ auto *ResourceTy = TheCall->getArg (0 )
1937+ ->getType ()
1938+ ->castAs <HLSLAttributedResourceType>();
19411939 QualType ContainedTy = ResourceTy->getContainedType ();
19421940 // TODO: Map to an hlsl_device address space.
19431941 TheCall->setType (getASTContext ().getPointerType (ContainedTy));
0 commit comments