llvm-project/llvm/lib/Transforms/Coroutines
Arthur Eubanks 9bd66b312c [PassManager][Coroutine] Run passes under -O0 conditionally and run GlobalDCE
CoroSplit lowers various coroutine intrinsics. It's a CGSCC pass and
CGSCC passes don't run on unreachable functions. Normally GlobalDCE will
come along and delete unreachable functions, but we don't run GlobalDCE
under -O0, so an unreachable function with coroutine intrinsics may
never have CoroSplit run on it.

This patch adds GlobalDCE when coroutines intrinsics are present. It
also now runs all coroutine passes conditional when coroutine intrinsics
are present. This should also solve the -O0 regression reported in
D105877 due to LazyCallGraph construction.

Fixes https://github.com/llvm/llvm-project/issues/54117

Reviewed By: ChuanqiXu

Differential Revision: https://reviews.llvm.org/D122275
2022-03-23 11:03:26 -07:00
..
CMakeLists.txt [PassManager][Coroutine] Run passes under -O0 conditionally and run GlobalDCE 2022-03-23 11:03:26 -07:00
CoroCleanup.cpp Coro: Remove coro_end and coro_suspend_retcon in private unprocessed functions 2021-11-18 07:48:24 -08:00
CoroConditionalWrapper.cpp [PassManager][Coroutine] Run passes under -O0 conditionally and run GlobalDCE 2022-03-23 11:03:26 -07:00
CoroEarly.cpp [Coroutines] Set presplit attribute in Clang and mlir 2022-01-05 10:25:02 +08:00
CoroElide.cpp [CoroElide] Remove fallback for frame layout determination 2022-03-07 11:23:02 +01:00
CoroFrame.cpp [Coroutines] Support opaque pointers in solveTypeName() 2022-03-10 09:33:55 +01:00
CoroInstr.h [Coroutines] Offering llvm.coro.align intrinsic 2022-01-19 09:52:45 +08:00
CoroInternal.h [PassManager][Coroutine] Run passes under -O0 conditionally and run GlobalDCE 2022-03-23 11:03:26 -07:00
CoroSplit.cpp [NFC] [Coroutines] Remove unnecessary check and constraints on SmallVector 2022-03-22 14:24:46 +08:00
Coroutines.cpp [PassManager][Coroutine] Run passes under -O0 conditionally and run GlobalDCE 2022-03-23 11:03:26 -07:00