//===-- CodeGenFunction.h - Per-Function state for LLVM CodeGen -*- C++ -*-===////// The LLVM Compiler Infrastructure//// This file is distributed under the University of Illinois Open Source// License. See LICENSE.TXT for details.////===----------------------------------------------------------------------===////// This is the internal per-function state used for llvm translation.////===----------------------------------------------------------------------===//#ifndef CLANG_CODEGEN_CODEGENFUNCTION_H#define CLANG_CODEGEN_CODEGENFUNCTION_H#include"clang/AST/Type.h"#include"clang/AST/ExprCXX.h"#include"clang/AST/ExprObjC.h"#include"clang/AST/CharUnits.h"#include"clang/Basic/TargetInfo.h"#include"llvm/ADT/DenseMap.h"#include"llvm/ADT/SmallVector.h"#include"llvm/Support/ValueHandle.h"#include"CodeGenModule.h"#include"CGBlocks.h"#include"CGBuilder.h"#include"CGCall.h"#include"CGCXX.h"#include"CGValue.h"namespacellvm{classBasicBlock;classLLVMContext;classMDNode;classModule;classSwitchInst;classTwine;classValue;}namespaceclang{classASTContext;classCXXDestructorDecl;classCXXTryStmt;classDecl;classEnumConstantDecl;classFunctionDecl;classFunctionProtoType;classLabelStmt;classObjCContainerDecl;classObjCInterfaceDecl;classObjCIvarDecl;classObjCMethodDecl;classObjCImplementationDecl;classObjCPropertyImplDecl;classTargetInfo;classTargetCodeGenInfo;classVarDecl;classObjCForCollectionStmt;classObjCAtTryStmt;classObjCAtThrowStmt;classObjCAtSynchronizedStmt;namespaceCodeGen{classCodeGenTypes;classCGDebugInfo;classCGFunctionInfo;classCGRecordLayout;classCGBlockInfo;/// CodeGenFunction - This class organizes the per-function state that is used/// while generating LLVM code.classCodeGenFunction:publicBlockFunction{C