X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FAssembly%2FWriter.h;h=6b89ae022da3c6131bfd9708c6b79c8e6027543c;hb=b09c146b116359616f6cbd4c8b3328607e00ff42;hp=6ce3b92681e21b0d1032d926a49343baa1567764;hpb=8f3f5a87f941cb53892a76f9aa67703156e11df1;p=oota-llvm.git diff --git a/include/llvm/Assembly/Writer.h b/include/llvm/Assembly/Writer.h index 6ce3b92681e..6b89ae022da 100644 --- a/include/llvm/Assembly/Writer.h +++ b/include/llvm/Assembly/Writer.h @@ -1,92 +1,37 @@ -//===-- llvm/Assembly/Writer.h - Printer for VM assembly files ---*- C++ -*--=// +//===-- llvm/Assembly/Writer.h - Printer for LLVM assembly files --*- C++ -*-=// // -// This functionality is implemented by the lib/Assembly/Writer library. -// This library is used to print VM assembly language files to an iostream. It -// can print VM code at a variety of granularities, ranging from a whole class -// down to an individual instruction. This makes it useful for debugging. +// The LLVM Compiler Infrastructure // -// This file also defines functions that allow it to output files that a program -// called VCG can read. +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. // -// This library uses the Analysis library to figure out offsets for -// variables in the method tables... +//===----------------------------------------------------------------------===// +// +// This functionality is implemented by lib/VMCore/AsmWriter.cpp. +// This library is used to print LLVM assembly language files to an iostream. It +// can print LLVM code at a variety of granularities, including Modules, +// BasicBlocks, and Instructions. This makes it useful for debugging. // //===----------------------------------------------------------------------===// #ifndef LLVM_ASSEMBLY_WRITER_H #define LLVM_ASSEMBLY_WRITER_H -#include -#include "llvm/Type.h" +namespace llvm { class Module; -class GlobalVariable; -class Method; -class BasicBlock; -class Instruction; -class SlotCalculator; - -// The only interface defined by this file... convert the internal -// representation of an object into an ascii bytestream that the parser can -// understand later... (the parser only understands whole classes though) -// -void WriteToAssembly(const Module *Module, ostream &o); -void WriteToAssembly(const GlobalVariable *G, ostream &o); -void WriteToAssembly(const Method *Method, ostream &o); -void WriteToAssembly(const BasicBlock *BB, ostream &o); -void WriteToAssembly(const Instruction *In, ostream &o); -void WriteToAssembly(const ConstPoolVal *V, ostream &o); +class Value; +class raw_ostream; // WriteAsOperand - Write the name of the specified value out to the specified // ostream. This can be useful when you just want to print int %reg126, not the -// whole instruction that generated it. -// -ostream &WriteAsOperand(ostream &o, const Value *V, bool PrintType = true, - bool PrintName = true, SlotCalculator *Table = 0); - - -// WriteToVCG - Dump the specified structure to a VCG file. If method is -// dumped, then the file named is created. If a module is to be written, a -// family of files with a common base name is created, with a method name -// suffix. -// -void WriteToVCG(const Module *Module, const string &Filename); -void WriteToVCG(const Method *Method, const string &Filename); - - - - -// Define operator<< to work on the various classes that we can send to an -// ostream... +// whole instruction that generated it. If you specify a Module for context, +// then even constants get pretty-printed; for example, the type of a null +// pointer is printed symbolically. // -inline ostream &operator<<(ostream &o, const Module *C) { - WriteToAssembly(C, o); return o; -} - -inline ostream &operator<<(ostream &o, const GlobalVariable *G) { - WriteToAssembly(G, o); return o; -} - -inline ostream &operator<<(ostream &o, const Method *M) { - WriteToAssembly(M, o); return o; -} - -inline ostream &operator<<(ostream &o, const BasicBlock *B) { - WriteToAssembly(B, o); return o; -} - -inline ostream &operator<<(ostream &o, const Instruction *I) { - WriteToAssembly(I, o); return o; -} - -inline ostream &operator<<(ostream &o, const ConstPoolVal *I) { - WriteToAssembly(I, o); return o; -} - +void WriteAsOperand(raw_ostream &, const Value *, bool PrintTy = true, + const Module *Context = 0); -inline ostream &operator<<(ostream &o, const Type *T) { - if (!T) return o << ""; - return o << T->getDescription(); -} +} // End llvm namespace #endif