//===--- CodeGenTBAA.h - TBAA information for LLVM CodeGen ------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // This is the code that manages TBAA information and defines the TBAA policy // for the optimizer to use. // //===----------------------------------------------------------------------===// #ifndef LLVM_CLANG_LIB_CODEGEN_CODEGENTBAA_H #define LLVM_CLANG_LIB_CODEGEN_CODEGENTBAA_H #include "clang/AST/Type.h" #include "clang/Basic/LLVM.h" #include "llvm/ADT/DenseMap.h" #include "llvm/IR/MDBuilder.h" #include "llvm/IR/Metadata.h" namespace clang { class ASTContext; class CodeGenOptions; class LangOptions; class QualType; class Type; namespace CodeGen { class CodeGenTypes; // TBAAAccessKind - A kind of TBAA memory access descriptor. enum class TBAAAccessKind : unsigned { … }; // TBAAAccessInfo - Describes a memory access in terms of TBAA. struct TBAAAccessInfo { … }; /// CodeGenTBAA - This class organizes the cross-module state that is used /// while lowering AST types to LLVM types. class CodeGenTBAA { … }; } // end namespace CodeGen } // end namespace clang namespace llvm { template<> struct DenseMapInfo<clang::CodeGen::TBAAAccessInfo> { … }; } // end namespace llvm #endif