forked from OSchip/llvm-project
Thread Safety Analysis: minor changes to TIL pretty-printing.
llvm-svn: 209842
This commit is contained in:
parent
263ce21e05
commit
9c6ae36861
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Reference in New Issue