mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-12 13:30:51 +00:00
Don't assign the shift the same type as the variable being shifted. This could
result in illegal types for the SHL operator. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92797 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
8314299161
commit
9f7c5c0dca
@ -3322,7 +3322,9 @@ SDValue DAGCombiner::visitZERO_EXTEND(SDNode *N) {
|
||||
DebugLoc dl = N->getDebugLoc();
|
||||
return DAG.getNode(N0.getOpcode(), dl, VT,
|
||||
DAG.getNode(ISD::ZERO_EXTEND, dl, VT, N0.getOperand(0)),
|
||||
DAG.getNode(ISD::ZERO_EXTEND, dl, VT, N0.getOperand(1)));
|
||||
DAG.getNode(ISD::ZERO_EXTEND, dl,
|
||||
N0.getOperand(1).getValueType(),
|
||||
N0.getOperand(1)));
|
||||
}
|
||||
|
||||
return SDValue();
|
||||
|
15
test/CodeGen/X86/2010-01-05-ZExt-Shl.ll
Normal file
15
test/CodeGen/X86/2010-01-05-ZExt-Shl.ll
Normal file
@ -0,0 +1,15 @@
|
||||
; RUN: llc < %s -march=x86-64
|
||||
; <rdar://problem/7499313>
|
||||
target triple = "i686-apple-darwin8"
|
||||
|
||||
declare void @func2(i16 zeroext)
|
||||
|
||||
define void @func1() nounwind {
|
||||
entry:
|
||||
%t1 = icmp ne i8 undef, 0
|
||||
%t2 = icmp eq i8 undef, 14
|
||||
%t3 = and i1 %t1, %t2
|
||||
%t4 = select i1 %t3, i16 0, i16 128
|
||||
call void @func2(i16 zeroext %t4) nounwind
|
||||
ret void
|
||||
}
|
Loading…
Reference in New Issue
Block a user