diff options
author | Gor Nishanov <GorNishanov@gmail.com> | 2017-05-17 03:09:22 +0000 |
---|---|---|
committer | Gor Nishanov <GorNishanov@gmail.com> | 2017-05-17 03:09:22 +0000 |
commit | db38485588fdba5b02225c7973c4cc1c74edf544 (patch) | |
tree | b60de95f96d7209cae2840d4daf352c60985a9b1 /lldb/packages/Python/lldbsuite/support/optional_with.py | |
parent | 58bb7bd18acc63b90e6a98d4c1a337e76412e0a6 (diff) | |
download | bcm5719-llvm-db38485588fdba5b02225c7973c4cc1c74edf544.tar.gz bcm5719-llvm-db38485588fdba5b02225c7973c4cc1c74edf544.zip |
[coroutines] Handle spills before catchswitch
If we need to spill the result of the PHI instruction, we insert the spill after
all of the PHIs and EHPads, however, in a catchswitch block there is no
room to insert the spill. Make room by splitting away catchswitch into a separate
block.
Before the fix:
catch.dispatch:
%val = phi i32 [ 1, %if.then ], [ 2, %if.else ]
%switch = catchswitch within none [label %catch] unwind label %cleanuppad
After:
catch.dispatch:
%val = phi i32 [ 1, %if.then ], [ 2, %if.else ]
%tok = cleanuppad within none []
; spill goes here
cleanupret from %tok unwind label %catch.dispatch.switch
catch.dispatch.switch:
%switch = catchswitch within none [label %catch] unwind label %cleanuppad
https://reviews.llvm.org/D31846
llvm-svn: 303232
Diffstat (limited to 'lldb/packages/Python/lldbsuite/support/optional_with.py')
0 files changed, 0 insertions, 0 deletions