clang
19.0.0git
|
#include "CGCXXABI.h"
#include "CodeGenFunction.h"
#include "CodeGenModule.h"
#include "clang/AST/Attr.h"
#include "clang/AST/CXXInheritance.h"
#include "clang/AST/RecordLayout.h"
#include "clang/Basic/CodeGenOptions.h"
#include "clang/CodeGen/CGFunctionInfo.h"
#include "clang/CodeGen/ConstantInitBuilder.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/Support/Format.h"
#include "llvm/Transforms/Utils/Cloning.h"
#include <algorithm>
#include <cstdio>
#include <utility>
Go to the source code of this file.
Functions | |
static void | setThunkProperties (CodeGenModule &CGM, const ThunkInfo &Thunk, llvm::Function *ThunkFn, bool ForVTable, GlobalDecl GD) |
static bool | similar (const ABIArgInfo &infoL, CanQualType typeL, const ABIArgInfo &infoR, CanQualType typeR) |
static RValue | PerformReturnAdjustment (CodeGenFunction &CGF, QualType ResultType, RValue RV, const ThunkInfo &Thunk) |
static void | resolveTopLevelMetadata (llvm::Function *Fn, llvm::ValueToValueMapTy &VMap) |
This function clones a function's DISubprogram node and enters it into a value map with the intent that the map can be utilized by the cloner to short-circuit Metadata node mapping. More... | |
static bool | shouldEmitVTableThunk (CodeGenModule &CGM, const CXXMethodDecl *MD, bool IsUnprototyped, bool ForVTable) |
static bool | UseRelativeLayout (const CodeGenModule &CGM) |
static void | AddPointerLayoutOffset (const CodeGenModule &CGM, ConstantArrayBuilder &builder, CharUnits offset) |
static void | AddRelativeLayoutOffset (const CodeGenModule &CGM, ConstantArrayBuilder &builder, CharUnits offset) |
static bool | shouldEmitAvailableExternallyVTable (const CodeGenModule &CGM, const CXXRecordDecl *RD) |
static bool | shouldEmitVTableAtEndOfTranslationUnit (CodeGenModule &CGM, const CXXRecordDecl *RD) |
Given that we're currently at the end of the translation unit, and we've emitted a reference to the vtable for this class, should we define that vtable? More... | |
|
static |
Definition at line 707 of file CGVTables.cpp.
References clang::CharUnits::getQuantity(), clang::CodeGen::CodeGenTypeCache::GlobalsInt8PtrTy, and clang::CodeGen::CodeGenTypeCache::PtrDiffTy.
|
static |
Definition at line 715 of file CGVTables.cpp.
References clang::CharUnits::getQuantity(), and clang::CodeGen::CodeGenTypeCache::Int32Ty.
|
static |
Definition at line 70 of file CGVTables.cpp.
References clang::CodeGen::CodeGenFunction::Builder, clang::CodeGen::CodeGenFunction::CGM, clang::CodeGen::CodeGenFunction::ConvertTypeForMem(), clang::CodeGen::CodeGenFunction::createBasicBlock(), clang::CodeGen::CGBuilderTy::CreateIsNull(), clang::CodeGen::CodeGenFunction::EmitBlock(), clang::CodeGen::RValue::get(), clang::Type::getAsCXXRecordDecl(), clang::CodeGen::CodeGenModule::getClassPointerAlignment(), clang::CodeGen::CodeGenModule::getCXXABI(), clang::Type::getPointeeType(), clang::CodeGen::RValue::getScalarVal(), IsNull, clang::Type::isReferenceType(), clang::CodeGen::CGCXXABI::performReturnAdjustment(), and clang::ThunkInfo::Return.
Referenced by clang::CodeGen::CodeGenFunction::EmitCallAndReturnForThunk(), and clang::CodeGen::CodeGenFunction::GenerateVarArgsThunk().
|
static |
This function clones a function's DISubprogram node and enters it into a value map with the intent that the map can be utilized by the cloner to short-circuit Metadata node mapping.
Furthermore, the function resolves any DILocalVariable nodes referenced by dbg.value intrinsics so they can be properly mapped during cloning.
Definition at line 121 of file CGVTables.cpp.
Referenced by clang::CodeGen::CodeGenFunction::GenerateVarArgsThunk().
|
static |
Definition at line 41 of file CGVTables.cpp.
References clang::CodeGen::CGCXXABI::exportThunk(), clang::CodeGen::CodeGenModule::getCXXABI(), clang::CodeGen::CodeGenModule::getModule(), clang::ReturnAdjustment::isEmpty(), clang::ThunkInfo::Return, clang::CodeGen::CodeGenModule::setFunctionLinkage(), clang::CodeGen::CodeGenModule::setGVProperties(), clang::CodeGen::CGCXXABI::setThunkLinkage(), and clang::CodeGen::CodeGenModule::supportsCOMDAT().
|
static |
Definition at line 1053 of file CGVTables.cpp.
References clang::CodeGen::CGCXXABI::canSpeculativelyEmitVTable(), clang::CodeGen::CodeGenModule::getCodeGenOpts(), and clang::CodeGen::CodeGenModule::getCXXABI().
Referenced by clang::CodeGen::CodeGenModule::getVTableLinkage(), and shouldEmitVTableAtEndOfTranslationUnit().
|
static |
Given that we're currently at the end of the translation unit, and we've emitted a reference to the vtable for this class, should we define that vtable?
Definition at line 1222 of file CGVTables.cpp.
References clang::CodeGen::CodeGenModule::getVTables(), clang::CodeGen::CodeGenVTables::isVTableExternal(), and shouldEmitAvailableExternallyVTable().
|
static |
Definition at line 478 of file CGVTables.cpp.
References clang::CodeGen::CodeGenModule::getCodeGenOpts(), clang::TargetInfo::getCXXABI(), clang::CodeGen::CodeGenModule::getTarget(), and clang::TargetCXXABI::isMicrosoft().
|
static |
Definition at line 61 of file CGVTables.cpp.
References clang::CodeGen::ABIArgInfo::getKind().
Referenced by clang::CodeGen::CodeGenFunction::EmitCallAndReturnForThunk().
|
static |
Definition at line 688 of file CGVTables.cpp.
References clang::TargetInfo::getCXXABI(), clang::CodeGen::CodeGenModule::getItaniumVTableContext(), clang::CodeGen::CodeGenModule::getTarget(), clang::TargetCXXABI::isItaniumFamily(), and clang::ItaniumVTableContext::isRelativeLayout().
Referenced by clang::CodeGen::CodeGenModule::getVTableComponentType().