mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-01 16:26:29 +00:00
Switch the asmprinter (.ll) and all the stuff it requires over to
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
This commit is contained in:
@@ -35,6 +35,8 @@ class ValueSymbolTable;
|
||||
class TypeSymbolTable;
|
||||
template<typename ValueTy> class StringMapEntry;
|
||||
typedef StringMapEntry<Value*> ValueName;
|
||||
class raw_ostream;
|
||||
class AssemblyAnnotationWriter;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Value Class
|
||||
@@ -76,10 +78,10 @@ public:
|
||||
//
|
||||
virtual void dump() const;
|
||||
|
||||
/// print - Implement operator<< on Value...
|
||||
/// print - Implement operator<< on Value.
|
||||
///
|
||||
virtual void print(std::ostream &O) const = 0;
|
||||
void print(std::ostream *O) const { if (O) print(*O); }
|
||||
void print(std::ostream &O, AssemblyAnnotationWriter *AAW = 0) const;
|
||||
void print(raw_ostream &O, AssemblyAnnotationWriter *AAW = 0) const;
|
||||
|
||||
/// All values are typed, get the type of this value.
|
||||
///
|
||||
@@ -237,7 +239,11 @@ inline std::ostream &operator<<(std::ostream &OS, const Value &V) {
|
||||
V.print(OS);
|
||||
return OS;
|
||||
}
|
||||
|
||||
inline raw_ostream &operator<<(raw_ostream &OS, const Value &V) {
|
||||
V.print(OS);
|
||||
return OS;
|
||||
}
|
||||
|
||||
void Use::init(Value *V, User *) {
|
||||
Val = V;
|
||||
if (V) V->addUse(*this);
|
||||
|
Reference in New Issue
Block a user