mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-12 13:30:51 +00:00
Use the proper type for shift counts. This fixes a bootstrap error.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109265 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f83f42599d
commit
cd20c6fb18
@ -1380,9 +1380,12 @@ bool TargetLowering::SimplifyDemandedBits(SDValue Op,
|
||||
BitWidth - InnerVT.getSizeInBits()) &
|
||||
DemandedMask) == 0 &&
|
||||
isTypeDesirableForOp(ISD::SHL, InnerVT)) {
|
||||
EVT ShTy = getShiftAmountTy();
|
||||
if (!APInt(BitWidth, ShAmt).isIntN(ShTy.getSizeInBits()))
|
||||
ShTy = InnerVT;
|
||||
SDValue NarrowShl =
|
||||
TLO.DAG.getNode(ISD::SHL, dl, InnerVT, InnerOp,
|
||||
TLO.DAG.getConstant(ShAmt, InnerVT));
|
||||
TLO.DAG.getConstant(ShAmt, ShTy));
|
||||
return
|
||||
TLO.CombineTo(Op,
|
||||
TLO.DAG.getNode(ISD::ANY_EXTEND, dl, Op.getValueType(),
|
||||
|
@ -16,3 +16,25 @@ if.end523: ; preds = %if.end453
|
||||
store i32 %conv820, i32* %p
|
||||
ret void
|
||||
}
|
||||
|
||||
; CHECK: foo:
|
||||
|
||||
declare void @bar(i64)
|
||||
|
||||
define fastcc void @foo(i32 %t) {
|
||||
bb:
|
||||
%tmp = add i32 %t, -1 ; <i32> [#uses=1]
|
||||
br label %bb1
|
||||
|
||||
bb1: ; preds = %bb
|
||||
%tmp2 = zext i32 %tmp to i64 ; <i64> [#uses=2]
|
||||
%tmp3 = add i64 %tmp2, 1 ; <i64> [#uses=1]
|
||||
%tmp4 = xor i64 %tmp2, 536870911 ; <i64> [#uses=1]
|
||||
%tmp5 = and i64 %tmp3, %tmp4 ; <i64> [#uses=1]
|
||||
%tmp6 = shl i64 %tmp5, 3 ; <i64> [#uses=1]
|
||||
%tmp7 = sub i64 64, %tmp6 ; <i64> [#uses=1]
|
||||
%tmp8 = and i64 %tmp7, 4294967288 ; <i64> [#uses=1]
|
||||
%tmp9 = lshr i64 -1, %tmp8 ; <i64> [#uses=1]
|
||||
call void @bar(i64 %tmp9)
|
||||
ret void
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user