1 // RUN: %clang_cc1 -triple riscv32 -target-feature +d -target-abi ilp32d \ 2 // RUN: -Wno-missing-declarations -emit-llvm %s -o - | FileCheck %s 3 4 struct empty_float2 { struct {}; float f; float g; }; 5 6 // CHECK: define{{.*}} float @_Z14f_empty_float212empty_float2(float %0, float %1) 7 // CHECK: { [4 x i8], float, float } 8 float f_empty_float2(empty_float2 a) { 9 return a.g; 10 } 11 12 struct empty_double2 { struct {}; double f; double g; }; 13 14 // CHECK: define{{.*}} double @_Z15f_empty_double213empty_double2(double %0, double %1) 15 // CHECK: { [8 x i8], double, double } 16 double f_empty_double2(empty_double2 a) { 17 return a.g; 18 } 19 20 struct empty_float_double { struct {}; float f; double g; }; 21 22 // CHECK: define{{.*}} double @_Z20f_empty_float_double18empty_float_double(float %0, double %1) 23 // CHECK: { [4 x i8], float, double } 24 double f_empty_float_double(empty_float_double a) { 25 return a.g; 26 } 27 28 struct empty_double_float { struct {}; double f; float g; }; 29 30 // CHECK: define{{.*}} double @_Z20f_empty_double_float18empty_double_float(double %0, float %1) 31 // CHECK: { [8 x i8], double, float } 32 double f_empty_double_float(empty_double_float a) { 33 return a.g; 34 } 35 36 struct empty_complex_f { struct {}; float _Complex fc; }; 37 38 // CHECK: define{{.*}} float @_Z17f_empty_complex_f15empty_complex_f(float %0, float %1) 39 // CHECK: { [4 x i8], float, float } 40 float f_empty_complex_f(empty_complex_f a) { 41 return __imag__ a.fc; 42 } 43 44 struct empty_complex_d { struct {}; double _Complex fc; }; 45 46 // CHECK: define{{.*}} double @_Z17f_empty_complex_d15empty_complex_d(double %0, double %1) 47 // CHECK: { [8 x i8], double, double } 48 double f_empty_complex_d(empty_complex_d a) { 49 return __imag__ a.fc; 50 } 51