[PATCH] D131268: [HLSL] Generate buffer subscript operators
Aaron Ballman via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Aug 30 12:05:42 PDT 2022
aaron.ballman added inline comments.
================
Comment at: clang/lib/Sema/HLSLExternalSemaSource.cpp:108-113
+ if (Template) {
+ if (auto TTD = dyn_cast<TemplateTypeParmDecl>(
+ Template->getTemplateParameters()->getParam(0)))
+ Ty = Record->getASTContext().getPointerType(
+ QualType(TTD->getTypeForDecl(), 0));
+ }
----------------
================
Comment at: clang/lib/Sema/HLSLExternalSemaSource.cpp:180
+ if (Handle->getType().getCanonicalType() != AST.VoidPtrTy) {
+ Call = CXXReinterpretCastExpr::Create(
+ AST, Handle->getType(), VK_PRValue, CK_Dependent, Call, nullptr,
----------------
Can you use a `static_cast` to make this a wee bit safer, or is that not possible?
================
Comment at: clang/lib/Sema/HLSLExternalSemaSource.cpp:231-232
+ AST.getFunctionType(ReturnTy, {AST.UnsignedIntTy}, ExtInfo);
+ auto TSInfo = AST.getTrivialTypeSourceInfo(MethodTy, SourceLocation());
+ auto MethodDecl = CXXMethodDecl::Create(
+ AST, Record, SourceLocation(),
----------------
================
Comment at: clang/lib/Sema/HLSLExternalSemaSource.cpp:241
+ IdentifierInfo &II = AST.Idents.get("Idx", tok::TokenKind::identifier);
+ auto IdxParam = ParmVarDecl::Create(
+ AST, MethodDecl->getDeclContext(), SourceLocation(), SourceLocation(),
----------------
================
Comment at: clang/lib/Sema/HLSLExternalSemaSource.cpp:243
+ AST, MethodDecl->getDeclContext(), SourceLocation(), SourceLocation(),
+ &II, AST.UnsignedIntTy,
+ AST.getTrivialTypeSourceInfo(AST.UnsignedIntTy, SourceLocation()),
----------------
Should this be using a size type instead?
================
Comment at: clang/lib/Sema/HLSLExternalSemaSource.cpp:252
+
+ CXXThisExpr *This = new (AST)
+ CXXThisExpr(SourceLocation(), MethodDecl->getThisType(), true);
----------------
================
Comment at: clang/lib/Sema/HLSLExternalSemaSource.cpp:254
+ CXXThisExpr(SourceLocation(), MethodDecl->getThisType(), true);
+ Expr *HandleAccess = MemberExpr::CreateImplicit(
+ AST, This, true, Handle, Handle->getType(), VK_LValue, OK_Ordinary);
----------------
================
Comment at: clang/lib/Sema/HLSLExternalSemaSource.cpp:257
+
+ Expr *IndexExpr = DeclRefExpr::Create(
+ AST, NestedNameSpecifierLoc(), SourceLocation(), IdxParam, false,
----------------
================
Comment at: clang/lib/Sema/HLSLExternalSemaSource.cpp:262
+
+ Expr *Array =
+ new (AST) ArraySubscriptExpr(HandleAccess, IndexExpr, ElemTy, VK_LValue,
----------------
================
Comment at: clang/lib/Sema/HLSLExternalSemaSource.cpp:266
+
+ Stmt *Return = ReturnStmt::Create(AST, SourceLocation(), Array, nullptr);
+
----------------
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D131268/new/
https://reviews.llvm.org/D131268
More information about the cfe-commits
mailing list