Thread Safety Analysis: minor changes to TIL pretty-printing.

llvm-svn: 209842
This commit is contained in:
DeLesley Hutchins 2014-05-29 20:28:53 +00:00
parent 263ce21e05
commit 9c6ae36861
2 changed files with 23 additions and 21 deletions

View File

@ -364,6 +364,7 @@ public:
// Let-variable, function parameter, or self-variable
enum VariableKind {
VK_Let,
VK_LetBB,
VK_Fun,
VK_SFun
};
@ -388,6 +389,7 @@ public:
unsigned getID() const { return Id; }
unsigned getBlockID() const { return BlockID; }
void setName(StringRef S) { Name = S; }
void setID(unsigned Bid, unsigned I) {
BlockID = static_cast<unsigned short>(Bid);
Id = static_cast<unsigned short>(I);
@ -1432,11 +1434,13 @@ public:
// Add a new argument. V must define a phi-node.
void addArgument(Variable *V) {
V->setKind(Variable::VK_LetBB);
Args.reserveCheck(1, Arena);
Args.push_back(V);
}
// Add a new instruction.
void addInstruction(Variable *V) {
V->setKind(Variable::VK_LetBB);
Instrs.reserveCheck(1, Arena);
Instrs.push_back(V);
}

View File

@ -475,9 +475,10 @@ template <typename Self, typename StreamType>
class PrettyPrinter {
private:
bool Verbose; // Print out additional information
bool Cleanup; // Omit redundant decls.
public:
PrettyPrinter(bool V = false) : Verbose(V) { }
PrettyPrinter(bool V = false, bool C = true) : Verbose(V), Cleanup(C) { }
static void print(SExpr *E, StreamType &SS) {
Self printer;
@ -491,17 +492,6 @@ protected:
SS << "\n";
}
void printBlockLabel(StreamType & SS, BasicBlock *BB, unsigned index) {
if (!BB) {
SS << "BB_null";
return;
}
SS << "BB_";
SS << BB->blockID();
SS << ":";
SS << index;
}
// TODO: further distinguish between binary operations.
static const unsigned Prec_Atom = 0;
static const unsigned Prec_Postfix = 1;
@ -554,6 +544,17 @@ protected:
return Prec_MAX;
}
void printBlockLabel(StreamType & SS, BasicBlock *BB, unsigned index) {
if (!BB) {
SS << "BB_null";
return;
}
SS << "BB_";
SS << BB->blockID();
SS << ":";
SS << index;
}
void printSExpr(SExpr *E, StreamType &SS, unsigned P) {
if (!E) {
self()->printNull(SS);
@ -683,20 +684,17 @@ protected:
}
void printVariable(Variable *V, StreamType &SS, bool IsVarDecl = false) {
SExpr* E = nullptr;
if (!IsVarDecl) {
E = getCanonicalVal(V);
if (!IsVarDecl && Cleanup) {
SExpr* E = getCanonicalVal(V);
if (E != V) {
printSExpr(E, SS, Prec_Atom);
if (Verbose) {
SS << " /*";
SS << V->name() << V->getBlockID() << "_" << V->getID();
SS << "*/";
}
return;
}
}
SS << V->name() << V->getBlockID() << "_" << V->getID();
if (V->kind() == Variable::VK_LetBB)
SS << V->name() << V->getBlockID() << "_" << V->getID();
else
SS << V->name() << V->getID();
}
void printFunction(Function *E, StreamType &SS, unsigned sugared = 0) {