brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.1 KiB · 271332d Raw
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