#ifndef LLVM_TABLEGEN_MAIN_H
#define LLVM_TABLEGEN_MAIN_H
+#include <functional>
+
namespace llvm {
class raw_ostream;
/// Returns true on error, false otherwise.
using TableGenMainFn = bool (raw_ostream &OS, RecordKeeper &Records);
-int TableGenMain(const char *argv0, TableGenMainFn *MainFn);
+int TableGenMain(const char *argv0,
+ std::function<TableGenMainFn> MainFn = nullptr);
} // end namespace llvm
return 0;
}
-int llvm::TableGenMain(const char *argv0, TableGenMainFn *MainFn) {
+int llvm::TableGenMain(const char *argv0,
+ std::function<TableGenMainFn> MainFn) {
RecordKeeper Records;
if (TimePhases)
Records.startBackendTimer("Backend overall");
std::string OutString;
raw_string_ostream Out(OutString);
- unsigned status = MainFn(Out, Records);
+ unsigned status = 0;
+ if (MainFn)
+ status = MainFn(Out, Records);
+ else
+ return 1;
Records.stopBackendTimer();
if (status)
return 1;