summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
diff options
context:
space:
mode:
authorMatthias Braun <matze@braunis.de>2015-05-28 23:20:35 +0000
committerMatthias Braun <matze@braunis.de>2015-05-28 23:20:35 +0000
commit111f5d88fb9153261a52fc666786d828106ff887 (patch)
tree3d15062ba64bb25e69f042d89f00579c36711e80 /lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
parent536f0a95e5df7d318baa3c9c730f1ff5b85b2c55 (diff)
downloadbcm5719-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
OpenPOWER on IntegriCloud