• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

daisytuner / sdfglib / 19258124803

11 Nov 2025 07:18AM UTC coverage: 61.767% (+0.2%) from 61.551%
19258124803

Pull #340

github

web-flow
Merge c3254019c into 41e436a2a
Pull Request #340: Adds BlockSorting and BlockHoisting Passes

139 of 179 new or added lines in 5 files covered. (77.65%)

10538 of 17061 relevant lines covered (61.77%)

107.11 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

52.56
/src/passes/pipeline.cpp
1
#include "sdfg/passes/pipeline.h"
2

3
#include "sdfg/passes/code_motion/block_hoisting.h"
4
#include "sdfg/passes/code_motion/block_sorting.h"
5
#include "sdfg/passes/dataflow/tasklet_fusion.h"
6
#include "sdfg/passes/schedules/expansion_pass.h"
7

8
namespace sdfg {
9
namespace passes {
10

11
Pipeline::Pipeline(const std::string& name)
12✔
12
    : Pass(), name_(name) {
12✔
13

14
      };
6✔
15

16
std::string Pipeline::name() { return this->name_; };
4✔
17

18
size_t Pipeline::size() const { return this->passes_.size(); };
6✔
19

20
bool Pipeline::run(builder::SDFGBuilder& builder) {
×
21
    bool applied = false;
×
22

23
    bool applied_pipeline;
24
    do {
×
25
        applied_pipeline = false;
×
26
        for (auto& pass : this->passes_) {
×
27
            bool applied_pass = false;
×
28
            do {
×
29
                applied_pass = pass->run(builder);
×
30
                applied_pipeline |= applied_pass;
×
31
            } while (applied_pass);
×
32
        }
33
        applied |= applied_pipeline;
×
34
    } while (applied_pipeline);
×
35

36
    return applied;
×
37
};
38

39
bool Pipeline::run(builder::StructuredSDFGBuilder& builder, analysis::AnalysisManager& analysis_manager) {
×
40
    bool applied = false;
×
41
    bool applied_pipeline;
42
    do {
×
43
        applied_pipeline = false;
×
44
        for (auto& pass : this->passes_) {
×
45
            bool applied_pass = false;
×
46
            do {
×
47
                applied_pass = pass->run(builder, analysis_manager);
×
48
                applied_pipeline |= applied_pass;
×
49
            } while (applied_pass);
×
50
        }
51
        applied |= applied_pipeline;
×
52
    } while (applied_pipeline);
×
53

54
    return applied;
×
55
};
56

57
Pipeline Pipeline::expression_combine() {
1✔
58
    Pipeline p("ExpressionCombine");
1✔
59

60
    p.register_pass<SymbolPropagation>();
1✔
61
    p.register_pass<ConstantElimination>();
1✔
62
    p.register_pass<DeadDataElimination>();
1✔
63
    p.register_pass<SymbolEvolution>();
1✔
64
    p.register_pass<TaskletFusionPass>();
1✔
65

66
    return p;
1✔
67
};
1✔
68

69
Pipeline Pipeline::memlet_combine() {
1✔
70
    Pipeline p("MemletCombine");
1✔
71

72
    p.register_pass<ReferencePropagation>();
1✔
73
    p.register_pass<DeadReferenceElimination>();
1✔
74
    p.register_pass<ByteReferenceElimination>();
1✔
75

76
    return p;
1✔
77
};
1✔
78

79
Pipeline Pipeline::controlflow_simplification() {
1✔
80
    Pipeline p("ControlFlowSimplification");
1✔
81

82
    p.register_pass<DeadCFGElimination>();
1✔
83
    p.register_pass<BlockFusionPass>();
1✔
84
    p.register_pass<SequenceFusion>();
1✔
85
    p.register_pass<ConditionEliminationPass>();
1✔
86

87
    return p;
1✔
88
};
1✔
89

NEW
90
Pipeline Pipeline::code_motion() {
×
NEW
91
    Pipeline p("CodeMotion");
×
92

NEW
93
    p.register_pass<BlockHoistingPass>();
×
NEW
94
    p.register_pass<BlockSortingPass>();
×
95

NEW
96
    return p;
×
NEW
97
};
×
98

99
Pipeline Pipeline::data_parallelism() {
1✔
100
    Pipeline p("DataParallelism");
1✔
101

102
    p.register_pass<For2MapPass>();
1✔
103
    p.register_pass<SymbolPropagation>();
1✔
104
    p.register_pass<DeadDataElimination>();
1✔
105

106
    return p;
1✔
107
};
1✔
108

109
Pipeline Pipeline::memory() {
×
110
    Pipeline p("Memory");
×
111

112
    p.register_pass<AllocationManagementPass>();
×
113

114
    return p;
×
115
};
×
116

117
Pipeline Pipeline::expansion() {
1✔
118
    Pipeline p("Expansion");
1✔
119

120
    p.register_pass<ExpansionPass>();
1✔
121

122
    return p;
1✔
123
};
1✔
124

125
} // namespace passes
126
} // namespace sdfg
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc