mirror of
https://github.com/RPCS3/llvm.git
synced 2025-02-23 12:11:58 +00:00
X86 Lowering - Fixed a crash in ICMP scalar instruction
Fixed a bug in EmitTest() function in combining shl + icmp. https://llvm.org/bugs/show_bug.cgi?id=28119 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273899 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d96514bcfe
commit
89fca4c1b1
@ -14597,10 +14597,8 @@ SDValue X86TargetLowering::EmitTest(SDValue Op, unsigned X86CC, const SDLoc &dl,
|
||||
: APInt::getLowBitsSet(BitWidth, BitWidth - ShAmt);
|
||||
if (!Mask.isSignedIntN(32)) // Avoid large immediates.
|
||||
break;
|
||||
SDValue New = DAG.getNode(ISD::AND, dl, VT, Op->getOperand(0),
|
||||
DAG.getConstant(Mask, dl, VT));
|
||||
DAG.ReplaceAllUsesWith(Op, New);
|
||||
Op = New;
|
||||
Op = DAG.getNode(ISD::AND, dl, VT, Op->getOperand(0),
|
||||
DAG.getConstant(Mask, dl, VT));
|
||||
}
|
||||
break;
|
||||
|
||||
|
31
test/CodeGen/X86/2016-06-28-ICmpCrash.ll
Normal file
31
test/CodeGen/X86/2016-06-28-ICmpCrash.ll
Normal file
@ -0,0 +1,31 @@
|
||||
;RUN: llc < %s -mcpu=core-avx2
|
||||
|
||||
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
|
||||
%struct.struct_1 = type { i24 }
|
||||
|
||||
@a = global i8 0, align 1
|
||||
@b = global i8 0, align 1
|
||||
@d = global i8 0, align 1
|
||||
@e = global i8 0, align 1
|
||||
@c = global %struct.struct_1 zeroinitializer, align 4
|
||||
|
||||
; Function Attrs: norecurse nounwind uwtable
|
||||
define void @_Z3fn1v() #0 {
|
||||
%bf.load = load i32, i32* bitcast (%struct.struct_1* @c to i32*), align 4
|
||||
%bf.shl = shl i32 %bf.load, 8
|
||||
%bf.ashr = ashr exact i32 %bf.shl, 8
|
||||
%tobool4 = icmp ne i32 %bf.ashr, 0
|
||||
%conv = zext i1 %tobool4 to i32
|
||||
%x1 = load i8, i8* @e, align 1
|
||||
%conv6 = zext i8 %x1 to i32
|
||||
%add = add nuw nsw i32 %conv, %conv6
|
||||
%tobool7 = icmp ne i32 %add, 0
|
||||
%frombool = zext i1 %tobool7 to i8
|
||||
store i8 %frombool, i8* @b, align 1
|
||||
%tobool14 = icmp ne i32 %bf.shl, 0
|
||||
%frombool15 = zext i1 %tobool14 to i8
|
||||
store i8 %frombool15, i8* @d, align 1
|
||||
ret void
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user