mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-31 08:16:47 +00:00 
			
		
		
		
	use raw_ostream instead of std::ostream.  Among other goodness,
this speeds up llvm-dis of kc++ with a release build from 0.85s
to 0.49s (88% faster).
Other interesting changes:
 1) This makes Value::print be non-virtual.
 2) AP[S]Int and ConstantRange can no longer print to ostream directly, 
    use raw_ostream instead.
 3) This fixes a bug in raw_os_ostream where it didn't flush itself 
    when destroyed.
 4) This adds a new SDNode::print method, instead of only allowing "dump".
A lot of APIs have both std::ostream and raw_ostream versions, it would
be useful to go through and systematically anihilate the std::ostream 
versions.
This passes dejagnu, but there may be minor fallout, plz let me know if
so and I'll fix it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55263 91177308-0d34-0410-b5e6-96231b3b80d8
		
	
		
			
				
	
	
		
			50 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| //===-- llvm/Assembly/Writer.h - Printer for LLVM assembly files --*- C++ -*-=//
 | |
| //
 | |
| //                     The LLVM Compiler Infrastructure
 | |
| //
 | |
| // This file is distributed under the University of Illinois Open Source
 | |
| // License. See LICENSE.TXT for details.
 | |
| //
 | |
| //===----------------------------------------------------------------------===//
 | |
| //
 | |
| // 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 <iosfwd>
 | |
| 
 | |
| namespace llvm {
 | |
| 
 | |
| class Type;
 | |
| class Module;
 | |
| class Value;
 | |
| class raw_ostream;
 | |
| 
 | |
| // WriteTypeSymbolic - This attempts to write the specified type as a symbolic
 | |
| // type, iff there is an entry in the Module's symbol table for the specified
 | |
| // type or one of its component types.  This is slower than a simple x << Type;
 | |
| //
 | |
| void WriteTypeSymbolic(std::ostream &, const Type *, const Module *M);
 | |
| void WriteTypeSymbolic(raw_ostream &, const Type *, const Module *M);
 | |
| 
 | |
| // 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.  If you specify a Module for context,
 | |
| // then even constants get pretty-printed; for example, the type of a null
 | |
| // pointer is printed symbolically.
 | |
| //
 | |
| void WriteAsOperand(std::ostream &, const Value *, bool PrintTy = true,
 | |
|                     const Module *Context = 0);
 | |
| void WriteAsOperand(raw_ostream &, const Value *, bool PrintTy = true,
 | |
|                     const Module *Context = 0);
 | |
| 
 | |
| } // End llvm namespace
 | |
| 
 | |
| #endif
 |