#include "mlir/TableGen/GenInfo.h"
#include "mlir/TableGen/Pass.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/FormatVariadic.h"
#include "llvm/TableGen/Error.h"
#include "llvm/TableGen/Record.h"
usingnamespacemlir;
usingnamespacemlir::tblgen;
formatv;
RecordKeeper;
static llvm::cl::OptionCategory
passGenCat("Options for -gen-pass-capi-header and -gen-pass-capi-impl");
static llvm::cl::opt<std::string>
groupName("prefix",
llvm::cl::desc("The prefix to use for this group of passes. The "
"form will be mlirCreate<prefix><passname>, the "
"prefix can avoid conflicts across libraries."),
llvm::cl::cat(passGenCat));
const char *const passDecl = …;
const char *const fileHeader = …;
const char *const fileFooter = …;
static bool emitCAPIHeader(const RecordKeeper &records, raw_ostream &os) { … }
const char *const passCreateDef = …;
const char *const passGroupRegistrationCode = …;
static bool emitCAPIImpl(const RecordKeeper &records, raw_ostream &os) { … }
static mlir::GenRegistration genCAPIHeader("gen-pass-capi-header",
"Generate pass C API header",
&emitCAPIHeader);
static mlir::GenRegistration genCAPIImpl("gen-pass-capi-impl",
"Generate pass C API implementation",
&emitCAPIImpl);