[MIParser] Don't use Register to hold Dwarf register numbers. NFC (#125263)
[llvm-project.git] / clang / test / CXX / dcl.decl / dcl.init / dcl.init.ref / p5-examples.cpp
blob77aef99eaa7c80ae2fca6b7a48d122eb8b4a5024
1 // RUN: %clang_cc1 -ast-dump %s 2>&1 | FileCheck %s
3 // CHECK-LABEL: example0
4 void example0() {
5 double d = 2.0;
6 // CHECK: VarDecl{{.*}}rd 'double &'
7 // CHECK-NEXT: DeclRefExpr
8 double &rd = d;
9 // CHECK: VarDecl{{.*}}rcd 'const double &'
10 // CHECK-NEXT: ImplicitCastExpr{{.*}}'const double' lvalue <NoOp>
11 const double &rcd = d;
14 struct A { };
15 struct B : A { } b;
17 // CHECK-LABEL: example1
18 void example1() {
19 // CHECK: VarDecl{{.*}}ra 'A &'
20 // CHECK: ImplicitCastExpr{{.*}}'A' lvalue <DerivedToBase (A)>
21 A &ra = b;
22 // CHECK: VarDecl{{.*}}rca 'const A &'
23 // CHECK: ImplicitCastExpr{{.*}}'const A' lvalue <DerivedToBase (A)>
24 // CHECK-NOT: MaterializeTemporaryExpr
25 // CHECK: ImplicitCastExpr{{.*}}'const B' lvalue <NoOp>
26 const A& rca = b;
29 extern B f();
31 struct X {
32 operator B();
33 } x;
35 // CHECK-LABEL: example2
36 void example2() {
37 // CHECK: VarDecl{{.*}}rca 'const A &'
38 // CHECK: ImplicitCastExpr{{.*}}'const A' lvalue <DerivedToBase (A)>
39 // CHECK: MaterializeTemporaryExpr{{.*}}'const B'
40 // CHECK: ImplicitCastExpr{{.*}}'const B' <NoOp>
41 // CHECK: CallExpr{{.*}}B
42 const A &rca = f();
43 // CHECK: VarDecl{{.*}}r 'const A &'
44 // CHECK: ImplicitCastExpr{{.*}}'const A' lvalue <DerivedToBase (A)>
45 // CHECK: MaterializeTemporaryExpr{{.*}}'const B'
46 // CHECK: ImplicitCastExpr{{.*}}'const B' <NoOp>
47 // CHECK: CXXMemberCallExpr{{.*}}'B'
48 const A& r = x;
51 // CHECK-LABEL: example3
52 void example3() {
53 // CHECK: VarDecl{{.*}}rcd2 'const double &'
54 // CHECK: ImplicitCastExpr{{.*}} <IntegralToFloating>
55 const double& rcd2 = 2;