This repository was archived by the owner on Nov 1, 2021. It is now read-only.
File tree 2 files changed +38
-1
lines changed
2 files changed +38
-1
lines changed Original file line number Diff line number Diff line change @@ -115,8 +115,10 @@ bool RewriteLLVMIntrinsics::runOnModule(Module &M) {
115
115
116
116
// Remove all @llvm.prefetch intrinsics.
117
117
ToNothing PrefetchRewriter (M, Intrinsic::prefetch);
118
+ ToNothing AssumeRewriter (M, Intrinsic::assume);
118
119
119
- return visitUses (FltRoundsRewriter) | visitUses (PrefetchRewriter);
120
+ return visitUses (FltRoundsRewriter) | visitUses (PrefetchRewriter)
121
+ | visitUses (AssumeRewriter);
120
122
}
121
123
122
124
bool RewriteLLVMIntrinsics::visitUses (IntrinsicRewriter &Rewriter) {
Original file line number Diff line number Diff line change
1
+ ; RUN: opt < %s -rewrite-llvm-intrinsic-calls -S | FileCheck %s
2
+ ; RUN: opt < %s -rewrite-llvm-intrinsic-calls -S | FileCheck %s -check-prefix=CLEANED
3
+ ; Test the @llvm.assume part of the RewriteLLVMIntrinsics pass
4
+
5
+ declare void @llvm.assume (i1 )
6
+
7
+ ; No declaration or definition of llvm.assume() should remain.
8
+ ; CLEANED-NOT: @llvm.assume
9
+
10
+ define void @call_assume (i1 %val ) {
11
+ ; CHECK: call_assume
12
+ ; CHECK-NEXT: ret void
13
+ call void @llvm.assume (i1 %val )
14
+ ret void
15
+ }
16
+
17
+ ; A more complex example with a number of calls in several BBs.
18
+ define void @multiple_calls (i1 %val ) {
19
+ ; CHECK: multiple_calls
20
+ entryblock:
21
+ ; CHECK: entryblock
22
+ ; CHECK-NEXT: br
23
+ call void @llvm.assume (i1 %val )
24
+ br i1 %val , label %exitblock , label %never
25
+ never:
26
+ ; CHECK: never:
27
+ ; CHECK-NEXT: br
28
+ call void @llvm.assume (i1 %val )
29
+ br label %exitblock
30
+ exitblock:
31
+ ; CHECK: exitblock:
32
+ ; CHECK-NEXT: ret void
33
+ call void @llvm.assume (i1 %val )
34
+ ret void
35
+ }
You can’t perform that action at this time.
0 commit comments