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 }