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 29 using namespace llvm; 30 31 namespace { 32 33 // Any helper data structures can be defined here. Some backends use 34 // structs to collect information from the records. 35 36 class SkeletonEmitter { 37 private: 38 RecordKeeper &Records; 39 40 public: 41 SkeletonEmitter(RecordKeeper &RK) : Records(RK) {} 42 43 void run(raw_ostream &OS); 44 }; // End emitter class. 45 46 } // End anonymous namespace. 47 48 void SkeletonEmitter::run(raw_ostream &OS) { 49 emitSourceFileHeader("Skeleton data structures", OS); 50 } 51 52 namespace llvm { 53 54 // The only thing that should be in the llvm namespace is the 55 // emitter entry point function. 56 57 void EmitSkeleton(RecordKeeper &RK, raw_ostream &OS) { 58 // Instantiate the emitter class and invoke run(). 59 SkeletonEmitter(RK).run(OS); 60 } 61 62 } // End llvm namespace. 63