2
2
; RUN: opt -S -passes=attributor --attributor-seed-allow-list asd < %s | FileCheck %s --check-prefixes=CHECK_DISABLED
3
3
; RUN: opt -S -passes=attributor --attributor-seed-allow-list AAValueSimplify < %s | FileCheck %s --check-prefixes=CHECK_ENABLED
4
4
5
+ ; RUN: opt -S -passes=attributor --attributor-function-seed-allow-list asd < %s | FileCheck %s --check-prefixes=CHECK_DISABLED_FUNCTION
6
+
7
+ ; RUN: opt -S -passes=attributor --attributor-function-seed-allow-list range_use1 < %s | FileCheck %s --check-prefixes=CHECK_ENABLED_FUNCTION
8
+
9
+
10
+
11
+
5
12
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
6
13
7
14
; Function Attrs: nounwind uwtable
@@ -12,22 +19,67 @@ define internal i32 @range_test(i32 %a) #0 {
12
19
; CHECK_DISABLED-NEXT: [[TMP1:%.*]] = icmp sgt i32 [[A]], 100
13
20
; CHECK_DISABLED-NEXT: [[TMP2:%.*]] = zext i1 [[TMP1]] to i32
14
21
; CHECK_DISABLED-NEXT: ret i32 [[TMP2]]
22
+ ;
23
+ ; CHECK_DISABLED_FUNCTION: Function Attrs: noinline nounwind uwtable
24
+ ; CHECK_DISABLED_FUNCTION-LABEL: define {{[^@]+}}@range_test
25
+ ; CHECK_DISABLED_FUNCTION-SAME: (i32 [[A:%.*]])
26
+ ; CHECK_DISABLED_FUNCTION-NEXT: [[TMP1:%.*]] = icmp sgt i32 [[A]], 100
27
+ ; CHECK_DISABLED_FUNCTION-NEXT: [[TMP2:%.*]] = zext i1 [[TMP1]] to i32
28
+ ; CHECK_DISABLED_FUNCTION-NEXT: ret i32 [[TMP2]]
29
+ ;
30
+ ; CHECK_ENABLED_FUNCTION: Function Attrs: noinline nounwind readnone uwtable
31
+ ; CHECK_ENABLED_FUNCTION-LABEL: define {{[^@]+}}@range_test()
32
+ ; CHECK_ENABLED_FUNCTION-NEXT: ret i32 1
15
33
;
16
34
%1 = icmp sgt i32 %a , 100
17
35
%2 = zext i1 %1 to i32
18
36
ret i32 %2
19
37
}
20
38
21
39
; Function Attrs: nounwind uwtable
22
- define i32 @range_use () #0 {
40
+ define i32 @range_use1 () #0 {
23
41
; CHECK_DISABLED: Function Attrs: noinline nounwind uwtable
24
- ; CHECK_DISABLED-LABEL: define {{[^@]+}}@range_use ()
42
+ ; CHECK_DISABLED-LABEL: define {{[^@]+}}@range_use1 ()
25
43
; CHECK_DISABLED-NEXT: [[TMP1:%.*]] = call i32 @range_test(i32 123)
26
44
; CHECK_DISABLED-NEXT: ret i32 [[TMP1]]
27
45
;
28
46
; CHECK_ENABLED: Function Attrs: noinline nounwind uwtable
29
- ; CHECK_ENABLED-LABEL: define {{[^@]+}}@range_use ()
47
+ ; CHECK_ENABLED-LABEL: define {{[^@]+}}@range_use1 ()
30
48
; CHECK_ENABLED-NEXT: ret i32 1
49
+ ;
50
+ ; CHECK_DISABLED_FUNCTION: Function Attrs: noinline nounwind uwtable
51
+ ; CHECK_DISABLED_FUNCTION-LABEL: define {{[^@]+}}@range_use1()
52
+ ; CHECK_DISABLED_FUNCTION-NEXT: [[TMP1:%.*]] = call i32 @range_test(i32 123)
53
+ ; CHECK_DISABLED_FUNCTION-NEXT: ret i32 [[TMP1]]
54
+ ;
55
+ ; CHECK_ENABLED_FUNCTION: Function Attrs: nofree noinline nosync nounwind readnone uwtable willreturn
56
+ ; CHECK_ENABLED_FUNCTION-LABEL: define {{[^@]+}}@range_use1()
57
+ ; CHECK_ENABLED_FUNCTION-NEXT: ret i32 1
58
+ ;
59
+ %1 = call i32 @range_test (i32 123 )
60
+ ret i32 %1
61
+ }
62
+
63
+ ; Function Attrs: nounwind uwtable
64
+ define i32 @range_use2 () #0 {
65
+ ; CHECK_DISABLED: Function Attrs: noinline nounwind uwtable
66
+ ; CHECK_DISABLED-LABEL: define {{[^@]+}}@range_use2()
67
+ ; CHECK_DISABLED-NEXT: [[TMP1:%.*]] = call i32 @range_test(i32 123)
68
+ ; CHECK_DISABLED-NEXT: ret i32 [[TMP1]]
69
+ ;
70
+ ; CHECK_ENABLED: Function Attrs: noinline nounwind uwtable
71
+ ; CHECK_ENABLED-LABEL: define {{[^@]+}}@range_use2()
72
+ ; CHECK_ENABLED-NEXT: ret i32 1
73
+ ;
74
+ ; CHECK_DISABLED_FUNCTION: Function Attrs: noinline nounwind uwtable
75
+ ; CHECK_DISABLED_FUNCTION-LABEL: define {{[^@]+}}@range_use2()
76
+ ; CHECK_DISABLED_FUNCTION-NEXT: [[TMP1:%.*]] = call i32 @range_test(i32 123)
77
+ ; CHECK_DISABLED_FUNCTION-NEXT: ret i32 [[TMP1]]
78
+ ;
79
+ ; CHECK_ENABLED_FUNCTION: Function Attrs: noinline nounwind uwtable
80
+ ; CHECK_ENABLED_FUNCTION-LABEL: define {{[^@]+}}@range_use2()
81
+ ; CHECK_ENABLED_FUNCTION-NEXT: [[TMP1:%.*]] = call i32 @range_test()
82
+ ; CHECK_ENABLED_FUNCTION-NEXT: ret i32 [[TMP1]]
31
83
;
32
84
%1 = call i32 @range_test (i32 123 )
33
85
ret i32 %1
0 commit comments