101 lines · cpp
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-exception6//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// PassOption17//===----------------------------------------------------------------------===//18 19StringRef PassOption::getCppVariableName() const {20 return def->getValueAsString("cppName");21}22 23StringRef PassOption::getArgument() const {24 return def->getValueAsString("argument");25}26 27StringRef PassOption::getType() const { return def->getValueAsString("type"); }28 29std::optional<StringRef> PassOption::getDefaultValue() const {30 StringRef defaultVal = def->getValueAsString("defaultValue");31 return defaultVal.empty() ? std::optional<StringRef>() : defaultVal;32}33 34StringRef PassOption::getDescription() const {35 return def->getValueAsString("description");36}37 38std::optional<StringRef> PassOption::getAdditionalFlags() const {39 StringRef additionalFlags = def->getValueAsString("additionalOptFlags");40 return additionalFlags.empty() ? std::optional<StringRef>() : additionalFlags;41}42 43bool PassOption::isListOption() const {44 return def->isSubClassOf("ListOption");45}46 47//===----------------------------------------------------------------------===//48// PassStatistic49//===----------------------------------------------------------------------===//50 51StringRef PassStatistic::getCppVariableName() const {52 return def->getValueAsString("cppName");53}54 55StringRef PassStatistic::getName() const {56 return def->getValueAsString("name");57}58 59StringRef PassStatistic::getDescription() const {60 return def->getValueAsString("description");61}62 63//===----------------------------------------------------------------------===//64// Pass65//===----------------------------------------------------------------------===//66 67Pass::Pass(const llvm::Record *def) : def(def) {68 for (auto *init : def->getValueAsListOfDefs("options"))69 options.emplace_back(init);70 for (auto *init : def->getValueAsListOfDefs("statistics"))71 statistics.emplace_back(init);72 for (StringRef dialect : def->getValueAsListOfStrings("dependentDialects"))73 dependentDialects.push_back(dialect);74}75 76StringRef Pass::getArgument() const {77 return def->getValueAsString("argument");78}79 80StringRef Pass::getBaseClass() const {81 return def->getValueAsString("baseClass");82}83 84StringRef Pass::getSummary() const { return def->getValueAsString("summary"); }85 86StringRef Pass::getDescription() const {87 return def->getValueAsString("description");88}89 90StringRef Pass::getConstructor() const {91 return def->getValueAsString("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