// RUN: %clang_cc1 -triple mips64el-unknown-linux -O3 -S -target-abi n64 -o - -emit-llvm %s | FileCheck %s class B0 { double d; }; class D0 : public B0 { float f; }; class B1 { }; class D1 : public B1 { double d; float f; }; class D2 : public B0 { double d2; }; extern D0 gd0; extern D1 gd1; extern D2 gd2; // CHECK: define inreg { i64, i64 } @_Z4foo1v() D0 foo1(void) { return gd0; } // CHECK: define inreg { double, float } @_Z4foo2v() D1 foo2(void) { return gd1; } // CHECK-LABEL: define void @_Z4foo32D2(i64 inreg %a0.coerce0, double inreg %a0.coerce1) void foo3(D2 a0) { gd2 = a0; } // CHECK-LABEL: define void @_Z4foo42D0(i64 inreg %a0.coerce0, i64 inreg %a0.coerce1) void foo4(D0 a0) { gd0 = a0; }