llvm-project/llvm/test/Transforms/Coroutines
Brian Gesiak 83a9321f60 [Coroutines] Remove corresponding phi values when apply simplifyTerminatorLeadingToRet
Summary:
In addMustTailToCoroResumes, we set musttail on those resume instructions that are followed by a ret instruction. This is done by simplifyTerminatorLeadingToRet which replace a sequence of branches leading to a ret with a clone of the ret.

However it forgets to remove corresponding PHI values that come from basic block of replaced branch, and may cause jumpthreading pass hangs (https://bugs.llvm.org/show_bug.cgi?id=43720)

This patch fix this issue

Test Plan:
cppcoro library with O3+flto
check-llvm

Reviewers: modocache, GorNishanov, lewissbaker

Reviewed By: modocache

Subscribers: mehdi_amini, EricWF, hiraditya, dexonsmith, jfb, llvm-commits

Tags: #llvm

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

Patch by junparser (JunMa)!
2020-01-05 18:26:30 -05:00
..
ArgAddr.ll
coro-alloc-with-param.ll [coroutine] Fixes "cannot move instruction since its users are not dominated by CoroBegin" problem. 2019-08-15 00:48:51 +00:00
coro-catchswitch.ll
coro-cleanup.ll
coro-debug.ll Migrate function attribute "no-frame-pointer-elim"="false" to "frame-pointer"="none" as cleanups after D56351 2019-12-24 16:27:51 -08:00
coro-early.ll IR: print value numbers for unnamed function arguments 2019-08-03 14:28:34 +00:00
coro-eh-aware-edge-split.ll
coro-elide.ll
coro-frame-arrayalloca.ll [coroutines] Fix spills of static array allocas 2019-05-13 23:58:24 +00:00
coro-frame-unreachable.ll
coro-frame.ll
coro-heap-elide.ll
coro-materialize.ll
coro-padding.ll
coro-param-copy.ll [coroutine] Fixes "cannot move instruction since its users are not dominated by CoroBegin" problem. 2019-08-15 00:48:51 +00:00
coro-retcon-alloca.ll Update for optimizer changes. 2019-08-14 03:53:58 +00:00
coro-retcon-once-value.ll Generalize llvm.coro.suspend.retcon to allow an arbitrary number of arguments to be passed back to the continuation function. 2019-08-14 03:53:26 +00:00
coro-retcon-once-value2.ll Generalize llvm.coro.suspend.retcon to allow an arbitrary number of arguments to be passed back to the continuation function. 2019-08-14 03:53:26 +00:00
coro-retcon-resume-values.ll Generalize llvm.coro.suspend.retcon to allow an arbitrary number of arguments to be passed back to the continuation function. 2019-08-14 03:53:26 +00:00
coro-retcon-resume-values2.ll Generalize llvm.coro.suspend.retcon to allow an arbitrary number of arguments to be passed back to the continuation function. 2019-08-14 03:53:26 +00:00
coro-retcon-value.ll Generalize llvm.coro.suspend.retcon to allow an arbitrary number of arguments to be passed back to the continuation function. 2019-08-14 03:53:26 +00:00
coro-retcon.ll In coro.retcon lowering, don't explode if the optimizer messes around with the linkage of the prototype or the exact types of the yielded values. 2019-08-14 03:53:52 +00:00
coro-spill-after-phi.ll
coro-spill-corobegin.ll
coro-split-00.ll
coro-split-01.ll
coro-split-02.ll
coro-split-alloc.ll
coro-split-dbg.ll Migrate function attribute "no-frame-pointer-elim"="false" to "frame-pointer"="none" as cleanups after D56351 2019-12-24 16:27:51 -08:00
coro-split-eh.ll
coro-split-hidden.ll
coro-split-musttail.ll [Coroutines] Remove corresponding phi values when apply simplifyTerminatorLeadingToRet 2020-01-05 18:26:30 -05:00
coro-split-musttail1.ll [Coroutines] Remove corresponding phi values when apply simplifyTerminatorLeadingToRet 2020-01-05 18:26:30 -05:00
coro-swifterror.ll [ValueTracking] Pointer is known nonnull after load/store 2019-12-11 20:32:29 +01:00
ex0.ll
ex1.ll
ex2.ll
ex3.ll
ex4.ll
ex5.ll
no-suspend.ll
phi-coro-end.ll
restart-trigger.ll
smoketest.ll