diff options
Diffstat (limited to 'lib/Bitcode')
-rw-r--r-- | lib/Bitcode/NaCl/Reader/NaClBitcodeReader.cpp | 36 | ||||
-rw-r--r-- | lib/Bitcode/NaCl/Writer/NaClBitcodeWriter.cpp | 47 |
2 files changed, 1 insertions, 82 deletions
diff --git a/lib/Bitcode/NaCl/Reader/NaClBitcodeReader.cpp b/lib/Bitcode/NaCl/Reader/NaClBitcodeReader.cpp index 0eaab6d78b..9e8c398172 100644 --- a/lib/Bitcode/NaCl/Reader/NaClBitcodeReader.cpp +++ b/lib/Bitcode/NaCl/Reader/NaClBitcodeReader.cpp @@ -402,8 +402,6 @@ bool NaClBitcodeReader::ParseTypeTableBody() { SmallVector<uint64_t, 64> Record; unsigned NumRecords = 0; - SmallString<64> TypeName; - // Read all the records for this type table. while (1) { NaClBitstreamEntry Entry = Stream.advanceSkippingSubblocks(); @@ -505,40 +503,6 @@ bool NaClBitcodeReader::ParseTypeTableBody() { ResultTy = StructType::get(Context, EltTys, Record[0]); break; } - case naclbitc::TYPE_CODE_STRUCT_NAME: // STRUCT_NAME: [strchr x N] - if (ConvertToString(Record, 0, TypeName)) - return Error("Invalid STRUCT_NAME record"); - continue; - - case naclbitc::TYPE_CODE_STRUCT_NAMED: { // STRUCT: [ispacked, eltty x N] - if (Record.size() < 1) - return Error("Invalid STRUCT type record"); - - if (NumRecords >= TypeList.size()) - return Error("invalid TYPE table"); - - // Check to see if this was forward referenced, if so fill in the temp. - StructType *Res = cast_or_null<StructType>(TypeList[NumRecords]); - if (Res) { - Res->setName(TypeName); - TypeList[NumRecords] = 0; - } else // Otherwise, create a new struct. - Res = StructType::create(Context, TypeName); - TypeName.clear(); - - SmallVector<Type*, 8> EltTys; - for (unsigned i = 1, e = Record.size(); i != e; ++i) { - if (Type *T = getTypeByID(Record[i])) - EltTys.push_back(T); - else - break; - } - if (EltTys.size() != Record.size()-1) - return Error("invalid STRUCT type record"); - Res->setBody(EltTys, Record[0]); - ResultTy = Res; - break; - } case naclbitc::TYPE_CODE_ARRAY: // ARRAY: [numelts, eltty] if (Record.size() < 2) return Error("Invalid ARRAY type record"); diff --git a/lib/Bitcode/NaCl/Writer/NaClBitcodeWriter.cpp b/lib/Bitcode/NaCl/Writer/NaClBitcodeWriter.cpp index d4f7c51749..41a2501266 100644 --- a/lib/Bitcode/NaCl/Writer/NaClBitcodeWriter.cpp +++ b/lib/Bitcode/NaCl/Writer/NaClBitcodeWriter.cpp @@ -95,8 +95,6 @@ enum { TYPE_POINTER_ABBREV = naclbitc::FIRST_APPLICATION_ABBREV, TYPE_FUNCTION_ABBREV, TYPE_STRUCT_ANON_ABBREV, - TYPE_STRUCT_NAME_ABBREV, - TYPE_STRUCT_NAMED_ABBREV, TYPE_ARRAY_ABBREV, TYPE_MAX_ABBREV = TYPE_ARRAY_ABBREV }; @@ -163,22 +161,6 @@ static unsigned GetEncodedCallingConv(CallingConv::ID conv) { } } -static void WriteStringRecord(unsigned Code, StringRef Str, - unsigned AbbrevToUse, - NaClBitstreamWriter &Stream) { - SmallVector<unsigned, 64> Vals; - - // Code: [strchar x N] - for (unsigned i = 0, e = Str.size(); i != e; ++i) { - if (AbbrevToUse && !NaClBitCodeAbbrevOp::isChar6(Str[i])) - AbbrevToUse = 0; - Vals.push_back(Str[i]); - } - - // Emit the finished record. - Stream.EmitRecord(Code, Vals, AbbrevToUse); -} - /// WriteTypeTable - Write out the type table for a module. static void WriteTypeTable(const NaClValueEnumerator &VE, NaClBitstreamWriter &Stream) { @@ -228,23 +210,6 @@ static void WriteTypeTable(const NaClValueEnumerator &VE, if (TYPE_STRUCT_ANON_ABBREV != Stream.EmitAbbrev(Abbv)) llvm_unreachable("Unexpected abbrev ordering!"); - // Abbrev for TYPE_CODE_STRUCT_NAME. - Abbv = new NaClBitCodeAbbrev(); - Abbv->Add(NaClBitCodeAbbrevOp(naclbitc::TYPE_CODE_STRUCT_NAME)); - Abbv->Add(NaClBitCodeAbbrevOp(NaClBitCodeAbbrevOp::Array)); - Abbv->Add(NaClBitCodeAbbrevOp(NaClBitCodeAbbrevOp::Char6)); - if (TYPE_STRUCT_NAME_ABBREV != Stream.EmitAbbrev(Abbv)) - llvm_unreachable("Unexpected abbrev ordering!"); - - // Abbrev for TYPE_CODE_STRUCT_NAMED. - Abbv = new NaClBitCodeAbbrev(); - Abbv->Add(NaClBitCodeAbbrevOp(naclbitc::TYPE_CODE_STRUCT_NAMED)); - Abbv->Add(NaClBitCodeAbbrevOp(NaClBitCodeAbbrevOp::Fixed, 1)); // ispacked - Abbv->Add(NaClBitCodeAbbrevOp(NaClBitCodeAbbrevOp::Array)); - Abbv->Add(NaClBitCodeAbbrevOp(NaClBitCodeAbbrevOp::Fixed, NumBits)); - if (TYPE_STRUCT_NAMED_ABBREV != Stream.EmitAbbrev(Abbv)) - llvm_unreachable("Unexpected abbrev ordering!"); - // Abbrev for TYPE_CODE_ARRAY. Abbv = new NaClBitCodeAbbrev(); Abbv->Add(NaClBitCodeAbbrevOp(naclbitc::TYPE_CODE_ARRAY)); @@ -309,17 +274,7 @@ static void WriteTypeTable(const NaClValueEnumerator &VE, Code = naclbitc::TYPE_CODE_STRUCT_ANON; AbbrevToUse = TYPE_STRUCT_ANON_ABBREV; } else { - if (ST->isOpaque()) { - report_fatal_error("Opaque structs not supported in PNaCl bitcode"); - } else { - Code = naclbitc::TYPE_CODE_STRUCT_NAMED; - AbbrevToUse = TYPE_STRUCT_NAMED_ABBREV; - } - - // Emit the name if it is present. - if (!ST->getName().empty()) - WriteStringRecord(naclbitc::TYPE_CODE_STRUCT_NAME, ST->getName(), - TYPE_STRUCT_NAME_ABBREV, Stream); + report_fatal_error("Non-anon structs not supported in PNaCl bitcode"); } break; } |