summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp
diff options
context:
space:
mode:
authorHeejin Ahn <aheejin@gmail.com>2019-03-26 17:15:55 +0000
committerHeejin Ahn <aheejin@gmail.com>2019-03-26 17:15:55 +0000
commit44a5a4b10704b336700a94403103faaba6fa9729 (patch)
treeffd5f9c885827cf0c815a4c75f1e684fe99f32c0 /lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp
parent5c4fad0c2333a1400e8d731346462fe8b84a8d02 (diff)
downloadbcm5719-llvm-44a5a4b10704b336700a94403103faaba6fa9729.tar.gz
bcm5719-llvm-44a5a4b10704b336700a94403103faaba6fa9729.zip
[WebAssembly] Fix bugs in BLOCK/TRY placement
Summary: Before we placed all TRY/END_TRY markers before placing BLOCK/END_BLOCK markers. This couldn't handle this case: ``` bb0: br bb2 bb1: // nearest common dominator of bb3 and bb4 br_if ... bb3 br bb4 bb2: ... bb3: call @foo // unwinds to ehpad bb4: call @bar // unwinds to ehpad ehpad: catch ... ``` When we placed TRY markers, we placed it in bb1 because it is the nearest common dominator of bb3 and bb4. But because bb0 jumps to bb2, when we placed block markers, we ended up with interleaved scopes like ``` block try end_block catch end_try ``` which was not correct. This patch fixes the bug by placing BLOCK and TRY markers in one pass while iterating BBs in a function. This also adds some more routines to `placeTryMarkers`, because we now have to assume that there can be previously placed BLOCK and END_BLOCK. Reviewers: dschuff Subscribers: sunfish, sbc100, jgravelle-google, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D59739 llvm-svn: 357007
Diffstat (limited to 'lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud