split ReadAbbreviatedLiteral out of ReadAbbreviatedField.

llvm-svn: 68463
This commit is contained in:
Chris Lattner 2009-04-06 21:37:10 +00:00
parent 15b6b3bae7
commit 13195e0718
1 changed files with 12 additions and 6 deletions

View File

@ -337,13 +337,17 @@ private:
//===--------------------------------------------------------------------===//
private:
void ReadAbbreviatedLiteral(const BitCodeAbbrevOp &Op,
SmallVectorImpl<uint64_t> &Vals) {
assert(Op.isLiteral() && "Not a literal");
// If the abbrev specifies the literal value to use, use it.
Vals.push_back(Op.getLiteralValue());
}
void ReadAbbreviatedField(const BitCodeAbbrevOp &Op,
SmallVectorImpl<uint64_t> &Vals) {
if (Op.isLiteral()) {
// If the abbrev specifies the literal value to use, use it.
Vals.push_back(Op.getLiteralValue());
return;
}
assert(!Op.isLiteral() && "Use ReadAbbreviatedLiteral for literals!");
// Decode the value as we are commanded.
switch (Op.getEncoding()) {
default: assert(0 && "Unknown encoding!");
@ -374,7 +378,9 @@ public:
for (unsigned i = 0, e = Abbv->getNumOperandInfos(); i != e; ++i) {
const BitCodeAbbrevOp &Op = Abbv->getOperandInfo(i);
if (Op.isLiteral() || Op.getEncoding() != BitCodeAbbrevOp::Array) {
if (Op.isLiteral()) {
ReadAbbreviatedLiteral(Op, Vals);
} else if (Op.getEncoding() != BitCodeAbbrevOp::Array) {
ReadAbbreviatedField(Op, Vals);
} else {
// Array case. Read the number of elements as a vbr6.