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

daisytuner / sdfglib / 15044057891

15 May 2025 11:42AM UTC coverage: 59.37% (+1.8%) from 57.525%
15044057891

push

github

web-flow
Merge pull request #14 from daisytuner/sanitizers

enables sanitizer on unit tests

63 of 67 new or added lines in 47 files covered. (94.03%)

570 existing lines in 62 files now uncovered.

7356 of 12390 relevant lines covered (59.37%)

505.93 hits per line

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

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

3
namespace sdfg {
4
namespace passes {
5

6
Pipeline::Pipeline(const std::string& name)
14✔
7
    : Pass(), name_(name) {
14✔
8

9
      };
7✔
10

11
std::string Pipeline::name() { return this->name_; };
×
12

13
size_t Pipeline::size() const { return this->passes_.size(); };
1✔
14

15
bool Pipeline::run(builder::SDFGBuilder& builder) {
×
16
    bool applied = false;
×
17

18
    bool applied_pipeline;
19
    do {
×
20
        applied_pipeline = false;
×
21
        for (auto& pass : this->passes_) {
×
22
            bool applied_pass = false;
×
23
            do {
×
24
                applied_pass = pass->run(builder);
×
25
                applied_pipeline |= applied_pass;
×
UNCOV
26
            } while (applied_pass);
×
27
        }
28
        applied |= applied_pipeline;
×
UNCOV
29
    } while (applied_pipeline);
×
30

31
    return applied;
×
32
};
33

34
bool Pipeline::run(builder::StructuredSDFGBuilder& builder,
3✔
35
                   analysis::AnalysisManager& analysis_manager) {
36
    bool applied = false;
3✔
37
    bool applied_pipeline;
38
    do {
3✔
39
        applied_pipeline = false;
3✔
40
        for (auto& pass : this->passes_) {
15✔
41
            bool applied_pass = false;
12✔
42
            do {
12✔
43
                applied_pass = pass->run(builder, analysis_manager);
12✔
44
                applied_pipeline |= applied_pass;
12✔
45
            } while (applied_pass);
12✔
46
        }
47
        applied |= applied_pipeline;
3✔
48
    } while (applied_pipeline);
3✔
49

50
    return applied;
3✔
51
};
52

53
bool Pipeline::run(Schedule& schedule) {
×
54
    auto& builder = schedule.builder();
×
55
    auto& analysis_manager = schedule.analysis_manager();
×
56
    return this->run(builder, analysis_manager);
×
57
};
58

59
bool Pipeline::run(ConditionalSchedule& schedule) {
×
60
    bool applied = false;
×
61
    for (size_t i = 0; i < schedule.size(); i++) {
×
62
        auto& s = schedule.schedule(i);
×
63
        bool applied_pass = false;
×
64
        do {
×
65
            applied_pass = this->run(s);
×
66
            applied |= applied_pass;
×
UNCOV
67
        } while (applied_pass);
×
UNCOV
68
    }
×
69
    return applied;
×
70
};
71

72
Pipeline Pipeline::expression_combine() {
3✔
73
    Pipeline p("ExpressionCombine");
3✔
74

75
    p.register_pass<SymbolPropagation>();
3✔
76
    p.register_pass<DeadDataElimination>();
3✔
77

78
    return p;
3✔
79
};
3✔
80

81
Pipeline Pipeline::memlet_combine() {
3✔
82
    Pipeline p("MemletCombine");
3✔
83

84
    p.register_pass<ViewPropagation>();
3✔
85
    p.register_pass<ForwardMemletPropagation>();
3✔
86
    p.register_pass<BackwardMemletPropagation>();
3✔
87
    p.register_pass<DeadReferenceElimination>();
3✔
88

89
    return p;
3✔
90
};
3✔
91

92
Pipeline Pipeline::controlflow_simplification() {
×
93
    Pipeline p("ControlFlowSimplification");
×
94

95
    p.register_pass<DeadCFGElimination>();
×
96
    p.register_pass<BlockFusionPass>();
×
97
    p.register_pass<SequenceFusion>();
×
98

99
    return p;
×
100
};
×
101

102
}  // namespace passes
103
}  // 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