fix encoding of BB names in the symtab

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36704 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner
2007-05-03 22:18:21 +00:00
parent b7dd88fa7d
commit e825ed5a03
3 changed files with 21 additions and 5 deletions

View File

@@ -411,6 +411,16 @@ bool BitcodeReader::ParseValueSymbolTable() {
V->setName(&ValueName[0], ValueName.size()); V->setName(&ValueName[0], ValueName.size());
ValueName.clear(); ValueName.clear();
break; 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;
} }
} }
} }

View File

@@ -669,7 +669,6 @@ static void WriteInstruction(const Instruction &I, ValueEnumerator &VE,
} }
break; break;
} }
case Instruction::VAArg: case Instruction::VAArg:
Code = bitc::FUNC_CODE_INST_VAARG; Code = bitc::FUNC_CODE_INST_VAARG;
Vals.push_back(VE.getTypeID(I.getOperand(0)->getType())); // valistty Vals.push_back(VE.getTypeID(I.getOperand(0)->getType())); // valistty
@@ -697,16 +696,23 @@ static void WriteValueSymbolTable(const ValueSymbolTable &VST,
SI != SE; ++SI) { SI != SE; ++SI) {
unsigned AbbrevToUse = 0; unsigned AbbrevToUse = 0;
// VST_ENTRY: [valueid, namelen, namechar x N] // VST_ENTRY: [valueid, namelen, namechar x N]
NameVals.push_back(VE.getValueID(SI->getValue())); // 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()); NameVals.push_back(SI->getKeyLength());
for (const char *P = SI->getKeyData(), for (const char *P = SI->getKeyData(),
*E = SI->getKeyData()+SI->getKeyLength(); P != E; ++P) *E = SI->getKeyData()+SI->getKeyLength(); P != E; ++P)
NameVals.push_back((unsigned char)*P); NameVals.push_back((unsigned char)*P);
// Emit the finished record. // Emit the finished record.
Stream.EmitRecord(bitc::VST_CODE_ENTRY, NameVals, AbbrevToUse); Stream.EmitRecord(Code, NameVals, AbbrevToUse);
NameVals.clear(); NameVals.clear();
} }
Stream.ExitBlock(); Stream.ExitBlock();

View File

@@ -180,8 +180,8 @@ void ValueEnumerator::incorporateFunction(const Function &F) {
isa<InlineAsm>(*OI)) isa<InlineAsm>(*OI))
EnumerateValue(*OI); EnumerateValue(*OI);
} }
ValueMap[BB] = BasicBlocks.size();
BasicBlocks.push_back(BB); BasicBlocks.push_back(BB);
ValueMap[BB] = BasicBlocks.size();
} }
FirstInstID = Values.size(); FirstInstID = Values.size();