P4C
The P4 Compiler
Loading...
Searching...
No Matches
metricsPassManager.h
1
/*
2
Adds code metric collection passes to the frontend pipeline,
3
based on the "selectedMetrics" option. If any metrics were
4
selected by the user, the pass which exports them is added
5
as well.
6
*/
7
8
#ifndef FRONTENDS_P4_METRICS_METRICSPASSMANAGER_H_
9
#define FRONTENDS_P4_METRICS_METRICSPASSMANAGER_H_
10
11
#include <filesystem>
12
13
#include "frontends/common/options.h"
14
#include "frontends/p4/metrics/cyclomaticComplexity.h"
15
#include "frontends/p4/metrics/exportMetrics.h"
16
#include "frontends/p4/metrics/externalObjectsMetric.h"
17
#include "frontends/p4/metrics/halsteadMetrics.h"
18
#include "frontends/p4/metrics/headerMetrics.h"
19
#include "frontends/p4/metrics/headerPacketMetrics.h"
20
#include "frontends/p4/metrics/inlinedActionsMetric.h"
21
#include "frontends/p4/metrics/linesOfCodeMetric.h"
22
#include "frontends/p4/metrics/matchActionTableMetrics.h"
23
#include "frontends/p4/metrics/metricsStructure.h"
24
#include "frontends/p4/metrics/nestingDepthMetric.h"
25
#include "frontends/p4/metrics/parserMetrics.h"
26
#include "frontends/p4/metrics/unusedCodeMetric.h"
27
#include "ir/ir.h"
28
29
using namespace
P4::literals
;
30
31
namespace
P4
{
32
33
class
PassManager
;
34
35
class
MetricsPassManager {
36
private
:
37
const
std::set<cstring> &selectedMetrics;
38
TypeMap
*typeMap;
39
Metrics
&metrics;
40
std::filesystem::path fileName;
41
42
public
:
43
MetricsPassManager(
const
CompilerOptions
&options,
TypeMap
*typeMap,
Metrics
&metricsRef)
44
: selectedMetrics(options.selectedMetrics),
45
typeMap(typeMap),
46
metrics(metricsRef),
47
fileName(options.file) {}
48
49
Metrics
&getMetrics() {
return
metrics; }
50
void
addInlined(
PassManager
&pm);
51
void
addUnusedCode(
PassManager
&pm,
bool
isBefore);
52
void
addMetricPasses(
PassManager
&pm);
53
};
54
55
}
// namespace P4
56
57
#endif
/* FRONTENDS_P4_METRICS_METRICSPASSMANAGER_H_ */
P4::CompilerOptions
Definition
frontends/common/options.h:31
P4::PassManager
Definition
ir/pass_manager.h:40
P4::TypeMap
Definition
typeMap.h:41
P4::literals
Definition
cstring.h:80
P4
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition
applyOptionsPragmas.cpp:24
P4::Metrics
Definition
metricsStructure.h:119
frontends
p4
metrics
metricsPassManager.h
Generated by
1.13.2