Files
clang-p2996/llvm/test/Transforms/JumpThreading/pr62908.ll
Nikita Popov 92dc4fff87 [ValueTracking] Check for known bits conflict for shl nsw (PR62908)
I removed the conflict check from computeKnownBitsFromShiftOperator()
in D150648 assuming that this is now handled on the KnownBits side.
However, the nsw handling is still inside ValueTracking, so we
still need to handle conflicts there. Restore the check closer to
where it is relevant.

Fixes https://github.com/llvm/llvm-project/issues/62908.
2023-05-24 10:54:10 +02:00

31 lines
646 B
LLVM

; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 2
; RUN: opt -S -passes=jump-threading < %s | FileCheck %s
; Make sure this does not crash due to conflicting known bits.
define i32 @test() {
; CHECK-LABEL: define i32 @test() {
; CHECK-NEXT: end:
; CHECK-NEXT: ret i32 0
;
entry:
br label %join
unreachable:
%sh_prom = zext i32 -1 to i64
%shl = shl nsw i64 -1, %sh_prom
%conv = trunc i64 %shl to i32
br label %join
join:
%phi = phi i32 [ %conv, %unreachable ], [ 0, %entry ]
%cmp = icmp eq i32 %phi, 0
br i1 %cmp, label %end, label %if
if:
br label %end
end:
ret i32 0
}