clang
10.0.0git
|
#include "CodeGenFunction.h"
#include "CGBlocks.h"
#include "CGCUDARuntime.h"
#include "CGCXXABI.h"
#include "CGCleanup.h"
#include "CGDebugInfo.h"
#include "CGOpenMPRuntime.h"
#include "CodeGenModule.h"
#include "CodeGenPGO.h"
#include "TargetInfo.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/ASTLambda.h"
#include "clang/AST/Attr.h"
#include "clang/AST/Decl.h"
#include "clang/AST/DeclCXX.h"
#include "clang/AST/StmtCXX.h"
#include "clang/AST/StmtObjC.h"
#include "clang/Basic/Builtins.h"
#include "clang/Basic/CodeGenOptions.h"
#include "clang/Basic/TargetInfo.h"
#include "clang/CodeGen/CGFunctionInfo.h"
#include "clang/Frontend/FrontendDiagnostic.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/Dominators.h"
#include "llvm/IR/FPEnv.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/Intrinsics.h"
#include "llvm/IR/MDBuilder.h"
#include "llvm/IR/Operator.h"
#include "llvm/Transforms/Utils/PromoteMemToReg.h"
#include "clang/AST/TypeNodes.inc"
#include "clang/Basic/Sanitizers.def"
Go to the source code of this file.
Macros | |
#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 | SANITIZER(NAME, ID) |
#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) |
Functions | |
static bool | shouldEmitLifetimeMarkers (const CodeGenOptions &CGOpts, const LangOptions &LangOpts) |
shouldEmitLifetimeMarkers - Decide whether we need emit the life-time markers. More... | |
static llvm::fp::RoundingMode | ToConstrainedRoundingMD (LangOptions::FPRoundingModeKind Kind) |
static llvm::fp::ExceptionBehavior | ToConstrainedExceptMD (LangOptions::FPExceptionModeKind Kind) |
static void | EmitIfUsed (CodeGenFunction &CGF, llvm::BasicBlock *BB) |
static bool | endsWithReturn (const Decl *F) |
Determine whether the function F ends with a return stmt. More... | |
static bool | matchesStlAllocatorFn (const Decl *D, const ASTContext &Ctx) |
static llvm::Constant * | getPrologueSignature (CodeGenModule &CGM, const FunctionDecl *FD) |
Return the UBSan prologue signature for FD if one is available. More... | |
static void | TryMarkNoThrow (llvm::Function *F) |
Tries to mark the given function nounwind based on the non-existence of any throwing calls within it. More... | |
static bool | shouldUseUndefinedBehaviorReturnOptimization (const FunctionDecl *FD, const ASTContext &Context) |
static void | emitNonZeroVLAInit (CodeGenFunction &CGF, QualType baseType, Address dest, Address src, llvm::Value *sizeInChars) |
emitNonZeroVLAInit - Emit the "zero" initialization of a variable-length array whose elements have a non-zero bit-pattern. More... | |
static bool | hasRequiredFeatures (const SmallVectorImpl< StringRef > &ReqFeatures, CodeGenModule &CGM, const FunctionDecl *FD, std::string &FirstMissing) |
static void | CreateMultiVersionResolverReturn (CodeGenModule &CGM, llvm::Function *Resolver, CGBuilderTy &Builder, llvm::Function *FuncToReturn, bool SupportsIFunc) |
#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 SANITIZER | ( | NAME, | |
ID | |||
) |
#define TYPE | ( | name, | |
parent | |||
) |
#define TYPE | ( | Class, | |
Base | |||
) |
|
static |
Definition at line 2370 of file CodeGenFunction.cpp.
|
static |
Definition at line 337 of file CodeGenFunction.cpp.
References clang::CodeGen::CodeGenFunction::CurFn.
Referenced by clang::CodeGen::CodeGenFunction::FinishFunction().
|
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 1678 of file CodeGenFunction.cpp.
References clang::CharUnits::alignmentOfArrayElement(), clang::CodeGen::CodeGenFunction::Builder, clang::CodeGen::CodeGenFunction::createBasicBlock(), clang::CodeGen::CGBuilderTy::CreateElementBitCast(), clang::CodeGen::CGBuilderTy::CreateMemCpy(), clang::CodeGen::CodeGenFunction::EmitBlock(), clang::CodeGen::Address::getAlignment(), clang::CodeGen::CodeGenFunction::getContext(), clang::CharUnits::getQuantity(), clang::ASTContext::getTypeSizeInChars(), clang::CodeGen::CodeGenTypeCache::Int8Ty, and clang::CodeGen::CodeGenTypeCache::IntPtrTy.
Referenced by clang::CodeGen::CodeGenFunction::EmitNullInitialization().
Determine whether the function F ends with a return stmt.
Definition at line 642 of file CodeGenFunction.cpp.
References clang::FunctionDecl::getBody().
Referenced by clang::CodeGen::CodeGenFunction::StartFunction().
|
static |
Return the UBSan prologue signature for FD
if one is available.
Definition at line 692 of file CodeGenFunction.cpp.
References clang::CodeGen::CodeGenModule::getTargetCodeGenInfo(), and clang::CodeGen::TargetCodeGenInfo::getUBSanFunctionSignature().
Referenced by clang::CodeGen::CodeGenFunction::StartFunction().
|
static |
Definition at line 2250 of file CodeGenFunction.cpp.
References clang::CodeGen::CodeGenModule::getContext(), and clang::ASTContext::getFunctionFeatureMap().
Referenced by clang::CodeGen::CodeGenFunction::checkTargetFeatures().
|
static |
Definition at line 671 of file CodeGenFunction.cpp.
References clang::ASTContext::getSizeType().
Referenced by clang::CodeGen::CodeGenFunction::StartFunction().
|
static |
shouldEmitLifetimeMarkers - Decide whether we need emit the life-time markers.
Definition at line 48 of file CodeGenFunction.cpp.
References clang::SanitizerSet::has(), and clang::LangOptions::Sanitize.
|
static |
Definition at line 1233 of file CodeGenFunction.cpp.
Referenced by clang::CodeGen::CodeGenFunction::GenerateCode().
|
static |
Definition at line 126 of file CodeGenFunction.cpp.
References clang::LangOptions::FPE_Ignore, clang::LangOptions::FPE_MayTrap, and clang::LangOptions::FPE_Strict.
Referenced by clang::CodeGen::CodeGenFunction::SetFPModel().
|
static |
Definition at line 111 of file CodeGenFunction.cpp.
References clang::LangOptions::FPR_Downward, clang::LangOptions::FPR_Dynamic, clang::LangOptions::FPR_ToNearest, clang::LangOptions::FPR_TowardZero, and clang::LangOptions::FPR_Upward.
Referenced by clang::CodeGen::CodeGenFunction::SetFPModel().
|
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 1176 of file CodeGenFunction.cpp.
Referenced by clang::CodeGen::CodeGenFunction::GenerateCode().