diff options
author | Manman Ren <manman.ren@gmail.com> | 2013-08-29 23:17:54 +0000 |
---|---|---|
committer | Manman Ren <manman.ren@gmail.com> | 2013-08-29 23:17:54 +0000 |
commit | 3a0e9b50f3a9031217a8fe209398ec37c54774eb (patch) | |
tree | b8a247c41066863b5207395f0ac77d3452f2e6db /include | |
parent | 88acef0b8e93d065aa4de164422ce4c546a7cd5f (diff) | |
download | llvm-3a0e9b50f3a9031217a8fe209398ec37c54774eb.tar.gz llvm-3a0e9b50f3a9031217a8fe209398ec37c54774eb.tar.bz2 llvm-3a0e9b50f3a9031217a8fe209398ec37c54774eb.tar.xz |
DIBuilder: retain a type when created with a unique identifier.
createClassType, createStructType, createUnionType, createEnumerationType,
and createForwardDecl will retain a type when created with a unique identifier,
to make sure they are treated as used even when all uses are replaced with
the identifiers.
Use TrackingVH<MDNode> instead of MDNode in AllRetainTypes, since the created
node can later be updated.
The change will be tested when clients of DIBuilder start to pass in non-empty
unique identifier.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189621 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r-- | include/llvm/DIBuilder.h | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/include/llvm/DIBuilder.h b/include/llvm/DIBuilder.h index a4c43473b1..d4dfadc5c7 100644 --- a/include/llvm/DIBuilder.h +++ b/include/llvm/DIBuilder.h @@ -18,6 +18,7 @@ #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/StringRef.h" #include "llvm/Support/DataTypes.h" +#include "llvm/Support/ValueHandle.h" namespace llvm { class BasicBlock; @@ -65,7 +66,9 @@ namespace llvm { Function *ValueFn; // llvm.dbg.value SmallVector<Value *, 4> AllEnumTypes; - SmallVector<Value *, 4> AllRetainTypes; + /// Use TrackingVH to collect RetainTypes, since they can be updated + /// later on. + SmallVector<TrackingVH<MDNode>, 4> AllRetainTypes; SmallVector<Value *, 4> AllSubprograms; SmallVector<Value *, 4> AllGVs; SmallVector<Value *, 4> AllImportedModules; |