Skip to content
This repository was archived by the owner on Nov 1, 2021. It is now read-only.

Commit 7acbb4c

Browse files
committed
PNaCl: Rewrite @llvm.assume calls to nothing.
@llvm.assume calls can safely be removed. R=jfb@chromium.org TEST= (make -C toolchain_build/out/llvm_x86_64_linux_work -j `nproc` check) BUG= Review URL: https://codereview.chromium.org/1029273002
1 parent 9c6f288 commit 7acbb4c

File tree

2 files changed

+38
-1
lines changed

2 files changed

+38
-1
lines changed

lib/Transforms/NaCl/RewriteLLVMIntrinsics.cpp

+3-1
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,10 @@ bool RewriteLLVMIntrinsics::runOnModule(Module &M) {
115115

116116
// Remove all @llvm.prefetch intrinsics.
117117
ToNothing PrefetchRewriter(M, Intrinsic::prefetch);
118+
ToNothing AssumeRewriter(M, Intrinsic::assume);
118119

119-
return visitUses(FltRoundsRewriter) | visitUses(PrefetchRewriter);
120+
return visitUses(FltRoundsRewriter) | visitUses(PrefetchRewriter)
121+
| visitUses(AssumeRewriter);
120122
}
121123

122124
bool RewriteLLVMIntrinsics::visitUses(IntrinsicRewriter &Rewriter) {
+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
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+
}

0 commit comments

Comments
 (0)