Change Pass::print to take a raw ostream instead of std::ostream,
update all code that this affects. llvm-svn: 79830
This commit is contained in:
parent
817b3012bc
commit
1362602eb2
|
@ -155,9 +155,7 @@ public:
|
||||||
///
|
///
|
||||||
void initialize(Module &M);
|
void initialize(Module &M);
|
||||||
|
|
||||||
virtual void print(std::ostream &o, const Module *M) const;
|
void print(raw_ostream &o, Module *) const;
|
||||||
void print(std::ostream *o, const Module *M) const { if (o) print(*o, M); }
|
|
||||||
void dump() const;
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// destroy - Release memory for the call graph
|
// destroy - Release memory for the call graph
|
||||||
|
@ -202,8 +200,7 @@ public:
|
||||||
/// dump - Print out this call graph node.
|
/// dump - Print out this call graph node.
|
||||||
///
|
///
|
||||||
void dump() const;
|
void dump() const;
|
||||||
void print(std::ostream &OS) const;
|
void print(raw_ostream &OS) const;
|
||||||
void print(std::ostream *OS) const { if (OS) print(*OS); }
|
|
||||||
|
|
||||||
//===---------------------------------------------------------------------
|
//===---------------------------------------------------------------------
|
||||||
// Methods to keep a call graph up to date with a function that has been
|
// Methods to keep a call graph up to date with a function that has been
|
||||||
|
|
|
@ -22,7 +22,6 @@
|
||||||
#define LLVM_ANALYSIS_DOMINATORS_H
|
#define LLVM_ANALYSIS_DOMINATORS_H
|
||||||
|
|
||||||
#include "llvm/Pass.h"
|
#include "llvm/Pass.h"
|
||||||
#include "llvm/BasicBlock.h"
|
|
||||||
#include "llvm/Function.h"
|
#include "llvm/Function.h"
|
||||||
#include "llvm/Instructions.h"
|
#include "llvm/Instructions.h"
|
||||||
#include "llvm/ADT/DenseMap.h"
|
#include "llvm/ADT/DenseMap.h"
|
||||||
|
@ -830,7 +829,7 @@ public:
|
||||||
DT->releaseMemory();
|
DT->releaseMemory();
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void print(std::ostream &OS, const Module* M= 0) const;
|
virtual void print(raw_ostream &OS, const Module* M= 0) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
//===-------------------------------------
|
//===-------------------------------------
|
||||||
|
@ -978,7 +977,7 @@ public:
|
||||||
|
|
||||||
/// print - Convert to human readable form
|
/// print - Convert to human readable form
|
||||||
///
|
///
|
||||||
virtual void print(std::ostream &OS, const Module* = 0) const;
|
virtual void print(raw_ostream &OS, const Module* = 0) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -37,8 +37,7 @@ public:
|
||||||
/// passed in, then the types are printed symbolically if possible, using the
|
/// passed in, then the types are printed symbolically if possible, using the
|
||||||
/// symbol table from the module.
|
/// symbol table from the module.
|
||||||
///
|
///
|
||||||
void print(std::ostream &o, const Module *M) const;
|
void print(raw_ostream &o, const Module *M) const;
|
||||||
void print(std::ostream *o, const Module *M) const { if (o) print(*o, M); }
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/// IncorporateType - Incorporate one type and all of its subtypes into the
|
/// IncorporateType - Incorporate one type and all of its subtypes into the
|
||||||
|
|
|
@ -22,11 +22,11 @@
|
||||||
|
|
||||||
#include "llvm/ADT/GraphTraits.h"
|
#include "llvm/ADT/GraphTraits.h"
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <iosfwd>
|
|
||||||
|
|
||||||
namespace llvm {
|
namespace llvm {
|
||||||
|
|
||||||
class BasicBlock;
|
class BasicBlock;
|
||||||
|
class raw_ostream;
|
||||||
|
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
//
|
//
|
||||||
|
@ -98,8 +98,7 @@ public:
|
||||||
bool isLoop() const;
|
bool isLoop() const;
|
||||||
|
|
||||||
/// print - Show contents in human readable format...
|
/// print - Show contents in human readable format...
|
||||||
void print(std::ostream &O) const;
|
void print(raw_ostream &O) const;
|
||||||
void print(std::ostream *O) const { if (O) print(*O); }
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/// succ_begin/succ_end - define methods so that Intervals may be used
|
/// succ_begin/succ_end - define methods so that Intervals may be used
|
||||||
|
|
|
@ -60,10 +60,7 @@ public:
|
||||||
IntervalPartition(IntervalPartition &I, bool);
|
IntervalPartition(IntervalPartition &I, bool);
|
||||||
|
|
||||||
// print - Show contents in human readable format...
|
// print - Show contents in human readable format...
|
||||||
virtual void print(std::ostream &O, const Module* = 0) const;
|
virtual void print(raw_ostream &O, const Module* = 0) const;
|
||||||
void print(std::ostream *O, const Module* M = 0) const {
|
|
||||||
if (O) print(*O, M);
|
|
||||||
}
|
|
||||||
|
|
||||||
// getRootInterval() - Return the root interval that contains the starting
|
// getRootInterval() - Return the root interval that contains the starting
|
||||||
// block of the function.
|
// block of the function.
|
||||||
|
|
|
@ -938,7 +938,7 @@ public:
|
||||||
|
|
||||||
virtual void releaseMemory() { LI.releaseMemory(); }
|
virtual void releaseMemory() { LI.releaseMemory(); }
|
||||||
|
|
||||||
virtual void print(std::ostream &O, const Module* M = 0) const;
|
virtual void print(raw_ostream &O, const Module* M = 0) const;
|
||||||
|
|
||||||
virtual void getAnalysisUsage(AnalysisUsage &AU) const;
|
virtual void getAnalysisUsage(AnalysisUsage &AU) const;
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,6 @@
|
||||||
#include "llvm/Pass.h"
|
#include "llvm/Pass.h"
|
||||||
#include "llvm/Analysis/ScalarEvolution.h"
|
#include "llvm/Analysis/ScalarEvolution.h"
|
||||||
#include "llvm/Support/ConstantRange.h"
|
#include "llvm/Support/ConstantRange.h"
|
||||||
#include <iosfwd>
|
|
||||||
#include <map>
|
#include <map>
|
||||||
|
|
||||||
namespace llvm {
|
namespace llvm {
|
||||||
|
@ -33,7 +32,7 @@ public:
|
||||||
LoopVR() : FunctionPass(&ID) {}
|
LoopVR() : FunctionPass(&ID) {}
|
||||||
|
|
||||||
bool runOnFunction(Function &F);
|
bool runOnFunction(Function &F);
|
||||||
virtual void print(std::ostream &os, const Module *) const;
|
virtual void print(raw_ostream &os, const Module *) const;
|
||||||
void releaseMemory();
|
void releaseMemory();
|
||||||
|
|
||||||
void getAnalysisUsage(AnalysisUsage &AU) const;
|
void getAnalysisUsage(AnalysisUsage &AU) const;
|
||||||
|
|
|
@ -57,7 +57,7 @@ struct PostDominatorTree : public FunctionPass {
|
||||||
return DT->properlyDominates(A, B);
|
return DT->properlyDominates(A, B);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void print(std::ostream &OS, const Module*) const;
|
virtual void print(raw_ostream &OS, const Module*) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
FunctionPass* createPostDomTree();
|
FunctionPass* createPostDomTree();
|
||||||
|
|
|
@ -601,11 +601,7 @@ namespace llvm {
|
||||||
virtual bool runOnFunction(Function &F);
|
virtual bool runOnFunction(Function &F);
|
||||||
virtual void releaseMemory();
|
virtual void releaseMemory();
|
||||||
virtual void getAnalysisUsage(AnalysisUsage &AU) const;
|
virtual void getAnalysisUsage(AnalysisUsage &AU) const;
|
||||||
void print(raw_ostream &OS, const Module* = 0) const;
|
virtual void print(raw_ostream &OS, const Module* = 0) const;
|
||||||
virtual void print(std::ostream &OS, const Module* = 0) const;
|
|
||||||
void print(std::ostream *OS, const Module* M = 0) const {
|
|
||||||
if (OS) print(*OS, M);
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
FoldingSet<SCEV> UniqueSCEVs;
|
FoldingSet<SCEV> UniqueSCEVs;
|
||||||
|
|
|
@ -347,7 +347,7 @@ namespace llvm {
|
||||||
virtual bool runOnMachineFunction(MachineFunction&);
|
virtual bool runOnMachineFunction(MachineFunction&);
|
||||||
|
|
||||||
/// print - Implement the dump method.
|
/// print - Implement the dump method.
|
||||||
virtual void print(std::ostream &O, const Module* = 0) const;
|
virtual void print(raw_ostream &O, const Module* = 0) const;
|
||||||
|
|
||||||
/// addIntervalsForSpills - Create new intervals for spilled defs / uses of
|
/// addIntervalsForSpills - Create new intervals for spilled defs / uses of
|
||||||
/// the given interval. FIXME: It also returns the weight of the spill slot
|
/// the given interval. FIXME: It also returns the weight of the spill slot
|
||||||
|
|
|
@ -102,7 +102,7 @@ namespace llvm {
|
||||||
virtual bool runOnMachineFunction(MachineFunction&);
|
virtual bool runOnMachineFunction(MachineFunction&);
|
||||||
|
|
||||||
/// print - Implement the dump method.
|
/// print - Implement the dump method.
|
||||||
virtual void print(std::ostream &O, const Module* = 0) const;
|
virtual void print(raw_ostream &O, const Module* = 0) const;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -162,7 +162,7 @@ public:
|
||||||
|
|
||||||
virtual void releaseMemory();
|
virtual void releaseMemory();
|
||||||
|
|
||||||
virtual void print(std::ostream &OS, const Module*) const;
|
virtual void print(raw_ostream &OS, const Module*) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
//===-------------------------------------
|
//===-------------------------------------
|
||||||
|
|
|
@ -30,9 +30,7 @@
|
||||||
#define LLVM_PASS_H
|
#define LLVM_PASS_H
|
||||||
|
|
||||||
#include "llvm/Support/DataTypes.h"
|
#include "llvm/Support/DataTypes.h"
|
||||||
#include "llvm/Support/Streams.h"
|
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
#include <iosfwd>
|
|
||||||
#include <utility>
|
#include <utility>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
@ -47,6 +45,7 @@ class ImmutablePass;
|
||||||
class PMStack;
|
class PMStack;
|
||||||
class AnalysisResolver;
|
class AnalysisResolver;
|
||||||
class PMDataManager;
|
class PMDataManager;
|
||||||
|
class raw_ostream;
|
||||||
|
|
||||||
// AnalysisID - Use the PassInfo to identify a pass...
|
// AnalysisID - Use the PassInfo to identify a pass...
|
||||||
typedef const PassInfo* AnalysisID;
|
typedef const PassInfo* AnalysisID;
|
||||||
|
@ -103,8 +102,7 @@ public:
|
||||||
/// provide the Module* in case the analysis doesn't need it it can just be
|
/// provide the Module* in case the analysis doesn't need it it can just be
|
||||||
/// ignored.
|
/// ignored.
|
||||||
///
|
///
|
||||||
virtual void print(std::ostream &O, const Module *M) const;
|
virtual void print(raw_ostream &O, const Module *M) const;
|
||||||
void print(std::ostream *O, const Module *M) const { if (O) print(*O, M); }
|
|
||||||
void dump() const; // dump - Print to stderr.
|
void dump() const; // dump - Print to stderr.
|
||||||
|
|
||||||
/// Each pass is responsible for assigning a pass manager to itself.
|
/// Each pass is responsible for assigning a pass manager to itself.
|
||||||
|
@ -202,9 +200,6 @@ public:
|
||||||
AnalysisType &getAnalysisID(const PassInfo *PI, Function &F);
|
AnalysisType &getAnalysisID(const PassInfo *PI, Function &F);
|
||||||
};
|
};
|
||||||
|
|
||||||
inline std::ostream &operator<<(std::ostream &OS, const Pass &P) {
|
|
||||||
P.print(OS, 0); return OS;
|
|
||||||
}
|
|
||||||
|
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
/// ModulePass class - This class is used to implement unstructured
|
/// ModulePass class - This class is used to implement unstructured
|
||||||
|
|
|
@ -223,8 +223,6 @@ inline raw_ostream &operator<<(raw_ostream &OS, const ConstantRange &CR) {
|
||||||
return OS;
|
return OS;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::ostream &operator<<(std::ostream &OS, const ConstantRange &CR);
|
|
||||||
|
|
||||||
} // End llvm namespace
|
} // End llvm namespace
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -66,7 +66,7 @@ public:
|
||||||
virtual void passRegistered(const PassInfo *P) {
|
virtual void passRegistered(const PassInfo *P) {
|
||||||
if (ignorablePass(P) || !Opt) return;
|
if (ignorablePass(P) || !Opt) return;
|
||||||
if (findOption(P->getPassArgument()) != getNumOptions()) {
|
if (findOption(P->getPassArgument()) != getNumOptions()) {
|
||||||
cerr << "Two passes with the same argument (-"
|
errs() << "Two passes with the same argument (-"
|
||||||
<< P->getPassArgument() << ") attempted to be registered!\n";
|
<< P->getPassArgument() << ") attempted to be registered!\n";
|
||||||
llvm_unreachable(0);
|
llvm_unreachable(0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -196,7 +196,6 @@ public:
|
||||||
|
|
||||||
raw_ostream &operator<<(const std::string &Str) {
|
raw_ostream &operator<<(const std::string &Str) {
|
||||||
// Avoid the fast path, it would only increase code size for a marginal win.
|
// Avoid the fast path, it would only increase code size for a marginal win.
|
||||||
|
|
||||||
write(Str.data(), Str.length());
|
write(Str.data(), Str.length());
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
@ -220,6 +219,7 @@ public:
|
||||||
this->operator<<(ftostr(N));
|
this->operator<<(ftostr(N));
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// write_hex - Output \arg N in hexadecimal, without any prefix or padding.
|
/// write_hex - Output \arg N in hexadecimal, without any prefix or padding.
|
||||||
raw_ostream &write_hex(unsigned long long N);
|
raw_ostream &write_hex(unsigned long long N);
|
||||||
|
|
|
@ -26,9 +26,6 @@
|
||||||
#include "llvm/Support/Compiler.h"
|
#include "llvm/Support/Compiler.h"
|
||||||
#include "llvm/Support/GraphWriter.h"
|
#include "llvm/Support/GraphWriter.h"
|
||||||
#include "llvm/Config/config.h"
|
#include "llvm/Config/config.h"
|
||||||
#include <iosfwd>
|
|
||||||
#include <sstream>
|
|
||||||
#include <fstream>
|
|
||||||
using namespace llvm;
|
using namespace llvm;
|
||||||
|
|
||||||
namespace llvm {
|
namespace llvm {
|
||||||
|
@ -96,7 +93,7 @@ namespace {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void print(std::ostream &OS, const Module* = 0) const {}
|
void print(raw_ostream &OS, const Module* = 0) const {}
|
||||||
|
|
||||||
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
|
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
|
||||||
AU.setPreservesAll();
|
AU.setPreservesAll();
|
||||||
|
@ -118,7 +115,7 @@ namespace {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void print(std::ostream &OS, const Module* = 0) const {}
|
void print(raw_ostream &OS, const Module* = 0) const {}
|
||||||
|
|
||||||
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
|
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
|
||||||
AU.setPreservesAll();
|
AU.setPreservesAll();
|
||||||
|
@ -150,7 +147,7 @@ namespace {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void print(std::ostream &OS, const Module* = 0) const {}
|
void print(raw_ostream &OS, const Module* = 0) const {}
|
||||||
|
|
||||||
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
|
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
|
||||||
AU.setPreservesAll();
|
AU.setPreservesAll();
|
||||||
|
@ -179,7 +176,7 @@ namespace {
|
||||||
cerr << "\n";
|
cerr << "\n";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
void print(std::ostream &OS, const Module* = 0) const {}
|
void print(raw_ostream &OS, const Module* = 0) const {}
|
||||||
|
|
||||||
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
|
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
|
||||||
AU.setPreservesAll();
|
AU.setPreservesAll();
|
||||||
|
|
|
@ -607,7 +607,7 @@ namespace {
|
||||||
//===------------------------------------------------------------------===//
|
//===------------------------------------------------------------------===//
|
||||||
// Implement Analyize interface
|
// Implement Analyize interface
|
||||||
//
|
//
|
||||||
void print(std::ostream &O, const Module* M) const {
|
void print(raw_ostream &O, const Module*) const {
|
||||||
PrintPointsToGraph();
|
PrintPointsToGraph();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -18,8 +18,7 @@
|
||||||
#include "llvm/IntrinsicInst.h"
|
#include "llvm/IntrinsicInst.h"
|
||||||
#include "llvm/Support/CallSite.h"
|
#include "llvm/Support/CallSite.h"
|
||||||
#include "llvm/Support/Compiler.h"
|
#include "llvm/Support/Compiler.h"
|
||||||
#include "llvm/Support/Streams.h"
|
#include "llvm/Support/raw_ostream.h"
|
||||||
#include <ostream>
|
|
||||||
using namespace llvm;
|
using namespace llvm;
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
@ -68,30 +67,21 @@ public:
|
||||||
AU.setPreservesAll();
|
AU.setPreservesAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
void print(std::ostream *o, const Module *M) const {
|
virtual void print(raw_ostream &OS, const Module *) const {
|
||||||
if (o) print(*o, M);
|
OS << "CallGraph Root is: ";
|
||||||
}
|
|
||||||
|
|
||||||
virtual void print(std::ostream &o, const Module *M) const {
|
|
||||||
o << "CallGraph Root is: ";
|
|
||||||
if (Function *F = getRoot()->getFunction())
|
if (Function *F = getRoot()->getFunction())
|
||||||
o << F->getNameStr() << "\n";
|
OS << F->getName() << "\n";
|
||||||
else
|
else {
|
||||||
o << "<<null function: 0x" << getRoot() << ">>\n";
|
OS << "<<null function: 0x" << getRoot() << ">>\n";
|
||||||
|
}
|
||||||
|
|
||||||
CallGraph::print(o, M);
|
CallGraph::print(OS, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void releaseMemory() {
|
virtual void releaseMemory() {
|
||||||
destroy();
|
destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// dump - Print out this call graph.
|
|
||||||
///
|
|
||||||
inline void dump() const {
|
|
||||||
print(cerr, Mod);
|
|
||||||
}
|
|
||||||
|
|
||||||
CallGraphNode* getExternalCallingNode() const { return ExternalCallingNode; }
|
CallGraphNode* getExternalCallingNode() const { return ExternalCallingNode; }
|
||||||
CallGraphNode* getCallsExternalNode() const { return CallsExternalNode; }
|
CallGraphNode* getCallsExternalNode() const { return CallsExternalNode; }
|
||||||
|
|
||||||
|
@ -187,15 +177,11 @@ void CallGraph::destroy() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CallGraph::print(std::ostream &OS, const Module *M) const {
|
void CallGraph::print(raw_ostream &OS, Module*) const {
|
||||||
for (CallGraph::const_iterator I = begin(), E = end(); I != E; ++I)
|
for (CallGraph::const_iterator I = begin(), E = end(); I != E; ++I)
|
||||||
I->second->print(OS);
|
I->second->print(OS);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CallGraph::dump() const {
|
|
||||||
print(cerr, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
// Implementations of public modification methods
|
// Implementations of public modification methods
|
||||||
//
|
//
|
||||||
|
@ -242,21 +228,21 @@ CallGraphNode *CallGraph::getOrInsertFunction(const Function *F) {
|
||||||
return CGN = new CallGraphNode(const_cast<Function*>(F));
|
return CGN = new CallGraphNode(const_cast<Function*>(F));
|
||||||
}
|
}
|
||||||
|
|
||||||
void CallGraphNode::print(std::ostream &OS) const {
|
void CallGraphNode::print(raw_ostream &OS) const {
|
||||||
if (Function *F = getFunction())
|
if (Function *F = getFunction())
|
||||||
OS << "Call graph node for function: '" << F->getNameStr() <<"'\n";
|
OS << "Call graph node for function: '" << F->getName() <<"'\n";
|
||||||
else
|
else
|
||||||
OS << "Call graph node <<null function: 0x" << this << ">>:\n";
|
OS << "Call graph node <<null function: 0x" << this << ">>:\n";
|
||||||
|
|
||||||
for (const_iterator I = begin(), E = end(); I != E; ++I)
|
for (const_iterator I = begin(), E = end(); I != E; ++I)
|
||||||
if (Function *FI = I->second->getFunction())
|
if (Function *FI = I->second->getFunction())
|
||||||
OS << " Calls function '" << FI->getNameStr() <<"'\n";
|
OS << " Calls function '" << FI->getName() <<"'\n";
|
||||||
else
|
else
|
||||||
OS << " Calls external node\n";
|
OS << " Calls external node\n";
|
||||||
OS << "\n";
|
OS << "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
void CallGraphNode::dump() const { print(cerr); }
|
void CallGraphNode::dump() const { print(errs()); }
|
||||||
|
|
||||||
/// removeCallEdgeFor - This method removes the edge in the node for the
|
/// removeCallEdgeFor - This method removes the edge in the node for the
|
||||||
/// specified call site. Note that this method takes linear time, so it
|
/// specified call site. Note that this method takes linear time, so it
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
#include "llvm/ADT/SCCIterator.h"
|
#include "llvm/ADT/SCCIterator.h"
|
||||||
#include "llvm/PassManagers.h"
|
#include "llvm/PassManagers.h"
|
||||||
#include "llvm/Function.h"
|
#include "llvm/Function.h"
|
||||||
|
#include "llvm/Support/raw_ostream.h"
|
||||||
using namespace llvm;
|
using namespace llvm;
|
||||||
|
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
@ -56,7 +57,7 @@ public:
|
||||||
|
|
||||||
// Print passes managed by this manager
|
// Print passes managed by this manager
|
||||||
void dumpPassStructure(unsigned Offset) {
|
void dumpPassStructure(unsigned Offset) {
|
||||||
llvm::cerr << std::string(Offset*2, ' ') << "Call Graph SCC Pass Manager\n";
|
errs().indent(Offset*2) << "Call Graph SCC Pass Manager\n";
|
||||||
for (unsigned Index = 0; Index < getNumContainedPasses(); ++Index) {
|
for (unsigned Index = 0; Index < getNumContainedPasses(); ++Index) {
|
||||||
Pass *P = getContainedPass(Index);
|
Pass *P = getContainedPass(Index);
|
||||||
P->dumpPassStructure(Offset + 1);
|
P->dumpPassStructure(Offset + 1);
|
||||||
|
@ -65,9 +66,8 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
Pass *getContainedPass(unsigned N) {
|
Pass *getContainedPass(unsigned N) {
|
||||||
assert ( N < PassVector.size() && "Pass number out of range!");
|
assert(N < PassVector.size() && "Pass number out of range!");
|
||||||
Pass *FP = static_cast<Pass *>(PassVector[N]);
|
return static_cast<Pass *>(PassVector[N]);
|
||||||
return FP;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual PassManagerType getPassManagerType() const {
|
virtual PassManagerType getPassManagerType() const {
|
||||||
|
|
|
@ -92,13 +92,12 @@ bool FindUsedTypes::runOnModule(Module &m) {
|
||||||
// passed in, then the types are printed symbolically if possible, using the
|
// passed in, then the types are printed symbolically if possible, using the
|
||||||
// symbol table from the module.
|
// symbol table from the module.
|
||||||
//
|
//
|
||||||
void FindUsedTypes::print(std::ostream &OS, const Module *M) const {
|
void FindUsedTypes::print(raw_ostream &OS, const Module *M) const {
|
||||||
raw_os_ostream RO(OS);
|
OS << "Types in use by this module:\n";
|
||||||
RO << "Types in use by this module:\n";
|
|
||||||
for (std::set<const Type *>::const_iterator I = UsedTypes.begin(),
|
for (std::set<const Type *>::const_iterator I = UsedTypes.begin(),
|
||||||
E = UsedTypes.end(); I != E; ++I) {
|
E = UsedTypes.end(); I != E; ++I) {
|
||||||
RO << " ";
|
OS << " ";
|
||||||
WriteTypeSymbolic(RO, *I, M);
|
WriteTypeSymbolic(OS, *I, M);
|
||||||
RO << '\n';
|
OS << '\n';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,7 +59,7 @@ namespace {
|
||||||
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
|
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
|
||||||
AU.setPreservesAll();
|
AU.setPreservesAll();
|
||||||
}
|
}
|
||||||
virtual void print(std::ostream &O, const Module *M) const {}
|
virtual void print(raw_ostream &O, const Module *M) const {}
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,8 +37,7 @@ bool Interval::isLoop() const {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Interval::print(std::ostream &O) const {
|
void Interval::print(raw_ostream &OS) const {
|
||||||
raw_os_ostream OS(O);
|
|
||||||
OS << "-------------------------------------------------------------\n"
|
OS << "-------------------------------------------------------------\n"
|
||||||
<< "Interval Contents:\n";
|
<< "Interval Contents:\n";
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@ void IntervalPartition::releaseMemory() {
|
||||||
RootInterval = 0;
|
RootInterval = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void IntervalPartition::print(std::ostream &O, const Module*) const {
|
void IntervalPartition::print(raw_ostream &O, const Module*) const {
|
||||||
for(unsigned i = 0, e = Intervals.size(); i != e; ++i)
|
for(unsigned i = 0, e = Intervals.size(); i != e; ++i)
|
||||||
Intervals[i]->print(O);
|
Intervals[i]->print(O);
|
||||||
}
|
}
|
||||||
|
|
|
@ -309,8 +309,7 @@ void LoopInfo::getAnalysisUsage(AnalysisUsage &AU) const {
|
||||||
AU.addRequired<DominatorTree>();
|
AU.addRequired<DominatorTree>();
|
||||||
}
|
}
|
||||||
|
|
||||||
void LoopInfo::print(std::ostream &OS, const Module*) const {
|
void LoopInfo::print(raw_ostream &OS, const Module*) const {
|
||||||
raw_os_ostream OSS(OS);
|
LI.print(OS);
|
||||||
LI.print(OSS);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -228,8 +228,7 @@ void LoopVR::getAnalysisUsage(AnalysisUsage &AU) const {
|
||||||
|
|
||||||
bool LoopVR::runOnFunction(Function &F) { Map.clear(); return false; }
|
bool LoopVR::runOnFunction(Function &F) { Map.clear(); return false; }
|
||||||
|
|
||||||
void LoopVR::print(std::ostream &os, const Module *) const {
|
void LoopVR::print(raw_ostream &OS, const Module *) const {
|
||||||
raw_os_ostream OS(os);
|
|
||||||
for (std::map<Value *, ConstantRange *>::const_iterator I = Map.begin(),
|
for (std::map<Value *, ConstantRange *>::const_iterator I = Map.begin(),
|
||||||
E = Map.end(); I != E; ++I) {
|
E = Map.end(); I != E; ++I) {
|
||||||
OS << *I->first << ": " << *I->second << '\n';
|
OS << *I->first << ": " << *I->second << '\n';
|
||||||
|
|
|
@ -41,9 +41,8 @@ PostDominatorTree::~PostDominatorTree() {
|
||||||
delete DT;
|
delete DT;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PostDominatorTree::print(std::ostream &OS, const Module *) const {
|
void PostDominatorTree::print(raw_ostream &OS, const Module *) const {
|
||||||
raw_os_ostream OSS(OS);
|
DT->print(OS);
|
||||||
DT->print(OSS);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -5193,7 +5193,3 @@ void ScalarEvolution::print(raw_ostream &OS, const Module* ) const {
|
||||||
PrintLoopInfo(OS, &SE, *I);
|
PrintLoopInfo(OS, &SE, *I);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScalarEvolution::print(std::ostream &o, const Module *M) const {
|
|
||||||
raw_os_ostream OS(o);
|
|
||||||
print(OS, M);
|
|
||||||
}
|
|
||||||
|
|
|
@ -93,7 +93,7 @@ GCStrategy *GCModuleInfo::getOrCreateStrategy(const Module *M,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cerr << "unsupported GC: " << Name << "\n";
|
errs() << "unsupported GC: " << Name << "\n";
|
||||||
llvm_unreachable(0);
|
llvm_unreachable(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
#include "llvm/Target/TargetRegisterInfo.h"
|
#include "llvm/Target/TargetRegisterInfo.h"
|
||||||
#include "llvm/Support/Compiler.h"
|
#include "llvm/Support/Compiler.h"
|
||||||
#include "llvm/Support/ErrorHandling.h"
|
#include "llvm/Support/ErrorHandling.h"
|
||||||
|
#include "llvm/Support/raw_ostream.h"
|
||||||
|
|
||||||
using namespace llvm;
|
using namespace llvm;
|
||||||
|
|
||||||
|
@ -108,7 +109,7 @@ GCStrategy::~GCStrategy() {
|
||||||
bool GCStrategy::initializeCustomLowering(Module &M) { return false; }
|
bool GCStrategy::initializeCustomLowering(Module &M) { return false; }
|
||||||
|
|
||||||
bool GCStrategy::performCustomLowering(Function &F) {
|
bool GCStrategy::performCustomLowering(Function &F) {
|
||||||
cerr << "gc " << getName() << " must override performCustomLowering.\n";
|
errs() << "gc " << getName() << " must override performCustomLowering.\n";
|
||||||
llvm_unreachable(0);
|
llvm_unreachable(0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,8 +16,9 @@
|
||||||
#include "llvm/Module.h"
|
#include "llvm/Module.h"
|
||||||
#include "llvm/Type.h"
|
#include "llvm/Type.h"
|
||||||
#include "llvm/CodeGen/IntrinsicLowering.h"
|
#include "llvm/CodeGen/IntrinsicLowering.h"
|
||||||
#include "llvm/Support/IRBuilder.h"
|
|
||||||
#include "llvm/Support/ErrorHandling.h"
|
#include "llvm/Support/ErrorHandling.h"
|
||||||
|
#include "llvm/Support/IRBuilder.h"
|
||||||
|
#include "llvm/Support/raw_ostream.h"
|
||||||
#include "llvm/Target/TargetData.h"
|
#include "llvm/Target/TargetData.h"
|
||||||
#include "llvm/ADT/SmallVector.h"
|
#include "llvm/ADT/SmallVector.h"
|
||||||
using namespace llvm;
|
using namespace llvm;
|
||||||
|
@ -396,8 +397,8 @@ void IntrinsicLowering::LowerIntrinsicCall(CallInst *CI) {
|
||||||
case Intrinsic::stacksave:
|
case Intrinsic::stacksave:
|
||||||
case Intrinsic::stackrestore: {
|
case Intrinsic::stackrestore: {
|
||||||
if (!Warned)
|
if (!Warned)
|
||||||
cerr << "WARNING: this target does not support the llvm.stack"
|
errs() << "WARNING: this target does not support the llvm.stack"
|
||||||
<< (Callee->getIntrinsicID() == Intrinsic::stacksave ?
|
<< (Callee->getIntrinsicID() == Intrinsic::stacksave ?
|
||||||
"save" : "restore") << " intrinsic.\n";
|
"save" : "restore") << " intrinsic.\n";
|
||||||
Warned = true;
|
Warned = true;
|
||||||
if (Callee->getIntrinsicID() == Intrinsic::stacksave)
|
if (Callee->getIntrinsicID() == Intrinsic::stacksave)
|
||||||
|
@ -407,8 +408,8 @@ void IntrinsicLowering::LowerIntrinsicCall(CallInst *CI) {
|
||||||
|
|
||||||
case Intrinsic::returnaddress:
|
case Intrinsic::returnaddress:
|
||||||
case Intrinsic::frameaddress:
|
case Intrinsic::frameaddress:
|
||||||
cerr << "WARNING: this target does not support the llvm."
|
errs() << "WARNING: this target does not support the llvm."
|
||||||
<< (Callee->getIntrinsicID() == Intrinsic::returnaddress ?
|
<< (Callee->getIntrinsicID() == Intrinsic::returnaddress ?
|
||||||
"return" : "frame") << "address intrinsic.\n";
|
"return" : "frame") << "address intrinsic.\n";
|
||||||
CI->replaceAllUsesWith(ConstantPointerNull::get(
|
CI->replaceAllUsesWith(ConstantPointerNull::get(
|
||||||
cast<PointerType>(CI->getType())));
|
cast<PointerType>(CI->getType())));
|
||||||
|
@ -420,8 +421,8 @@ void IntrinsicLowering::LowerIntrinsicCall(CallInst *CI) {
|
||||||
case Intrinsic::pcmarker:
|
case Intrinsic::pcmarker:
|
||||||
break; // Simply strip out pcmarker on unsupported architectures
|
break; // Simply strip out pcmarker on unsupported architectures
|
||||||
case Intrinsic::readcyclecounter: {
|
case Intrinsic::readcyclecounter: {
|
||||||
cerr << "WARNING: this target does not support the llvm.readcyclecoun"
|
errs() << "WARNING: this target does not support the llvm.readcyclecoun"
|
||||||
<< "ter intrinsic. It is being lowered to a constant 0\n";
|
<< "ter intrinsic. It is being lowered to a constant 0\n";
|
||||||
CI->replaceAllUsesWith(ConstantInt::get(Type::getInt64Ty(Context), 0));
|
CI->replaceAllUsesWith(ConstantInt::get(Type::getInt64Ty(Context), 0));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -516,8 +516,7 @@ bool LiveIntervals::runOnMachineFunction(MachineFunction &fn) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// print - Implement the dump method.
|
/// print - Implement the dump method.
|
||||||
void LiveIntervals::print(std::ostream &O, const Module* ) const {
|
void LiveIntervals::print(raw_ostream &OS, const Module* ) const {
|
||||||
raw_os_ostream OS(O);
|
|
||||||
OS << "********** INTERVALS **********\n";
|
OS << "********** INTERVALS **********\n";
|
||||||
for (const_iterator I = begin(), E = end(); I != E; ++I) {
|
for (const_iterator I = begin(), E = end(); I != E; ++I) {
|
||||||
I->second->print(OS, tri_);
|
I->second->print(OS, tri_);
|
||||||
|
|
|
@ -53,8 +53,7 @@ bool LiveStacks::runOnMachineFunction(MachineFunction &) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// print - Implement the dump method.
|
/// print - Implement the dump method.
|
||||||
void LiveStacks::print(std::ostream &O, const Module*) const {
|
void LiveStacks::print(raw_ostream &OS, const Module*) const {
|
||||||
raw_os_ostream OS(O);
|
|
||||||
|
|
||||||
OS << "********** INTERVALS **********\n";
|
OS << "********** INTERVALS **********\n";
|
||||||
for (const_iterator I = begin(), E = end(); I != E; ++I) {
|
for (const_iterator I = begin(), E = end(); I != E; ++I) {
|
||||||
|
|
|
@ -52,7 +52,6 @@ void MachineDominatorTree::releaseMemory() {
|
||||||
DT->releaseMemory();
|
DT->releaseMemory();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MachineDominatorTree::print(std::ostream &OS, const Module*) const {
|
void MachineDominatorTree::print(raw_ostream &OS, const Module*) const {
|
||||||
raw_os_ostream OSS(OS);
|
DT->print(OS);
|
||||||
DT->print(OSS);
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -121,13 +121,10 @@ namespace {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// print - Implement the dump method.
|
/// print - Implement the dump method.
|
||||||
virtual void print(std::ostream &O, const Module* M = 0) const {
|
virtual void print(raw_ostream &O, const Module* M = 0) const {
|
||||||
LIs->print(O, M);
|
LIs->print(O, M);
|
||||||
}
|
}
|
||||||
|
|
||||||
void print(std::ostream *O, const Module* M = 0) const {
|
|
||||||
if (O) print(*O, M);
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
MachineBasicBlock::iterator
|
MachineBasicBlock::iterator
|
||||||
|
|
|
@ -69,8 +69,8 @@ CCState::AnalyzeFormalArguments(const SmallVectorImpl<ISD::InputArg> &Ins,
|
||||||
ISD::ArgFlagsTy ArgFlags = Ins[i].Flags;
|
ISD::ArgFlagsTy ArgFlags = Ins[i].Flags;
|
||||||
if (Fn(i, ArgVT, ArgVT, CCValAssign::Full, ArgFlags, *this)) {
|
if (Fn(i, ArgVT, ArgVT, CCValAssign::Full, ArgFlags, *this)) {
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
cerr << "Formal argument #" << i << " has unhandled type "
|
errs() << "Formal argument #" << i << " has unhandled type "
|
||||||
<< ArgVT.getEVTString();
|
<< ArgVT.getEVTString();
|
||||||
#endif
|
#endif
|
||||||
llvm_unreachable(0);
|
llvm_unreachable(0);
|
||||||
}
|
}
|
||||||
|
@ -87,8 +87,8 @@ void CCState::AnalyzeReturn(const SmallVectorImpl<ISD::OutputArg> &Outs,
|
||||||
ISD::ArgFlagsTy ArgFlags = Outs[i].Flags;
|
ISD::ArgFlagsTy ArgFlags = Outs[i].Flags;
|
||||||
if (Fn(i, VT, VT, CCValAssign::Full, ArgFlags, *this)) {
|
if (Fn(i, VT, VT, CCValAssign::Full, ArgFlags, *this)) {
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
cerr << "Return operand #" << i << " has unhandled type "
|
errs() << "Return operand #" << i << " has unhandled type "
|
||||||
<< VT.getEVTString();
|
<< VT.getEVTString();
|
||||||
#endif
|
#endif
|
||||||
llvm_unreachable(0);
|
llvm_unreachable(0);
|
||||||
}
|
}
|
||||||
|
@ -106,8 +106,8 @@ void CCState::AnalyzeCallOperands(const SmallVectorImpl<ISD::OutputArg> &Outs,
|
||||||
ISD::ArgFlagsTy ArgFlags = Outs[i].Flags;
|
ISD::ArgFlagsTy ArgFlags = Outs[i].Flags;
|
||||||
if (Fn(i, ArgVT, ArgVT, CCValAssign::Full, ArgFlags, *this)) {
|
if (Fn(i, ArgVT, ArgVT, CCValAssign::Full, ArgFlags, *this)) {
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
cerr << "Call operand #" << i << " has unhandled type "
|
errs() << "Call operand #" << i << " has unhandled type "
|
||||||
<< ArgVT.getEVTString();
|
<< ArgVT.getEVTString();
|
||||||
#endif
|
#endif
|
||||||
llvm_unreachable(0);
|
llvm_unreachable(0);
|
||||||
}
|
}
|
||||||
|
@ -125,8 +125,8 @@ void CCState::AnalyzeCallOperands(SmallVectorImpl<EVT> &ArgVTs,
|
||||||
ISD::ArgFlagsTy ArgFlags = Flags[i];
|
ISD::ArgFlagsTy ArgFlags = Flags[i];
|
||||||
if (Fn(i, ArgVT, ArgVT, CCValAssign::Full, ArgFlags, *this)) {
|
if (Fn(i, ArgVT, ArgVT, CCValAssign::Full, ArgFlags, *this)) {
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
cerr << "Call operand #" << i << " has unhandled type "
|
errs() << "Call operand #" << i << " has unhandled type "
|
||||||
<< ArgVT.getEVTString();
|
<< ArgVT.getEVTString();
|
||||||
#endif
|
#endif
|
||||||
llvm_unreachable(0);
|
llvm_unreachable(0);
|
||||||
}
|
}
|
||||||
|
@ -142,8 +142,8 @@ void CCState::AnalyzeCallResult(const SmallVectorImpl<ISD::InputArg> &Ins,
|
||||||
ISD::ArgFlagsTy Flags = Ins[i].Flags;
|
ISD::ArgFlagsTy Flags = Ins[i].Flags;
|
||||||
if (Fn(i, VT, VT, CCValAssign::Full, Flags, *this)) {
|
if (Fn(i, VT, VT, CCValAssign::Full, Flags, *this)) {
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
cerr << "Call result #" << i << " has unhandled type "
|
errs() << "Call result #" << i << " has unhandled type "
|
||||||
<< VT.getEVTString();
|
<< VT.getEVTString();
|
||||||
#endif
|
#endif
|
||||||
llvm_unreachable(0);
|
llvm_unreachable(0);
|
||||||
}
|
}
|
||||||
|
@ -155,8 +155,8 @@ void CCState::AnalyzeCallResult(const SmallVectorImpl<ISD::InputArg> &Ins,
|
||||||
void CCState::AnalyzeCallResult(EVT VT, CCAssignFn Fn) {
|
void CCState::AnalyzeCallResult(EVT VT, CCAssignFn Fn) {
|
||||||
if (Fn(0, VT, VT, CCValAssign::Full, ISD::ArgFlagsTy(), *this)) {
|
if (Fn(0, VT, VT, CCValAssign::Full, ISD::ArgFlagsTy(), *this)) {
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
cerr << "Call result has unhandled type "
|
errs() << "Call result has unhandled type "
|
||||||
<< VT.getEVTString();
|
<< VT.getEVTString();
|
||||||
#endif
|
#endif
|
||||||
llvm_unreachable(0);
|
llvm_unreachable(0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,6 +35,7 @@
|
||||||
#include "llvm/Support/Compiler.h"
|
#include "llvm/Support/Compiler.h"
|
||||||
#include "llvm/Support/ErrorHandling.h"
|
#include "llvm/Support/ErrorHandling.h"
|
||||||
#include "llvm/Support/MathExtras.h"
|
#include "llvm/Support/MathExtras.h"
|
||||||
|
#include "llvm/Support/raw_ostream.h"
|
||||||
#include "llvm/ADT/DenseMap.h"
|
#include "llvm/ADT/DenseMap.h"
|
||||||
#include "llvm/ADT/SmallVector.h"
|
#include "llvm/ADT/SmallVector.h"
|
||||||
#include "llvm/ADT/SmallPtrSet.h"
|
#include "llvm/ADT/SmallPtrSet.h"
|
||||||
|
@ -950,7 +951,9 @@ SDValue SelectionDAGLegalize::LegalizeOp(SDValue Op) {
|
||||||
switch (Node->getOpcode()) {
|
switch (Node->getOpcode()) {
|
||||||
default:
|
default:
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
cerr << "NODE: "; Node->dump(&DAG); cerr << "\n";
|
errs() << "NODE: ";
|
||||||
|
Node->dump(&DAG);
|
||||||
|
errs() << "\n";
|
||||||
#endif
|
#endif
|
||||||
llvm_unreachable("Do not know how to legalize this operator!");
|
llvm_unreachable("Do not know how to legalize this operator!");
|
||||||
|
|
||||||
|
|
|
@ -659,7 +659,7 @@ bool SelectionDAG::RemoveNodeFromCSEMaps(SDNode *N) {
|
||||||
if (!Erased && N->getValueType(N->getNumValues()-1) != MVT::Flag &&
|
if (!Erased && N->getValueType(N->getNumValues()-1) != MVT::Flag &&
|
||||||
!N->isMachineOpcode() && !doNotCSE(N)) {
|
!N->isMachineOpcode() && !doNotCSE(N)) {
|
||||||
N->dump(this);
|
N->dump(this);
|
||||||
cerr << "\n";
|
errs() << "\n";
|
||||||
llvm_unreachable("Node is not in map!");
|
llvm_unreachable("Node is not in map!");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -5644,16 +5644,17 @@ static void DumpNodes(const SDNode *N, unsigned indent, const SelectionDAG *G) {
|
||||||
if (N->getOperand(i).getNode()->hasOneUse())
|
if (N->getOperand(i).getNode()->hasOneUse())
|
||||||
DumpNodes(N->getOperand(i).getNode(), indent+2, G);
|
DumpNodes(N->getOperand(i).getNode(), indent+2, G);
|
||||||
else
|
else
|
||||||
cerr << "\n" << std::string(indent+2, ' ')
|
errs() << "\n" << std::string(indent+2, ' ')
|
||||||
<< (void*)N->getOperand(i).getNode() << ": <multiple use>";
|
<< (void*)N->getOperand(i).getNode() << ": <multiple use>";
|
||||||
|
|
||||||
|
|
||||||
cerr << "\n" << std::string(indent, ' ');
|
errs() << "\n";
|
||||||
|
errs().indent(indent);
|
||||||
N->dump(G);
|
N->dump(G);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SelectionDAG::dump() const {
|
void SelectionDAG::dump() const {
|
||||||
cerr << "SelectionDAG has " << AllNodes.size() << " nodes:";
|
errs() << "SelectionDAG has " << AllNodes.size() << " nodes:";
|
||||||
|
|
||||||
for (allnodes_const_iterator I = allnodes_begin(), E = allnodes_end();
|
for (allnodes_const_iterator I = allnodes_begin(), E = allnodes_end();
|
||||||
I != E; ++I) {
|
I != E; ++I) {
|
||||||
|
@ -5664,7 +5665,7 @@ void SelectionDAG::dump() const {
|
||||||
|
|
||||||
if (getRoot().getNode()) DumpNodes(getRoot().getNode(), 2, this);
|
if (getRoot().getNode()) DumpNodes(getRoot().getNode(), 2, this);
|
||||||
|
|
||||||
cerr << "\n\n";
|
errs() << "\n\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDNode::printr(raw_ostream &OS, const SelectionDAG *G) const {
|
void SDNode::printr(raw_ostream &OS, const SelectionDAG *G) const {
|
||||||
|
|
|
@ -2792,7 +2792,7 @@ bool SimpleRegisterCoalescing::runOnMachineFunction(MachineFunction &fn) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// print - Implement the dump method.
|
/// print - Implement the dump method.
|
||||||
void SimpleRegisterCoalescing::print(std::ostream &O, const Module* m) const {
|
void SimpleRegisterCoalescing::print(raw_ostream &O, const Module* m) const {
|
||||||
li_->print(O, m);
|
li_->print(O, m);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -137,10 +137,7 @@ namespace llvm {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// print - Implement the dump method.
|
/// print - Implement the dump method.
|
||||||
virtual void print(std::ostream &O, const Module* = 0) const;
|
virtual void print(raw_ostream &O, const Module* = 0) const;
|
||||||
void print(std::ostream *O, const Module* M = 0) const {
|
|
||||||
if (O) print(*O, M);
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/// joinIntervals - join compatible live intervals
|
/// joinIntervals - join compatible live intervals
|
||||||
|
|
|
@ -597,9 +597,4 @@ void ConstantRange::dump() const {
|
||||||
print(errs());
|
print(errs());
|
||||||
}
|
}
|
||||||
|
|
||||||
std::ostream &llvm::operator<<(std::ostream &o,
|
|
||||||
const ConstantRange &CR) {
|
|
||||||
raw_os_ostream OS(o);
|
|
||||||
OS << CR;
|
|
||||||
return o;
|
|
||||||
}
|
|
||||||
|
|
|
@ -2635,7 +2635,7 @@ PPCTargetLowering::LowerCall_SVR4(SDValue Chain, SDValue Callee,
|
||||||
|
|
||||||
if (Result) {
|
if (Result) {
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
cerr << "Call operand #" << i << " has unhandled type "
|
errs() << "Call operand #" << i << " has unhandled type "
|
||||||
<< ArgVT.getEVTString() << "\n";
|
<< ArgVT.getEVTString() << "\n";
|
||||||
#endif
|
#endif
|
||||||
llvm_unreachable(0);
|
llvm_unreachable(0);
|
||||||
|
|
|
@ -55,7 +55,7 @@ void ExtAddrMode::print(raw_ostream &OS) const {
|
||||||
|
|
||||||
void ExtAddrMode::dump() const {
|
void ExtAddrMode::dump() const {
|
||||||
print(errs());
|
print(errs());
|
||||||
cerr << '\n';
|
errs() << '\n';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -48,9 +48,8 @@ bool DominatorTree::runOnFunction(Function &F) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DominatorTree::print(std::ostream &OS, const Module *) const {
|
void DominatorTree::print(raw_ostream &OS, const Module *) const {
|
||||||
raw_os_ostream OSS(OS);
|
DT->print(OS);
|
||||||
DT->print(OSS);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -264,8 +263,7 @@ DominanceFrontier::calculate(const DominatorTree &DT,
|
||||||
return *Result;
|
return *Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DominanceFrontierBase::print(std::ostream &O, const Module* ) const {
|
void DominanceFrontierBase::print(raw_ostream &OS, const Module* ) const {
|
||||||
raw_os_ostream OS(O);
|
|
||||||
for (const_iterator I = begin(), E = end(); I != E; ++I) {
|
for (const_iterator I = begin(), E = end(); I != E; ++I) {
|
||||||
OS << " DomFrontier for BB";
|
OS << " DomFrontier for BB";
|
||||||
if (I->first)
|
if (I->first)
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
#include "llvm/ModuleProvider.h"
|
#include "llvm/ModuleProvider.h"
|
||||||
#include "llvm/ADT/STLExtras.h"
|
#include "llvm/ADT/STLExtras.h"
|
||||||
#include "llvm/Support/ManagedStatic.h"
|
#include "llvm/Support/ManagedStatic.h"
|
||||||
|
#include "llvm/Support/raw_ostream.h"
|
||||||
#include "llvm/System/Atomic.h"
|
#include "llvm/System/Atomic.h"
|
||||||
#include "llvm/System/Mutex.h"
|
#include "llvm/System/Mutex.h"
|
||||||
#include "llvm/System/Threading.h"
|
#include "llvm/System/Threading.h"
|
||||||
|
@ -45,7 +46,7 @@ bool Pass::mustPreserveAnalysisID(const PassInfo *AnalysisID) const {
|
||||||
|
|
||||||
// dumpPassStructure - Implement the -debug-passes=Structure option
|
// dumpPassStructure - Implement the -debug-passes=Structure option
|
||||||
void Pass::dumpPassStructure(unsigned Offset) {
|
void Pass::dumpPassStructure(unsigned Offset) {
|
||||||
cerr << std::string(Offset*2, ' ') << getPassName() << "\n";
|
errs().indent(Offset*2) << getPassName() << "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
/// getPassName - Return a nice clean name for a pass. This usually
|
/// getPassName - Return a nice clean name for a pass. This usually
|
||||||
|
@ -62,13 +63,13 @@ const char *Pass::getPassName() const {
|
||||||
// to print out the contents of an analysis. Otherwise it is not necessary to
|
// to print out the contents of an analysis. Otherwise it is not necessary to
|
||||||
// implement this method.
|
// implement this method.
|
||||||
//
|
//
|
||||||
void Pass::print(std::ostream &O,const Module*) const {
|
void Pass::print(raw_ostream &O,const Module*) const {
|
||||||
O << "Pass::print not implemented for pass: '" << getPassName() << "'!\n";
|
O << "Pass::print not implemented for pass: '" << getPassName() << "'!\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
// dump - call print(cerr);
|
// dump - call print(cerr);
|
||||||
void Pass::dump() const {
|
void Pass::dump() const {
|
||||||
print(*cerr.stream(), 0);
|
print(errs(), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
|
@ -34,27 +34,31 @@ namespace {
|
||||||
static char ID; // Pass ID, replacement for typeid
|
static char ID; // Pass ID, replacement for typeid
|
||||||
ExternalFunctionsPassedConstants() : ModulePass(&ID) {}
|
ExternalFunctionsPassedConstants() : ModulePass(&ID) {}
|
||||||
virtual bool runOnModule(Module &M) {
|
virtual bool runOnModule(Module &M) {
|
||||||
for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I)
|
for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I) {
|
||||||
if (I->isDeclaration()) {
|
if (!I->isDeclaration()) continue;
|
||||||
bool PrintedFn = false;
|
|
||||||
for (Value::use_iterator UI = I->use_begin(), E = I->use_end();
|
bool PrintedFn = false;
|
||||||
UI != E; ++UI)
|
for (Value::use_iterator UI = I->use_begin(), E = I->use_end();
|
||||||
if (Instruction *User = dyn_cast<Instruction>(*UI)) {
|
UI != E; ++UI) {
|
||||||
CallSite CS = CallSite::get(User);
|
Instruction *User = dyn_cast<Instruction>(*UI);
|
||||||
if (CS.getInstruction()) {
|
if (!User) continue;
|
||||||
for (CallSite::arg_iterator AI = CS.arg_begin(),
|
|
||||||
E = CS.arg_end(); AI != E; ++AI)
|
CallSite CS = CallSite::get(User);
|
||||||
if (isa<Constant>(*AI)) {
|
if (!CS.getInstruction()) continue;
|
||||||
if (!PrintedFn) {
|
|
||||||
errs() << "Function '" << I->getName() << "':\n";
|
for (CallSite::arg_iterator AI = CS.arg_begin(),
|
||||||
PrintedFn = true;
|
E = CS.arg_end(); AI != E; ++AI) {
|
||||||
}
|
if (!isa<Constant>(*AI)) continue;
|
||||||
errs() << *User;
|
|
||||||
break;
|
if (!PrintedFn) {
|
||||||
}
|
errs() << "Function '" << I->getName() << "':\n";
|
||||||
}
|
PrintedFn = true;
|
||||||
}
|
}
|
||||||
|
errs() << *User;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -78,7 +82,7 @@ namespace {
|
||||||
AU.addRequiredTransitive<CallGraph>();
|
AU.addRequiredTransitive<CallGraph>();
|
||||||
}
|
}
|
||||||
virtual bool runOnModule(Module &M) {
|
virtual bool runOnModule(Module &M) {
|
||||||
getAnalysis<CallGraph>().print(std::cerr, &M);
|
getAnalysis<CallGraph>().print(errs(), &M);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -70,8 +70,7 @@ namespace {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void print(std::ostream &OS) const {}
|
void print(raw_ostream &OS, const llvm::Module*) const {}
|
||||||
void print(std::ostream &OS, const llvm::Module*) const {}
|
|
||||||
|
|
||||||
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
|
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
|
||||||
AU.addRequired<CallGraph>();
|
AU.addRequired<CallGraph>();
|
||||||
|
|
|
@ -39,7 +39,7 @@ namespace {
|
||||||
CFGSCC() : FunctionPass(&ID) {}
|
CFGSCC() : FunctionPass(&ID) {}
|
||||||
bool runOnFunction(Function& func);
|
bool runOnFunction(Function& func);
|
||||||
|
|
||||||
void print(std::ostream &O, const Module* = 0) const { }
|
void print(raw_ostream &O, const Module* = 0) const { }
|
||||||
|
|
||||||
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
|
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
|
||||||
AU.setPreservesAll();
|
AU.setPreservesAll();
|
||||||
|
@ -53,7 +53,7 @@ namespace {
|
||||||
// run - Print out SCCs in the call graph for the specified module.
|
// run - Print out SCCs in the call graph for the specified module.
|
||||||
bool runOnModule(Module &M);
|
bool runOnModule(Module &M);
|
||||||
|
|
||||||
void print(std::ostream &O, const Module* = 0) const { }
|
void print(raw_ostream &O, const Module* = 0) const { }
|
||||||
|
|
||||||
// getAnalysisUsage - This pass requires the CallGraph.
|
// getAnalysisUsage - This pass requires the CallGraph.
|
||||||
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
|
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
|
||||||
|
|
|
@ -140,7 +140,7 @@ struct CallGraphSCCPassPrinter : public CallGraphSCCPass {
|
||||||
Function *F = SCC[i]->getFunction();
|
Function *F = SCC[i]->getFunction();
|
||||||
if (F) {
|
if (F) {
|
||||||
outs().flush();
|
outs().flush();
|
||||||
getAnalysisID<Pass>(PassToPrint).print(cout, F->getParent());
|
getAnalysisID<Pass>(PassToPrint).print(outs(), F->getParent());
|
||||||
cout << std::flush;
|
cout << std::flush;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -169,7 +169,7 @@ struct ModulePassPrinter : public ModulePass {
|
||||||
if (!Quiet) {
|
if (!Quiet) {
|
||||||
outs() << "Printing analysis '" << PassToPrint->getPassName() << "':\n";
|
outs() << "Printing analysis '" << PassToPrint->getPassName() << "':\n";
|
||||||
outs().flush();
|
outs().flush();
|
||||||
getAnalysisID<Pass>(PassToPrint).print(cout, &M);
|
getAnalysisID<Pass>(PassToPrint).print(outs(), &M);
|
||||||
cout << std::flush;
|
cout << std::flush;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -199,7 +199,7 @@ struct FunctionPassPrinter : public FunctionPass {
|
||||||
}
|
}
|
||||||
// Get and print pass...
|
// Get and print pass...
|
||||||
outs().flush();
|
outs().flush();
|
||||||
getAnalysisID<Pass>(PassToPrint).print(cout, F.getParent());
|
getAnalysisID<Pass>(PassToPrint).print(outs(), F.getParent());
|
||||||
cout << std::flush;
|
cout << std::flush;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -224,7 +224,7 @@ struct LoopPassPrinter : public LoopPass {
|
||||||
if (!Quiet) {
|
if (!Quiet) {
|
||||||
outs() << "Printing analysis '" << PassToPrint->getPassName() << "':\n";
|
outs() << "Printing analysis '" << PassToPrint->getPassName() << "':\n";
|
||||||
outs().flush();
|
outs().flush();
|
||||||
getAnalysisID<Pass>(PassToPrint).print(cout,
|
getAnalysisID<Pass>(PassToPrint).print(outs(),
|
||||||
L->getHeader()->getParent()->getParent());
|
L->getHeader()->getParent()->getParent());
|
||||||
cout << std::flush;
|
cout << std::flush;
|
||||||
}
|
}
|
||||||
|
@ -256,7 +256,7 @@ struct BasicBlockPassPrinter : public BasicBlockPass {
|
||||||
|
|
||||||
// Get and print pass...
|
// Get and print pass...
|
||||||
outs().flush();
|
outs().flush();
|
||||||
getAnalysisID<Pass>(PassToPrint).print(cout, BB.getParent()->getParent());
|
getAnalysisID<Pass>(PassToPrint).print(outs(), BB.getParent()->getParent());
|
||||||
cout << std::flush;
|
cout << std::flush;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2071,7 +2071,7 @@ void DAGISelEmitter::EmitInstructionSelector(raw_ostream &OS) {
|
||||||
<< "}\n\n";
|
<< "}\n\n";
|
||||||
|
|
||||||
OS << "void CannotYetSelectIntrinsic(SDValue N) DISABLE_INLINE {\n"
|
OS << "void CannotYetSelectIntrinsic(SDValue N) DISABLE_INLINE {\n"
|
||||||
<< " cerr << \"Cannot yet select: \";\n"
|
<< " errs() << \"Cannot yet select: \";\n"
|
||||||
<< " unsigned iid = cast<ConstantSDNode>(N.getOperand("
|
<< " unsigned iid = cast<ConstantSDNode>(N.getOperand("
|
||||||
<< "N.getOperand(0).getValueType() == MVT::Other))->getZExtValue();\n"
|
<< "N.getOperand(0).getValueType() == MVT::Other))->getZExtValue();\n"
|
||||||
<< " llvm_report_error(\"Cannot yet select: intrinsic %\" +\n"
|
<< " llvm_report_error(\"Cannot yet select: intrinsic %\" +\n"
|
||||||
|
|
Loading…
Reference in New Issue