Files
revng-revng/lib/mlir/Dialect/Clift/Transforms/ModelOption.cpp
2025-03-19 12:57:21 +02:00

37 lines
1.2 KiB
C++

//
// This file is distributed under the MIT License. See LICENSE.md for details.
//
#include "revng/Support/Debug.h"
#include "revng/mlir/Dialect/Clift/Transforms/ModelOption.h"
using mlir::clift::ModelOptionType;
using TupleTreeType = TupleTree<model::Binary>;
using ParserType = llvm::cl::parser<ModelOptionType>;
bool ParserType::parse(llvm::cl::Option &O,
const llvm::StringRef ArgName,
const llvm::StringRef ArgValue,
ModelOptionType &Value) {
auto MaybeModel = TupleTreeType::fromFile(ArgValue);
if (not MaybeModel)
return O.error("Failed to parse model: " + consumeToString(MaybeModel));
if (not MaybeModel->verify())
return O.error("Failed to verify model");
auto Shared = std::make_shared<TupleTreeType>(std::move(*MaybeModel));
Value = ModelOptionType(std::move(Shared), Shared->get());
return false;
}
void ParserType::printOptionDiff(const Option &O,
const ModelOptionType &Value,
const OptVal &Default,
const size_t GlobalWidth) const {
printOptionName(O, GlobalWidth);
outs() << "[=<model path>]";
}