diff options
author | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2015-08-03 17:26:41 +0000 |
---|---|---|
committer | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2015-08-03 17:26:41 +0000 |
commit | 55ca964e944b610bfa09dd52490772b3d9f92fea (patch) | |
tree | f748d9e2304be9b0b442f37f7d606e336bcd39f0 /llvm/lib/IR/MetadataImpl.h | |
parent | 910dde7ab2f725732222387af0d93f898afec42b (diff) | |
download | bcm5719-llvm-55ca964e944b610bfa09dd52490772b3d9f92fea.tar.gz bcm5719-llvm-55ca964e944b610bfa09dd52490772b3d9f92fea.zip |
DI: Disallow uniquable DICompileUnits
Since r241097, `DIBuilder` has only created distinct `DICompileUnit`s.
The backend is liable to start relying on that (if it hasn't already),
so make uniquable `DICompileUnit`s illegal and automatically upgrade old
bitcode. This is a nice cleanup, since we can remove an unnecessary
`DenseSet` (and the associated uniquing info) from `LLVMContextImpl`.
Almost all the testcases were updated with this script:
git grep -e '= !DICompileUnit' -l -- test |
grep -v test/Bitcode |
xargs sed -i '' -e 's,= !DICompileUnit,= distinct !DICompileUnit,'
I imagine something similar should work for out-of-tree testcases.
llvm-svn: 243885
Diffstat (limited to 'llvm/lib/IR/MetadataImpl.h')
-rw-r--r-- | llvm/lib/IR/MetadataImpl.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/llvm/lib/IR/MetadataImpl.h b/llvm/lib/IR/MetadataImpl.h index 662a50eb1bd..b9137460bd2 100644 --- a/llvm/lib/IR/MetadataImpl.h +++ b/llvm/lib/IR/MetadataImpl.h @@ -26,6 +26,19 @@ static T *getUniqued(DenseSet<T *, InfoT> &Store, return I == Store.end() ? nullptr : *I; } +template <class T> T *MDNode::storeImpl(T *N, StorageType Storage) { + switch (Storage) { + case Uniqued: + llvm_unreachable("Cannot unique without a uniquing-store"); + case Distinct: + N->storeDistinctInContext(); + break; + case Temporary: + break; + } + return N; +} + template <class T, class StoreT> T *MDNode::storeImpl(T *N, StorageType Storage, StoreT &Store) { switch (Storage) { |