llvm-project/llvm/test/Transforms/Coroutines
Chuanqi Xu 1cedc51ff5 [Coroutines] Don't merge readnone calls in presplit coroutines
Another alternative to fix the thread identification problem in
coroutines.

We plan to fix this problem by unifying memory effecting attributes. See
https://discourse.llvm.org/t/rfc-unify-memory-effect-attributes/65579.
But it may be a long-term project. And it is a pity that the coroutines
can't resume in different threads for years. So this one is temporary
fix. It may cause unnecessary performance regression for coroutines. But
correctness are more important. And this one is planned to be reverted
after we are able to unify the memory effecting attributes actually.

Reviewed By: jdoerfert, rjmccall

Differential Revision: https://reviews.llvm.org/D135550
2022-10-17 10:22:43 +08:00
..
Inputs
ArgAddr.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-align8-02.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-align8.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-align16.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-align32.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-align64-02.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-align64.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-alloc-with-param-O0.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-alloc-with-param-O2.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-alloca-01.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-alloca-02.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-alloca-03.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-alloca-04.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-alloca-05.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-alloca-06.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-alloca-07.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-alloca-08.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-alloca-09.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-async-addr-lifetime-infinite-loop-bug.ll [Pipelines] Remove Legacy Passes in Coroutines 2022-04-21 10:59:11 +08:00
coro-async-addr-lifetime-start-bug.ll [Pipelines] Remove Legacy Passes in Coroutines 2022-04-21 10:59:11 +08:00
coro-async-coro-id-async-bug.ll [coro async] Add missing llvm.coro.id.async intrinsic to declaresCoroCleanupIntrinsics 2022-07-19 07:25:04 -07:00
coro-async-dyn-align.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-async-end-bug.ll [coro async] Fix code to run coro.async.end cleanup like the legacy pass did 2022-07-18 10:41:29 -07:00
coro-async-no-cse-swift-async-context-addr.ll llvm.swift.async.context.addr cannot be modeled as NoMem because we don't want it to be cse'd accross async suspends 2022-07-22 11:50:58 -07:00
coro-async-nomerge.ll [coro async] Mark async suspend function and its resume function pointer intrinsic as nomerge 2022-08-11 11:43:30 -07:00
coro-async-phi.ll [Pipelines] Remove Legacy Passes in Coroutines 2022-04-21 10:59:11 +08:00
coro-async-remat.ll [Pipelines] Remove Legacy Passes in Coroutines 2022-04-21 10:59:11 +08:00
coro-async-unreachable.ll [Pipelines] Remove Legacy Passes in Coroutines 2022-04-21 10:59:11 +08:00
coro-async.ll [ValueTracking] Handle constant exprs in isKnownNonZero() 2022-10-04 11:58:07 +02:00
coro-byval-param.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-catchswitch-cleanuppad.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-catchswitch.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-cleanup-lowering.ll [Pipelines] Remove Legacy Passes in Coroutines 2022-04-21 10:59:11 +08:00
coro-cleanup.ll [Pipelines] Remove Legacy Passes in Coroutines 2022-04-21 10:59:11 +08:00
coro-debug-O2.ll Revert "[Coroutines] Only do symmetric transfer if optimization is on" 2022-06-27 10:54:56 +08:00
coro-debug-coro-frame.ll [Debug] [Coroutines] Get rid of DW_ATE_address 2022-07-07 10:47:09 +08:00
coro-debug-dbg.addr-swift.ll [Pipelines] Hoist CoroEarly as a module pass 2022-04-19 11:04:24 +08:00
coro-debug-dbg.addr.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-debug-dbg.values-not_used_in_frame.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-debug-dbg.values.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-debug-frame-variable.ll [CloneFunction][DebugInfo] Avoid cloning DILexicalBlocks of inlined subprograms 2022-07-18 13:14:52 +02:00
coro-debug.ll [IR] Don't use blockaddresses as callbr arguments 2022-07-15 10:18:17 +02:00
coro-eh-aware-edge-split-00.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-eh-aware-edge-split-01.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-eh-aware-edge-split-02.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-elide-musttail.ll [CoroElide] Remove fallback for frame layout determination 2022-03-07 11:23:02 +01:00
coro-elide-stat.ll [CoroElide] Remove fallback for frame layout determination 2022-03-07 11:23:02 +01:00
coro-elide.ll [CoroElide] Remove fallback for frame layout determination 2022-03-07 11:23:02 +01:00
coro-frame-arrayalloca.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-frame-reuse-alloca-00.ll Revert "[Coroutines] Only do symmetric transfer if optimization is on" 2022-06-27 10:54:56 +08:00
coro-frame-reuse-alloca-01.ll Revert "[Coroutines] Only do symmetric transfer if optimization is on" 2022-06-27 10:54:56 +08:00
coro-frame-reuse-alloca-02.ll Revert "[Coroutines] Only do symmetric transfer if optimization is on" 2022-06-27 10:54:56 +08:00
coro-frame-reuse-alloca-03.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-frame-reuse-alloca-04.ll Revert "[Coroutines] Only do symmetric transfer if optimization is on" 2022-06-27 10:54:56 +08:00
coro-frame-reuse-alloca-05.ll Revert "[Coroutines] Only do symmetric transfer if optimization is on" 2022-06-27 10:54:56 +08:00
coro-frame-unreachable.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-frame.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-heap-elide.ll [CoroElide] Remove fallback for frame layout determination 2022-03-07 11:23:02 +01:00
coro-inline.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-internal-O0.ll [PassManager][Coroutine] Run passes under -O0 conditionally and run GlobalDCE 2022-03-23 11:03:26 -07:00
coro-materialize.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-noalias-param.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-noop.ll [Coro][Debuginfo] Add debug info to `__NoopCoro_ResumeDestroy` function 2022-08-26 05:49:52 -07:00
coro-padding.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-param-copy.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-preserve-final.ll [Coroutines] Maintain the position of final suspend 2022-08-12 13:05:08 +08:00
coro-readnone-02.ll [Coroutines] Don't merge readnone calls in presplit coroutines 2022-10-17 10:22:43 +08:00
coro-readnone.ll [Coroutines] Don't merge readnone calls in presplit coroutines 2022-10-17 10:22:43 +08:00
coro-resume-destroy.ll [Coro][Debuginfo] Add debug info to `__NoopCoro_ResumeDestroy` function 2022-08-26 05:49:52 -07:00
coro-retcon-alloca-opaque-ptr.ll [Pipelines] Remove Legacy Passes in Coroutines 2022-04-21 10:59:11 +08:00
coro-retcon-alloca.ll [Pipelines] Remove Legacy Passes in Coroutines 2022-04-21 10:59:11 +08:00
coro-retcon-frame.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-retcon-once-private.ll [Pipelines] Remove Legacy Passes in Coroutines 2022-04-21 10:59:11 +08:00
coro-retcon-once-value.ll [Passes] add a tail-call-elim pass near the end of the opt pipeline 2022-07-25 15:25:47 -04:00
coro-retcon-once-value2.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-retcon-opaque-ptr.ll [Pipelines] Hoist CoroCleanup to avoid blocking optimizations 2022-05-05 15:13:27 +08:00
coro-retcon-resume-values.ll Revert rG1b7089fe67b924bdd5ecef786a34bdba7a88778f "[SLP] Add ScalarizationOverheadBuilder helper to track vector extractions" 2022-09-30 11:22:48 +01:00
coro-retcon-resume-values2.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-retcon-unreachable.ll [Pipelines] Hoist CoroEarly as a module pass 2022-04-19 11:04:24 +08:00
coro-retcon-value.ll [Pipelines] Hoist CoroCleanup to avoid blocking optimizations 2022-05-05 15:13:27 +08:00
coro-retcon.ll [Pipelines] Hoist CoroCleanup to avoid blocking optimizations 2022-05-05 15:13:27 +08:00
coro-save-nomerge.ll [coroutine] add nomerge function attribute to `llvm.coro.save` 2022-07-12 10:39:38 -07:00
coro-spill-after-phi.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-spill-corobegin.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-spill-defs-before-corobegin.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-spill-promise.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-split-00.ll tests: add attributes that would normally come from inferattrs 2022-07-25 17:29:00 -04:00
coro-split-01.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-split-02.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-split-alloc.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-split-dbg.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-split-eh-00.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-split-eh-01.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-split-final-suspend.ll [Coroutines] Store the index for final suspend point if there is unwind coro end 2022-08-26 14:05:46 +08:00
coro-split-hidden.ll tests: add attributes that would normally come from inferattrs 2022-07-25 17:29:00 -04:00
coro-split-musttail-ppc64le.ll [PowerPC][Coroutines] Add tail-call check with call information for coroutines 2022-08-21 22:20:40 -04:00
coro-split-musttail.ll Revert "[Coroutines] Only do symmetric transfer if optimization is on" 2022-06-27 10:54:56 +08:00
coro-split-musttail1.ll Revert "[Coroutines] Only do symmetric transfer if optimization is on" 2022-06-27 10:54:56 +08:00
coro-split-musttail2.ll Revert "[Coroutines] Only do symmetric transfer if optimization is on" 2022-06-27 10:54:56 +08:00
coro-split-musttail3.ll Revert "[Coroutines] Only do symmetric transfer if optimization is on" 2022-06-27 10:54:56 +08:00
coro-split-musttail4.ll Revert "[Coroutines] Only do symmetric transfer if optimization is on" 2022-06-27 10:54:56 +08:00
coro-split-musttail5.ll Revert "[Coroutines] Only do symmetric transfer if optimization is on" 2022-06-27 10:54:56 +08:00
coro-split-musttail6.ll Revert "[Coroutines] Only do symmetric transfer if optimization is on" 2022-06-27 10:54:56 +08:00
coro-split-musttail7.ll Revert "[Coroutines] Only do symmetric transfer if optimization is on" 2022-06-27 10:54:56 +08:00
coro-split-musttail8.ll [Coroutines] Add REQUIRES clause to skip unsupported targets 2022-06-30 11:37:41 +08:00
coro-split-musttail9.ll [Coroutines] Add REQUIRES clause to skip unsupported targets 2022-06-30 11:37:41 +08:00
coro-split-musttail10.ll [WebAssembly] Don't set musttail for coroutines when tail-call is not 2022-06-30 11:15:40 +08:00
coro-split-musttail11.ll [WebAssembly] Don't set musttail for coroutines when tail-call is not 2022-06-30 11:15:40 +08:00
coro-split-no-lieftime.ll [Coroutines] Remove lifetime intrinsics for spliied allocas in coroutine frames 2022-08-05 14:50:43 +08:00
coro-split-recursive.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-split-sink-lifetime-01.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-split-sink-lifetime-02.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-split-sink-lifetime-03.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-split-sink-lifetime-04.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
coro-swifterror.ll [Pipelines] Remove Legacy Passes in Coroutines 2022-04-21 10:59:11 +08:00
coro-zero-alloca.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
ex0.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
ex1.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
ex2.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
ex3.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
ex4.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
ex5.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
no-suspend.ll tests: add attributes that would normally come from inferattrs 2022-07-25 17:29:00 -04:00
phi-coro-end.ll [Coroutines] Convert coroutine.presplit to enum attr 2022-06-14 14:23:46 +08:00
smoketest.ll [NFC] [Pipelines] Hoist CoroCleanup as Module Pass 2022-05-05 15:15:09 +08:00