1 // RUN: %clang_cc1 -triple mips64el-unknown-linux -O3 -S -target-abi 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)28D0 foo1(void) { 29 return gd0; 30 } 31 32 // CHECK: define inreg { double, float } @_Z4foo2v() foo2(void)33D1 foo2(void) { 34 return gd1; 35 } 36 37 // CHECK-LABEL: define void @_Z4foo32D2(i64 inreg %a0.coerce0, double inreg %a0.coerce1) foo3(D2 a0)38void 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)43void foo4(D0 a0) { 44 gd0 = a0; 45 } 46 47