[llvm-commits] [llvm] r121197 - in /llvm/trunk: lib/Target/ARM/ARMFrameInfo.cpp lib/Target/ARM/ARMFrameInfo.h test/CodeGen/ARM/2010-12-07-PEIBug.ll

Eric Christopher echristo at apple.com
Tue Dec 7 17:23:44 PST 2010


On Dec 7, 2010, at 3:44 PM, Eric Christopher wrote:

> 
> On Dec 7, 2010, at 3:08 PM, Evan Cheng wrote:
> 
>> Fix a bad prologue / epilogue codegen bug where the compiler would emit illegal
>> vpush instructions to save / restore VFP / NEON registers like this:
>> vpush {d8,d10,d11}
>> vpop {d8,d10,d11}
>> 
>> vpush and vpop do not allow gaps in the register list.
>> rdar://8728956
>> 
> 
> Thanks for fixing this!
> 
> This was somewhat hard to follow, I had to read it a couple of times to make sure I knew the looping order. It could use a couple of comments as to what's going on, something like:
> 
> "If NoGap is enabled then split up the pushes to ensure that the registers are adjacent, e.g.
>  vpush {d8, d10, d11} becomes the two pushes vpush {d8 } ; vpush { d10, d11 }"
> 
> Might be clearer what's going on if we just did a second pass through the Regs vector after grabbing all of the matching registers?
> 
> while (!Regs.empty())
>> 
> and then just pop regs as we iterate through?
> 
> Thoughts?

Enh, that wouldn't be any better :)

The comments would still be awesome though.

-eric
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20101207/82ab5c3f/attachment.html>


More information about the llvm-commits mailing list