mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-04 01:42:09 +00:00
Don't produce ADDC/ADDE when expanding SHL unless they are legal
for the target. This fixes PR3080. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59450 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
35fde15059
commit
104de6cf7b
@ -1073,7 +1073,8 @@ void DAGTypeLegalizer::ExpandShiftByConstant(SDNode *N, unsigned Amt,
|
||||
} else if (Amt == NVTBits) {
|
||||
Lo = DAG.getConstant(0, NVT);
|
||||
Hi = InL;
|
||||
} else if (Amt == 1) {
|
||||
} else if (Amt == 1 &&
|
||||
TLI.isOperationLegal(ISD::ADDC, TLI.getTypeToExpandTo(NVT))) {
|
||||
// Emit this X << 1 as X+X.
|
||||
SDVTList VTList = DAG.getVTList(NVT, MVT::Flag);
|
||||
SDValue LoOps[2] = { InL, InL };
|
||||
|
6
test/CodeGen/XCore/2008-11-17-Shl64.ll
Normal file
6
test/CodeGen/XCore/2008-11-17-Shl64.ll
Normal file
@ -0,0 +1,6 @@
|
||||
; RUN: llvm-as < %s | llc -march=xcore > %t1.s
|
||||
; PR3080
|
||||
define i64 @test(i64 %a) {
|
||||
%result = shl i64 %a, 1
|
||||
ret i64 %result
|
||||
}
|
Loading…
Reference in New Issue
Block a user