mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 12:12:47 +01:00
3f3b31f5ae
I noticed that we were not folding expressions like this: icmp ult (constexpr), null in https://llvm.org/PR49355, so we end up with extremely large icmp instructions as the constant expressions pile up on each other. There is no potential to mis-fold an unsigned boundary condition with a zero/null, so this is just falling through a crack in the pattern matching. The more general case of comparisons of non-zero constants and constexpr are more tricky and may require the datalayout to know how to cast to different types, etc. Negative tests verify that we are only changing a subset of potential patterns. Differential Revision: https://reviews.llvm.org/D98150
29 lines
627 B
LLVM
29 lines
627 B
LLVM
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
|
; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-unknown \
|
|
; RUN: -ppc-asm-full-reg-names < %s | FileCheck %s
|
|
|
|
@bar = external constant i64, align 8
|
|
|
|
define i1 @foo() {
|
|
; CHECK-LABEL: foo:
|
|
; CHECK: # %bb.0: # %entry
|
|
; CHECK-NEXT: li r3, 0
|
|
; CHECK-NEXT: blr
|
|
entry:
|
|
br label %next
|
|
|
|
next:
|
|
br i1 undef, label %true, label %false
|
|
|
|
true:
|
|
br label %end
|
|
|
|
false:
|
|
br label %end
|
|
|
|
end:
|
|
%a = phi i1 [ icmp ugt (i64 0, i64 ptrtoint (i64* @bar to i64)), %true ],
|
|
[ icmp ugt (i64 0, i64 2), %false ]
|
|
ret i1 %a
|
|
}
|