diff options
author | Devang Patel <dpatel@apple.com> | 2007-10-25 18:32:36 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2007-10-25 18:32:36 +0000 |
commit | 30ec9972be5a5af1f7a2277360dfa3aa1540b4fa (patch) | |
tree | 40aec197a326c44f78a45d114feaccadb83c1929 /CodeGen/CodeGenTypes.h | |
parent | 0a449eed1dd2439b4b9c0a6291084816eab390c1 (diff) |
Cache llvm::Type through PATypeHolder.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43355 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'CodeGen/CodeGenTypes.h')
-rw-r--r-- | CodeGen/CodeGenTypes.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/CodeGen/CodeGenTypes.h b/CodeGen/CodeGenTypes.h index de20173d93..7f2641146d 100644 --- a/CodeGen/CodeGenTypes.h +++ b/CodeGen/CodeGenTypes.h @@ -20,6 +20,7 @@ namespace llvm { class Module; class Type; + class PATypeHolder; } namespace clang { @@ -27,6 +28,7 @@ namespace clang { class TagDecl; class TargetInfo; class QualType; + class Type; class FunctionTypeProto; class FieldDecl; class RecordDecl; @@ -77,12 +79,18 @@ class CodeGenTypes { /// record. llvm::DenseMap<const RecordDecl *, llvm::Type *> RecordTypesToResolve; + /// TypeHolderMap - This map keeps cache of llvm::Types (through PATypeHolder) + /// and maps llvm::Types to corresponding clang::Type. llvm::PATypeHolder is + /// used instead of llvm::Type because it allows us to bypass potential + /// dangling type pointers due to type refinement on llvm side. + llvm::DenseMap<Type *, llvm::PATypeHolder *> TypeHolderMap; public: CodeGenTypes(ASTContext &Ctx, llvm::Module &M); ~CodeGenTypes(); TargetInfo &getTarget() const { return Target; } + const llvm::Type *ConvertNewType(QualType T); const llvm::Type *ConvertType(QualType T); void DecodeArgumentTypes(const FunctionTypeProto &FTP, std::vector<const llvm::Type*> &ArgTys); |