clang API Documentation
#include "CodeGenFunction.h"
#include "CGCUDARuntime.h"
#include "CGCXXABI.h"
#include "CGDebugInfo.h"
#include "CGOpenMPRuntime.h"
#include "CodeGenModule.h"
#include "CodeGenPGO.h"
#include "TargetInfo.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/Decl.h"
#include "clang/AST/DeclCXX.h"
#include "clang/AST/StmtCXX.h"
#include "clang/Basic/TargetInfo.h"
#include "clang/CodeGen/CGFunctionInfo.h"
#include "clang/Frontend/CodeGenOptions.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/Intrinsics.h"
#include "llvm/IR/MDBuilder.h"
#include "llvm/IR/Operator.h"
#include "clang/AST/TypeNodes.def"
Go to the source code of this file.
Defines | |
#define | TYPE(name, parent) |
#define | ABSTRACT_TYPE(name, parent) |
#define | NON_CANONICAL_TYPE(name, parent) case Type::name: |
#define | DEPENDENT_TYPE(name, parent) case Type::name: |
#define | NON_CANONICAL_UNLESS_DEPENDENT_TYPE(name, parent) case Type::name: |
#define | TYPE(Class, Base) |
#define | ABSTRACT_TYPE(Class, Base) |
#define | NON_CANONICAL_TYPE(Class, Base) |
#define | DEPENDENT_TYPE(Class, Base) case Type::Class: |
#define | NON_CANONICAL_UNLESS_DEPENDENT_TYPE(Class, Base) |
#define | PreserveNames true |
Functions | |
static void | EmitIfUsed (CodeGenFunction &CGF, llvm::BasicBlock *BB) |
static void | GenOpenCLArgMetadata (const FunctionDecl *FD, llvm::Function *Fn, CodeGenModule &CGM, llvm::LLVMContext &Context, SmallVector< llvm::Value *, 5 > &kernelMDArgs, CGBuilderTy &Builder, ASTContext &ASTCtx) |
static bool | endsWithReturn (const Decl *F) |
Determine whether the function F ends with a return stmt. | |
static void | TryMarkNoThrow (llvm::Function *F) |
static void | EmitSizedDeallocationFunction (CodeGenFunction &CGF, const FunctionDecl *UnsizedDealloc) |
static void | emitNonZeroVLAInit (CodeGenFunction &CGF, QualType baseType, llvm::Value *dest, llvm::Value *src, llvm::Value *sizeInChars) |
#define ABSTRACT_TYPE | ( | name, | |
parent | |||
) |
#define ABSTRACT_TYPE | ( | Class, | |
Base | |||
) |
#define DEPENDENT_TYPE | ( | name, | |
parent | |||
) | case Type::name: |
#define DEPENDENT_TYPE | ( | Class, | |
Base | |||
) | case Type::Class: |
#define NON_CANONICAL_TYPE | ( | name, | |
parent | |||
) | case Type::name: |
#define NON_CANONICAL_TYPE | ( | Class, | |
Base | |||
) |
#define NON_CANONICAL_UNLESS_DEPENDENT_TYPE | ( | name, | |
parent | |||
) | case Type::name: |
#define NON_CANONICAL_UNLESS_DEPENDENT_TYPE | ( | Class, | |
Base | |||
) |
#define PreserveNames true |
Definition at line 1729 of file CodeGenFunction.cpp.
#define TYPE | ( | name, | |
parent | |||
) |
static void EmitIfUsed | ( | CodeGenFunction & | CGF, |
llvm::BasicBlock * | BB | ||
) | [static] |
Definition at line 200 of file CodeGenFunction.cpp.
References clang::CodeGen::CodeGenFunction::CurFn.
Referenced by clang::CodeGen::CodeGenFunction::FinishFunction().
static void emitNonZeroVLAInit | ( | CodeGenFunction & | CGF, |
QualType | baseType, | ||
llvm::Value * | dest, | ||
llvm::Value * | src, | ||
llvm::Value * | sizeInChars | ||
) | [static] |
emitNonZeroVLAInit - Emit the "zero" initialization of a variable-length array whose elements have a non-zero bit-pattern.
baseType | the inner-most element type of the array |
src | - a char* pointing to the bit-pattern for a single base element of the array |
sizeInChars | - the total size of the VLA, in chars |
Definition at line 1198 of file CodeGenFunction.cpp.
References clang::CodeGen::CodeGenFunction::Builder, clang::CodeGen::CodeGenFunction::createBasicBlock(), clang::CodeGen::CodeGenFunction::EmitBlock(), clang::CodeGen::CodeGenFunction::getContext(), clang::ASTContext::getTypeInfoInChars(), and clang::CodeGen::CodeGenTypeCache::IntPtrTy.
Referenced by clang::CodeGen::CodeGenFunction::EmitNullInitialization().
static void EmitSizedDeallocationFunction | ( | CodeGenFunction & | CGF, |
const FunctionDecl * | UnsizedDealloc | ||
) | [static] |
Definition at line 798 of file CodeGenFunction.cpp.
References clang::CodeGen::CodeGenFunction::Builder, clang::CodeGen::CodeGenFunction::CGM, clang::CodeGen::CodeGenFunction::CurFn, and clang::CodeGen::CodeGenModule::GetAddrOfFunction().
Referenced by clang::CodeGen::CodeGenFunction::GenerateCode().
static bool endsWithReturn | ( | const Decl * | F | ) | [static] |
Determine whether the function F ends with a return stmt.
Definition at line 547 of file CodeGenFunction.cpp.
References clang::FunctionDecl::getBody().
Referenced by clang::CodeGen::CodeGenFunction::StartFunction().
static void GenOpenCLArgMetadata | ( | const FunctionDecl * | FD, |
llvm::Function * | Fn, | ||
CodeGenModule & | CGM, | ||
llvm::LLVMContext & | Context, | ||
SmallVector< llvm::Value *, 5 > & | kernelMDArgs, | ||
CGBuilderTy & | Builder, | ||
ASTContext & | ASTCtx | ||
) | [static] |
Definition at line 351 of file CodeGenFunction.cpp.
References clang::QualType::getAddressSpace(), clang::QualType::getAsString(), clang::Decl::getAttr(), clang::QualType::getCanonicalType(), clang::CodeGen::CodeGenModule::getContext(), clang::NamedDecl::getName(), clang::FunctionDecl::getNumParams(), clang::FunctionDecl::getParamDecl(), clang::Type::getPointeeType(), clang::ASTContext::getPrintingPolicy(), clang::ASTContext::getTargetAddressSpace(), clang::ValueDecl::getType(), clang::QualType::getUnqualifiedType(), clang::QualType::isCanonical(), clang::QualType::isConstQualified(), clang::Type::isImageType(), clang::Type::isPointerType(), clang::QualType::isRestrictQualified(), clang::QualType::isVolatileQualified(), clang::LangAS::opencl_constant, and clang::LangAS::opencl_global.
static void TryMarkNoThrow | ( | llvm::Function * | F | ) | [static] |
Tries to mark the given function nounwind based on the non-existence of any throwing calls within it. We believe this is lightweight enough to do at -O0.
Definition at line 781 of file CodeGenFunction.cpp.
Referenced by clang::CodeGen::CodeGenFunction::GenerateCode().