summaryrefslogtreecommitdiffstats
path: root/llvm/lib/IR/DIBuilder.cpp
diff options
context:
space:
mode:
authorBrian Gesiak <modocache@gmail.com>2017-08-30 20:03:54 +0000
committerBrian Gesiak <modocache@gmail.com>2017-08-30 20:03:54 +0000
commit3332976478490a3312fdafde10c75ebdd8132bce (patch)
treebd6e818b10f0bd8393c50ced077532005e0fd32e /llvm/lib/IR/DIBuilder.cpp
parentbd484b4fc369192b5bdd0f3709d0717e4c0c6ce5 (diff)
downloadbcm5719-llvm-3332976478490a3312fdafde10c75ebdd8132bce.tar.gz
bcm5719-llvm-3332976478490a3312fdafde10c75ebdd8132bce.zip
[ARM] Use Swift error registers on non-Darwin targets
Summary: Remove a check for `ARMSubtarget::isTargetDarwin` when determining whether to use Swift error registers, so that Swift errors work properly on non-Darwin ARM32 targets (specifically Android). Before this patch, generated code would save and restores ARM register r8 at the entry and returns of a function that throws. As r8 is used as a virtual return value for the object being thrown, this gets overwritten by the restore, and calling code is unable to catch the error. In turn this caused Swift code that used `do`/`try`/`catch` to work improperly on Android ARM32 targets. Addresses Swift bug report https://bugs.swift.org/browse/SR-5438. Patch by John Holdsworth. Reviewers: manmanren, rjmccall, aschwaighofer Reviewed By: aschwaighofer Subscribers: srhines, aschwaighofer, aemerson, javed.absar, kristof.beyls, llvm-commits Differential Revision: https://reviews.llvm.org/D35835 llvm-svn: 312164
Diffstat (limited to 'llvm/lib/IR/DIBuilder.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud