]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/CodeGen/mips64-class-return.cpp
Vendor import of clang RELEASE_360/rc2 tag r227651 (effectively, 3.6.0 RC2):
[FreeBSD/FreeBSD.git] / test / CodeGen / mips64-class-return.cpp
1 // RUN: %clang -target mips64el-unknown-linux -O3 -S -mabi=n64 -o - -emit-llvm %s | FileCheck %s
2
3 class B0 {
4   double d;
5 };
6
7 class D0 : public B0 {
8   float f;
9 };
10
11 class B1 {
12 };
13
14 class D1 : public B1 {
15   double d;
16   float f;
17 };
18
19 class D2 : public B0 {
20   double d2;
21 };
22
23 extern D0 gd0;
24 extern D1 gd1;
25 extern D2 gd2;
26
27 // CHECK: define inreg { i64, i64 } @_Z4foo1v()
28 D0 foo1(void) {
29   return gd0;
30 }
31
32 // CHECK: define inreg { double, float } @_Z4foo2v()
33 D1 foo2(void) {
34   return gd1;
35 }
36
37 // CHECK-LABEL: define void @_Z4foo32D2(i64 inreg %a0.coerce0, double inreg %a0.coerce1)
38 void foo3(D2 a0) {
39   gd2 = a0;
40 }
41
42 // CHECK-LABEL: define void @_Z4foo42D0(i64 inreg %a0.coerce0, i64 inreg %a0.coerce1)
43 void foo4(D0 a0) {
44   gd0 = a0;
45 }
46