forked from OSchip/llvm-project
Dump out types for expressions, and handle typedefs nicely.
This allows us to dump: typedef short S; int test(S X, long long Y) { return X < ((100)); } as: typedef short S; int test(S X, long long Y) (CompoundStmt 0x2905d40 (ReturnStmt 0x2905d30 (BinaryOperator 0x2905d10 'int' '<' (ImplicitCastExpr 0x2905d00 'int' (DeclRefExpr 0x2905c80 'S':'short' Decl='X' 0x2905c20)) (ParenExpr 0x2905ce0 'int' (ParenExpr 0x2905cc0 'int' (IntegerLiteral 0x2905ca0 'int' 100)))))) llvm-svn: 40956
This commit is contained in:
parent
9d09c5ccda
commit
9bcd9156b9
|
@ -58,6 +58,15 @@ namespace {
|
||||||
fprintf(F, " ");
|
fprintf(F, " ");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DumpType(QualType T) const {
|
||||||
|
fprintf(F, "'%s'", T.getAsString().c_str());
|
||||||
|
|
||||||
|
// If the type is directly a typedef, strip off typedefness to give at
|
||||||
|
// least one level of concreteness.
|
||||||
|
if (TypedefType *TDT = dyn_cast<TypedefType>(T))
|
||||||
|
fprintf(F, ":'%s'", TDT->LookThroughTypedefs().getAsString().c_str());
|
||||||
|
}
|
||||||
|
|
||||||
void DumpStmt(const Stmt *Node) const {
|
void DumpStmt(const Stmt *Node) const {
|
||||||
Indent();
|
Indent();
|
||||||
fprintf(F, "(%s %p", Node->getStmtClassName(), (void*)Node);
|
fprintf(F, "(%s %p", Node->getStmtClassName(), (void*)Node);
|
||||||
|
@ -65,7 +74,8 @@ namespace {
|
||||||
|
|
||||||
void DumpExpr(Expr *Node) const {
|
void DumpExpr(Expr *Node) const {
|
||||||
DumpStmt(Node);
|
DumpStmt(Node);
|
||||||
// TODO: DUMP TYPE
|
fprintf(F, " ");
|
||||||
|
DumpType(Node->getType());
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void VisitStmt(Stmt *Node);
|
virtual void VisitStmt(Stmt *Node);
|
||||||
|
|
Loading…
Reference in New Issue