mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-17 03:30:28 +00:00
34 lines
872 B
LLVM
34 lines
872 B
LLVM
|
; RUN: opt < %s -jump-threading -S | FileCheck %s
|
||
|
|
||
|
define i32 @test_jump_threading(i32* %arg1, i32 %arg2) {
|
||
|
entry:
|
||
|
%cmp = icmp slt i32 %arg2, 0
|
||
|
br i1 %cmp, label %land.lhs.true, label %lor.rhs
|
||
|
|
||
|
land.lhs.true:
|
||
|
%ident = getelementptr inbounds i32 * %arg1, i64 0
|
||
|
%0 = load i32* %ident, align 4
|
||
|
%cmp1 = icmp eq i32 %0, 1
|
||
|
br i1 %cmp1, label %lor.end, label %lor.rhs
|
||
|
|
||
|
; CHECK: br i1 %cmp1, label %lor.end, label %lor.rhs.thread
|
||
|
|
||
|
; CHECK: lor.rhs.thread:
|
||
|
; CHECK-NEXT: br label %lor.end
|
||
|
|
||
|
lor.rhs:
|
||
|
%cmp2 = icmp sgt i32 %arg2, 0
|
||
|
br i1 %cmp2, label %land.rhs, label %lor.end
|
||
|
|
||
|
land.rhs:
|
||
|
%ident3 = getelementptr inbounds i32 * %arg1, i64 0
|
||
|
%1 = load i32* %ident3, align 4
|
||
|
%cmp4 = icmp eq i32 %1, 2
|
||
|
br label %lor.end
|
||
|
|
||
|
lor.end:
|
||
|
%2 = phi i1 [ true, %land.lhs.true ], [ false, %lor.rhs ], [ %cmp4, %land.rhs ]
|
||
|
%lor.ext = zext i1 %2 to i32
|
||
|
ret i32 %lor.ext
|
||
|
}
|