summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CGDebugInfo.cpp
diff options
context:
space:
mode:
authorBill Schmidt <wschmidt@linux.vnet.ibm.com>2013-08-16 20:05:04 +0000
committerBill Schmidt <wschmidt@linux.vnet.ibm.com>2013-08-16 20:05:04 +0000
commit8893a3d159a674a6bddda145e2dd61ff0f101f3b (patch)
tree1afb153d69936a231918684bf096fcb2c0d52ff6 /clang/lib/CodeGen/CGDebugInfo.cpp
parentad6d349fbcb2f9ced3c57b5b61231315175bcb47 (diff)
downloadbcm5719-llvm-8893a3d159a674a6bddda145e2dd61ff0f101f3b.tar.gz
bcm5719-llvm-8893a3d159a674a6bddda145e2dd61ff0f101f3b.zip
[PowerPC] Preparatory refactoring for making prologue and epilogue
safe on PPC32 SVR4 ABI [Patch and following text by Mark Minich; committing on his behalf.] There are FIXME's in PowerPC/PPCFrameLowering.cpp, method PPCFrameLowering::emitPrologue() related to "negative offsets of R1" on PPC32 SVR4. They're true, but the real issue is that on PPC32 SVR4 (and any ABI without a Red Zone), no spills may be made until after the stackframe is claimed, which also includes the LR spill which is at a positive offset. The same problem exists in emitEpilogue(), though there's no FIXME for it. I intend to fix this issue, making LLVM-compiled code finally safe for use on SVR4/EABI/e500 32-bit platforms (including in particular, OS-free embedded systems & kernel code, where interrupts may share the same stack as user code). In preparation for making these changes, to make the diffs for the functional changes less cluttered, I am providing the non-functional refactorings in two stages: Stage 1 does some minor fluffy refactorings to pull multiple method calls up into a single bool, creating named bools for repeated uses of obscure logic, moving some code up earlier because either stage 2 or my final version will require it earlier, and rewording/adding some comments. My stage 1 changes can be characterized as primarily fluffy cleanup, the purpose of which may be unclear until the stage 2 or final changes are made. My stage 2 refactorings combine the separate PPC32 & PPC64 logic, which is currently performed by largely duplicate code, into a single flow, with the differences handled by a group of constants initialized early in the methods. This submission is for my stage 1 changes. There should be no functional changes whatsoever; this is a pure refactoring. llvm-svn: 188573
Diffstat (limited to 'clang/lib/CodeGen/CGDebugInfo.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud