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()
foo1(void)28 D0 foo1(void) {
29   return gd0;
30 }
31 
32 // CHECK: define inreg { double, float } @_Z4foo2v()
foo2(void)33 D1 foo2(void) {
34   return gd1;
35 }
36 
37 // CHECK-LABEL: define void @_Z4foo32D2(i64 inreg %a0.coerce0, double inreg %a0.coerce1)
foo3(D2 a0)38 void foo3(D2 a0) {
39   gd2 = a0;
40 }
41 
42 // CHECK-LABEL: define void @_Z4foo42D0(i64 inreg %a0.coerce0, i64 inreg %a0.coerce1)
foo4(D0 a0)43 void foo4(D0 a0) {
44   gd0 = a0;
45 }
46 
47