1//===- SkeletonEmitter.cpp - Skeleton TableGen backend -*- C++ -*-===// 2// 3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4// See https://llvm.org/LICENSE.txt for license information. 5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6// 7//===----------------------------------------------------------------------===// 8// 9// This Tablegen backend emits ... 10// 11//===----------------------------------------------------------------------===// 12 13#include "llvm/ADT/ArrayRef.h" 14#include "llvm/ADT/DenseMap.h" 15#include "llvm/ADT/StringExtras.h" 16#include "llvm/Support/Format.h" 17#include "llvm/Support/MemoryBuffer.h" 18#include "llvm/Support/SourceMgr.h" 19#include "llvm/TableGen/Error.h" 20#include "llvm/TableGen/Record.h" 21#include "llvm/TableGen/TableGenBackend.h" 22#include <algorithm> 23#include <set> 24#include <string> 25#include <vector> 26 27#define DEBUG_TYPE "skeleton-emitter" 28 29using namespace llvm; 30 31namespace { 32 33// Any helper data structures can be defined here. Some backends use 34// structs to collect information from the records. 35 36class SkeletonEmitter { 37private: 38 RecordKeeper &Records; 39 40public: 41 SkeletonEmitter(RecordKeeper &RK) : Records(RK) {} 42 43 void run(raw_ostream &OS); 44}; // emitter class 45 46} // anonymous namespace 47 48void SkeletonEmitter::run(raw_ostream &OS) { 49 emitSourceFileHeader("Skeleton data structures", OS); 50 51 (void)Records; // To suppress unused variable warning; remove on use. 52} 53 54namespace llvm { 55 56// The only thing that should be in the llvm namespace is the 57// emitter entry point function. 58 59void EmitSkeleton(RecordKeeper &RK, raw_ostream &OS) { 60 // Instantiate the emitter class and invoke run(). 61 SkeletonEmitter(RK).run(OS); 62} 63 64} // namespace llvm 65