Go to file
Gor Nishanov 23453c11ff [coroutines] Handle unwind edge splitting
Summary:
RewritePHIs algorithm used in building of CoroFrame inserts a placeholder
```
%placeholder = phi [%val]
```
on every edge leading to a block starting with PHI node with multiple incoming edges,
so that if one of the incoming values was spilled and need to be reloaded, we have a
place to insert a reload. We use SplitEdge helper function to split the incoming edge.

SplitEdge function does not deal with unwind edges comping into a block with an EHPad.

This patch adds an ehAwareSplitEdge function that can correctly split the unwind edge.

For landing pads, we clone the landing pad into every edge block and replace the original
landing pad with a PHI collection the values from all incoming landing pads.

For WinEH pads, we keep the original EHPad in place and insert cleanuppad/cleapret in the
edge blocks.

Reviewers: majnemer, rnk

Reviewed By: majnemer

Subscribers: EricWF, llvm-commits

Differential Revision: https://reviews.llvm.org/D31845

llvm-svn: 303172
2017-05-16 14:11:39 +00:00
clang [Sema] Avoid duplicate -Wunguarded-availability warnings in nested functions 2017-05-16 13:58:53 +00:00
clang-tools-extra [clang-tidy] Add "emplace_back" detection in inefficient-vector-operation. 2017-05-16 10:39:55 +00:00
compiler-rt builtins: use reserved spelling (NFC) 2017-05-16 04:17:12 +00:00
debuginfo-tests Add additional CHECKs to safestack.c. 2017-04-17 17:57:05 +00:00
libclc math: Implement sinh function 2017-02-25 02:46:53 +00:00
libcxx [test] Add specific test for P0138R2, direct-list-init of fixed enums from integers, part 3/3. 2017-05-12 20:33:46 +00:00
libcxxabi Revert r302978 and r302981. 2017-05-14 18:46:19 +00:00
libunwind [CMake][libunwind] Fix the -target and -gcc-toolchain flag handling 2017-04-16 06:08:44 +00:00
lld [ELF] - Update for LLVM's r303163 change. NFCi. 2017-05-16 12:34:51 +00:00
lldb Skip TestWatchedVarHitWhenInScope on android arm because it triggers a kernel bug 2017-05-16 11:58:18 +00:00
llgo benchcomp: Add a mode for analyzing file sizes. 2017-04-03 19:13:12 +00:00
llvm [coroutines] Handle unwind edge splitting 2017-05-16 14:11:39 +00:00
openmp Fix for KMP_AFFINITY=respect with multiple processor groups 2017-05-15 19:05:59 +00:00
parallel-libs [Axccel] Remove -Wno-missing-braces in build 2016-12-19 21:34:07 +00:00
polly Drop nonexisting ScopPassManager directory 2017-05-15 14:12:30 +00:00