fix encoding of BB names in the symtab

llvm-svn: 36704
This commit is contained in:
Chris Lattner 2007-05-03 22:18:21 +00:00
parent 5a800309af
commit 6be58c65d4
3 changed files with 21 additions and 5 deletions

View File

@ -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;
}
}
}

View File

@ -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();

View File

@ -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();