summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test/api/multiple-debuggers/testprog.cpp
diff options
context:
space:
mode:
authorManman Ren <manman.ren@gmail.com>2015-12-16 21:04:19 +0000
committerManman Ren <manman.ren@gmail.com>2015-12-16 21:04:19 +0000
commitcbe4f9417d1cbb0192173439501fedb782949bad (patch)
treee5f5cab24c144e6b96b644bebc56ae287b1a8740 /lldb/packages/Python/lldbsuite/test/api/multiple-debuggers/testprog.cpp
parent9a5b052f7c0624ede7f9a933316a7c5bb4e04a3e (diff)
downloadbcm5719-llvm-cbe4f9417d1cbb0192173439501fedb782949bad.tar.gz
bcm5719-llvm-cbe4f9417d1cbb0192173439501fedb782949bad.zip
CXX_FAST_TLS calling convention: performance improvement for AArch64.
The access function has a short entry and a short exit, the initialization block is only run the first time. To improve the performance, we want to have a short frame at the entry and exit. We explicitly handle most of the CSRs via copies. Only the CSRs that are not handled via copies will be in CSR_SaveList. Frame lowering and prologue/epilogue insertion will generate a short frame in the entry and exit according to CSR_SaveList. The majority of the CSRs will be handled by register allcoator. Register allocator will try to spill and reload them in the initialization block. We add CSRsViaCopy, it will be explicitly handled during lowering. 1> we first set FunctionLoweringInfo->SplitCSR if conditions are met (the target supports it for the given machine function and the function has only return exits). We also call TLI->initializeSplitCSR to perform initialization. 2> we call TLI->insertCopiesSplitCSR to insert copies from CSRsViaCopy to virtual registers at beginning of the entry block and copies from virtual registers to CSRsViaCopy at beginning of the exit blocks. 3> we also need to make sure the explicit copies will not be eliminated. The target independent portion was committed as r255353. rdar://problem/23557469 Differential Revision: http://reviews.llvm.org/D15341 llvm-svn: 255821
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/api/multiple-debuggers/testprog.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud