|
Jlm
|
Aggregate Alloca Splitting Transformation. More...
#include <AggregateAllocaSplitting.hpp>


Classes | |
| struct | AllocaTraceInfo |
| struct | Context |
| class | Statistics |
Public Member Functions | |
| ~AggregateAllocaSplitting () noexcept override | |
| AggregateAllocaSplitting () | |
| void | Run (rvsdg::RvsdgModule &module, util::StatisticsCollector &statisticsCollector) override |
| Perform RVSDG transformation. More... | |
Public Member Functions inherited from jlm::rvsdg::Transformation | |
| virtual | ~Transformation () noexcept |
| Transformation (std::string_view Name) | |
| const std::string_view & | GetName () const noexcept |
| void | Run (RvsdgModule &module) |
| Perform RVSDG transformation. More... | |
Private Member Functions | |
| void | splitAllocaNodes (rvsdg::RvsdgModule &rvsdgModule) |
| std::vector< AllocaTraceInfo > | findSplitableAllocaNodes (rvsdg::Region ®ion) const |
Static Private Member Functions | |
| static void | splitAllocaNode (const AllocaTraceInfo &allocaTraceInfo) |
| static bool | checkGetElementPtrUsers (const rvsdg::SimpleNode &gepNode) |
| static std::optional< AllocaTraceInfo > | isSplitable (rvsdg::SimpleNode &allocaNode) |
| static bool | isSplitableType (const rvsdg::Type &type) |
Private Attributes | |
| std::unique_ptr< Context > | context_ {} |
Aggregate Alloca Splitting Transformation.
Aggregate Alloca Splitting splits up AllocaOperation nodes with aggregate types, i.e., struct and array types, into multiple AllocaOperation nodes with simple types, i.e., integer or floating-point types. The intention is to simplify the processing of these AllocaOperation nodes by passes such as StoreValueForwarding.
Definition at line 22 of file AggregateAllocaSplitting.hpp.
|
overridedefaultnoexcept |
| jlm::llvm::AggregateAllocaSplitting::AggregateAllocaSplitting | ( | ) |
Definition at line 93 of file AggregateAllocaSplitting.cpp.
|
staticprivate |
Definition at line 268 of file AggregateAllocaSplitting.cpp.
|
private |
Definition at line 409 of file AggregateAllocaSplitting.cpp.
|
staticprivate |
Definition at line 119 of file AggregateAllocaSplitting.cpp.
|
staticprivate |
Definition at line 98 of file AggregateAllocaSplitting.cpp.
|
overridevirtual |
Perform RVSDG transformation.
| module | RVSDG module the transformation is performed on. |
| statisticsCollector | Statistics collector for collecting transformation statistics. |
Implements jlm::rvsdg::Transformation.
Definition at line 547 of file AggregateAllocaSplitting.cpp.
|
staticprivate |
Definition at line 480 of file AggregateAllocaSplitting.cpp.
|
private |
Definition at line 534 of file AggregateAllocaSplitting.cpp.
|
private |
Definition at line 55 of file AggregateAllocaSplitting.hpp.