mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-16 14:31:59 +00:00
Don't swap the operands of a subtraction when trying to create a
post-decrement load/store. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81464 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
db2659be58
commit
92ad363f58
@ -4715,7 +4715,7 @@ bool DAGCombiner::CombineToPostIndexedLoadStore(SDNode *N) {
|
|||||||
SDValue Offset;
|
SDValue Offset;
|
||||||
ISD::MemIndexedMode AM = ISD::UNINDEXED;
|
ISD::MemIndexedMode AM = ISD::UNINDEXED;
|
||||||
if (TLI.getPostIndexedAddressParts(N, Op, BasePtr, Offset, AM, DAG)) {
|
if (TLI.getPostIndexedAddressParts(N, Op, BasePtr, Offset, AM, DAG)) {
|
||||||
if (Ptr == Offset)
|
if (Ptr == Offset && Op->getOpcode() == ISD::ADD)
|
||||||
std::swap(BasePtr, Offset);
|
std::swap(BasePtr, Offset);
|
||||||
if (Ptr != BasePtr)
|
if (Ptr != BasePtr)
|
||||||
continue;
|
continue;
|
||||||
|
11
test/CodeGen/ARM/2009-09-10-postdec.ll
Normal file
11
test/CodeGen/ARM/2009-09-10-postdec.ll
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
; RUN: llc -march=arm < %s | FileCheck %s
|
||||||
|
; Radar 7213850
|
||||||
|
|
||||||
|
define i32 @test(i8* %d, i32 %x, i32 %y) nounwind {
|
||||||
|
%1 = ptrtoint i8* %d to i32
|
||||||
|
;CHECK: sub
|
||||||
|
%2 = sub i32 %x, %1
|
||||||
|
%3 = add nsw i32 %2, %y
|
||||||
|
store i8 0, i8* %d, align 1
|
||||||
|
ret i32 %3
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user