Mercurial > hg > CbC > CbC_llvm
comparison clang/test/CodeGen/aarch64-args.cpp @ 207:2e18cbf3894f
LLVM12
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 08 Jun 2021 06:07:14 +0900 |
parents | 1d019706d866 |
children | c4bab56944e8 |
comparison
equal
deleted
inserted
replaced
173:0572611fdcc8 | 207:2e18cbf3894f |
---|---|
13 #define EXTERNC | 13 #define EXTERNC |
14 #endif | 14 #endif |
15 | 15 |
16 struct Empty {}; | 16 struct Empty {}; |
17 | 17 |
18 // CHECK: define i32 @empty_arg(i32 %a) | 18 // CHECK: define{{.*}} i32 @empty_arg(i32 %a) |
19 // CHECK-GNU-C: define i32 @empty_arg(i32 %a) | 19 // CHECK-GNU-C: define{{.*}} i32 @empty_arg(i32 %a) |
20 // CHECK-GNU-CXX: define i32 @empty_arg(i8 %e.coerce, i32 %a) | 20 // CHECK-GNU-CXX: define{{.*}} i32 @empty_arg(i8 %e.coerce, i32 %a) |
21 EXTERNC int empty_arg(struct Empty e, int a) { | 21 EXTERNC int empty_arg(struct Empty e, int a) { |
22 return a; | 22 return a; |
23 } | 23 } |
24 | 24 |
25 // CHECK: define void @empty_ret() | 25 // CHECK: define{{.*}} void @empty_ret() |
26 // CHECK-GNU-C: define void @empty_ret() | 26 // CHECK-GNU-C: define{{.*}} void @empty_ret() |
27 // CHECK-GNU-CXX: define void @empty_ret() | 27 // CHECK-GNU-CXX: define{{.*}} void @empty_ret() |
28 EXTERNC struct Empty empty_ret() { | 28 EXTERNC struct Empty empty_ret() { |
29 struct Empty e; | 29 struct Empty e; |
30 return e; | 30 return e; |
31 } | 31 } |
32 | 32 |
36 | 36 |
37 struct SuperEmpty { | 37 struct SuperEmpty { |
38 int arr[0]; | 38 int arr[0]; |
39 }; | 39 }; |
40 | 40 |
41 // CHECK: define i32 @super_empty_arg(i32 %a) | 41 // CHECK: define{{.*}} i32 @super_empty_arg(i32 %a) |
42 // CHECK-GNU-C: define i32 @super_empty_arg(i32 %a) | 42 // CHECK-GNU-C: define{{.*}} i32 @super_empty_arg(i32 %a) |
43 // CHECK-GNU-CXX: define i32 @super_empty_arg(i32 %a) | 43 // CHECK-GNU-CXX: define{{.*}} i32 @super_empty_arg(i32 %a) |
44 EXTERNC int super_empty_arg(struct SuperEmpty e, int a) { | 44 EXTERNC int super_empty_arg(struct SuperEmpty e, int a) { |
45 return a; | 45 return a; |
46 } | 46 } |
47 | 47 |
48 // This is not empty. It has 0 size but consumes a register slot for GCC. | 48 // This is not empty. It has 0 size but consumes a register slot for GCC. |
49 | 49 |
50 struct SortOfEmpty { | 50 struct SortOfEmpty { |
51 struct SuperEmpty e; | 51 struct SuperEmpty e; |
52 }; | 52 }; |
53 | 53 |
54 // CHECK: define i32 @sort_of_empty_arg(i32 %a) | 54 // CHECK: define{{.*}} i32 @sort_of_empty_arg(i32 %a) |
55 // CHECK-GNU-C: define i32 @sort_of_empty_arg(i32 %a) | 55 // CHECK-GNU-C: define{{.*}} i32 @sort_of_empty_arg(i32 %a) |
56 // CHECK-GNU-CXX: define i32 @sort_of_empty_arg(i8 %e.coerce, i32 %a) | 56 // CHECK-GNU-CXX: define{{.*}} i32 @sort_of_empty_arg(i8 %e.coerce, i32 %a) |
57 EXTERNC int sort_of_empty_arg(struct Empty e, int a) { | 57 EXTERNC int sort_of_empty_arg(struct Empty e, int a) { |
58 return a; | 58 return a; |
59 } | 59 } |
60 | 60 |
61 // CHECK: define void @sort_of_empty_ret() | 61 // CHECK: define{{.*}} void @sort_of_empty_ret() |
62 // CHECK-GNU-C: define void @sort_of_empty_ret() | 62 // CHECK-GNU-C: define{{.*}} void @sort_of_empty_ret() |
63 // CHECK-GNU-CXX: define void @sort_of_empty_ret() | 63 // CHECK-GNU-CXX: define{{.*}} void @sort_of_empty_ret() |
64 EXTERNC struct SortOfEmpty sort_of_empty_ret() { | 64 EXTERNC struct SortOfEmpty sort_of_empty_ret() { |
65 struct SortOfEmpty e; | 65 struct SortOfEmpty e; |
66 return e; | 66 return e; |
67 } | 67 } |