| //===- Pass.cpp - Pass related classes ------------------------------------===// |
| // |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| // See https://llvm.org/LICENSE.txt for license information. |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #include "mlir/TableGen/Pass.h" |
| #include "llvm/TableGen/Record.h" |
| |
| using namespace mlir; |
| using namespace mlir::tblgen; |
| |
| //===----------------------------------------------------------------------===// |
| // PassOption |
| //===----------------------------------------------------------------------===// |
| |
| StringRef PassOption::getCppVariableName() const { |
| return def->getValueAsString("cppName"); |
| } |
| |
| StringRef PassOption::getArgument() const { |
| return def->getValueAsString("argument"); |
| } |
| |
| StringRef PassOption::getType() const { return def->getValueAsString("type"); } |
| |
| Optional<StringRef> PassOption::getDefaultValue() const { |
| StringRef defaultVal = def->getValueAsString("defaultValue"); |
| return defaultVal.empty() ? Optional<StringRef>() : defaultVal; |
| } |
| |
| StringRef PassOption::getDescription() const { |
| return def->getValueAsString("description"); |
| } |
| |
| Optional<StringRef> PassOption::getAdditionalFlags() const { |
| StringRef additionalFlags = def->getValueAsString("additionalOptFlags"); |
| return additionalFlags.empty() ? Optional<StringRef>() : additionalFlags; |
| } |
| |
| bool PassOption::isListOption() const { |
| return def->isSubClassOf("ListOption"); |
| } |
| |
| //===----------------------------------------------------------------------===// |
| // PassStatistic |
| //===----------------------------------------------------------------------===// |
| |
| StringRef PassStatistic::getCppVariableName() const { |
| return def->getValueAsString("cppName"); |
| } |
| |
| StringRef PassStatistic::getName() const { |
| return def->getValueAsString("name"); |
| } |
| |
| StringRef PassStatistic::getDescription() const { |
| return def->getValueAsString("description"); |
| } |
| |
| //===----------------------------------------------------------------------===// |
| // Pass |
| //===----------------------------------------------------------------------===// |
| |
| Pass::Pass(const llvm::Record *def) : def(def) { |
| for (auto *init : def->getValueAsListOfDefs("options")) |
| options.push_back(PassOption(init)); |
| for (auto *init : def->getValueAsListOfDefs("statistics")) |
| statistics.push_back(PassStatistic(init)); |
| for (StringRef dialect : def->getValueAsListOfStrings("dependentDialects")) |
| dependentDialects.push_back(dialect); |
| } |
| |
| StringRef Pass::getArgument() const { |
| return def->getValueAsString("argument"); |
| } |
| |
| StringRef Pass::getBaseClass() const { |
| return def->getValueAsString("baseClass"); |
| } |
| |
| StringRef Pass::getSummary() const { return def->getValueAsString("summary"); } |
| |
| StringRef Pass::getDescription() const { |
| return def->getValueAsString("description"); |
| } |
| |
| StringRef Pass::getConstructor() const { |
| return def->getValueAsString("constructor"); |
| } |
| ArrayRef<StringRef> Pass::getDependentDialects() const { |
| return dependentDialects; |
| } |
| |
| ArrayRef<PassOption> Pass::getOptions() const { return options; } |
| |
| ArrayRef<PassStatistic> Pass::getStatistics() const { return statistics; } |