llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang Author: Helena Kotas (hekota) <details> <summary>Changes</summary> The constructors are replaced by static `__createFromBinding` and `__createFromImplicitBinding` methods on the resource class. Depends on #<!-- -->157005 Part 4 of #<!-- -->154221 --- Full diff: https://github.com/llvm/llvm-project/pull/157008.diff 6 Files Affected: - (modified) clang/lib/Sema/HLSLBuiltinTypeDeclBuilder.cpp (-43) - (modified) clang/lib/Sema/HLSLBuiltinTypeDeclBuilder.h (-2) - (modified) clang/lib/Sema/HLSLExternalSemaSource.cpp (+1-3) - (modified) clang/test/AST/HLSL/ByteAddressBuffers-AST.hlsl (-48) - (modified) clang/test/AST/HLSL/StructuredBuffers-AST.hlsl (-48) - (modified) clang/test/AST/HLSL/TypedBuffers-AST.hlsl (-48) ``````````diff diff --git a/clang/lib/Sema/HLSLBuiltinTypeDeclBuilder.cpp b/clang/lib/Sema/HLSLBuiltinTypeDeclBuilder.cpp index a4d75155d8511..f1fdf84800fea 100644 --- a/clang/lib/Sema/HLSLBuiltinTypeDeclBuilder.cpp +++ b/clang/lib/Sema/HLSLBuiltinTypeDeclBuilder.cpp @@ -731,49 +731,6 @@ BuiltinTypeDeclBuilder &BuiltinTypeDeclBuilder::addDefaultHandleConstructor() { .finalize(); } -BuiltinTypeDeclBuilder & -BuiltinTypeDeclBuilder::addHandleConstructorFromBinding() { - if (Record->isCompleteDefinition()) - return *this; - - using PH = BuiltinTypeMethodBuilder::PlaceHolder; - ASTContext &AST = SemaRef.getASTContext(); - QualType HandleType = getResourceHandleField()->getType(); - - return BuiltinTypeMethodBuilder(*this, "", AST.VoidTy, false, true) - .addParam("registerNo", AST.UnsignedIntTy) - .addParam("spaceNo", AST.UnsignedIntTy) - .addParam("range", AST.IntTy) - .addParam("index", AST.UnsignedIntTy) - .addParam("name", AST.getPointerType(AST.CharTy.withConst())) - .callBuiltin("__builtin_hlsl_resource_handlefrombinding", HandleType, - PH::Handle, PH::_0, PH::_1, PH::_2, PH::_3, PH::_4) - .assign(PH::Handle, PH::LastStmt) - .finalize(); -} - -BuiltinTypeDeclBuilder & -BuiltinTypeDeclBuilder::addHandleConstructorFromImplicitBinding() { - if (Record->isCompleteDefinition()) - return *this; - - using PH = BuiltinTypeMethodBuilder::PlaceHolder; - ASTContext &AST = SemaRef.getASTContext(); - QualType HandleType = getResourceHandleField()->getType(); - - return BuiltinTypeMethodBuilder(*this, "", AST.VoidTy, false, true) - .addParam("spaceNo", AST.UnsignedIntTy) - .addParam("range", AST.IntTy) - .addParam("index", AST.UnsignedIntTy) - .addParam("orderId", AST.UnsignedIntTy) - .addParam("name", AST.getPointerType(AST.CharTy.withConst())) - .callBuiltin("__builtin_hlsl_resource_handlefromimplicitbinding", - HandleType, PH::Handle, PH::_3, PH::_0, PH::_1, PH::_2, - PH::_4) - .assign(PH::Handle, PH::LastStmt) - .finalize(); -} - BuiltinTypeDeclBuilder &BuiltinTypeDeclBuilder::addCreateFromBinding() { if (Record->isCompleteDefinition()) return *this; diff --git a/clang/lib/Sema/HLSLBuiltinTypeDeclBuilder.h b/clang/lib/Sema/HLSLBuiltinTypeDeclBuilder.h index ba860a9080cea..674a750d905fa 100644 --- a/clang/lib/Sema/HLSLBuiltinTypeDeclBuilder.h +++ b/clang/lib/Sema/HLSLBuiltinTypeDeclBuilder.h @@ -78,8 +78,6 @@ class BuiltinTypeDeclBuilder { // Builtin types constructors BuiltinTypeDeclBuilder &addDefaultHandleConstructor(); - BuiltinTypeDeclBuilder &addHandleConstructorFromBinding(); - BuiltinTypeDeclBuilder &addHandleConstructorFromImplicitBinding(); // Static create methods BuiltinTypeDeclBuilder &addCreateFromBinding(); diff --git a/clang/lib/Sema/HLSLExternalSemaSource.cpp b/clang/lib/Sema/HLSLExternalSemaSource.cpp index a5d51ca7d35be..e3d5e8f1b6b52 100644 --- a/clang/lib/Sema/HLSLExternalSemaSource.cpp +++ b/clang/lib/Sema/HLSLExternalSemaSource.cpp @@ -133,9 +133,7 @@ static BuiltinTypeDeclBuilder setupBufferType(CXXRecordDecl *Decl, Sema &S, .addHandleMember(RC, IsROV, RawBuffer) .addDefaultHandleConstructor() .addCreateFromBinding() - .addCreateFromImplicitBinding() - .addHandleConstructorFromBinding() - .addHandleConstructorFromImplicitBinding(); + .addCreateFromImplicitBinding(); } // This function is responsible for constructing the constraint expression for diff --git a/clang/test/AST/HLSL/ByteAddressBuffers-AST.hlsl b/clang/test/AST/HLSL/ByteAddressBuffers-AST.hlsl index 93418e4877465..3aebb528ce126 100644 --- a/clang/test/AST/HLSL/ByteAddressBuffers-AST.hlsl +++ b/clang/test/AST/HLSL/ByteAddressBuffers-AST.hlsl @@ -112,53 +112,5 @@ RESOURCE Buffer; // CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::[[RESOURCE]]' lvalue Var {{.*}} 'tmp' 'hlsl::[[RESOURCE]]' // CHECK-NEXT: AlwaysInlineAttr {{.*}} Implicit always_inline -// Constructor from binding - -// CHECK: CXXConstructorDecl {{.*}} [[RESOURCE]] 'void (unsigned int, unsigned int, int, unsigned int, const char *)' inline -// CHECK-NEXT: ParmVarDecl {{.*}} registerNo 'unsigned int' -// CHECK-NEXT: ParmVarDecl {{.*}} spaceNo 'unsigned int' -// CHECK-NEXT: ParmVarDecl {{.*}} range 'int' -// CHECK-NEXT: ParmVarDecl {{.*}} index 'unsigned int' -// CHECK-NEXT: ParmVarDecl {{.*}} name 'const char *' -// CHECK-NEXT: CompoundStmt {{.*}} -// CHECK-NEXT: BinaryOperator {{.*}} '=' -// CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle -// CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[RESOURCE]]' lvalue implicit this -// CHECK-NEXT: CallExpr {{.*}} '__hlsl_resource_t -// CHECK-NEXT: ImplicitCastExpr {{.*}} <BuiltinFnToFnPtr> -// CHECK-NEXT: DeclRefExpr {{.*}} '<builtin fn type>' Function {{.*}} '__builtin_hlsl_resource_handlefrombinding' -// CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle -// CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[RESOURCE]]' lvalue implicit this -// CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' ParmVar {{.*}} 'registerNo' 'unsigned int' -// CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' ParmVar {{.*}} 'spaceNo' 'unsigned int' -// CHECK-NEXT: DeclRefExpr {{.*}} 'int' ParmVar {{.*}} 'range' 'int' -// CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' ParmVar {{.*}} 'index' 'unsigned int' -// CHECK-NEXT: DeclRefExpr {{.*}} 'const char *' ParmVar {{.*}} 'name' 'const char *' -// CHECK-NEXT: AlwaysInlineAttr - -// Constructor from implicit binding - -// CHECK: CXXConstructorDecl {{.*}} [[RESOURCE]] 'void (unsigned int, int, unsigned int, unsigned int, const char *)' inline -// CHECK-NEXT: ParmVarDecl {{.*}} spaceNo 'unsigned int' -// CHECK-NEXT: ParmVarDecl {{.*}} range 'int' -// CHECK-NEXT: ParmVarDecl {{.*}} index 'unsigned int' -// CHECK-NEXT: ParmVarDecl {{.*}} orderId 'unsigned int' -// CHECK-NEXT: ParmVarDecl {{.*}} name 'const char *' -// CHECK-NEXT: CompoundStmt {{.*}} -// CHECK-NEXT: BinaryOperator {{.*}} '=' -// CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle -// CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[RESOURCE]]' lvalue implicit this -// CHECK-NEXT: CallExpr {{.*}} '__hlsl_resource_t -// CHECK-NEXT: ImplicitCastExpr {{.*}} <BuiltinFnToFnPtr> -// CHECK-NEXT: DeclRefExpr {{.*}} '<builtin fn type>' Function {{.*}} '__builtin_hlsl_resource_handlefromimplicitbinding' -// CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle -// CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[RESOURCE]]' lvalue implicit this -// CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' ParmVar {{.*}} 'orderId' 'unsigned int' -// CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' ParmVar {{.*}} 'spaceNo' 'unsigned int' -// CHECK-NEXT: DeclRefExpr {{.*}} 'int' ParmVar {{.*}} 'range' 'int' -// CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' ParmVar {{.*}} 'index' 'unsigned int' -// CHECK-NEXT: DeclRefExpr {{.*}} 'const char *' ParmVar {{.*}} 'name' 'const char *' -// CHECK-NEXT: AlwaysInlineAttr - // CHECK-NOSUBSCRIPT-NOT: CXXMethodDecl {{.*}} operator[] 'const char8_t &(unsigned int) const' // CHECK-NOSUBSCRIPT-NOT: CXXMethodDecl {{.*}} operator[] 'char8_t &(unsigned int)' diff --git a/clang/test/AST/HLSL/StructuredBuffers-AST.hlsl b/clang/test/AST/HLSL/StructuredBuffers-AST.hlsl index 798af6232b124..84546da607dea 100644 --- a/clang/test/AST/HLSL/StructuredBuffers-AST.hlsl +++ b/clang/test/AST/HLSL/StructuredBuffers-AST.hlsl @@ -159,54 +159,6 @@ RESOURCE<float> Buffer; // CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::[[RESOURCE]]<element_type>' lvalue Var {{.*}} 'tmp' 'hlsl::[[RESOURCE]]<element_type>' // CHECK-NEXT: AlwaysInlineAttr {{.*}} Implicit always_inline -// Constructor from binding - -// CHECK: CXXConstructorDecl {{.*}} [[RESOURCE]]<element_type> 'void (unsigned int, unsigned int, int, unsigned int, const char *)' inline -// CHECK-NEXT: ParmVarDecl {{.*}} registerNo 'unsigned int' -// CHECK-NEXT: ParmVarDecl {{.*}} spaceNo 'unsigned int' -// CHECK-NEXT: ParmVarDecl {{.*}} range 'int' -// CHECK-NEXT: ParmVarDecl {{.*}} index 'unsigned int' -// CHECK-NEXT: ParmVarDecl {{.*}} name 'const char *' -// CHECK-NEXT: CompoundStmt {{.*}} -// CHECK-NEXT: BinaryOperator {{.*}} '=' -// CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle -// CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[RESOURCE]]<element_type>' lvalue implicit this -// CHECK-NEXT: CallExpr {{.*}} '__hlsl_resource_t -// CHECK-NEXT: ImplicitCastExpr {{.*}} <BuiltinFnToFnPtr> -// CHECK-NEXT: DeclRefExpr {{.*}} '<builtin fn type>' Function {{.*}} '__builtin_hlsl_resource_handlefrombinding' -// CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle -// CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[RESOURCE]]<element_type>' lvalue implicit this -// CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' ParmVar {{.*}} 'registerNo' 'unsigned int' -// CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' ParmVar {{.*}} 'spaceNo' 'unsigned int' -// CHECK-NEXT: DeclRefExpr {{.*}} 'int' ParmVar {{.*}} 'range' 'int' -// CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' ParmVar {{.*}} 'index' 'unsigned int' -// CHECK-NEXT: DeclRefExpr {{.*}} 'const char *' ParmVar {{.*}} 'name' 'const char *' -// CHECK-NEXT: AlwaysInlineAttr - -// Constructor from implicit binding - -// CHECK: CXXConstructorDecl {{.*}} [[RESOURCE]]<element_type> 'void (unsigned int, int, unsigned int, unsigned int, const char *)' inline -// CHECK-NEXT: ParmVarDecl {{.*}} spaceNo 'unsigned int' -// CHECK-NEXT: ParmVarDecl {{.*}} range 'int' -// CHECK-NEXT: ParmVarDecl {{.*}} index 'unsigned int' -// CHECK-NEXT: ParmVarDecl {{.*}} orderId 'unsigned int' -// CHECK-NEXT: ParmVarDecl {{.*}} name 'const char *' -// CHECK-NEXT: CompoundStmt {{.*}} -// CHECK-NEXT: BinaryOperator {{.*}} '=' -// CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle -// CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[RESOURCE]]<element_type>' lvalue implicit this -// CHECK-NEXT: CallExpr {{.*}} '__hlsl_resource_t -// CHECK-NEXT: ImplicitCastExpr {{.*}} <BuiltinFnToFnPtr> -// CHECK-NEXT: DeclRefExpr {{.*}} '<builtin fn type>' Function {{.*}} '__builtin_hlsl_resource_handlefromimplicitbinding' -// CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle -// CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[RESOURCE]]<element_type>' lvalue implicit this -// CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' ParmVar {{.*}} 'orderId' 'unsigned int' -// CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' ParmVar {{.*}} 'spaceNo' 'unsigned int' -// CHECK-NEXT: DeclRefExpr {{.*}} 'int' ParmVar {{.*}} 'range' 'int' -// CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' ParmVar {{.*}} 'index' 'unsigned int' -// CHECK-NEXT: DeclRefExpr {{.*}} 'const char *' ParmVar {{.*}} 'name' 'const char *' -// CHECK-NEXT: AlwaysInlineAttr - // Subscript operators // CHECK-SUBSCRIPT: CXXMethodDecl {{.*}} operator[] 'const hlsl_device element_type &(unsigned int) const' diff --git a/clang/test/AST/HLSL/TypedBuffers-AST.hlsl b/clang/test/AST/HLSL/TypedBuffers-AST.hlsl index cc3d9cc399499..42a0ded91860f 100644 --- a/clang/test/AST/HLSL/TypedBuffers-AST.hlsl +++ b/clang/test/AST/HLSL/TypedBuffers-AST.hlsl @@ -134,54 +134,6 @@ RESOURCE<float> Buffer; // CHECK-NEXT: DeclRefExpr {{.*}} 'hlsl::[[RESOURCE]]<element_type>' lvalue Var {{.*}} 'tmp' 'hlsl::[[RESOURCE]]<element_type>' // CHECK-NEXT: AlwaysInlineAttr {{.*}} Implicit always_inline -// Constructor from binding - -// CHECK: CXXConstructorDecl {{.*}} [[RESOURCE]]<element_type> 'void (unsigned int, unsigned int, int, unsigned int, const char *)' inline -// CHECK-NEXT: ParmVarDecl {{.*}} registerNo 'unsigned int' -// CHECK-NEXT: ParmVarDecl {{.*}} spaceNo 'unsigned int' -// CHECK-NEXT: ParmVarDecl {{.*}} range 'int' -// CHECK-NEXT: ParmVarDecl {{.*}} index 'unsigned int' -// CHECK-NEXT: ParmVarDecl {{.*}} name 'const char *' -// CHECK-NEXT: CompoundStmt {{.*}} -// CHECK-NEXT: BinaryOperator {{.*}} '=' -// CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle -// CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[RESOURCE]]<element_type>' lvalue implicit this -// CHECK-NEXT: CallExpr {{.*}} '__hlsl_resource_t -// CHECK-NEXT: ImplicitCastExpr {{.*}} <BuiltinFnToFnPtr> -// CHECK-NEXT: DeclRefExpr {{.*}} '<builtin fn type>' Function {{.*}} '__builtin_hlsl_resource_handlefrombinding' -// CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle -// CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[RESOURCE]]<element_type>' lvalue implicit this -// CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' ParmVar {{.*}} 'registerNo' 'unsigned int' -// CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' ParmVar {{.*}} 'spaceNo' 'unsigned int' -// CHECK-NEXT: DeclRefExpr {{.*}} 'int' ParmVar {{.*}} 'range' 'int' -// CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' ParmVar {{.*}} 'index' 'unsigned int' -// CHECK-NEXT: DeclRefExpr {{.*}} 'const char *' ParmVar {{.*}} 'name' 'const char *' -// CHECK-NEXT: AlwaysInlineAttr - -// Constructor from implicit binding - -// CHECK: CXXConstructorDecl {{.*}} [[RESOURCE]]<element_type> 'void (unsigned int, int, unsigned int, unsigned int, const char *)' inline -// CHECK-NEXT: ParmVarDecl {{.*}} spaceNo 'unsigned int' -// CHECK-NEXT: ParmVarDecl {{.*}} range 'int' -// CHECK-NEXT: ParmVarDecl {{.*}} index 'unsigned int' -// CHECK-NEXT: ParmVarDecl {{.*}} orderId 'unsigned int' -// CHECK-NEXT: ParmVarDecl {{.*}} name 'const char *' -// CHECK-NEXT: CompoundStmt {{.*}} -// CHECK-NEXT: BinaryOperator {{.*}} '=' -// CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle -// CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[RESOURCE]]<element_type>' lvalue implicit this -// CHECK-NEXT: CallExpr {{.*}} '__hlsl_resource_t -// CHECK-NEXT: ImplicitCastExpr {{.*}} <BuiltinFnToFnPtr> -// CHECK-NEXT: DeclRefExpr {{.*}} '<builtin fn type>' Function {{.*}} '__builtin_hlsl_resource_handlefromimplicitbinding' -// CHECK-NEXT: MemberExpr {{.*}} lvalue .__handle -// CHECK-NEXT: CXXThisExpr {{.*}} 'hlsl::[[RESOURCE]]<element_type>' lvalue implicit this -// CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' ParmVar {{.*}} 'orderId' 'unsigned int' -// CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' ParmVar {{.*}} 'spaceNo' 'unsigned int' -// CHECK-NEXT: DeclRefExpr {{.*}} 'int' ParmVar {{.*}} 'range' 'int' -// CHECK-NEXT: DeclRefExpr {{.*}} 'unsigned int' ParmVar {{.*}} 'index' 'unsigned int' -// CHECK-NEXT: DeclRefExpr {{.*}} 'const char *' ParmVar {{.*}} 'name' 'const char *' -// CHECK-NEXT: AlwaysInlineAttr - // Subscript operators // CHECK: CXXMethodDecl {{.*}} operator[] 'const hlsl_device element_type &(unsigned int) const' `````````` </details> https://github.com/llvm/llvm-project/pull/157008 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits