diff --git a/lib/HLSL/HLOperationLower.cpp b/lib/HLSL/HLOperationLower.cpp index 08f66a453d..c534e5f9ae 100644 --- a/lib/HLSL/HLOperationLower.cpp +++ b/lib/HLSL/HLOperationLower.cpp @@ -9463,26 +9463,25 @@ void EmitGetNodeRecordPtrAndUpdateUsers(HLOperationLowerHelper &helper, Value *opArg = nullptr; Value *Handle = CI->getArgOperand(HLOperandIndex::kHandleOpIdx); opArg = Builder.getInt32((unsigned)DXIL::OpCode::GetNodeRecordPtr); - PointerType *pTy = cast(CI->getType()); - if (StructType *origRecordUDT = dyn_cast(pTy->getElementType())) { - Type *getNodeRecordPtrRT = origRecordUDT; - // Translate node record type here - auto findIt = helper.loweredTypes.find(origRecordUDT); - if (findIt != helper.loweredTypes.end()) { - getNodeRecordPtrRT = findIt->second; - } else { - getNodeRecordPtrRT = GetLoweredUDT(origRecordUDT, &helper.dxilTypeSys); - if (origRecordUDT != getNodeRecordPtrRT) - helper.loweredTypes[origRecordUDT] = getNodeRecordPtrRT; - } - getNodeRecordPtrRT = - getNodeRecordPtrRT->getPointerTo(DXIL::kNodeRecordAddrSpace); - Function *getNodeRecordPtr = helper.hlslOP.GetOpFunc( - DXIL::OpCode::GetNodeRecordPtr, getNodeRecordPtrRT); - Value *args[] = {opArg, Handle, ArrayIndex}; - Value *NodeRecordPtr = Builder.CreateCall(getNodeRecordPtr, args); - ReplaceUsesForLoweredUDT(CI, NodeRecordPtr); - } + StructType *origRecordUDT = + cast(cast(CI->getType())->getElementType()); + Type *getNodeRecordPtrRT = origRecordUDT; + // Translate node record type here + auto findIt = helper.loweredTypes.find(origRecordUDT); + if (findIt != helper.loweredTypes.end()) { + getNodeRecordPtrRT = findIt->second; + } else { + getNodeRecordPtrRT = GetLoweredUDT(origRecordUDT, &helper.dxilTypeSys); + if (origRecordUDT != getNodeRecordPtrRT) + helper.loweredTypes[origRecordUDT] = getNodeRecordPtrRT; + } + getNodeRecordPtrRT = + getNodeRecordPtrRT->getPointerTo(DXIL::kNodeRecordAddrSpace); + Function *getNodeRecordPtr = helper.hlslOP.GetOpFunc( + DXIL::OpCode::GetNodeRecordPtr, getNodeRecordPtrRT); + Value *args[] = {opArg, Handle, ArrayIndex}; + Value *NodeRecordPtr = Builder.CreateCall(getNodeRecordPtr, args); + ReplaceUsesForLoweredUDT(CI, NodeRecordPtr); } void LowerRecordAccessToGetNodeRecordPtr(HLModule &HLM) { diff --git a/tools/clang/lib/AST/ASTContextHLSL.cpp b/tools/clang/lib/AST/ASTContextHLSL.cpp index 87c1ba5492..fcbfe572f7 100644 --- a/tools/clang/lib/AST/ASTContextHLSL.cpp +++ b/tools/clang/lib/AST/ASTContextHLSL.cpp @@ -442,8 +442,8 @@ static void AddRecordAccessMethod(clang::ASTContext &Ctx, StringRef OpcodeGroup = GetHLOpcodeGroupName(HLOpcodeGroup::HLSubscript); unsigned Opcode = static_cast(HLSubscriptOpcode::DefaultSubscript); - MethodDecl->addAttr( - HLSLIntrinsicAttr::CreateImplicit(Ctx, OpcodeGroup, "", Opcode)); + MethodDecl->addAttr(HLSLIntrinsicAttr::CreateImplicit( + Ctx, OpcodeGroup, "DefaultSubscript", Opcode)); MethodDecl->addAttr(HLSLCXXOverloadAttr::CreateImplicit(Ctx)); } diff --git a/tools/clang/test/HLSLFileCheck/hlsl/workgraph/ast-nodeinput.hlsl b/tools/clang/test/HLSLFileCheck/hlsl/workgraph/ast-nodeinput.hlsl index 7f5de6606b..2729640111 100644 --- a/tools/clang/test/HLSLFileCheck/hlsl/workgraph/ast-nodeinput.hlsl +++ b/tools/clang/test/HLSLFileCheck/hlsl/workgraph/ast-nodeinput.hlsl @@ -20,7 +20,7 @@ void node01(DispatchNodeInputRecord input) {} //CHECK-NEXT: HLSLNodeObjectAttr {{0x[0-9a-fA-F]+}} <> Implicit DispatchNodeInputRecord //CHECK-NEXT: FieldDecl {{0x[0-9a-fA-F]+}} <> implicit h 'int' //CHECK-NEXT: CXXMethodDecl {{0x[0-9a-fA-F]+}} <> Get 'const recordtype &() const' -//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "" 0 +//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "DefaultSubscript" 0 //CHECK-NEXT: HLSLCXXOverloadAttr {{0x[0-9a-fA-F]+}} <> Implicit //CHECK-NEXT: ClassTemplateSpecializationDecl {{0x[0-9a-fA-F]+}} <> struct DispatchNodeInputRecord definition @@ -38,11 +38,11 @@ void node02(GroupNodeInputRecords input) {} //CHECK-NEXT: CXXMethodDecl {{0x[0-9a-fA-F]+}} <> Get 'const recordtype &(unsigned int) const' //CHECK-NEXT: ParmVarDecl {{0x[0-9a-fA-F]+}} <> Index 'unsigned int' cinit //CHECK-NEXT: IntegerLiteral {{0x[0-9a-fA-F]+}} <> 'unsigned int' 0 -//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "" 0 +//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "DefaultSubscript" 0 //CHECK-NEXT: HLSLCXXOverloadAttr {{0x[0-9a-fA-F]+}} <> Implicit //CHECK-NEXT: CXXMethodDecl {{0x[0-9a-fA-F]+}} <> operator[] 'const recordtype &(unsigned int) const' //CHECK-NEXT: ParmVarDecl {{0x[0-9a-fA-F]+}} <> Index 'unsigned int' -//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "" 0 +//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "DefaultSubscript" 0 //CHECK-NEXT: HLSLCXXOverloadAttr {{0x[0-9a-fA-F]+}} <> Implicit //CHECK-NEXT: FunctionTemplateDecl {{0x[0-9a-fA-F]+}} <> operator[] //CHECK-NEXT: TemplateTypeParmDecl {{0x[0-9a-fA-F]+}} <> class recordtype @@ -65,7 +65,7 @@ void node03(ThreadNodeInputRecord input) {} //CHECK-NEXT: HLSLNodeObjectAttr {{0x[0-9a-fA-F]+}} <> Implicit ThreadNodeInputRecord //CHECK-NEXT: FieldDecl {{0x[0-9a-fA-F]+}} <> implicit h 'int' //CHECK-NEXT: CXXMethodDecl {{0x[0-9a-fA-F]+}} <> Get 'const recordtype &() const' -//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "" 0 +//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "DefaultSubscript" 0 //CHECK-NEXT: HLSLCXXOverloadAttr {{0x[0-9a-fA-F]+}} <> Implicit //CHECK-NEXT: ClassTemplateSpecializationDecl {{0x[0-9a-fA-F]+}} <> struct ThreadNodeInputRecord definition diff --git a/tools/clang/test/HLSLFileCheck/hlsl/workgraph/ast-nodeoutput.hlsl b/tools/clang/test/HLSLFileCheck/hlsl/workgraph/ast-nodeoutput.hlsl index cfad44cd67..5786ba6cc1 100644 --- a/tools/clang/test/HLSLFileCheck/hlsl/workgraph/ast-nodeoutput.hlsl +++ b/tools/clang/test/HLSLFileCheck/hlsl/workgraph/ast-nodeoutput.hlsl @@ -26,21 +26,21 @@ void node01(NodeOutput output) //CHECK-NEXT: FieldDecl {{0x[0-9a-fA-F]+}} <> implicit h 'int' //CHECK-NEXT: CXXMethodDecl {{0x[0-9a-fA-F]+}} <> operator[] 'recordType &(unsigned int)' //CHECK-NEXT: ParmVarDecl {{0x[0-9a-fA-F]+}} <> Index 'unsigned int' -//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "" 0 +//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "DefaultSubscript" 0 //CHECK-NEXT: HLSLCXXOverloadAttr {{0x[0-9a-fA-F]+}} <> Implicit //CHECK-NEXT: CXXMethodDecl {{0x[0-9a-fA-F]+}} <> operator[] 'const recordType &(unsigned int) const' //CHECK-NEXT: ParmVarDecl {{0x[0-9a-fA-F]+}} <> Index 'unsigned int' -//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "" 0 +//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "DefaultSubscript" 0 //CHECK-NEXT: HLSLCXXOverloadAttr {{0x[0-9a-fA-F]+}} <> Implicit //CHECK-NEXT: CXXMethodDecl {{0x[0-9a-fA-F]+}} <> Get 'recordType &(unsigned int)' //CHECK-NEXT: ParmVarDecl {{0x[0-9a-fA-F]+}} <> Index 'unsigned int' cinit //CHECK-NEXT: IntegerLiteral {{0x[0-9a-fA-F]+}} <> 'unsigned int' 0 -//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "" +//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "DefaultSubscript" //CHECK-NEXT: HLSLCXXOverloadAttr {{0x[0-9a-fA-F]+}} <> Implicit //CHECK-NEXT: CXXMethodDecl {{0x[0-9a-fA-F]+}} <> Get 'const recordType &(unsigned int) const' //CHECK-NEXT: ParmVarDecl {{0x[0-9a-fA-F]+}} <> Index 'unsigned int' cinit //CHECK-NEXT: IntegerLiteral {{0x[0-9a-fA-F]+}} <> 'unsigned int' 0 -//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "" +//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "DefaultSubscript" //CHECK-NEXT: HLSLCXXOverloadAttr {{0x[0-9a-fA-F]+}} <> Implicit //CHECK-NEXT: FunctionTemplateDecl {{0x[0-9a-fA-F]+}} <> operator[] //CHECK-NEXT: TemplateTypeParmDecl {{0x[0-9a-fA-F]+}} <> class recordType @@ -57,19 +57,19 @@ void node01(NodeOutput output) //CHECK-NEXT: FieldDecl {{0x[0-9a-fA-F]+}} <> implicit h 'int' //CHECK-NEXT: CXXMethodDecl {{0x[0-9a-fA-F]+}} <> operator[] 'RECORD &(unsigned int)' //CHECK-NEXT: ParmVarDecl {{0x[0-9a-fA-F]+}} <> Index 'unsigned int' -//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "" 0 +//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "DefaultSubscript" 0 //CHECK-NEXT: HLSLCXXOverloadAttr {{0x[0-9a-fA-F]+}} <> Implicit //CHECK-NEXT: CXXMethodDecl {{0x[0-9a-fA-F]+}} <> operator[] 'const RECORD &(unsigned int) const' //CHECK-NEXT: ParmVarDecl {{0x[0-9a-fA-F]+}} <> Index 'unsigned int' -//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "" 0 +//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "DefaultSubscript" 0 //CHECK-NEXT: HLSLCXXOverloadAttr {{0x[0-9a-fA-F]+}} <> Implicit //CHECK-NEXT: CXXMethodDecl {{0x[0-9a-fA-F]+}} <> Get 'RECORD &(unsigned int)' //CHECK-NEXT: ParmVarDecl {{0x[0-9a-fA-F]+}} <> Index 'unsigned int' -//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "" 0 +//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "DefaultSubscript" 0 //CHECK-NEXT: HLSLCXXOverloadAttr {{0x[0-9a-fA-F]+}} <> Implicit //CHECK-NEXT: CXXMethodDecl {{0x[0-9a-fA-F]+}} <> Get 'const RECORD &(unsigned int) const' //CHECK-NEXT: ParmVarDecl {{0x[0-9a-fA-F]+}} <> Index 'unsigned int' -//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "" 0 +//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "DefaultSubscript" 0 //CHECK-NEXT: HLSLCXXOverloadAttr {{0x[0-9a-fA-F]+}} <> Implicit //CHECK-NEXT: FunctionTemplateDecl {{0x[0-9a-fA-F]+}} <> operator[] //CHECK-NEXT: TemplateTypeParmDecl {{0x[0-9a-fA-F]+}} <> class recordType @@ -98,21 +98,21 @@ void node02(NodeOutput output) //CHECK-NEXT: FieldDecl {{0x[0-9a-fA-F]+}} <> implicit h 'int' //CHECK-NEXT: CXXMethodDecl {{0x[0-9a-fA-F]+}} <> operator[] 'recordType &(unsigned int)' //CHECK-NEXT: ParmVarDecl {{0x[0-9a-fA-F]+}} <> Index 'unsigned int' -//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "" 0 +//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "DefaultSubscript" 0 //CHECK-NEXT: HLSLCXXOverloadAttr {{0x[0-9a-fA-F]+}} <> Implicit //CHECK-NEXT: CXXMethodDecl {{0x[0-9a-fA-F]+}} <> operator[] 'const recordType &(unsigned int) const' //CHECK-NEXT: ParmVarDecl {{0x[0-9a-fA-F]+}} <> Index 'unsigned int' -//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "" 0 +//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "DefaultSubscript" 0 //CHECK-NEXT: HLSLCXXOverloadAttr {{0x[0-9a-fA-F]+}} <> Implicit //CHECK-NEXT: CXXMethodDecl {{0x[0-9a-fA-F]+}} <> Get 'recordType &(unsigned int)' //CHECK-NEXT: ParmVarDecl {{0x[0-9a-fA-F]+}} <> Index 'unsigned int' cinit //CHECK-NEXT: IntegerLiteral {{0x[0-9a-fA-F]+}} <> 'unsigned int' 0 -//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "" +//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "DefaultSubscript" //CHECK-NEXT: HLSLCXXOverloadAttr {{0x[0-9a-fA-F]+}} <> Implicit //CHECK-NEXT: CXXMethodDecl {{0x[0-9a-fA-F]+}} <> Get 'const recordType &(unsigned int) const' //CHECK-NEXT: ParmVarDecl {{0x[0-9a-fA-F]+}} <> Index 'unsigned int' cinit //CHECK-NEXT: IntegerLiteral {{0x[0-9a-fA-F]+}} <> 'unsigned int' 0 -//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "" +//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "DefaultSubscript" //CHECK-NEXT: HLSLCXXOverloadAttr {{0x[0-9a-fA-F]+}} <> Implicit //CHECK-NEXT: FunctionTemplateDecl {{0x[0-9a-fA-F]+}} <> operator[] //CHECK-NEXT: TemplateTypeParmDecl {{0x[0-9a-fA-F]+}} <> class recordType @@ -129,19 +129,19 @@ void node02(NodeOutput output) //CHECK-NEXT: FieldDecl {{0x[0-9a-fA-F]+}} <> implicit h 'int' //CHECK-NEXT: CXXMethodDecl {{0x[0-9a-fA-F]+}} <> operator[] 'RECORD &(unsigned int)' //CHECK-NEXT: ParmVarDecl {{0x[0-9a-fA-F]+}} <> Index 'unsigned int' -//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "" 0 +//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "DefaultSubscript" 0 //CHECK-NEXT: HLSLCXXOverloadAttr {{0x[0-9a-fA-F]+}} <> Implicit //CHECK-NEXT: CXXMethodDecl {{0x[0-9a-fA-F]+}} <> operator[] 'const RECORD &(unsigned int) const' //CHECK-NEXT: ParmVarDecl {{0x[0-9a-fA-F]+}} <> Index 'unsigned int' -//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "" 0 +//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "DefaultSubscript" 0 //CHECK-NEXT: HLSLCXXOverloadAttr {{0x[0-9a-fA-F]+}} <> Implicit //CHECK-NEXT: CXXMethodDecl {{0x[0-9a-fA-F]+}} <> Get 'RECORD &(unsigned int)' //CHECK-NEXT: ParmVarDecl {{0x[0-9a-fA-F]+}} <> Index 'unsigned int' -//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "" 0 +//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "DefaultSubscript" 0 //CHECK-NEXT: HLSLCXXOverloadAttr {{0x[0-9a-fA-F]+}} <> Implicit //CHECK-NEXT: CXXMethodDecl {{0x[0-9a-fA-F]+}} <> Get 'const RECORD &(unsigned int) const' //CHECK-NEXT: ParmVarDecl {{0x[0-9a-fA-F]+}} <> Index 'unsigned int' -//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "" 0 +//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "DefaultSubscript" 0 //CHECK-NEXT: HLSLCXXOverloadAttr {{0x[0-9a-fA-F]+}} <> Implicit //CHECK-NEXT: FunctionTemplateDecl {{0x[0-9a-fA-F]+}} <> operator[] //CHECK-NEXT: TemplateTypeParmDecl {{0x[0-9a-fA-F]+}} <> class recordType diff --git a/tools/clang/test/HLSLFileCheck/hlsl/workgraph/ast-rwnodeinput.hlsl b/tools/clang/test/HLSLFileCheck/hlsl/workgraph/ast-rwnodeinput.hlsl index fb34e2094a..3a6cb18159 100644 --- a/tools/clang/test/HLSLFileCheck/hlsl/workgraph/ast-rwnodeinput.hlsl +++ b/tools/clang/test/HLSLFileCheck/hlsl/workgraph/ast-rwnodeinput.hlsl @@ -20,10 +20,10 @@ void node01(RWDispatchNodeInputRecord input) {} //CHECK-NEXT: HLSLNodeObjectAttr {{0x[0-9a-fA-F]+}} <> Implicit RWDispatchNodeInputRecord //CHECK-NEXT: FieldDecl {{0x[0-9a-fA-F]+}} <> implicit h 'int' //CHECK-NEXT: CXXMethodDecl {{0x[0-9a-fA-F]+}} <> Get 'recordtype &()' -//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "" 0 +//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "DefaultSubscript" 0 //CHECK-NEXT: HLSLCXXOverloadAttr {{0x[0-9a-fA-F]+}} <> Implicit //CHECK-NEXT: CXXMethodDecl {{0x[0-9a-fA-F]+}} <> Get 'const recordtype &() const' -//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "" 0 +//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "DefaultSubscript" 0 //CHECK-NEXT: HLSLCXXOverloadAttr {{0x[0-9a-fA-F]+}} <> Implicit //CHECK-NEXT: FunctionTemplateDecl {{0x[0-9a-fA-F]+}} <> FinishedCrossGroupSharing //CHECK-NEXT: TemplateTypeParmDecl {{0x[0-9a-fA-F]+}} <> class TResult @@ -44,20 +44,20 @@ void node02(RWGroupNodeInputRecords input) {} //CHECK-NEXT: CXXMethodDecl {{0x[0-9a-fA-F]+}} <> Get 'recordtype &(unsigned int)' //CHECK-NEXT: ParmVarDecl {{0x[0-9a-fA-F]+}} <> Index 'unsigned int' cinit //CHECK-NEXT: IntegerLiteral {{0x[0-9a-fA-F]+}} <> 'unsigned int' 0 -//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "" 0 +//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "DefaultSubscript" 0 //CHECK-NEXT: HLSLCXXOverloadAttr {{0x[0-9a-fA-F]+}} <> Implicit //CHECK-NEXT: CXXMethodDecl {{0x[0-9a-fA-F]+}} <> Get 'const recordtype &(unsigned int) const' //CHECK-NEXT: ParmVarDecl {{0x[0-9a-fA-F]+}} <> Index 'unsigned int' cinit //CHECK-NEXT: IntegerLiteral {{0x[0-9a-fA-F]+}} <> 'unsigned int' 0 -//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "" 0 +//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "DefaultSubscript" 0 //CHECK-NEXT: HLSLCXXOverloadAttr {{0x[0-9a-fA-F]+}} <> Implicit //CHECK-NEXT: CXXMethodDecl {{0x[0-9a-fA-F]+}} <> operator[] 'recordtype &(unsigned int)' //CHECK-NEXT: ParmVarDecl {{0x[0-9a-fA-F]+}} <> Index 'unsigned int' -//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "" 0 +//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "DefaultSubscript" 0 //CHECK-NEXT: HLSLCXXOverloadAttr {{0x[0-9a-fA-F]+}} <> Implicit //CHECK-NEXT: CXXMethodDecl {{0x[0-9a-fA-F]+}} <> operator[] 'const recordtype &(unsigned int) const' //CHECK-NEXT: ParmVarDecl {{0x[0-9a-fA-F]+}} <> Index 'unsigned int' -//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "" 0 +//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "DefaultSubscript" 0 //CHECK-NEXT: HLSLCXXOverloadAttr {{0x[0-9a-fA-F]+}} <> Implicit //CHECK-NEXT: FunctionTemplateDecl {{0x[0-9a-fA-F]+}} <> operator[] //CHECK-NEXT: TemplateTypeParmDecl {{0x[0-9a-fA-F]+}} <> class recordtype @@ -80,9 +80,9 @@ void node03(RWThreadNodeInputRecord input) {} //CHECK-NEXT: HLSLNodeObjectAttr {{0x[0-9a-fA-F]+}} <> Implicit RWThreadNodeInputRecord //CHECK-NEXT: FieldDecl {{0x[0-9a-fA-F]+}} <> implicit h 'int' //CHECK-NEXT: CXXMethodDecl {{0x[0-9a-fA-F]+}} <> Get 'recordtype &()' -//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "" 0 +//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "DefaultSubscript" 0 //CHECK-NEXT: HLSLCXXOverloadAttr {{0x[0-9a-fA-F]+}} <> Implicit //CHECK-NEXT: CXXMethodDecl {{0x[0-9a-fA-F]+}} <> Get 'const recordtype &() const' -//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "" 0 +//CHECK-NEXT: HLSLIntrinsicAttr {{0x[0-9a-fA-F]+}} <> Implicit "subscript" "DefaultSubscript" 0 //CHECK-NEXT: HLSLCXXOverloadAttr {{0x[0-9a-fA-F]+}} <> Implicit //CHECK-NEXT: ClassTemplateSpecializationDecl {{0x[0-9a-fA-F]+}} <> struct RWThreadNodeInputRecord definition