summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Bitcode/Writer
diff options
context:
space:
mode:
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>2016-03-27 23:22:31 +0000
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>2016-03-27 23:22:31 +0000
commit2766e4d4886c47a310b323c8f400162f6dd9b046 (patch)
tree0e152e47ad90e1b664eb8ab90f607918d49a2ed9 /llvm/lib/Bitcode/Writer
parent6565a0d4b2c98722eb8fee9093cdde4f37928986 (diff)
downloadbcm5719-llvm-2766e4d4886c47a310b323c8f400162f6dd9b046.tar.gz
bcm5719-llvm-2766e4d4886c47a310b323c8f400162f6dd9b046.zip
BitcodeWriter: Simplify tracking of function-local metadata, NFC
We don't really need a separate vector here; instead, point at a range inside the main MDs array. This matches how r264551 references the ranges of strings and non-strings. llvm-svn: 264552
Diffstat (limited to 'llvm/lib/Bitcode/Writer')
-rw-r--r--llvm/lib/Bitcode/Writer/BitcodeWriter.cpp8
-rw-r--r--llvm/lib/Bitcode/Writer/ValueEnumerator.cpp4
-rw-r--r--llvm/lib/Bitcode/Writer/ValueEnumerator.h5
3 files changed, 5 insertions, 12 deletions
diff --git a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
index 80da91aa47e..08724bd8c81 100644
--- a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
+++ b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
@@ -1431,15 +1431,13 @@ static void WriteFunctionLocalMetadata(const Function &F,
BitstreamWriter &Stream) {
bool StartedMetadataBlock = false;
SmallVector<uint64_t, 64> Record;
- const SmallVectorImpl<const LocalAsMetadata *> &MDs =
- VE.getFunctionLocalMDs();
- for (unsigned i = 0, e = MDs.size(); i != e; ++i) {
- assert(MDs[i] && "Expected valid function-local metadata");
+ for (const Metadata *MD : VE.getFunctionMDs()) {
+ auto *Local = cast<LocalAsMetadata>(MD);
if (!StartedMetadataBlock) {
Stream.EnterSubblock(bitc::METADATA_BLOCK_ID, 3);
StartedMetadataBlock = true;
}
- WriteValueAsMetadata(MDs[i], VE, Stream, Record);
+ WriteValueAsMetadata(Local, VE, Stream, Record);
}
if (StartedMetadataBlock)
diff --git a/llvm/lib/Bitcode/Writer/ValueEnumerator.cpp b/llvm/lib/Bitcode/Writer/ValueEnumerator.cpp
index 69cafb7eeee..812baf20278 100644
--- a/llvm/lib/Bitcode/Writer/ValueEnumerator.cpp
+++ b/llvm/lib/Bitcode/Writer/ValueEnumerator.cpp
@@ -554,9 +554,6 @@ void ValueEnumerator::EnumerateFunctionLocalMetadata(
MetadataID = MDs.size();
EnumerateValue(Local->getValue());
-
- // Also, collect all function-local metadata for easy access.
- FunctionLocalMDs.push_back(Local);
}
void ValueEnumerator::organizeMetadata() {
@@ -778,7 +775,6 @@ void ValueEnumerator::purgeFunction() {
Values.resize(NumModuleValues);
MDs.resize(NumModuleMDs);
BasicBlocks.clear();
- FunctionLocalMDs.clear();
}
static void IncorporateFunctionInfoGlobalBBIDs(const Function *F,
diff --git a/llvm/lib/Bitcode/Writer/ValueEnumerator.h b/llvm/lib/Bitcode/Writer/ValueEnumerator.h
index fd09a695a99..7bfe9d98655 100644
--- a/llvm/lib/Bitcode/Writer/ValueEnumerator.h
+++ b/llvm/lib/Bitcode/Writer/ValueEnumerator.h
@@ -63,7 +63,6 @@ private:
ComdatSetType Comdats;
std::vector<const Metadata *> MDs;
- SmallVector<const LocalAsMetadata *, 8> FunctionLocalMDs;
typedef DenseMap<const Metadata *, unsigned> MetadataMapType;
MetadataMapType MetadataMap;
unsigned NumMDStrings = 0;
@@ -161,8 +160,8 @@ public:
ArrayRef<const Metadata *> getNonMDStrings() const {
return makeArrayRef(MDs).slice(NumMDStrings);
}
- const SmallVectorImpl<const LocalAsMetadata *> &getFunctionLocalMDs() const {
- return FunctionLocalMDs;
+ ArrayRef<const Metadata *> getFunctionMDs() const {
+ return makeArrayRef(MDs).slice(NumModuleMDs);
}
const TypeList &getTypes() const { return Types; }
OpenPOWER on IntegriCloud