Changes in directory llvm/lib/Bitcode/Reader:
BitcodeReader.cpp updated: 1.41 -> 1.42 --- Log message: implement the 'string constant' optimization. This shrinks kc.bit from 2878544 to 2815788 --- Diffs of the changes: (+15 -1) BitcodeReader.cpp | 16 +++++++++++++++- 1 files changed, 15 insertions(+), 1 deletion(-) Index: llvm/lib/Bitcode/Reader/BitcodeReader.cpp diff -u llvm/lib/Bitcode/Reader/BitcodeReader.cpp:1.41 llvm/lib/Bitcode/Reader/BitcodeReader.cpp:1.42 --- llvm/lib/Bitcode/Reader/BitcodeReader.cpp:1.41 Sat May 5 19:21:25 2007 +++ llvm/lib/Bitcode/Reader/BitcodeReader.cpp Sat May 5 19:35:24 2007 @@ -642,7 +642,21 @@ } break; } - + case bitc::CST_CODE_STRING: { // STRING: [values] + if (Record.empty()) + return Error("Invalid CST_AGGREGATE record"); + + const ArrayType *ATy = cast<ArrayType>(CurTy); + const Type *EltTy = ATy->getElementType(); + + unsigned Size = Record.size(); + std::vector<Constant*> Elts; + + for (unsigned i = 0; i != Size; ++i) + Elts.push_back(ConstantInt::get(EltTy, Record[i])); + V = ConstantArray::get(ATy, Elts); + break; + } case bitc::CST_CODE_CE_BINOP: { // CE_BINOP: [opcode, opval, opval] if (Record.size() < 3) return Error("Invalid CE_BINOP record"); int Opc = GetDecodedBinaryOpcode(Record[0], CurTy); _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits