//===--- CFG.cpp - Classes for representing and building CFGs----*- C++ -*-===////// The LLVM Compiler Infrastructure//// This file is distributed under the University of Illinois Open Source// License. See LICENSE.TXT for details.////===----------------------------------------------------------------------===////// This file defines the CFG and CFGBuilder classes for representing and// building Control-Flow Graphs (CFGs) from ASTs.////===----------------------------------------------------------------------===//#include"clang/AST/CFG.h"#include"clang/AST/Expr.h"#include"clang/AST/StmtVisitor.h"#include"clang/AST/PrettyPrinter.h"#include"llvm/ADT/DenseMap.h"#include"llvm/ADT/SmallPtrSet.h"#include"llvm/Support/GraphWriter.h"#include"llvm/Support/Streams.h"#include"llvm/Support/Compiler.h"#include<set>#include<iomanip>#include<algorithm>#include<sstream>#include<iostream>usingnamespaceclang;namespace{// SaveAndRestore - A utility class that uses RIIA to save and restore// the value of a variable.template<typenameT>structVISIBILITY_HIDDENSaveAndRestore{SaveAndRestore(T&x):X(x),old_value(x){}~SaveAndRestore(){X=old_value;}Tget(){returnold_value