aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Support/StringExtras.cpp
diff options
context:
space:
mode:
authorJason Molenda <jason@molenda.com>2020-04-14 16:51:58 -0700
committerJason Molenda <jason@molenda.com>2020-04-14 16:57:25 -0700
commit1cd92e480c12c03ab9a381b29e4e3964892afa01 (patch)
tree81c24e90a3763abc39f76348bdb4efd4d529af59 /llvm/lib/Support/StringExtras.cpp
parent2f8b4545f4960778e37114c024073d208751ca89 (diff)
downloadllvm-1cd92e480c12c03ab9a381b29e4e3964892afa01.zip
llvm-1cd92e480c12c03ab9a381b29e4e3964892afa01.tar.gz
llvm-1cd92e480c12c03ab9a381b29e4e3964892afa01.tar.bz2
Bug where insn-based unwind plans on arm64 could be wrong
Fix a bug where UnwindAssemblyInstEmulation would confuse which register is used to compute the Canonical Frame Address after it had branched over a mid-function epilogue (where the CFA reg changes from $fp to $sp in the process of epiloguing). Reinstate the correct CFA register after we forward the unwind rule for branch targets. The failure mode was that UnwindAssemblyInstEmulation would think CFA was set in terms of $sp after one of these epilogues, and if it sees modifications to $sp after the branch target, it would change the CFA offset in the unwind rule -- even though the CFA is defined in terms of $fp and the $sp changes are irrelevant to correct calculation. <rdar://problem/60300528> Differential Revision: https://reviews.llvm.org/D78077
Diffstat (limited to 'llvm/lib/Support/StringExtras.cpp')
0 files changed, 0 insertions, 0 deletions