[PowerPC] More refactoring prior to real PPC emitPrologue/Epilogue changes.
authorBill Schmidt <wschmidt@linux.vnet.ibm.com>
Tue, 20 Aug 2013 03:12:23 +0000 (03:12 +0000)
committerBill Schmidt <wschmidt@linux.vnet.ibm.com>
Tue, 20 Aug 2013 03:12:23 +0000 (03:12 +0000)
commitf381afc906c279f4f2fb6c622144eb740a9b5fac
tree66a198b71c45b7583f4098818be7d6912461c6a3
parente0c8f50f3e4bfa17c72302171fa3b5b0c5abc805
[PowerPC] More refactoring prior to real PPC emitPrologue/Epilogue changes.

(Patch committed on behalf of Mark Minich, whose log entry follows.)

This is a continuation of the refactorings performed in svn rev 188573
(see that rev's comments for more detail).

This is my stage 2 refactoring: I combined the emitPrologue() &
emitEpilogue() PPC32 & PPC64 code into a single flow, simplifying a
lot of the code since in essence the PPC32 & PPC64 code generation
logic is the same, only the instruction forms are different (in most
cases). This simplification is necessary because my functional changes
(yet to come) add significant complexity, and without the
simplification of my stage 2 refactoring, the overall complexity of
both emitPrologue() & emitEpilogue() would have become almost
intractable for most mortal programmers (like me).

This submission was intended to be a pure refactoring (no functional
changes whatsoever). However, in the process of combining the PPC32 &
PPC64 flows, I spotted a difference that I believe is a bug (see svn
rev 186478 line 863, or svn rev 188573 line 888): This line appears to
be restoring the BP with the original FP content, not the original BP
content. When I merged the 32-bit and 64-bit code, I used the
corresponding code from the 64-bit flow, which I believe uses the
correct offset (BPOffset) for this operation.

llvm-svn: 188741
llvm/lib/Target/PowerPC/PPCFrameLowering.cpp