diff options
author | Reid Kleckner <rnk@google.com> | 2018-02-13 20:47:49 +0000 |
---|---|---|
committer | Reid Kleckner <rnk@google.com> | 2018-02-13 20:47:49 +0000 |
commit | 91e11a83fcdfbc2e5913f2b413fd247d7d6ff1af (patch) | |
tree | 939f8fd9a478a2571328e348c425f49a79d213cd /clang/lib/AST/Expr.cpp | |
parent | cb8ac00f733fbf290179b011739770a8f17e1b03 (diff) | |
download | bcm5719-llvm-91e11a83fcdfbc2e5913f2b413fd247d7d6ff1af.tar.gz bcm5719-llvm-91e11a83fcdfbc2e5913f2b413fd247d7d6ff1af.zip |
[X86] Use EDI for retpoline when no scratch regs are left
Summary:
Instead of solving the hard problem of how to pass the callee to the indirect
jump thunk without a register, just use a CSR. At a call boundary, there's
nothing stopping us from using a CSR to hold the callee as long as we save and
restore it in the prologue.
Also, add tests for this mregparm=3 case. I wrote execution tests for
__llvm_retpoline_push, but they never got committed as lit tests, either
because I never rewrote them or because they got lost in merge conflicts.
Reviewers: chandlerc, dwmw2
Subscribers: javed.absar, kristof.beyls, hiraditya, llvm-commits
Differential Revision: https://reviews.llvm.org/D43214
llvm-svn: 325049
Diffstat (limited to 'clang/lib/AST/Expr.cpp')
0 files changed, 0 insertions, 0 deletions