Fixes the unwind information generated for floating-point registers. Previously, all padding registers were assumed to be four bytes wide. Now, the width of the register is used to specify the amount of padding.
Details
Diff Detail
Event Timeline
lib/Target/ARM/ARMAsmPrinter.cpp | ||
---|---|---|
1107–1109 | We already get the MachineFunction and TargetRegisterInfo at the top of this function, and the MachineRegisterInfo should be moved up there to keep these together. | |
test/CodeGen/ARM/unwind-fp.ll | ||
2 | This test can be simplified a lot, to something like this: 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: %a = alloca i32, align 4 call void asm sideeffect "", "r,~{d8}"(i32* %a) ret void } Also, it would be clearer to put the CHECK line inside the IR for the function being tested, and to also check the other frame directives and the actual frame setup instructions. |
Thanks for the feedback. I have vastly simplified the testcase as suggested and deduplicated and lifted the definitions of {Target,Machine}RegisterInformation and MachineFunction out of the loop.
Thanks for the review. Since I don't have commit rights, could this be committed on my behalf?
We already get the MachineFunction and TargetRegisterInfo at the top of this function, and the MachineRegisterInfo should be moved up there to keep these together.