llvm-project/llvm/test/Transforms/Coroutines
Chuanqi Xu 2c61848c9d [Coroutines] Handle the writes to promise alloca prior to
llvm.coro.begin

Previously we've taken care of the writes to allocas prior to llvm.coro.begin.
However, since the promise alloca is special so that we never handled it
before. For the long time, since the programmers can't access the
promise_type due to the c++ language specification, we still failed to
recognize the problem until a recent report:
https://github.com/llvm/llvm-project/issues/57861

And we've tested many codes that the problem gone away after we handle
the writes to the promise alloca prior to @llvm.coro.begin()
prope until a recent report:
https://github.com/llvm/llvm-project/issues/57861

And we've tested many codes that the problem gone away after we handle
the writes to the promise alloca prior to @llvm.coro.begin() properly.

Closes https://github.com/llvm/llvm-project/issues/57861
2022-11-18 15:39:39 +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 [Test] Fix CHECK typo. 2022-11-04 10:18:04 -07: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 [IR] Switch everything to use memory attribute 2022-11-04 10:21:38 +01: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 [Pipelines] Introduce SROA after (final, run-time) loop unrolling 2022-11-17 21:31:30 +03: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 [Coroutines] Do not add allocas for retcon coroutines 2022-11-14 10:46:46 +01: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-02.ll [Coroutines] Handle the writes to promise alloca prior to 2022-11-18 15:39:39 +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