[PATCH] Fix spilling of 64-bit paired registers (PR15676)
Jakob Stoklund Olesen
stoklund at 2pi.dk
Sat Apr 20 12:11:41 PDT 2013
On Apr 20, 2013, at 6:43 AM, Tim Northover <t.p.northover at gmail.com> wrote:
> Hi,
>
> This patch should fix PR15676, which turned out to be due to an
> incorrect LDMIA instruction being produced when spilling a 64-bit
> paired register (like you get from some inline assembly).
>
> It looked like:
>
> LDMIA <fi#4>, pred:0, pred:14, %noreg, ...
>
> Where that first "pred:0" was added as some kind of offset for the
> frame, but the LDMIA instruction has no such offset.
>
> This could obviously have caused a problem anywhere, it happened to
> strike first (in a Debug build) when examining the predicate (ARM code
> expected the second "pred" to be a register).
>
> OK to commit?
LGTM.
Could you extend the test case to also require spilling at an offset from sp? I want to see the scavenger being used correctly.
Would it be better to use ldrd/strd?
Thanks,
/jakob
More information about the llvm-commits
mailing list