1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 20:23:11 +01:00
llvm-mirror/lib/Transforms/Coroutines
Xun Li c6d65863c3 [Coroutine] Allocas used by StoreInst does not always escape
In the existing logic, for a given alloca, as long as its pointer value is stored into another location, it's considered as escaped.
This is a bit too conservative. Specifically, in non-optimized build mode, it's often to have patterns of code that first store an alloca somewhere and then load it right away.
These used should be handled without conservatively marking them escaped.

This patch tracks how the memory location where an alloca pointer is stored into is being used. As long as we only try to load from that location and nothing else, we can still
consider the original alloca not escaping and keep it on the stack instead of putting it on the frame.

Differential Revision: https://reviews.llvm.org/D91305
2020-11-16 09:14:44 -08:00
..
CMakeLists.txt llvmbuildectomy - replace llvm-build by plain cmake 2020-11-13 10:35:24 +01:00
CoroCleanup.cpp Start of an llvm.coro.async implementation 2020-11-04 10:29:21 -08:00
CoroEarly.cpp Start of an llvm.coro.async implementation 2020-11-04 10:29:21 -08:00
CoroElide.cpp llvm.coro.id.async lowering: Parameterize how-to restore the current's continutation context and restart the pipeline after splitting 2020-11-06 06:22:46 -08:00
CoroFrame.cpp [Coroutine] Allocas used by StoreInst does not always escape 2020-11-16 09:14:44 -08:00
CoroInstr.h [coro] Async coroutines: Allow more than 3 arguments in the dispatch function 2020-11-11 15:25:28 -08:00
CoroInternal.h llvm.coro.id.async lowering: Parameterize how-to restore the current's continutation context and restart the pipeline after splitting 2020-11-06 06:22:46 -08:00
CoroSplit.cpp Fix unused variable warning in release builds 2020-11-12 18:14:06 +01:00
Coroutines.cpp [coro] Async coroutines: Allow more than 3 arguments in the dispatch function 2020-11-11 15:25:28 -08:00