#include "CodeGenTBAA.h"
#include "ABIInfoImpl.h"
#include "CGCXXABI.h"
#include "CGRecordLayout.h"
#include "CodeGenTypes.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/Attr.h"
#include "clang/AST/Mangle.h"
#include "clang/AST/RecordLayout.h"
#include "clang/Basic/CodeGenOptions.h"
#include "clang/Basic/TargetInfo.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/Metadata.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Type.h"
#include "llvm/Support/Debug.h"
usingnamespaceclang;
usingnamespaceCodeGen;
CodeGenTBAA::CodeGenTBAA(ASTContext &Ctx, CodeGenTypes &CGTypes,
llvm::Module &M, const CodeGenOptions &CGO,
const LangOptions &Features)
: … { … }
CodeGenTBAA::~CodeGenTBAA() { … }
llvm::MDNode *CodeGenTBAA::getRoot() { … }
llvm::MDNode *CodeGenTBAA::createScalarTypeNode(StringRef Name,
llvm::MDNode *Parent,
uint64_t Size) { … }
llvm::MDNode *CodeGenTBAA::getChar() { … }
static bool TypeHasMayAlias(QualType QTy) { … }
static bool isValidBaseType(QualType QTy) { … }
llvm::MDNode *CodeGenTBAA::getTypeInfoHelper(const Type *Ty) { … }
llvm::MDNode *CodeGenTBAA::getTypeInfo(QualType QTy) { … }
TBAAAccessInfo CodeGenTBAA::getAccessInfo(QualType AccessType) { … }
TBAAAccessInfo CodeGenTBAA::getVTablePtrAccessInfo(llvm::Type *VTablePtrType) { … }
bool
CodeGenTBAA::CollectFields(uint64_t BaseOffset,
QualType QTy,
SmallVectorImpl<llvm::MDBuilder::TBAAStructField> &
Fields,
bool MayAlias) { … }
llvm::MDNode *
CodeGenTBAA::getTBAAStructInfo(QualType QTy) { … }
llvm::MDNode *CodeGenTBAA::getBaseTypeInfoHelper(const Type *Ty) { … }
llvm::MDNode *CodeGenTBAA::getValidBaseTypeInfo(QualType QTy) { … }
llvm::MDNode *CodeGenTBAA::getBaseTypeInfo(QualType QTy) { … }
llvm::MDNode *CodeGenTBAA::getAccessTagInfo(TBAAAccessInfo Info) { … }
TBAAAccessInfo CodeGenTBAA::mergeTBAAInfoForCast(TBAAAccessInfo SourceInfo,
TBAAAccessInfo TargetInfo) { … }
TBAAAccessInfo
CodeGenTBAA::mergeTBAAInfoForConditionalOperator(TBAAAccessInfo InfoA,
TBAAAccessInfo InfoB) { … }
TBAAAccessInfo
CodeGenTBAA::mergeTBAAInfoForMemoryTransfer(TBAAAccessInfo DestInfo,
TBAAAccessInfo SrcInfo) { … }