summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorManman Ren <manman.ren@gmail.com>2013-08-29 23:17:54 +0000
committerManman Ren <manman.ren@gmail.com>2013-08-29 23:17:54 +0000
commit3a0e9b50f3a9031217a8fe209398ec37c54774eb (patch)
treeb8a247c41066863b5207395f0ac77d3452f2e6db /include
parent88acef0b8e93d065aa4de164422ce4c546a7cd5f (diff)
downloadllvm-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.h5
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;