summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test
diff options
context:
space:
mode:
authorHeejin Ahn <aheejin@gmail.com>2019-10-08 16:15:39 +0000
committerHeejin Ahn <aheejin@gmail.com>2019-10-08 16:15:39 +0000
commit6a37c5d6fcae2182856051f558aab6cb8ba7233c (patch)
treee4f1567c3de2fcb1a422da04e91c2ada2412d2f6 /lldb/packages/Python/lldbsuite/test
parent5d154c3e7d9dcd8f651ac6b34ee21aa553c82c74 (diff)
downloadbcm5719-llvm-6a37c5d6fcae2182856051f558aab6cb8ba7233c.tar.gz
bcm5719-llvm-6a37c5d6fcae2182856051f558aab6cb8ba7233c.zip
[WebAssembly] Fix a bug in 'try' placement
Summary: When searching for local expression tree created by stackified registers, for 'block' placement, we start the search from the previous instruction of a BB's terminator. But in 'try''s case, we should start from the previous instruction of a call that can throw, or a EH_LABEL that precedes the call, because the return values of the call's previous instructions can be stackified and consumed by the throwing call. For example, ``` i32.call @foo call @bar ; may throw br $label0 ``` In this case, if we start the search from the previous instruction of the terminator (`br` here), we end up stopping at `call @bar` and place a 'try' between `i32.call @foo` and `call @bar`, because `call @bar` does not have a return value so it is not a local expression tree of `br`. But in this case, unlike when placing 'block's, we should start the search from `call @bar`, because the return value of `i32.call @foo` is stackified and used by `call @bar`. Reviewers: dschuff Subscribers: sbc100, jgravelle-google, hiraditya, sunfish, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D68619 llvm-svn: 374073
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud