blob: 632976e0fb1ad649dd4c2cd9002d524fe0b065c8 [file] [edit]
// Copyright 2023 The IREE Authors
//
// Licensed 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 "iree/compiler/PluginAPI/Client.h"
#include <utility>
#include "llvm/Support/raw_ostream.h"
IREE_DEFINE_COMPILER_OPTION_FLAGS(mlir::iree_compiler::EmptyPluginOptions);
namespace mlir::iree_compiler {
PipelineExtensions::~PipelineExtensions() = default;
AbstractPluginRegistration::~AbstractPluginRegistration() = default;
AbstractPluginSession::~AbstractPluginSession() = default;
LogicalResult AbstractPluginSession::activate(MLIRContext *context) {
if (this->context) {
// Already activated - ignore. But verify in debug mode that activated
// with the same context (which is a non-user triggerable error).
assert(context == this->context &&
"duplicate plugin activation with different context");
return success();
}
this->context = context;
return onActivate();
}
void PluginRegistrar::registerPlugin(
std::unique_ptr<AbstractPluginRegistration> registration) {
// Need to copy the id since in the error case, the registration will be
// deleted before reporting the error message.
std::string id = std::string(registration->getPluginId());
auto foundIt = registrations.insert(
std::make_pair(llvm::StringRef(id), std::move(registration)));
if (!foundIt.second) {
llvm::errs() << "ERROR: Duplicate plugin registration for '" << id << "'\n";
abort();
}
}
} // namespace mlir::iree_compiler