clang 8.0.0

Functions
CGDeclCXX.cpp File Reference
`#include "CodeGenFunction.h"`
`#include "CGCXXABI.h"`
`#include "CGObjCRuntime.h"`
`#include "CGOpenMPRuntime.h"`
`#include "clang/Basic/CodeGenOptions.h"`
`#include "llvm/ADT/StringExtras.h"`
`#include "llvm/IR/Intrinsics.h"`
`#include "llvm/IR/MDBuilder.h"`
`#include "llvm/Support/Path.h"`
Include dependency graph for CGDeclCXX.cpp:

Go to the source code of this file.

## Functions
static void | EmitDeclInit (CodeGenFunction &CGF, const VarDecl &D, ConstantAddress DeclPtr)
static void | EmitDeclDestroy (CodeGenFunction &CGF, const VarDecl &D, ConstantAddress Addr)
| Emit code to cause the destruction of the given variable with static storage duration. More...
static void | EmitDeclInvariant (CodeGenFunction &CGF, const VarDecl &D, llvm::Constant *Addr)
| Emit code to cause the variable at the given address to be considered as constant from this point onwards. More...

## Function Documentation

## ◆ EmitDeclDestroy()

static void EmitDeclDestroy | ( | CodeGenFunction & | CGF,
|  | const VarDecl & | D,
|  | ConstantAddress | Addr
| ) |  |
| static

Emit code to cause the destruction of the given variable with static storage duration.

Definition at line 68 of file CGDeclCXX.cpp.

References clang::CodeGen::CGCXXABI::canCallMismatchedFunctionType(), clang::CodeGen::CodeGenFunction::CGM, clang::CodeGen::Complete, clang::CodeGen::CodeGenTypes::ConvertType(), clang::QualType::DK_cxx_destructor, clang::QualType::DK_none, clang::QualType::DK_nontrivial_c_struct, clang::QualType::DK_objc_strong_lifetime, clang::QualType::DK_objc_weak_lifetime, clang::Dtor_Complete, clang::CodeGen::CodeGenFunction::generateDestroyHelper(), clang::CodeGen::CodeGenModule::getAddrOfCXXStructor(), clang::Type::getAsCXXRecordDecl(), clang::CodeGen::CodeGenModule::getCodeGenOpts(), clang::CodeGen::CodeGenFunction::getContext(), clang::CodeGen::CodeGenModule::getCXXABI(), clang::CodeGen::CodeGenFunction::getDestroyer(), clang::CXXRecordDecl::getDestructor(), clang::CodeGen::ConstantAddress::getPointer(), clang::VarDecl::getTLSKind(), clang::ValueDecl::getType(), clang::CodeGen::CodeGenFunction::getTypes(), clang::CodeGen::CGCXXABI::HasThisReturn(), clang::CXXRecordDecl::hasTrivialDestructor(), clang::CodeGen::CodeGenTypeCache::Int8PtrTy, clang::QualType::isDestructedType(), clang::VarDecl::isNoDestroy(), clang::CodeGen::CodeGenFunction::needsEHCleanup(), and clang::CodeGen::CGCXXABI::registerGlobalDtor().

Referenced by clang::CodeGen::CodeGenFunction::EmitCXXGlobalVarDeclInit().

## ◆ EmitDeclInit()

static void EmitDeclInit | ( | CodeGenFunction & | CGF,
|  | const VarDecl & | D,
|  | ConstantAddress | DeclPtr
| ) |  |
| static

Definition at line 27 of file CGDeclCXX.cpp.

References clang::CodeGen::CodeGenFunction::CGM, clang::CodeGen::AggValueSlot::DoesNotNeedGCBarriers, clang::CodeGen::AggValueSlot::DoesNotOverlap, clang::CodeGen::CodeGenFunction::EmitAggExpr(), clang::CodeGen::CodeGenFunction::EmitComplexExprIntoLValue(), clang::CodeGen::CGObjCRuntime::EmitObjCGlobalAssign(), clang::CodeGen::CGObjCRuntime::EmitObjCWeakAssign(), clang::CodeGen::CodeGenFunction::EmitScalarExpr(), clang::CodeGen::CodeGenFunction::EmitScalarInit(), clang::CodeGen::AggValueSlot::forLValue(), clang::CodeGen::CodeGenFunction::getContext(), clang::CodeGen::CodeGenFunction::getEvaluationKind(), clang::VarDecl::getInit(), clang::ASTContext::getLangOpts(), clang::CodeGen::CodeGenModule::getObjCRuntime(), clang::VarDecl::getTLSKind(), clang::ValueDecl::getType(), clang::VarDecl::hasGlobalStorage(), clang::VarDecl::hasLocalStorage(), clang::CodeGen::AggValueSlot::IsDestructed, clang::CodeGen::AggValueSlot::IsNotAliased, clang::CodeGen::LValue::isObjCStrong(), clang::CodeGen::LValue::isObjCWeak(), clang::Type::isReferenceType(), clang::CodeGen::CodeGenFunction::MakeAddrLValue(), clang::CodeGen::TEK_Aggregate, clang::CodeGen::TEK_Complex, and clang::CodeGen::TEK_Scalar.

Referenced by clang::CodeGen::CodeGenFunction::EmitCXXGlobalVarDeclInit().

## ◆ EmitDeclInvariant()

static void EmitDeclInvariant | ( | CodeGenFunction & | CGF,
|  | const VarDecl & | D,
|  | llvm::Constant * | Addr
| ) |  |
| static

Emit code to cause the variable at the given address to be considered as constant from this point onwards.

Definition at line 138 of file CGDeclCXX.cpp.

References clang::CodeGen::CodeGenFunction::EmitInvariantStart(), clang::CodeGen::CodeGenFunction::getContext(), clang::ValueDecl::getType(), and clang::ASTContext::getTypeSizeInChars().

Referenced by clang::CodeGen::CodeGenFunction::EmitCXXGlobalVarDeclInit().