summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Bitcode
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2007-05-03 22:18:21 +0000
committerChris Lattner <sabre@nondot.org>2007-05-03 22:18:21 +0000
commit6be58c65d4f7408b183e4267cdc82662df5269c6 (patch)
treea945eb31028513467135a60232684057e26cc65a /llvm/lib/Bitcode
parent5a800309afeee25bdb7d31230c210989e0a1a24d (diff)
downloadbcm5719-llvm-6be58c65d4f7408b183e4267cdc82662df5269c6.tar.gz
bcm5719-llvm-6be58c65d4f7408b183e4267cdc82662df5269c6.zip
fix encoding of BB names in the symtab
llvm-svn: 36704
Diffstat (limited to 'llvm/lib/Bitcode')
-rw-r--r--llvm/lib/Bitcode/Reader/BitcodeReader.cpp10
-rw-r--r--llvm/lib/Bitcode/Writer/BitcodeWriter.cpp14
-rw-r--r--llvm/lib/Bitcode/Writer/ValueEnumerator.cpp2
3 files changed, 21 insertions, 5 deletions
diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
index 7de1662b38d..1ab9f54d5bf 100644
--- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
+++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
@@ -411,6 +411,16 @@ bool BitcodeReader::ParseValueSymbolTable() {
V->setName(&ValueName[0], ValueName.size());
ValueName.clear();
break;
+ case bitc::VST_CODE_BBENTRY:
+ if (ConvertToString(Record, 1, ValueName))
+ return Error("Invalid VST_BBENTRY record");
+ BasicBlock *BB = getBasicBlock(Record[0]);
+ if (BB == 0)
+ return Error("Invalid BB ID in VST_BBENTRY record");
+
+ BB->setName(&ValueName[0], ValueName.size());
+ ValueName.clear();
+ break;
}
}
}
diff --git a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
index fbad7ff1255..68f0a0d1637 100644
--- a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
+++ b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
@@ -669,7 +669,6 @@ static void WriteInstruction(const Instruction &I, ValueEnumerator &VE,
}
break;
}
-
case Instruction::VAArg:
Code = bitc::FUNC_CODE_INST_VAARG;
Vals.push_back(VE.getTypeID(I.getOperand(0)->getType())); // valistty
@@ -697,16 +696,23 @@ static void WriteValueSymbolTable(const ValueSymbolTable &VST,
SI != SE; ++SI) {
unsigned AbbrevToUse = 0;
- // VST_ENTRY: [valueid, namelen, namechar x N]
- NameVals.push_back(VE.getValueID(SI->getValue()));
+ // VST_ENTRY: [valueid, namelen, namechar x N]
+ // VST_BBENTRY: [bbid, namelen, namechar x N]
+ unsigned Code;
+ if (isa<BasicBlock>(SI->getValue())) {
+ Code = bitc::VST_CODE_BBENTRY;
+ } else {
+ Code = bitc::VST_CODE_ENTRY;
+ }
+ NameVals.push_back(VE.getValueID(SI->getValue()));
NameVals.push_back(SI->getKeyLength());
for (const char *P = SI->getKeyData(),
*E = SI->getKeyData()+SI->getKeyLength(); P != E; ++P)
NameVals.push_back((unsigned char)*P);
// Emit the finished record.
- Stream.EmitRecord(bitc::VST_CODE_ENTRY, NameVals, AbbrevToUse);
+ Stream.EmitRecord(Code, NameVals, AbbrevToUse);
NameVals.clear();
}
Stream.ExitBlock();
diff --git a/llvm/lib/Bitcode/Writer/ValueEnumerator.cpp b/llvm/lib/Bitcode/Writer/ValueEnumerator.cpp
index fab1d9c684d..4d3f0fd792a 100644
--- a/llvm/lib/Bitcode/Writer/ValueEnumerator.cpp
+++ b/llvm/lib/Bitcode/Writer/ValueEnumerator.cpp
@@ -180,8 +180,8 @@ void ValueEnumerator::incorporateFunction(const Function &F) {
isa<InlineAsm>(*OI))
EnumerateValue(*OI);
}
- ValueMap[BB] = BasicBlocks.size();
BasicBlocks.push_back(BB);
+ ValueMap[BB] = BasicBlocks.size();
}
FirstInstID = Values.size();
OpenPOWER on IntegriCloud