[PATCH] D51494: Fix unwind information for floating point registers
Oliver Stannard via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 19 06:26:54 PDT 2018
This revision was automatically updated to reflect the committed changes.
Closed by commit rL342545: [ARM] Fix unwind information for floating point registers (authored by olista01, committed by ).
Changed prior to commit:
https://reviews.llvm.org/D51494?vs=163550&id=166115#toc
Repository:
rL LLVM
https://reviews.llvm.org/D51494
Files:
llvm/trunk/lib/Target/ARM/ARMAsmPrinter.cpp
llvm/trunk/test/CodeGen/ARM/unwind-fp.ll
Index: llvm/trunk/lib/Target/ARM/ARMAsmPrinter.cpp
===================================================================
--- llvm/trunk/lib/Target/ARM/ARMAsmPrinter.cpp
+++ llvm/trunk/lib/Target/ARM/ARMAsmPrinter.cpp
@@ -1071,10 +1071,12 @@
MCTargetStreamer &TS = *OutStreamer->getTargetStreamer();
ARMTargetStreamer &ATS = static_cast<ARMTargetStreamer &>(TS);
const MachineFunction &MF = *MI->getParent()->getParent();
- const TargetRegisterInfo *RegInfo = MF.getSubtarget().getRegisterInfo();
+ const TargetRegisterInfo *TargetRegInfo =
+ MF.getSubtarget().getRegisterInfo();
+ const MachineRegisterInfo &MachineRegInfo = MF.getRegInfo();
const ARMFunctionInfo &AFI = *MF.getInfo<ARMFunctionInfo>();
- unsigned FramePtr = RegInfo->getFrameRegister(MF);
+ unsigned FramePtr = TargetRegInfo->getFrameRegister(MF);
unsigned Opc = MI->getOpcode();
unsigned SrcReg, DstReg;
@@ -1131,7 +1133,9 @@
if (MO.isUndef()) {
assert(RegList.empty() &&
"Pad registers must come before restored ones");
- Pad += 4;
+ unsigned Width =
+ TargetRegInfo->getRegSizeInBits(MO.getReg(), MachineRegInfo) / 8;
+ Pad += Width;
continue;
}
RegList.push_back(MO.getReg());
Index: llvm/trunk/test/CodeGen/ARM/unwind-fp.ll
===================================================================
--- llvm/trunk/test/CodeGen/ARM/unwind-fp.ll
+++ llvm/trunk/test/CodeGen/ARM/unwind-fp.ll
@@ -0,0 +1,15 @@
+; RUN: llc < %s -mtriple=armv7a-arm-none-eabi | FileCheck %s
+
+target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
+target triple = "armv7-arm-none-eabi"
+
+define void @foo() minsize {
+entry:
+ ; CHECK: .vsave {[[SAVE_REG:d[0-9]+]]}
+ ; CHECK-NEXT: .pad #8
+ ; CHECK-NEXT: vpush {[[PAD_REG:d[0-9]+]], [[SAVE_REG]]}
+ ; CHECK: vpop {[[PAD_REG]], [[SAVE_REG]]}
+ %a = alloca i32, align 4
+ call void asm sideeffect "", "r,~{d8}"(i32* %a)
+ ret void
+}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D51494.166115.patch
Type: text/x-patch
Size: 1989 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180919/f53abb58/attachment.bin>
More information about the llvm-commits
mailing list