[PATCH] D69018: [AArch64] Fix offset calculation
Shoaib Meenai via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Oct 16 14:48:02 PDT 2019
This revision was automatically updated to reflect the committed changes.
Closed by commit rG6d1891c508fe: [AArch64] Fix offset calculation (authored by smeenai).
Changed prior to commit:
https://reviews.llvm.org/D69018?vs=225280&id=225309#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D69018/new/
https://reviews.llvm.org/D69018
Files:
llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
llvm/lib/Target/AArch64/AArch64InstrInfo.h
llvm/test/CodeGen/AArch64/framelayout-offset-immediate-change.mir
Index: llvm/test/CodeGen/AArch64/framelayout-offset-immediate-change.mir
===================================================================
--- /dev/null
+++ llvm/test/CodeGen/AArch64/framelayout-offset-immediate-change.mir
@@ -0,0 +1,17 @@
+# RUN: llc -mtriple=aarch64-none-linux-gnu -run-pass=prologepilog %s -o - | FileCheck %s
+---
+name: framelayout_offset_immediate_change
+tracksRegLiveness: true
+fixedStack:
+ - { id: 0, offset: 0, size: 1}
+body: |
+ bb.0:
+ $x0 = LDURXi %fixed-stack.0, -264
+ RET_ReallyLR
+...
+# CHECK: name: framelayout_offset_immediate_change
+# CHECK: body: |
+# CHECK-NEXT: bb.0:
+# CHECK-NEXT: $x8 = SUBXri $sp, 8, 0
+# CHECK-NEXT: $x0 = LDURXi killed $x8, -256
+# CHECK-NEXT: RET_ReallyLR
Index: llvm/lib/Target/AArch64/AArch64InstrInfo.h
===================================================================
--- llvm/lib/Target/AArch64/AArch64InstrInfo.h
+++ llvm/lib/Target/AArch64/AArch64InstrInfo.h
@@ -335,7 +335,7 @@
int isAArch64FrameOffsetLegal(const MachineInstr &MI, StackOffset &Offset,
bool *OutUseUnscaledOp = nullptr,
unsigned *OutUnscaledOp = nullptr,
- int *EmittableOffset = nullptr);
+ int64_t *EmittableOffset = nullptr);
static inline bool isUncondBranchOpcode(int Opc) { return Opc == AArch64::B; }
Index: llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
===================================================================
--- llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
+++ llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
@@ -3368,7 +3368,7 @@
StackOffset &SOffset,
bool *OutUseUnscaledOp,
unsigned *OutUnscaledOp,
- int *EmittableOffset) {
+ int64_t *EmittableOffset) {
// Set output values in case of early exit.
if (EmittableOffset)
*EmittableOffset = 0;
@@ -3430,7 +3430,7 @@
"Cannot have remainder when using unscaled op");
assert(MinOff < MaxOff && "Unexpected Min/Max offsets");
- int NewOffset = Offset / Scale;
+ int64_t NewOffset = Offset / Scale;
if (MinOff <= NewOffset && NewOffset <= MaxOff)
Offset = Remainder;
else {
@@ -3471,7 +3471,7 @@
return true;
}
- int NewOffset;
+ int64_t NewOffset;
unsigned UnscaledOp;
bool UseUnscaledOp;
int Status = isAArch64FrameOffsetLegal(MI, Offset, &UseUnscaledOp,
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D69018.225309.patch
Type: text/x-patch
Size: 2589 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20191016/dd5a59e1/attachment.bin>
More information about the llvm-commits
mailing list