Jlm
Loading...
Searching...
No Matches
IOBarrierElimination.hpp
Go to the documentation of this file.
1/*
2 * Copyright 2026 Nico Reißmann <nico.reissmann@gmail.com>
3 * See COPYING for terms of redistribution.
4 */
5
6#ifndef JLM_LLVM_OPT_IOBARRIERELIMINATION_HPP
7#define JLM_LLVM_OPT_IOBARRIERELIMINATION_HPP
8
9#include <jlm/rvsdg/gamma.hpp>
11
12namespace jlm::llvm
13{
14
16{
17 class Context;
18 class Statistics;
19
20public:
22
24
26
28
31
34
35 void
37
38 static void
40
41private:
42 void
43 markOutputs(rvsdg::Region & region);
44
45 void
47
48 void
49 encodeSize(rvsdg::Graph & graph);
50
51 void
52 sweepRegion(rvsdg::Region & region);
53
54 size_t
56
57 std::unique_ptr<Context> context_{};
58};
59
60}
61
62#endif
void propagateSize(rvsdg::Graph &graph)
void Run(rvsdg::RvsdgModule &module, util::StatisticsCollector &statisticsCollector) override
Perform RVSDG transformation.
static void normalizeMemoryHoistBarriers(rvsdg::Region &region)
IOBarrierElimination & operator=(const IOBarrierElimination &)=delete
IOBarrierElimination & operator=(IOBarrierElimination &&)=delete
void markOutputs(rvsdg::Region &region)
size_t getDereferenceableSize(const rvsdg::GammaNode::EntryVar &entryVar) const
void sweepRegion(rvsdg::Region &region)
std::unique_ptr< Context > context_
IOBarrierElimination(IOBarrierElimination &&)=delete
IOBarrierElimination(const IOBarrierElimination &)=delete
Represent acyclic RVSDG subgraphs.
Definition region.hpp:213
Represents an RVSDG transformation.
Global memory state passed between functions.
static util::StatisticsCollector statisticsCollector
A variable routed into all gamma regions.
Definition gamma.hpp:131