aboutsummaryrefslogtreecommitdiff
path: root/lib/Bytecode/Writer/Writer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Bytecode/Writer/Writer.cpp')
-rw-r--r--lib/Bytecode/Writer/Writer.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/lib/Bytecode/Writer/Writer.cpp b/lib/Bytecode/Writer/Writer.cpp
index c3fad712f2..6654fd1b02 100644
--- a/lib/Bytecode/Writer/Writer.cpp
+++ b/lib/Bytecode/Writer/Writer.cpp
@@ -243,6 +243,16 @@ void BytecodeWriter::outputType(const Type *T) {
break;
}
+ case Type::PackedTyID: {
+ const PackedType *PT = cast<PackedType>(T);
+ int Slot = Table.getSlot(PT->getElementType());
+ assert(Slot != -1 && "Type used but not available!!");
+ output_typeid((unsigned)Slot);
+ output_vbr(PT->getNumElements());
+ break;
+ }
+
+
case Type::StructTyID: {
const StructType *ST = cast<StructType>(T);
@@ -339,6 +349,17 @@ void BytecodeWriter::outputConstant(const Constant *CPV) {
break;
}
+ case Type::PackedTyID: {
+ const ConstantPacked *CP = cast<ConstantPacked>(CPV);
+
+ for (unsigned i = 0, e = CP->getNumOperands(); i != e; ++i) {
+ int Slot = Table.getSlot(CP->getOperand(i));
+ assert(Slot != -1 && "Constant used but not available!!");
+ output_vbr((unsigned)Slot);
+ }
+ break;
+ }
+
case Type::StructTyID: {
const ConstantStruct *CPS = cast<ConstantStruct>(CPV);