diff options
author | Matthias Braun <matze@braunis.de> | 2015-05-28 23:20:35 +0000 |
---|---|---|
committer | Matthias Braun <matze@braunis.de> | 2015-05-28 23:20:35 +0000 |
commit | 111f5d88fb9153261a52fc666786d828106ff887 (patch) | |
tree | 3d15062ba64bb25e69f042d89f00579c36711e80 /lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp | |
parent | 536f0a95e5df7d318baa3c9c730f1ff5b85b2c55 (diff) | |
download | bcm5719-llvm-111f5d88fb9153261a52fc666786d828106ff887.tar.gz bcm5719-llvm-111f5d88fb9153261a52fc666786d828106ff887.zip |
MachineFrameInfo: Simplify pristine register calculation.
About pristine regsiters:
Pristine registers "hold a value that is useless to the current
function, but that must be preserved - they are callee saved registers
that have not been saved." This concept saves compile time as it frees
the prologue/epilogue inserter from adding every such register to every
basic blocks live-in list.
However the current code in getPristineRegs is formulated in a
complicated way: Inside the function prologue and epilogue all callee
saves are considered pristine, while in the rest of the code only the
non-saved ones are considered pristine. This requires logic to
differentiate between prologue/epilogue and the rest and in the presence
of shrink-wrapping this even becomes complicated/expensive. It's also
unnecessary because the prologue epilogue inserters already mark
callee-save registers that are saved/restores properly in the respective
blocks in the prologue/epilogue (see updateLiveness() in
PrologueEpilogueInserter.cpp). So only declaring non-saved/restored
callee saved registers as pristine just works.
Differential Revision: http://reviews.llvm.org/D10101
llvm-svn: 238524
Diffstat (limited to 'lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp')
0 files changed, 0 insertions, 0 deletions