65 lines
1.7 KiB
C++
65 lines
1.7 KiB
C++
//===- SkeletonEmitter.cpp - Skeleton TableGen backend -*- C++ -*-===//
|
|
//
|
|
// Part of the LLVM Project, 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
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This Tablegen backend emits ...
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "llvm/ADT/ArrayRef.h"
|
|
#include "llvm/ADT/DenseMap.h"
|
|
#include "llvm/ADT/StringExtras.h"
|
|
#include "llvm/Support/Format.h"
|
|
#include "llvm/Support/MemoryBuffer.h"
|
|
#include "llvm/Support/SourceMgr.h"
|
|
#include "llvm/TableGen/Error.h"
|
|
#include "llvm/TableGen/Record.h"
|
|
#include "llvm/TableGen/TableGenBackend.h"
|
|
#include <algorithm>
|
|
#include <set>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#define DEBUG_TYPE "skeleton-emitter"
|
|
|
|
using namespace llvm;
|
|
|
|
namespace {
|
|
|
|
// Any helper data structures can be defined here. Some backends use
|
|
// structs to collect information from the records.
|
|
|
|
class SkeletonEmitter {
|
|
private:
|
|
RecordKeeper &Records;
|
|
|
|
public:
|
|
SkeletonEmitter(RecordKeeper &RK) : Records(RK) {}
|
|
|
|
void run(raw_ostream &OS);
|
|
}; // emitter class
|
|
|
|
} // anonymous namespace
|
|
|
|
void SkeletonEmitter::run(raw_ostream &OS) {
|
|
emitSourceFileHeader("Skeleton data structures", OS);
|
|
|
|
(void)Records; // To suppress unused variable warning; remove on use.
|
|
}
|
|
|
|
namespace llvm {
|
|
|
|
// The only thing that should be in the llvm namespace is the
|
|
// emitter entry point function.
|
|
|
|
void EmitSkeleton(RecordKeeper &RK, raw_ostream &OS) {
|
|
// Instantiate the emitter class and invoke run().
|
|
SkeletonEmitter(RK).run(OS);
|
|
}
|
|
|
|
} // namespace llvm
|