Skip to content

Commit 45b8694

Browse files
[EVM] Add pre-commit test for Don't emit JUMPDEST in entry point of bytecode
Signed-off-by: Vladimir Radosavljevic <[email protected]>
1 parent 056fdd9 commit 45b8694

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2+
; RUN: llc -O3 < %s | FileCheck %s
3+
4+
target datalayout = "E-p:256:256-i256:256:256-S256-a:256:256"
5+
target triple = "evm"
6+
7+
declare void @llvm.evm.return(ptr addrspace(1), i256)
8+
9+
define void @__entry() noreturn {
10+
; CHECK-LABEL: __entry:
11+
; CHECK: ; %bb.0: ; %entry
12+
; CHECK-NEXT: JUMPDEST
13+
; CHECK-NEXT: PUSH0
14+
; CHECK-NEXT: MLOAD
15+
; CHECK-NEXT: DUP1
16+
; CHECK-NEXT: PUSH0
17+
; CHECK-NEXT: SWAP1
18+
; CHECK-NEXT: PUSH4 @.BB0_2
19+
; CHECK-NEXT: JUMPI
20+
; CHECK-NEXT: ; %bb.1:
21+
; CHECK-NEXT: SWAP1
22+
; CHECK-NEXT: .BB0_2: ; %bb1
23+
; CHECK-NEXT: JUMPDEST
24+
; CHECK-NEXT: POP
25+
; CHECK-NEXT: PUSH0
26+
; CHECK-NEXT: MSTORE
27+
; CHECK-NEXT: PUSH1 0x20
28+
; CHECK-NEXT: PUSH0
29+
; CHECK-NEXT: RETURN
30+
entry:
31+
%load = load i256, ptr addrspace(1) null, align 64
32+
%cmp = icmp eq i256 %load, 0
33+
br i1 %cmp, label %bb2, label %bb1
34+
35+
bb1:
36+
br label %bb2
37+
38+
bb2:
39+
%phi = phi i256 [ 0, %entry ], [ %load, %bb1 ]
40+
store i256 %phi, ptr addrspace(1) null, align 64
41+
tail call void @llvm.evm.return(ptr addrspace(1) null, i256 32)
42+
unreachable
43+
}

0 commit comments

Comments
 (0)