in -dot-cfg and -dot-cfg-only, when rendering switch instructions,
authorChris Lattner <sabre@nondot.org>
Tue, 10 Nov 2009 22:56:15 +0000 (22:56 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 10 Nov 2009 22:56:15 +0000 (22:56 +0000)
put the switch value in the successor boxes like we put T/F for branches.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86747 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Analysis/CFGPrinter.h

index 435f8ea484937f8b178937cf6ee271683d4583b9..bee2c5b0d31a443ac42bd15e3adefb17717fed08 100644 (file)
@@ -71,6 +71,18 @@ struct DOTGraphTraits<const Function*> : public DefaultDOTGraphTraits {
     if (const BranchInst *BI = dyn_cast<BranchInst>(Node->getTerminator()))
       if (BI->isConditional())
         return (I == succ_begin(Node)) ? "T" : "F";
+    
+    // Label source of conditional branches with "T" or "F"
+    if (const SwitchInst *SI = dyn_cast<SwitchInst>(Node->getTerminator())) {
+      unsigned SuccNo = I.getSuccessorIndex();
+
+      if (SuccNo == 0) return "def";
+      
+      std::string Str;
+      raw_string_ostream OS(Str);
+      OS << SI->getCaseValue(SuccNo)->getValue();
+      return OS.str();
+    }    
     return "";
   }
 };