// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-compute -x hlsl -ast-dump -disable-llvm-passes -o - -hlsl-entry main %s | FileCheck %s class Pair { int First; int Second; int getFirst() { return this.First; } int getSecond() { return Second; } }; class PairInfo : Pair { int Sum; int getSum() { return this.First + Second; } }; [numthreads(1, 1, 1)] void main() { Pair Vals = {1, 2}; Vals.First = Vals.getFirst(); Vals.Second = Vals.getSecond(); PairInfo ValsInfo; ValsInfo.First = Vals.First; ValsInfo.Second = Vals.Second; ValsInfo.Sum = ValsInfo.getSum(); } // CHECK: -CXXMethodDecl 0x{{[0-9A-Fa-f]+}} line:7:7 used getFirst 'int ()' implicit-inline // CHECK-NEXT:`-CompoundStmt 0x{{[0-9A-Fa-f]+}} // CHECK-NEXT:`-ReturnStmt 0x{{[0-9A-Fa-f]+}} // CHECK-NEXT:`-ImplicitCastExpr 0x{{[0-9A-Fa-f]+}} 'int' // CHECK-NEXT:`-MemberExpr 0x{{[0-9A-Fa-f]+}} 'int' lvalue .First 0x{{[0-9A-Fa-f]+}} // CHECK-NEXT:`-CXXThisExpr 0x{{[0-9A-Fa-f]+}} 'Pair' lvalue this // CHECK-NEXT:-CXXMethodDecl 0x{{[0-9A-Fa-f]+}} line:11:7 used getSecond 'int ()' implicit-inline // CHECK-NEXT:`-CompoundStmt 0x{{[0-9A-Fa-f]+}} // CHECK-NEXT:`-ReturnStmt 0x{{[0-9A-Fa-f]+}} // CHECK-NEXT:`-ImplicitCastExpr 0x{{[0-9A-Fa-f]+}} 'int' // CHECK-NEXT:`-MemberExpr 0x{{[0-9A-Fa-f]+}} 'int' lvalue .Second 0x{{[0-9A-Fa-f]+}} // CHECK-NEXT:`-CXXThisExpr 0x{{[0-9A-Fa-f]+}} 'Pair' lvalue implicit this // CHECK: CXXMethodDecl 0x{{[0-9A-Fa-f]+}} line:19:7 used getSum 'int ()' implicit-inline // CHECK-NEXT:`-CompoundStmt 0x{{[0-9A-Fa-f]+}} // CHECK-NEXT:`-ReturnStmt 0x{{[0-9A-Fa-f]+}} // CHECK-NEXT:`-BinaryOperator 0x{{[0-9A-Fa-f]+}} 'int' '+' // CHECK-NEXT:-ImplicitCastExpr 0x{{[0-9A-Fa-f]+}} 'int' // CHECK-NEXT:`-MemberExpr 0x{{[0-9A-Fa-f]+}} 'int' lvalue .First 0x{{[0-9A-Fa-f]+}} // CHECK-NEXT:`-ImplicitCastExpr 0x{{[0-9A-Fa-f]+}} 'Pair' lvalue // CHECK-NEXT:`-CXXThisExpr 0x{{[0-9A-Fa-f]+}} 'PairInfo' lvalue this // CHECK-NEXT:`-ImplicitCastExpr 0x{{[0-9A-Fa-f]+}} 'int' // CHECK-NEXT:`-MemberExpr 0x{{[0-9A-Fa-f]+}} 'int' lvalue .Second 0x{{[0-9A-Fa-f]+}} // CHECK-NEXT:`-ImplicitCastExpr 0x{{[0-9A-Fa-f]+}} 'Pair' lvalue // CHECK-NEXT:`-CXXThisExpr 0x{{[0-9A-Fa-f]+}} 'PairInfo' lvalue implicit this