Revert "[llvm] Improve llvm.objectsize computation by computing GEP, alloca and mallo...
[llvm-project.git] / clang / test / CodeGen / AArch64 / args-hfa.c
blob75dfd880516645a6c5dc2da49a207d941ab2f230
1 // RUN: %clang_cc1 -triple aarch64 -emit-llvm -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-AAPCS
2 // RUN: %clang_cc1 -triple arm64-apple-ios7.0 -target-abi darwinpcs -emit-llvm -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK-DARWIN
3 // RUN: %clang_cc1 -triple aarch64-linux-gnu -emit-llvm -o - -x c %s | FileCheck %s --check-prefixes=CHECK,CHECK-AAPCS
5 typedef struct {
6 float v[2];
7 } S0;
9 // CHECK-AAPCS: define{{.*}} float @f0([2 x float] alignstack(8) %h.coerce)
10 // CHECK-DARWIN: define{{.*}} float @f0([2 x float] %h.coerce)
11 float f0(S0 h) {
12 return h.v[0];
15 // CHECK: define{{.*}} float @f0_call()
16 // CHECK-AAPCS: %call = call float @f0([2 x float] alignstack(8) %0)
17 // CHECK-DARWIN: %call = call float @f0([2 x float] %0)
18 float f0_call(void) {
19 S0 h = {1.0f, 2.0f};
20 return f0(h);
22 typedef struct {
23 double v[2];
24 } S1;
25 // CHECK-AAPCS: define{{.*}} double @f1([2 x double] alignstack(8) %h.coerce)
26 // CHECK-DARWIN: define{{.*}} double @f1([2 x double] %h.coerce)
27 double f1(S1 h) {
28 return h.v[0];
31 // CHECK: define{{.*}} double @f1_call()
32 // CHECK-AAPCS: %call = call double @f1([2 x double] alignstack(8) %0
33 // CHECK-DARWIN: %call = call double @f1([2 x double] %0
34 double f1_call(void) {
35 S1 h = {1.0, 2.0};
36 return f1(h);
38 typedef struct {
39 __attribute__((__aligned__(16))) double v[2];
40 } S2;
42 // CHECK-AAPCS: define{{.*}} double @f2([2 x double] alignstack(16) %h.coerce)
43 // CHECK-DARWIN: define{{.*}} double @f2([2 x double] %h.coerce)
44 double f2(S2 h) {
45 return h.v[0];
48 // CHECK: define{{.*}} double @f2_call()
49 // CHECK-AAPCS: %call = call double @f2([2 x double] alignstack(16) %0)
50 // CHECK-DARWIN: %call = call double @f2([2 x double] %0
51 double f2_call(void) {
52 S2 h = {1.0, 2.0};
53 return f2(h);
56 typedef struct {
57 __attribute__((__aligned__(32))) double v[4];
58 } S3;
60 // CHECK-AAPCS: define{{.*}} double @f3([4 x double] alignstack(16) %h.coerce)
61 // CHECK-DARWIN: define{{.*}} double @f3([4 x double] %h.coerce)
62 double f3(S3 h) {
63 return h.v[0];
66 // CHECK: define{{.*}} double @f3_call()
67 // CHECK-AAPCS: %call = call double @f3([4 x double] alignstack(16) %0)
68 // CHECK-DARWIN: %call = call double @f3([4 x double] %0
69 double f3_call(void) {
70 S3 h = {1.0, 2.0};
71 return f3(h);