Lines Matching full:llvm
1 //===--- CodeGenTBAA.h - TBAA information for LLVM CodeGen ------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
18 #include "clang/Basic/LLVM.h"
19 #include "llvm/ADT/DenseMap.h"
20 #include "llvm/IR/MDBuilder.h"
22 namespace llvm {
39 TBAAPathTag(const Type *B, const llvm::MDNode *A, uint64_t O)
42 const llvm::MDNode *AccessN;
47 /// while lowering AST types to LLVM types.
55 llvm::MDBuilder MDHelper;
57 /// MetadataCache - This maps clang::Types to scalar llvm::MDNodes describing
59 llvm::DenseMap<const Type *, llvm::MDNode *> MetadataCache;
61 llvm::DenseMap<const Type *, llvm::MDNode *> StructTypeMetadataCache;
63 llvm::DenseMap<TBAAPathTag, llvm::MDNode *> StructTagMetadataCache;
65 llvm::DenseMap<const llvm::MDNode *, llvm::MDNode *> ScalarTagMetadataCache;
67 /// StructMetadataCache - This maps clang::Types to llvm::MDNodes describing
69 llvm::DenseMap<const Type *, llvm::MDNode *> StructMetadataCache;
71 llvm::MDNode *Root;
72 llvm::MDNode *Char;
76 llvm::MDNode *getRoot();
80 llvm::MDNode *getChar();
86 SmallVectorImpl<llvm::MDBuilder::TBAAStructField> &Fields,
92 llvm::MDNode *createTBAAScalarType(StringRef Name, llvm::MDNode *Parent);
95 CodeGenTBAA(ASTContext &Ctx, llvm::LLVMContext &VMContext,
103 llvm::MDNode *getTBAAInfo(QualType QTy);
107 llvm::MDNode *getTBAAInfoForVTablePtr();
111 llvm::MDNode *getTBAAStructInfo(QualType QTy);
114 llvm::MDNode *getTBAAStructTypeInfo(QualType QType);
117 llvm::MDNode *getTBAAStructTagInfo(QualType BaseQType,
118 llvm::MDNode *AccessNode, uint64_t Offset);
121 llvm::MDNode *getTBAAScalarTagInfo(llvm::MDNode *AccessNode);
127 namespace llvm {
158 } // end namespace llvm