1//===- Pass.cpp - Pass related classes ------------------------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#include "mlir/TableGen/Pass.h"
10#include "llvm/TableGen/Record.h"
11
12using namespace mlir;
13using namespace mlir::tblgen;
14
15//===----------------------------------------------------------------------===//
16// PassOption
17//===----------------------------------------------------------------------===//
18
19StringRef PassOption::getCppVariableName() const {
20 return def->getValueAsString(FieldName: "cppName");
21}
22
23StringRef PassOption::getArgument() const {
24 return def->getValueAsString(FieldName: "argument");
25}
26
27StringRef PassOption::getType() const { return def->getValueAsString(FieldName: "type"); }
28
29std::optional<StringRef> PassOption::getDefaultValue() const {
30 StringRef defaultVal = def->getValueAsString(FieldName: "defaultValue");
31 return defaultVal.empty() ? std::optional<StringRef>() : defaultVal;
32}
33
34StringRef PassOption::getDescription() const {
35 return def->getValueAsString(FieldName: "description");
36}
37
38std::optional<StringRef> PassOption::getAdditionalFlags() const {
39 StringRef additionalFlags = def->getValueAsString(FieldName: "additionalOptFlags");
40 return additionalFlags.empty() ? std::optional<StringRef>() : additionalFlags;
41}
42
43bool PassOption::isListOption() const {
44 return def->isSubClassOf(Name: "ListOption");
45}
46
47//===----------------------------------------------------------------------===//
48// PassStatistic
49//===----------------------------------------------------------------------===//
50
51StringRef PassStatistic::getCppVariableName() const {
52 return def->getValueAsString(FieldName: "cppName");
53}
54
55StringRef PassStatistic::getName() const {
56 return def->getValueAsString(FieldName: "name");
57}
58
59StringRef PassStatistic::getDescription() const {
60 return def->getValueAsString(FieldName: "description");
61}
62
63//===----------------------------------------------------------------------===//
64// Pass
65//===----------------------------------------------------------------------===//
66
67Pass::Pass(const llvm::Record *def) : def(def) {
68 for (auto *init : def->getValueAsListOfDefs(FieldName: "options"))
69 options.emplace_back(args&: init);
70 for (auto *init : def->getValueAsListOfDefs(FieldName: "statistics"))
71 statistics.emplace_back(args&: init);
72 for (StringRef dialect : def->getValueAsListOfStrings(FieldName: "dependentDialects"))
73 dependentDialects.push_back(x: dialect);
74}
75
76StringRef Pass::getArgument() const {
77 return def->getValueAsString(FieldName: "argument");
78}
79
80StringRef Pass::getBaseClass() const {
81 return def->getValueAsString(FieldName: "baseClass");
82}
83
84StringRef Pass::getSummary() const { return def->getValueAsString(FieldName: "summary"); }
85
86StringRef Pass::getDescription() const {
87 return def->getValueAsString(FieldName: "description");
88}
89
90StringRef Pass::getConstructor() const {
91 return def->getValueAsString(FieldName: "constructor");
92}
93
94ArrayRef<StringRef> Pass::getDependentDialects() const {
95 return dependentDialects;
96}
97
98ArrayRef<PassOption> Pass::getOptions() const { return options; }
99
100ArrayRef<PassStatistic> Pass::getStatistics() const { return statistics; }
101

source code of mlir/lib/TableGen/Pass.cpp