Jlm
InvariantValueRedirection.hpp
Go to the documentation of this file.
1 /*
2  * Copyright 2017 Nico Reißmann <nico.reissmann@gmail.com>
3  * See COPYING for terms of redistribution.
4  */
5 
6 #ifndef JLM_LLVM_OPT_INVARIANTVALUEREDIRECTION_HPP
7 #define JLM_LLVM_OPT_INVARIANTVALUEREDIRECTION_HPP
8 
10 
11 namespace jlm::rvsdg
12 {
13 class GammaNode;
14 class Graph;
15 class Region;
16 class StructuralNode;
17 class ThetaNode;
18 class SimpleNode;
19 }
20 
21 namespace jlm::llvm
22 {
23 
24 class ThetaGammaPredicateCorrelation;
25 
77 {
78  class Statistics;
79 
80 public:
82 
84  : Transformation("InvariantValueRedirection")
85  {}
86 
87  void
88  Run(rvsdg::RvsdgModule & module, util::StatisticsCollector & statisticsCollector) override;
89 
90 private:
91  static void
93 
94  static void
96 
97  static void
99 
100  static void
102 
103  static void
105 
112  static void
114 
115  static void
117 };
118 
119 }
120 
121 #endif
Invariant Value Redirection Optimization.
static void RedirectGammaOutputs(rvsdg::GammaNode &gammaNode)
static void RedirectCallOutputs(rvsdg::SimpleNode &callNode)
static void RedirectInRegion(rvsdg::Region &region)
static void RedirectInSubregions(rvsdg::StructuralNode &structuralNode)
void Run(rvsdg::RvsdgModule &module, util::StatisticsCollector &statisticsCollector) override
Perform RVSDG transformation.
static void RedirectInRootRegion(rvsdg::Graph &rvsdg)
static void redirectThetaGammaOutputs(rvsdg::ThetaNode &thetaNode)
static void RedirectThetaOutputs(rvsdg::ThetaNode &thetaNode)
Conditional operator / pattern matching.
Definition: gamma.hpp:99
Represent acyclic RVSDG subgraphs.
Definition: region.hpp:213
Represents an RVSDG transformation.
Transformation(std::string_view Name)
Global memory state passed between functions.