From: Ted Kremenek Date: Fri, 31 Aug 2007 21:49:40 +0000 (+0000) Subject: Cleanups for printing the terminators of CFGBlocks for "?", "||", and "&&" operators. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=805e9a8300af9489ec13cd804c070267b7c4cfec;p=clang Cleanups for printing the terminators of CFGBlocks for "?", "||", and "&&" operators. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41654 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/AST/CFG.cpp b/AST/CFG.cpp index 512c69ec5b..83d91ddeb6 100644 --- a/AST/CFG.cpp +++ b/AST/CFG.cpp @@ -960,7 +960,8 @@ public: }; class CFGBlockTerminatorPrint : public StmtVisitor { + void > +{ std::ostream& OS; StmtPrinterHelper* Helper; public: @@ -974,7 +975,7 @@ public: } // Default case. - void VisitStmt(Stmt* S) { S->printPretty(OS,Helper); } + void VisitStmt(Stmt* S) { S->printPretty(OS); } void VisitForStmt(ForStmt* F) { OS << "for (" ; @@ -1004,6 +1005,31 @@ public: OS << '\n'; } + void VisitConditionalOperator(ConditionalOperator* C) { + C->getCond()->printPretty(OS,Helper); + OS << " ? ... : ...\n"; + } + + void VisitBinaryOperator(BinaryOperator* B) { + if (!B->isLogicalOp()) { + VisitExpr(B); + return; + } + + B->getLHS()->printPretty(OS,Helper); + + switch (B->getOpcode()) { + case BinaryOperator::LOr: + OS << " || ...\n"; + return; + case BinaryOperator::LAnd: + OS << " && ...\n"; + return; + default: + assert(false && "Invalid logical operator."); + } + } + void VisitExpr(Expr* E) { E->printPretty(OS,Helper); OS << '\n';