OLD | NEW |
1 ; RUN: opt %s -expand-small-arguments -S | FileCheck %s | 1 ; RUN: opt %s -expand-small-arguments -S | FileCheck %s |
2 | 2 |
3 @var = global i8 0 | 3 @var = global i8 0 |
4 | 4 |
5 | 5 |
6 define void @small_arg(i8 %val) { | 6 define void @small_arg(i8 %val) { |
7 store i8 %val, i8* @var | 7 store i8 %val, i8* @var |
8 ret void | 8 ret void |
9 } | 9 } |
10 ; CHECK: define void @small_arg(i32 %val) { | 10 ; CHECK: define void @small_arg(i32 %val) { |
11 ; CHECK-NEXT: %val.arg_trunc = trunc i32 %val to i8 | 11 ; CHECK-NEXT: %val.arg_trunc = trunc i32 %val to i8 |
12 ; CHECK-NEXT: store i8 %val.arg_trunc, i8* @var | 12 ; CHECK-NEXT: store i8 %val.arg_trunc, i8* @var |
13 | 13 |
14 | 14 |
15 define i8 @small_result() { | 15 define i8 @small_result() { |
16 %val = load i8* @var | 16 %val = load i8, i8* @var |
17 ret i8 %val | 17 ret i8 %val |
18 } | 18 } |
19 ; CHECK: define i32 @small_result() { | 19 ; CHECK: define i32 @small_result() { |
20 ; CHECK-NEXT: %val = load i8* @var | 20 ; CHECK-NEXT: %val = load i8, i8* @var |
21 ; CHECK-NEXT: %val.ret_ext = zext i8 %val to i32 | 21 ; CHECK-NEXT: %val.ret_ext = zext i8 %val to i32 |
22 ; CHECK-NEXT: ret i32 %val.ret_ext | 22 ; CHECK-NEXT: ret i32 %val.ret_ext |
23 | 23 |
24 define signext i8 @small_result_signext() { | 24 define signext i8 @small_result_signext() { |
25 %val = load i8* @var | 25 %val = load i8, i8* @var |
26 ret i8 %val | 26 ret i8 %val |
27 } | 27 } |
28 ; CHECK: define signext i32 @small_result_signext() { | 28 ; CHECK: define signext i32 @small_result_signext() { |
29 ; CHECK-NEXT: %val = load i8* @var | 29 ; CHECK-NEXT: %val = load i8, i8* @var |
30 ; CHECK-NEXT: %val.ret_ext = sext i8 %val to i32 | 30 ; CHECK-NEXT: %val.ret_ext = sext i8 %val to i32 |
31 ; CHECK-NEXT: ret i32 %val.ret_ext | 31 ; CHECK-NEXT: ret i32 %val.ret_ext |
32 | 32 |
33 | 33 |
34 define void @call_small_arg() { | 34 define void @call_small_arg() { |
35 call void @small_arg(i8 100) | 35 call void @small_arg(i8 100) |
36 ret void | 36 ret void |
37 } | 37 } |
38 ; CHECK: define void @call_small_arg() { | 38 ; CHECK: define void @call_small_arg() { |
39 ; CHECK-NEXT: %arg_ext = zext i8 100 to i32 | 39 ; CHECK-NEXT: %arg_ext = zext i8 100 to i32 |
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
207 | 207 |
208 ; CHECK: lpad: | 208 ; CHECK: lpad: |
209 ; CHECK-NEXT: %lp = landingpad { i8*, i32 } personality i8* null | 209 ; CHECK-NEXT: %lp = landingpad { i8*, i32 } personality i8* null |
210 ; CHECK-NEXT: cleanup | 210 ; CHECK-NEXT: cleanup |
211 ; CHECK-NEXT: %.ret_ext = zext i8 123 to i32 | 211 ; CHECK-NEXT: %.ret_ext = zext i8 123 to i32 |
212 ; CHECK-NEXT: ret i32 %.ret_ext | 212 ; CHECK-NEXT: ret i32 %.ret_ext |
213 | 213 |
214 | 214 |
215 ; CHECK: attributes [[NOUNWIND]] = { nounwind } | 215 ; CHECK: attributes [[NOUNWIND]] = { nounwind } |
216 ; CHECK: attributes [[NOINLINE]] = { noinline } | 216 ; CHECK: attributes [[NOINLINE]] = { noinline } |
OLD | NEW |