1 | // RUN: %clang_cc1 -triple aarch64-windows -ffreestanding -emit-llvm -O0 \ |
2 | // RUN: -x c++ -o - %s | FileCheck %s |
3 | |
4 | struct pod { int a, b, c, d, e; }; |
5 | |
6 | struct non_pod { |
7 | int a; |
8 | non_pod() {} |
9 | }; |
10 | |
11 | struct pod s; |
12 | struct non_pod t; |
13 | |
14 | struct pod bar() { return s; } |
15 | struct non_pod foo() { return t; } |
16 | // CHECK: define {{.*}} void @{{.*}}bar{{.*}}(%struct.pod* noalias sret %agg.result) |
17 | // CHECK: define {{.*}} void @{{.*}}foo{{.*}}(%struct.non_pod* noalias %agg.result) |
18 | |
19 | |
20 | // Check instance methods. |
21 | struct pod2 { int x; }; |
22 | struct Baz { pod2 baz(); }; |
23 | |
24 | int qux() { return Baz().baz().x; } |
25 | // CHECK: declare {{.*}} void @{{.*}}baz@Baz{{.*}}(%struct.Baz*, %struct.pod2*) |
26 | |