mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 20:51:52 +01:00
1f90029baa
When collecting `i1` values via `findAllDefs`, ignore Constant's operands, since Constant's operands might not be `i1`. Fixes https://bugs.llvm.org/show_bug.cgi?id=46923 which causes ICE ``` llvm-project/llvm/lib/IR/Constants.cpp:1924: static llvm::Constant *llvm::ConstantExpr::getZExt(llvm::Constant *, llvm::Type *, bool): Assertion `C->getType()->getScalarSizeInBits() < Ty->getScalarSizeInBits()&& "SrcTy must be smaller than DestTy for ZExt!"' failed. ``` Differential Revision: https://reviews.llvm.org/D85007
30 lines
669 B
LLVM
30 lines
669 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: isel r3, 0, r3, 4*cr5+lt
|
|
; 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
|
|
}
|