xref: /llvm-project/llvm/lib/Bitcode/Reader/BitcodeReader.cpp (revision 093cb79d4bcbe3cb8fd0bda40137e2c9415b67f1)
1 //===- BitcodeReader.cpp - Internal BitcodeReader implementation ----------===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This header defines the BitcodeReader class.
11 //
12 //===----------------------------------------------------------------------===//
13 
14 #include "llvm/Bitcode/ReaderWriter.h"
15 #include "BitcodeReader.h"
16 #include "llvm/Constants.h"
17 #include "llvm/DerivedTypes.h"
18 #include "llvm/InlineAsm.h"
19 #include "llvm/IntrinsicInst.h"
20 #include "llvm/Module.h"
21 #include "llvm/Operator.h"
22 #include "llvm/AutoUpgrade.h"
23 #include "llvm/ADT/SmallString.h"
24 #include "llvm/ADT/SmallVector.h"
25 #include "llvm/Support/MathExtras.h"
26 #include "llvm/Support/MemoryBuffer.h"
27 #include "llvm/OperandTraits.h"
28 using namespace llvm;
29 
30 void BitcodeReader::FreeState() {
31   if (BufferOwned)
32     delete Buffer;
33   Buffer = 0;
34   std::vector<PATypeHolder>().swap(TypeList);
35   ValueList.clear();
36   MDValueList.clear();
37 
38   std::vector<AttrListPtr>().swap(MAttributes);
39   std::vector<BasicBlock*>().swap(FunctionBBs);
40   std::vector<Function*>().swap(FunctionsWithBodies);
41   DeferredFunctionInfo.clear();
42   MDKindMap.clear();
43 }
44 
45 //===----------------------------------------------------------------------===//
46 //  Helper functions to implement forward reference resolution, etc.
47 //===----------------------------------------------------------------------===//
48 
49 /// ConvertToString - Convert a string from a record into an std::string, return
50 /// true on failure.
51 template<typename StrTy>
52 static bool ConvertToString(SmallVector<uint64_t, 64> &Record, unsigned Idx,
53                             StrTy &Result) {
54   if (Idx > Record.size())
55     return true;
56 
57   for (unsigned i = Idx, e = Record.size(); i != e; ++i)
58     Result += (char)Record[i];
59   return false;
60 }
61 
62 static GlobalValue::LinkageTypes GetDecodedLinkage(unsigned Val) {
63   switch (Val) {
64   default: // Map unknown/new linkages to external
65   case 0:  return GlobalValue::ExternalLinkage;
66   case 1:  return GlobalValue::WeakAnyLinkage;
67   case 2:  return GlobalValue::AppendingLinkage;
68   case 3:  return GlobalValue::InternalLinkage;
69   case 4:  return GlobalValue::LinkOnceAnyLinkage;
70   case 5:  return GlobalValue::DLLImportLinkage;
71   case 6:  return GlobalValue::DLLExportLinkage;
72   case 7:  return GlobalValue::ExternalWeakLinkage;
73   case 8:  return GlobalValue::CommonLinkage;
74   case 9:  return GlobalValue::PrivateLinkage;
75   case 10: return GlobalValue::WeakODRLinkage;
76   case 11: return GlobalValue::LinkOnceODRLinkage;
77   case 12: return GlobalValue::AvailableExternallyLinkage;
78   case 13: return GlobalValue::LinkerPrivateLinkage;
79   case 14: return GlobalValue::LinkerPrivateWeakLinkage;
80   }
81 }
82 
83 static GlobalValue::VisibilityTypes GetDecodedVisibility(unsigned Val) {
84   switch (Val) {
85   default: // Map unknown visibilities to default.
86   case 0: return GlobalValue::DefaultVisibility;
87   case 1: return GlobalValue::HiddenVisibility;
88   case 2: return GlobalValue::ProtectedVisibility;
89   }
90 }
91 
92 static int GetDecodedCastOpcode(unsigned Val) {
93   switch (Val) {
94   default: return -1;
95   case bitc::CAST_TRUNC   : return Instruction::Trunc;
96   case bitc::CAST_ZEXT    : return Instruction::ZExt;
97   case bitc::CAST_SEXT    : return Instruction::SExt;
98   case bitc::CAST_FPTOUI  : return Instruction::FPToUI;
99   case bitc::CAST_FPTOSI  : return Instruction::FPToSI;
100   case bitc::CAST_UITOFP  : return Instruction::UIToFP;
101   case bitc::CAST_SITOFP  : return Instruction::SIToFP;
102   case bitc::CAST_FPTRUNC : return Instruction::FPTrunc;
103   case bitc::CAST_FPEXT   : return Instruction::FPExt;
104   case bitc::CAST_PTRTOINT: return Instruction::PtrToInt;
105   case bitc::CAST_INTTOPTR: return Instruction::IntToPtr;
106   case bitc::CAST_BITCAST : return Instruction::BitCast;
107   }
108 }
109 static int GetDecodedBinaryOpcode(unsigned Val, const Type *Ty) {
110   switch (Val) {
111   default: return -1;
112   case bitc::BINOP_ADD:
113     return Ty->isFPOrFPVectorTy() ? Instruction::FAdd : Instruction::Add;
114   case bitc::BINOP_SUB:
115     return Ty->isFPOrFPVectorTy() ? Instruction::FSub : Instruction::Sub;
116   case bitc::BINOP_MUL:
117     return Ty->isFPOrFPVectorTy() ? Instruction::FMul : Instruction::Mul;
118   case bitc::BINOP_UDIV: return Instruction::UDiv;
119   case bitc::BINOP_SDIV:
120     return Ty->isFPOrFPVectorTy() ? Instruction::FDiv : Instruction::SDiv;
121   case bitc::BINOP_UREM: return Instruction::URem;
122   case bitc::BINOP_SREM:
123     return Ty->isFPOrFPVectorTy() ? Instruction::FRem : Instruction::SRem;
124   case bitc::BINOP_SHL:  return Instruction::Shl;
125   case bitc::BINOP_LSHR: return Instruction::LShr;
126   case bitc::BINOP_ASHR: return Instruction::AShr;
127   case bitc::BINOP_AND:  return Instruction::And;
128   case bitc::BINOP_OR:   return Instruction::Or;
129   case bitc::BINOP_XOR:  return Instruction::Xor;
130   }
131 }
132 
133 namespace llvm {
134 namespace {
135   /// @brief A class for maintaining the slot number definition
136   /// as a placeholder for the actual definition for forward constants defs.
137   class ConstantPlaceHolder : public ConstantExpr {
138     ConstantPlaceHolder();                       // DO NOT IMPLEMENT
139     void operator=(const ConstantPlaceHolder &); // DO NOT IMPLEMENT
140   public:
141     // allocate space for exactly one operand
142     void *operator new(size_t s) {
143       return User::operator new(s, 1);
144     }
145     explicit ConstantPlaceHolder(const Type *Ty, LLVMContext& Context)
146       : ConstantExpr(Ty, Instruction::UserOp1, &Op<0>(), 1) {
147       Op<0>() = UndefValue::get(Type::getInt32Ty(Context));
148     }
149 
150     /// @brief Methods to support type inquiry through isa, cast, and dyn_cast.
151     static inline bool classof(const ConstantPlaceHolder *) { return true; }
152     static bool classof(const Value *V) {
153       return isa<ConstantExpr>(V) &&
154              cast<ConstantExpr>(V)->getOpcode() == Instruction::UserOp1;
155     }
156 
157 
158     /// Provide fast operand accessors
159     //DECLARE_TRANSPARENT_OPERAND_ACCESSORS(Value);
160   };
161 }
162 
163 // FIXME: can we inherit this from ConstantExpr?
164 template <>
165 struct OperandTraits<ConstantPlaceHolder> : public FixedNumOperandTraits<1> {
166 };
167 }
168 
169 
170 void BitcodeReaderValueList::AssignValue(Value *V, unsigned Idx) {
171   if (Idx == size()) {
172     push_back(V);
173     return;
174   }
175 
176   if (Idx >= size())
177     resize(Idx+1);
178 
179   WeakVH &OldV = ValuePtrs[Idx];
180   if (OldV == 0) {
181     OldV = V;
182     return;
183   }
184 
185   // Handle constants and non-constants (e.g. instrs) differently for
186   // efficiency.
187   if (Constant *PHC = dyn_cast<Constant>(&*OldV)) {
188     ResolveConstants.push_back(std::make_pair(PHC, Idx));
189     OldV = V;
190   } else {
191     // If there was a forward reference to this value, replace it.
192     Value *PrevVal = OldV;
193     OldV->replaceAllUsesWith(V);
194     delete PrevVal;
195   }
196 }
197 
198 
199 Constant *BitcodeReaderValueList::getConstantFwdRef(unsigned Idx,
200                                                     const Type *Ty) {
201   if (Idx >= size())
202     resize(Idx + 1);
203 
204   if (Value *V = ValuePtrs[Idx]) {
205     assert(Ty == V->getType() && "Type mismatch in constant table!");
206     return cast<Constant>(V);
207   }
208 
209   // Create and return a placeholder, which will later be RAUW'd.
210   Constant *C = new ConstantPlaceHolder(Ty, Context);
211   ValuePtrs[Idx] = C;
212   return C;
213 }
214 
215 Value *BitcodeReaderValueList::getValueFwdRef(unsigned Idx, const Type *Ty) {
216   if (Idx >= size())
217     resize(Idx + 1);
218 
219   if (Value *V = ValuePtrs[Idx]) {
220     assert((Ty == 0 || Ty == V->getType()) && "Type mismatch in value table!");
221     return V;
222   }
223 
224   // No type specified, must be invalid reference.
225   if (Ty == 0) return 0;
226 
227   // Create and return a placeholder, which will later be RAUW'd.
228   Value *V = new Argument(Ty);
229   ValuePtrs[Idx] = V;
230   return V;
231 }
232 
233 /// ResolveConstantForwardRefs - Once all constants are read, this method bulk
234 /// resolves any forward references.  The idea behind this is that we sometimes
235 /// get constants (such as large arrays) which reference *many* forward ref
236 /// constants.  Replacing each of these causes a lot of thrashing when
237 /// building/reuniquing the constant.  Instead of doing this, we look at all the
238 /// uses and rewrite all the place holders at once for any constant that uses
239 /// a placeholder.
240 void BitcodeReaderValueList::ResolveConstantForwardRefs() {
241   // Sort the values by-pointer so that they are efficient to look up with a
242   // binary search.
243   std::sort(ResolveConstants.begin(), ResolveConstants.end());
244 
245   SmallVector<Constant*, 64> NewOps;
246 
247   while (!ResolveConstants.empty()) {
248     Value *RealVal = operator[](ResolveConstants.back().second);
249     Constant *Placeholder = ResolveConstants.back().first;
250     ResolveConstants.pop_back();
251 
252     // Loop over all users of the placeholder, updating them to reference the
253     // new value.  If they reference more than one placeholder, update them all
254     // at once.
255     while (!Placeholder->use_empty()) {
256       Value::use_iterator UI = Placeholder->use_begin();
257       User *U = *UI;
258 
259       // If the using object isn't uniqued, just update the operands.  This
260       // handles instructions and initializers for global variables.
261       if (!isa<Constant>(U) || isa<GlobalValue>(U)) {
262         UI.getUse().set(RealVal);
263         continue;
264       }
265 
266       // Otherwise, we have a constant that uses the placeholder.  Replace that
267       // constant with a new constant that has *all* placeholder uses updated.
268       Constant *UserC = cast<Constant>(U);
269       for (User::op_iterator I = UserC->op_begin(), E = UserC->op_end();
270            I != E; ++I) {
271         Value *NewOp;
272         if (!isa<ConstantPlaceHolder>(*I)) {
273           // Not a placeholder reference.
274           NewOp = *I;
275         } else if (*I == Placeholder) {
276           // Common case is that it just references this one placeholder.
277           NewOp = RealVal;
278         } else {
279           // Otherwise, look up the placeholder in ResolveConstants.
280           ResolveConstantsTy::iterator It =
281             std::lower_bound(ResolveConstants.begin(), ResolveConstants.end(),
282                              std::pair<Constant*, unsigned>(cast<Constant>(*I),
283                                                             0));
284           assert(It != ResolveConstants.end() && It->first == *I);
285           NewOp = operator[](It->second);
286         }
287 
288         NewOps.push_back(cast<Constant>(NewOp));
289       }
290 
291       // Make the new constant.
292       Constant *NewC;
293       if (ConstantArray *UserCA = dyn_cast<ConstantArray>(UserC)) {
294         NewC = ConstantArray::get(UserCA->getType(), &NewOps[0],
295                                         NewOps.size());
296       } else if (ConstantStruct *UserCS = dyn_cast<ConstantStruct>(UserC)) {
297         NewC = ConstantStruct::get(Context, &NewOps[0], NewOps.size(),
298                                          UserCS->getType()->isPacked());
299       } else if (ConstantUnion *UserCU = dyn_cast<ConstantUnion>(UserC)) {
300         NewC = ConstantUnion::get(UserCU->getType(), NewOps[0]);
301       } else if (isa<ConstantVector>(UserC)) {
302         NewC = ConstantVector::get(&NewOps[0], NewOps.size());
303       } else {
304         assert(isa<ConstantExpr>(UserC) && "Must be a ConstantExpr.");
305         NewC = cast<ConstantExpr>(UserC)->getWithOperands(&NewOps[0],
306                                                           NewOps.size());
307       }
308 
309       UserC->replaceAllUsesWith(NewC);
310       UserC->destroyConstant();
311       NewOps.clear();
312     }
313 
314     // Update all ValueHandles, they should be the only users at this point.
315     Placeholder->replaceAllUsesWith(RealVal);
316     delete Placeholder;
317   }
318 }
319 
320 void BitcodeReaderMDValueList::AssignValue(Value *V, unsigned Idx) {
321   if (Idx == size()) {
322     push_back(V);
323     return;
324   }
325 
326   if (Idx >= size())
327     resize(Idx+1);
328 
329   WeakVH &OldV = MDValuePtrs[Idx];
330   if (OldV == 0) {
331     OldV = V;
332     return;
333   }
334 
335   // If there was a forward reference to this value, replace it.
336   Value *PrevVal = OldV;
337   OldV->replaceAllUsesWith(V);
338   delete PrevVal;
339   // Deleting PrevVal sets Idx value in MDValuePtrs to null. Set new
340   // value for Idx.
341   MDValuePtrs[Idx] = V;
342 }
343 
344 Value *BitcodeReaderMDValueList::getValueFwdRef(unsigned Idx) {
345   if (Idx >= size())
346     resize(Idx + 1);
347 
348   if (Value *V = MDValuePtrs[Idx]) {
349     assert(V->getType()->isMetadataTy() && "Type mismatch in value table!");
350     return V;
351   }
352 
353   // Create and return a placeholder, which will later be RAUW'd.
354   Value *V = new Argument(Type::getMetadataTy(Context));
355   MDValuePtrs[Idx] = V;
356   return V;
357 }
358 
359 const Type *BitcodeReader::getTypeByID(unsigned ID, bool isTypeTable) {
360   // If the TypeID is in range, return it.
361   if (ID < TypeList.size())
362     return TypeList[ID].get();
363   if (!isTypeTable) return 0;
364 
365   // The type table allows forward references.  Push as many Opaque types as
366   // needed to get up to ID.
367   while (TypeList.size() <= ID)
368     TypeList.push_back(OpaqueType::get(Context));
369   return TypeList.back().get();
370 }
371 
372 //===----------------------------------------------------------------------===//
373 //  Functions for parsing blocks from the bitcode file
374 //===----------------------------------------------------------------------===//
375 
376 bool BitcodeReader::ParseAttributeBlock() {
377   if (Stream.EnterSubBlock(bitc::PARAMATTR_BLOCK_ID))
378     return Error("Malformed block record");
379 
380   if (!MAttributes.empty())
381     return Error("Multiple PARAMATTR blocks found!");
382 
383   SmallVector<uint64_t, 64> Record;
384 
385   SmallVector<AttributeWithIndex, 8> Attrs;
386 
387   // Read all the records.
388   while (1) {
389     unsigned Code = Stream.ReadCode();
390     if (Code == bitc::END_BLOCK) {
391       if (Stream.ReadBlockEnd())
392         return Error("Error at end of PARAMATTR block");
393       return false;
394     }
395 
396     if (Code == bitc::ENTER_SUBBLOCK) {
397       // No known subblocks, always skip them.
398       Stream.ReadSubBlockID();
399       if (Stream.SkipBlock())
400         return Error("Malformed block record");
401       continue;
402     }
403 
404     if (Code == bitc::DEFINE_ABBREV) {
405       Stream.ReadAbbrevRecord();
406       continue;
407     }
408 
409     // Read a record.
410     Record.clear();
411     switch (Stream.ReadRecord(Code, Record)) {
412     default:  // Default behavior: ignore.
413       break;
414     case bitc::PARAMATTR_CODE_ENTRY: { // ENTRY: [paramidx0, attr0, ...]
415       if (Record.size() & 1)
416         return Error("Invalid ENTRY record");
417 
418       // FIXME : Remove this autoupgrade code in LLVM 3.0.
419       // If Function attributes are using index 0 then transfer them
420       // to index ~0. Index 0 is used for return value attributes but used to be
421       // used for function attributes.
422       Attributes RetAttribute = Attribute::None;
423       Attributes FnAttribute = Attribute::None;
424       for (unsigned i = 0, e = Record.size(); i != e; i += 2) {
425         // FIXME: remove in LLVM 3.0
426         // The alignment is stored as a 16-bit raw value from bits 31--16.
427         // We shift the bits above 31 down by 11 bits.
428 
429         unsigned Alignment = (Record[i+1] & (0xffffull << 16)) >> 16;
430         if (Alignment && !isPowerOf2_32(Alignment))
431           return Error("Alignment is not a power of two.");
432 
433         Attributes ReconstitutedAttr = Record[i+1] & 0xffff;
434         if (Alignment)
435           ReconstitutedAttr |= Attribute::constructAlignmentFromInt(Alignment);
436         ReconstitutedAttr |= (Record[i+1] & (0xffffull << 32)) >> 11;
437         Record[i+1] = ReconstitutedAttr;
438 
439         if (Record[i] == 0)
440           RetAttribute = Record[i+1];
441         else if (Record[i] == ~0U)
442           FnAttribute = Record[i+1];
443       }
444 
445       unsigned OldRetAttrs = (Attribute::NoUnwind|Attribute::NoReturn|
446                               Attribute::ReadOnly|Attribute::ReadNone);
447 
448       if (FnAttribute == Attribute::None && RetAttribute != Attribute::None &&
449           (RetAttribute & OldRetAttrs) != 0) {
450         if (FnAttribute == Attribute::None) { // add a slot so they get added.
451           Record.push_back(~0U);
452           Record.push_back(0);
453         }
454 
455         FnAttribute  |= RetAttribute & OldRetAttrs;
456         RetAttribute &= ~OldRetAttrs;
457       }
458 
459       for (unsigned i = 0, e = Record.size(); i != e; i += 2) {
460         if (Record[i] == 0) {
461           if (RetAttribute != Attribute::None)
462             Attrs.push_back(AttributeWithIndex::get(0, RetAttribute));
463         } else if (Record[i] == ~0U) {
464           if (FnAttribute != Attribute::None)
465             Attrs.push_back(AttributeWithIndex::get(~0U, FnAttribute));
466         } else if (Record[i+1] != Attribute::None)
467           Attrs.push_back(AttributeWithIndex::get(Record[i], Record[i+1]));
468       }
469 
470       MAttributes.push_back(AttrListPtr::get(Attrs.begin(), Attrs.end()));
471       Attrs.clear();
472       break;
473     }
474     }
475   }
476 }
477 
478 
479 bool BitcodeReader::ParseTypeTable() {
480   if (Stream.EnterSubBlock(bitc::TYPE_BLOCK_ID))
481     return Error("Malformed block record");
482 
483   if (!TypeList.empty())
484     return Error("Multiple TYPE_BLOCKs found!");
485 
486   SmallVector<uint64_t, 64> Record;
487   unsigned NumRecords = 0;
488 
489   // Read all the records for this type table.
490   while (1) {
491     unsigned Code = Stream.ReadCode();
492     if (Code == bitc::END_BLOCK) {
493       if (NumRecords != TypeList.size())
494         return Error("Invalid type forward reference in TYPE_BLOCK");
495       if (Stream.ReadBlockEnd())
496         return Error("Error at end of type table block");
497       return false;
498     }
499 
500     if (Code == bitc::ENTER_SUBBLOCK) {
501       // No known subblocks, always skip them.
502       Stream.ReadSubBlockID();
503       if (Stream.SkipBlock())
504         return Error("Malformed block record");
505       continue;
506     }
507 
508     if (Code == bitc::DEFINE_ABBREV) {
509       Stream.ReadAbbrevRecord();
510       continue;
511     }
512 
513     // Read a record.
514     Record.clear();
515     const Type *ResultTy = 0;
516     switch (Stream.ReadRecord(Code, Record)) {
517     default:  // Default behavior: unknown type.
518       ResultTy = 0;
519       break;
520     case bitc::TYPE_CODE_NUMENTRY: // TYPE_CODE_NUMENTRY: [numentries]
521       // TYPE_CODE_NUMENTRY contains a count of the number of types in the
522       // type list.  This allows us to reserve space.
523       if (Record.size() < 1)
524         return Error("Invalid TYPE_CODE_NUMENTRY record");
525       TypeList.reserve(Record[0]);
526       continue;
527     case bitc::TYPE_CODE_VOID:      // VOID
528       ResultTy = Type::getVoidTy(Context);
529       break;
530     case bitc::TYPE_CODE_FLOAT:     // FLOAT
531       ResultTy = Type::getFloatTy(Context);
532       break;
533     case bitc::TYPE_CODE_DOUBLE:    // DOUBLE
534       ResultTy = Type::getDoubleTy(Context);
535       break;
536     case bitc::TYPE_CODE_X86_FP80:  // X86_FP80
537       ResultTy = Type::getX86_FP80Ty(Context);
538       break;
539     case bitc::TYPE_CODE_FP128:     // FP128
540       ResultTy = Type::getFP128Ty(Context);
541       break;
542     case bitc::TYPE_CODE_PPC_FP128: // PPC_FP128
543       ResultTy = Type::getPPC_FP128Ty(Context);
544       break;
545     case bitc::TYPE_CODE_LABEL:     // LABEL
546       ResultTy = Type::getLabelTy(Context);
547       break;
548     case bitc::TYPE_CODE_OPAQUE:    // OPAQUE
549       ResultTy = 0;
550       break;
551     case bitc::TYPE_CODE_METADATA:  // METADATA
552       ResultTy = Type::getMetadataTy(Context);
553       break;
554     case bitc::TYPE_CODE_INTEGER:   // INTEGER: [width]
555       if (Record.size() < 1)
556         return Error("Invalid Integer type record");
557 
558       ResultTy = IntegerType::get(Context, Record[0]);
559       break;
560     case bitc::TYPE_CODE_POINTER: { // POINTER: [pointee type] or
561                                     //          [pointee type, address space]
562       if (Record.size() < 1)
563         return Error("Invalid POINTER type record");
564       unsigned AddressSpace = 0;
565       if (Record.size() == 2)
566         AddressSpace = Record[1];
567       ResultTy = PointerType::get(getTypeByID(Record[0], true),
568                                         AddressSpace);
569       break;
570     }
571     case bitc::TYPE_CODE_FUNCTION: {
572       // FIXME: attrid is dead, remove it in LLVM 3.0
573       // FUNCTION: [vararg, attrid, retty, paramty x N]
574       if (Record.size() < 3)
575         return Error("Invalid FUNCTION type record");
576       std::vector<const Type*> ArgTys;
577       for (unsigned i = 3, e = Record.size(); i != e; ++i)
578         ArgTys.push_back(getTypeByID(Record[i], true));
579 
580       ResultTy = FunctionType::get(getTypeByID(Record[2], true), ArgTys,
581                                    Record[0]);
582       break;
583     }
584     case bitc::TYPE_CODE_STRUCT: {  // STRUCT: [ispacked, eltty x N]
585       if (Record.size() < 1)
586         return Error("Invalid STRUCT type record");
587       std::vector<const Type*> EltTys;
588       for (unsigned i = 1, e = Record.size(); i != e; ++i)
589         EltTys.push_back(getTypeByID(Record[i], true));
590       ResultTy = StructType::get(Context, EltTys, Record[0]);
591       break;
592     }
593     case bitc::TYPE_CODE_UNION: {  // UNION: [eltty x N]
594       SmallVector<const Type*, 8> EltTys;
595       for (unsigned i = 0, e = Record.size(); i != e; ++i)
596         EltTys.push_back(getTypeByID(Record[i], true));
597       ResultTy = UnionType::get(&EltTys[0], EltTys.size());
598       break;
599     }
600     case bitc::TYPE_CODE_ARRAY:     // ARRAY: [numelts, eltty]
601       if (Record.size() < 2)
602         return Error("Invalid ARRAY type record");
603       ResultTy = ArrayType::get(getTypeByID(Record[1], true), Record[0]);
604       break;
605     case bitc::TYPE_CODE_VECTOR:    // VECTOR: [numelts, eltty]
606       if (Record.size() < 2)
607         return Error("Invalid VECTOR type record");
608       ResultTy = VectorType::get(getTypeByID(Record[1], true), Record[0]);
609       break;
610     }
611 
612     if (NumRecords == TypeList.size()) {
613       // If this is a new type slot, just append it.
614       TypeList.push_back(ResultTy ? ResultTy : OpaqueType::get(Context));
615       ++NumRecords;
616     } else if (ResultTy == 0) {
617       // Otherwise, this was forward referenced, so an opaque type was created,
618       // but the result type is actually just an opaque.  Leave the one we
619       // created previously.
620       ++NumRecords;
621     } else {
622       // Otherwise, this was forward referenced, so an opaque type was created.
623       // Resolve the opaque type to the real type now.
624       assert(NumRecords < TypeList.size() && "Typelist imbalance");
625       const OpaqueType *OldTy = cast<OpaqueType>(TypeList[NumRecords++].get());
626 
627       // Don't directly push the new type on the Tab. Instead we want to replace
628       // the opaque type we previously inserted with the new concrete value. The
629       // refinement from the abstract (opaque) type to the new type causes all
630       // uses of the abstract type to use the concrete type (NewTy). This will
631       // also cause the opaque type to be deleted.
632       const_cast<OpaqueType*>(OldTy)->refineAbstractTypeTo(ResultTy);
633 
634       // This should have replaced the old opaque type with the new type in the
635       // value table... or with a preexisting type that was already in the
636       // system.  Let's just make sure it did.
637       assert(TypeList[NumRecords-1].get() != OldTy &&
638              "refineAbstractType didn't work!");
639     }
640   }
641 }
642 
643 
644 bool BitcodeReader::ParseTypeSymbolTable() {
645   if (Stream.EnterSubBlock(bitc::TYPE_SYMTAB_BLOCK_ID))
646     return Error("Malformed block record");
647 
648   SmallVector<uint64_t, 64> Record;
649 
650   // Read all the records for this type table.
651   std::string TypeName;
652   while (1) {
653     unsigned Code = Stream.ReadCode();
654     if (Code == bitc::END_BLOCK) {
655       if (Stream.ReadBlockEnd())
656         return Error("Error at end of type symbol table block");
657       return false;
658     }
659 
660     if (Code == bitc::ENTER_SUBBLOCK) {
661       // No known subblocks, always skip them.
662       Stream.ReadSubBlockID();
663       if (Stream.SkipBlock())
664         return Error("Malformed block record");
665       continue;
666     }
667 
668     if (Code == bitc::DEFINE_ABBREV) {
669       Stream.ReadAbbrevRecord();
670       continue;
671     }
672 
673     // Read a record.
674     Record.clear();
675     switch (Stream.ReadRecord(Code, Record)) {
676     default:  // Default behavior: unknown type.
677       break;
678     case bitc::TST_CODE_ENTRY:    // TST_ENTRY: [typeid, namechar x N]
679       if (ConvertToString(Record, 1, TypeName))
680         return Error("Invalid TST_ENTRY record");
681       unsigned TypeID = Record[0];
682       if (TypeID >= TypeList.size())
683         return Error("Invalid Type ID in TST_ENTRY record");
684 
685       TheModule->addTypeName(TypeName, TypeList[TypeID].get());
686       TypeName.clear();
687       break;
688     }
689   }
690 }
691 
692 bool BitcodeReader::ParseValueSymbolTable() {
693   if (Stream.EnterSubBlock(bitc::VALUE_SYMTAB_BLOCK_ID))
694     return Error("Malformed block record");
695 
696   SmallVector<uint64_t, 64> Record;
697 
698   // Read all the records for this value table.
699   SmallString<128> ValueName;
700   while (1) {
701     unsigned Code = Stream.ReadCode();
702     if (Code == bitc::END_BLOCK) {
703       if (Stream.ReadBlockEnd())
704         return Error("Error at end of value symbol table block");
705       return false;
706     }
707     if (Code == bitc::ENTER_SUBBLOCK) {
708       // No known subblocks, always skip them.
709       Stream.ReadSubBlockID();
710       if (Stream.SkipBlock())
711         return Error("Malformed block record");
712       continue;
713     }
714 
715     if (Code == bitc::DEFINE_ABBREV) {
716       Stream.ReadAbbrevRecord();
717       continue;
718     }
719 
720     // Read a record.
721     Record.clear();
722     switch (Stream.ReadRecord(Code, Record)) {
723     default:  // Default behavior: unknown type.
724       break;
725     case bitc::VST_CODE_ENTRY: {  // VST_ENTRY: [valueid, namechar x N]
726       if (ConvertToString(Record, 1, ValueName))
727         return Error("Invalid VST_ENTRY record");
728       unsigned ValueID = Record[0];
729       if (ValueID >= ValueList.size())
730         return Error("Invalid Value ID in VST_ENTRY record");
731       Value *V = ValueList[ValueID];
732 
733       V->setName(StringRef(ValueName.data(), ValueName.size()));
734       ValueName.clear();
735       break;
736     }
737     case bitc::VST_CODE_BBENTRY: {
738       if (ConvertToString(Record, 1, ValueName))
739         return Error("Invalid VST_BBENTRY record");
740       BasicBlock *BB = getBasicBlock(Record[0]);
741       if (BB == 0)
742         return Error("Invalid BB ID in VST_BBENTRY record");
743 
744       BB->setName(StringRef(ValueName.data(), ValueName.size()));
745       ValueName.clear();
746       break;
747     }
748     }
749   }
750 }
751 
752 bool BitcodeReader::ParseMetadata() {
753   unsigned NextMDValueNo = MDValueList.size();
754 
755   if (Stream.EnterSubBlock(bitc::METADATA_BLOCK_ID))
756     return Error("Malformed block record");
757 
758   SmallVector<uint64_t, 64> Record;
759 
760   // Read all the records.
761   while (1) {
762     unsigned Code = Stream.ReadCode();
763     if (Code == bitc::END_BLOCK) {
764       if (Stream.ReadBlockEnd())
765         return Error("Error at end of PARAMATTR block");
766       return false;
767     }
768 
769     if (Code == bitc::ENTER_SUBBLOCK) {
770       // No known subblocks, always skip them.
771       Stream.ReadSubBlockID();
772       if (Stream.SkipBlock())
773         return Error("Malformed block record");
774       continue;
775     }
776 
777     if (Code == bitc::DEFINE_ABBREV) {
778       Stream.ReadAbbrevRecord();
779       continue;
780     }
781 
782     bool IsFunctionLocal = false;
783     // Read a record.
784     Record.clear();
785     switch (Stream.ReadRecord(Code, Record)) {
786     default:  // Default behavior: ignore.
787       break;
788     case bitc::METADATA_NAME: {
789       // Read named of the named metadata.
790       unsigned NameLength = Record.size();
791       SmallString<8> Name;
792       Name.resize(NameLength);
793       for (unsigned i = 0; i != NameLength; ++i)
794         Name[i] = Record[i];
795       Record.clear();
796       Code = Stream.ReadCode();
797 
798       // METADATA_NAME is always followed by METADATA_NAMED_NODE.
799       if (Stream.ReadRecord(Code, Record) != bitc::METADATA_NAMED_NODE)
800         assert ( 0 && "Inavlid Named Metadata record");
801 
802       // Read named metadata elements.
803       unsigned Size = Record.size();
804       SmallVector<MDNode *, 8> Elts;
805       for (unsigned i = 0; i != Size; ++i) {
806         MDNode *MD = dyn_cast<MDNode>(MDValueList.getValueFwdRef(Record[i]));
807         if (MD == 0)
808           return Error("Malformed metadata record");
809         Elts.push_back(MD);
810       }
811       Value *V = NamedMDNode::Create(Context, Name.str(), Elts.data(),
812                                      Elts.size(), TheModule);
813       MDValueList.AssignValue(V, NextMDValueNo++);
814       break;
815     }
816     case bitc::METADATA_FN_NODE:
817       IsFunctionLocal = true;
818       // fall-through
819     case bitc::METADATA_NODE: {
820       if (Record.size() % 2 == 1)
821         return Error("Invalid METADATA_NODE record");
822 
823       unsigned Size = Record.size();
824       SmallVector<Value*, 8> Elts;
825       for (unsigned i = 0; i != Size; i += 2) {
826         const Type *Ty = getTypeByID(Record[i], false);
827         if (Ty->isMetadataTy())
828           Elts.push_back(MDValueList.getValueFwdRef(Record[i+1]));
829         else if (!Ty->isVoidTy())
830           Elts.push_back(ValueList.getValueFwdRef(Record[i+1], Ty));
831         else
832           Elts.push_back(NULL);
833       }
834       Value *V = MDNode::getWhenValsUnresolved(Context,
835                                                Elts.data(), Elts.size(),
836                                                IsFunctionLocal);
837       IsFunctionLocal = false;
838       MDValueList.AssignValue(V, NextMDValueNo++);
839       break;
840     }
841     case bitc::METADATA_STRING: {
842       unsigned MDStringLength = Record.size();
843       SmallString<8> String;
844       String.resize(MDStringLength);
845       for (unsigned i = 0; i != MDStringLength; ++i)
846         String[i] = Record[i];
847       Value *V = MDString::get(Context,
848                                StringRef(String.data(), String.size()));
849       MDValueList.AssignValue(V, NextMDValueNo++);
850       break;
851     }
852     case bitc::METADATA_KIND: {
853       unsigned RecordLength = Record.size();
854       if (Record.empty() || RecordLength < 2)
855         return Error("Invalid METADATA_KIND record");
856       SmallString<8> Name;
857       Name.resize(RecordLength-1);
858       unsigned Kind = Record[0];
859       for (unsigned i = 1; i != RecordLength; ++i)
860         Name[i-1] = Record[i];
861 
862       unsigned NewKind = TheModule->getMDKindID(Name.str());
863       if (!MDKindMap.insert(std::make_pair(Kind, NewKind)).second)
864         return Error("Conflicting METADATA_KIND records");
865       break;
866     }
867     }
868   }
869 }
870 
871 /// DecodeSignRotatedValue - Decode a signed value stored with the sign bit in
872 /// the LSB for dense VBR encoding.
873 static uint64_t DecodeSignRotatedValue(uint64_t V) {
874   if ((V & 1) == 0)
875     return V >> 1;
876   if (V != 1)
877     return -(V >> 1);
878   // There is no such thing as -0 with integers.  "-0" really means MININT.
879   return 1ULL << 63;
880 }
881 
882 /// ResolveGlobalAndAliasInits - Resolve all of the initializers for global
883 /// values and aliases that we can.
884 bool BitcodeReader::ResolveGlobalAndAliasInits() {
885   std::vector<std::pair<GlobalVariable*, unsigned> > GlobalInitWorklist;
886   std::vector<std::pair<GlobalAlias*, unsigned> > AliasInitWorklist;
887 
888   GlobalInitWorklist.swap(GlobalInits);
889   AliasInitWorklist.swap(AliasInits);
890 
891   while (!GlobalInitWorklist.empty()) {
892     unsigned ValID = GlobalInitWorklist.back().second;
893     if (ValID >= ValueList.size()) {
894       // Not ready to resolve this yet, it requires something later in the file.
895       GlobalInits.push_back(GlobalInitWorklist.back());
896     } else {
897       if (Constant *C = dyn_cast<Constant>(ValueList[ValID]))
898         GlobalInitWorklist.back().first->setInitializer(C);
899       else
900         return Error("Global variable initializer is not a constant!");
901     }
902     GlobalInitWorklist.pop_back();
903   }
904 
905   while (!AliasInitWorklist.empty()) {
906     unsigned ValID = AliasInitWorklist.back().second;
907     if (ValID >= ValueList.size()) {
908       AliasInits.push_back(AliasInitWorklist.back());
909     } else {
910       if (Constant *C = dyn_cast<Constant>(ValueList[ValID]))
911         AliasInitWorklist.back().first->setAliasee(C);
912       else
913         return Error("Alias initializer is not a constant!");
914     }
915     AliasInitWorklist.pop_back();
916   }
917   return false;
918 }
919 
920 bool BitcodeReader::ParseConstants() {
921   if (Stream.EnterSubBlock(bitc::CONSTANTS_BLOCK_ID))
922     return Error("Malformed block record");
923 
924   SmallVector<uint64_t, 64> Record;
925 
926   // Read all the records for this value table.
927   const Type *CurTy = Type::getInt32Ty(Context);
928   unsigned NextCstNo = ValueList.size();
929   while (1) {
930     unsigned Code = Stream.ReadCode();
931     if (Code == bitc::END_BLOCK)
932       break;
933 
934     if (Code == bitc::ENTER_SUBBLOCK) {
935       // No known subblocks, always skip them.
936       Stream.ReadSubBlockID();
937       if (Stream.SkipBlock())
938         return Error("Malformed block record");
939       continue;
940     }
941 
942     if (Code == bitc::DEFINE_ABBREV) {
943       Stream.ReadAbbrevRecord();
944       continue;
945     }
946 
947     // Read a record.
948     Record.clear();
949     Value *V = 0;
950     unsigned BitCode = Stream.ReadRecord(Code, Record);
951     switch (BitCode) {
952     default:  // Default behavior: unknown constant
953     case bitc::CST_CODE_UNDEF:     // UNDEF
954       V = UndefValue::get(CurTy);
955       break;
956     case bitc::CST_CODE_SETTYPE:   // SETTYPE: [typeid]
957       if (Record.empty())
958         return Error("Malformed CST_SETTYPE record");
959       if (Record[0] >= TypeList.size())
960         return Error("Invalid Type ID in CST_SETTYPE record");
961       CurTy = TypeList[Record[0]];
962       continue;  // Skip the ValueList manipulation.
963     case bitc::CST_CODE_NULL:      // NULL
964       V = Constant::getNullValue(CurTy);
965       break;
966     case bitc::CST_CODE_INTEGER:   // INTEGER: [intval]
967       if (!CurTy->isIntegerTy() || Record.empty())
968         return Error("Invalid CST_INTEGER record");
969       V = ConstantInt::get(CurTy, DecodeSignRotatedValue(Record[0]));
970       break;
971     case bitc::CST_CODE_WIDE_INTEGER: {// WIDE_INTEGER: [n x intval]
972       if (!CurTy->isIntegerTy() || Record.empty())
973         return Error("Invalid WIDE_INTEGER record");
974 
975       unsigned NumWords = Record.size();
976       SmallVector<uint64_t, 8> Words;
977       Words.resize(NumWords);
978       for (unsigned i = 0; i != NumWords; ++i)
979         Words[i] = DecodeSignRotatedValue(Record[i]);
980       V = ConstantInt::get(Context,
981                            APInt(cast<IntegerType>(CurTy)->getBitWidth(),
982                            NumWords, &Words[0]));
983       break;
984     }
985     case bitc::CST_CODE_FLOAT: {    // FLOAT: [fpval]
986       if (Record.empty())
987         return Error("Invalid FLOAT record");
988       if (CurTy->isFloatTy())
989         V = ConstantFP::get(Context, APFloat(APInt(32, (uint32_t)Record[0])));
990       else if (CurTy->isDoubleTy())
991         V = ConstantFP::get(Context, APFloat(APInt(64, Record[0])));
992       else if (CurTy->isX86_FP80Ty()) {
993         // Bits are not stored the same way as a normal i80 APInt, compensate.
994         uint64_t Rearrange[2];
995         Rearrange[0] = (Record[1] & 0xffffLL) | (Record[0] << 16);
996         Rearrange[1] = Record[0] >> 48;
997         V = ConstantFP::get(Context, APFloat(APInt(80, 2, Rearrange)));
998       } else if (CurTy->isFP128Ty())
999         V = ConstantFP::get(Context, APFloat(APInt(128, 2, &Record[0]), true));
1000       else if (CurTy->isPPC_FP128Ty())
1001         V = ConstantFP::get(Context, APFloat(APInt(128, 2, &Record[0])));
1002       else
1003         V = UndefValue::get(CurTy);
1004       break;
1005     }
1006 
1007     case bitc::CST_CODE_AGGREGATE: {// AGGREGATE: [n x value number]
1008       if (Record.empty())
1009         return Error("Invalid CST_AGGREGATE record");
1010 
1011       unsigned Size = Record.size();
1012       std::vector<Constant*> Elts;
1013 
1014       if (const StructType *STy = dyn_cast<StructType>(CurTy)) {
1015         for (unsigned i = 0; i != Size; ++i)
1016           Elts.push_back(ValueList.getConstantFwdRef(Record[i],
1017                                                      STy->getElementType(i)));
1018         V = ConstantStruct::get(STy, Elts);
1019       } else if (const UnionType *UnTy = dyn_cast<UnionType>(CurTy)) {
1020         uint64_t Index = Record[0];
1021         Constant *Val = ValueList.getConstantFwdRef(Record[1],
1022                                         UnTy->getElementType(Index));
1023         V = ConstantUnion::get(UnTy, Val);
1024       } else if (const ArrayType *ATy = dyn_cast<ArrayType>(CurTy)) {
1025         const Type *EltTy = ATy->getElementType();
1026         for (unsigned i = 0; i != Size; ++i)
1027           Elts.push_back(ValueList.getConstantFwdRef(Record[i], EltTy));
1028         V = ConstantArray::get(ATy, Elts);
1029       } else if (const VectorType *VTy = dyn_cast<VectorType>(CurTy)) {
1030         const Type *EltTy = VTy->getElementType();
1031         for (unsigned i = 0; i != Size; ++i)
1032           Elts.push_back(ValueList.getConstantFwdRef(Record[i], EltTy));
1033         V = ConstantVector::get(Elts);
1034       } else {
1035         V = UndefValue::get(CurTy);
1036       }
1037       break;
1038     }
1039     case bitc::CST_CODE_STRING: { // STRING: [values]
1040       if (Record.empty())
1041         return Error("Invalid CST_AGGREGATE record");
1042 
1043       const ArrayType *ATy = cast<ArrayType>(CurTy);
1044       const Type *EltTy = ATy->getElementType();
1045 
1046       unsigned Size = Record.size();
1047       std::vector<Constant*> Elts;
1048       for (unsigned i = 0; i != Size; ++i)
1049         Elts.push_back(ConstantInt::get(EltTy, Record[i]));
1050       V = ConstantArray::get(ATy, Elts);
1051       break;
1052     }
1053     case bitc::CST_CODE_CSTRING: { // CSTRING: [values]
1054       if (Record.empty())
1055         return Error("Invalid CST_AGGREGATE record");
1056 
1057       const ArrayType *ATy = cast<ArrayType>(CurTy);
1058       const Type *EltTy = ATy->getElementType();
1059 
1060       unsigned Size = Record.size();
1061       std::vector<Constant*> Elts;
1062       for (unsigned i = 0; i != Size; ++i)
1063         Elts.push_back(ConstantInt::get(EltTy, Record[i]));
1064       Elts.push_back(Constant::getNullValue(EltTy));
1065       V = ConstantArray::get(ATy, Elts);
1066       break;
1067     }
1068     case bitc::CST_CODE_CE_BINOP: {  // CE_BINOP: [opcode, opval, opval]
1069       if (Record.size() < 3) return Error("Invalid CE_BINOP record");
1070       int Opc = GetDecodedBinaryOpcode(Record[0], CurTy);
1071       if (Opc < 0) {
1072         V = UndefValue::get(CurTy);  // Unknown binop.
1073       } else {
1074         Constant *LHS = ValueList.getConstantFwdRef(Record[1], CurTy);
1075         Constant *RHS = ValueList.getConstantFwdRef(Record[2], CurTy);
1076         unsigned Flags = 0;
1077         if (Record.size() >= 4) {
1078           if (Opc == Instruction::Add ||
1079               Opc == Instruction::Sub ||
1080               Opc == Instruction::Mul) {
1081             if (Record[3] & (1 << bitc::OBO_NO_SIGNED_WRAP))
1082               Flags |= OverflowingBinaryOperator::NoSignedWrap;
1083             if (Record[3] & (1 << bitc::OBO_NO_UNSIGNED_WRAP))
1084               Flags |= OverflowingBinaryOperator::NoUnsignedWrap;
1085           } else if (Opc == Instruction::SDiv) {
1086             if (Record[3] & (1 << bitc::SDIV_EXACT))
1087               Flags |= SDivOperator::IsExact;
1088           }
1089         }
1090         V = ConstantExpr::get(Opc, LHS, RHS, Flags);
1091       }
1092       break;
1093     }
1094     case bitc::CST_CODE_CE_CAST: {  // CE_CAST: [opcode, opty, opval]
1095       if (Record.size() < 3) return Error("Invalid CE_CAST record");
1096       int Opc = GetDecodedCastOpcode(Record[0]);
1097       if (Opc < 0) {
1098         V = UndefValue::get(CurTy);  // Unknown cast.
1099       } else {
1100         const Type *OpTy = getTypeByID(Record[1]);
1101         if (!OpTy) return Error("Invalid CE_CAST record");
1102         Constant *Op = ValueList.getConstantFwdRef(Record[2], OpTy);
1103         V = ConstantExpr::getCast(Opc, Op, CurTy);
1104       }
1105       break;
1106     }
1107     case bitc::CST_CODE_CE_INBOUNDS_GEP:
1108     case bitc::CST_CODE_CE_GEP: {  // CE_GEP:        [n x operands]
1109       if (Record.size() & 1) return Error("Invalid CE_GEP record");
1110       SmallVector<Constant*, 16> Elts;
1111       for (unsigned i = 0, e = Record.size(); i != e; i += 2) {
1112         const Type *ElTy = getTypeByID(Record[i]);
1113         if (!ElTy) return Error("Invalid CE_GEP record");
1114         Elts.push_back(ValueList.getConstantFwdRef(Record[i+1], ElTy));
1115       }
1116       if (BitCode == bitc::CST_CODE_CE_INBOUNDS_GEP)
1117         V = ConstantExpr::getInBoundsGetElementPtr(Elts[0], &Elts[1],
1118                                                    Elts.size()-1);
1119       else
1120         V = ConstantExpr::getGetElementPtr(Elts[0], &Elts[1],
1121                                            Elts.size()-1);
1122       break;
1123     }
1124     case bitc::CST_CODE_CE_SELECT:  // CE_SELECT: [opval#, opval#, opval#]
1125       if (Record.size() < 3) return Error("Invalid CE_SELECT record");
1126       V = ConstantExpr::getSelect(ValueList.getConstantFwdRef(Record[0],
1127                                                               Type::getInt1Ty(Context)),
1128                                   ValueList.getConstantFwdRef(Record[1],CurTy),
1129                                   ValueList.getConstantFwdRef(Record[2],CurTy));
1130       break;
1131     case bitc::CST_CODE_CE_EXTRACTELT: { // CE_EXTRACTELT: [opty, opval, opval]
1132       if (Record.size() < 3) return Error("Invalid CE_EXTRACTELT record");
1133       const VectorType *OpTy =
1134         dyn_cast_or_null<VectorType>(getTypeByID(Record[0]));
1135       if (OpTy == 0) return Error("Invalid CE_EXTRACTELT record");
1136       Constant *Op0 = ValueList.getConstantFwdRef(Record[1], OpTy);
1137       Constant *Op1 = ValueList.getConstantFwdRef(Record[2], Type::getInt32Ty(Context));
1138       V = ConstantExpr::getExtractElement(Op0, Op1);
1139       break;
1140     }
1141     case bitc::CST_CODE_CE_INSERTELT: { // CE_INSERTELT: [opval, opval, opval]
1142       const VectorType *OpTy = dyn_cast<VectorType>(CurTy);
1143       if (Record.size() < 3 || OpTy == 0)
1144         return Error("Invalid CE_INSERTELT record");
1145       Constant *Op0 = ValueList.getConstantFwdRef(Record[0], OpTy);
1146       Constant *Op1 = ValueList.getConstantFwdRef(Record[1],
1147                                                   OpTy->getElementType());
1148       Constant *Op2 = ValueList.getConstantFwdRef(Record[2], Type::getInt32Ty(Context));
1149       V = ConstantExpr::getInsertElement(Op0, Op1, Op2);
1150       break;
1151     }
1152     case bitc::CST_CODE_CE_SHUFFLEVEC: { // CE_SHUFFLEVEC: [opval, opval, opval]
1153       const VectorType *OpTy = dyn_cast<VectorType>(CurTy);
1154       if (Record.size() < 3 || OpTy == 0)
1155         return Error("Invalid CE_SHUFFLEVEC record");
1156       Constant *Op0 = ValueList.getConstantFwdRef(Record[0], OpTy);
1157       Constant *Op1 = ValueList.getConstantFwdRef(Record[1], OpTy);
1158       const Type *ShufTy = VectorType::get(Type::getInt32Ty(Context),
1159                                                  OpTy->getNumElements());
1160       Constant *Op2 = ValueList.getConstantFwdRef(Record[2], ShufTy);
1161       V = ConstantExpr::getShuffleVector(Op0, Op1, Op2);
1162       break;
1163     }
1164     case bitc::CST_CODE_CE_SHUFVEC_EX: { // [opty, opval, opval, opval]
1165       const VectorType *RTy = dyn_cast<VectorType>(CurTy);
1166       const VectorType *OpTy = dyn_cast<VectorType>(getTypeByID(Record[0]));
1167       if (Record.size() < 4 || RTy == 0 || OpTy == 0)
1168         return Error("Invalid CE_SHUFVEC_EX record");
1169       Constant *Op0 = ValueList.getConstantFwdRef(Record[1], OpTy);
1170       Constant *Op1 = ValueList.getConstantFwdRef(Record[2], OpTy);
1171       const Type *ShufTy = VectorType::get(Type::getInt32Ty(Context),
1172                                                  RTy->getNumElements());
1173       Constant *Op2 = ValueList.getConstantFwdRef(Record[3], ShufTy);
1174       V = ConstantExpr::getShuffleVector(Op0, Op1, Op2);
1175       break;
1176     }
1177     case bitc::CST_CODE_CE_CMP: {     // CE_CMP: [opty, opval, opval, pred]
1178       if (Record.size() < 4) return Error("Invalid CE_CMP record");
1179       const Type *OpTy = getTypeByID(Record[0]);
1180       if (OpTy == 0) return Error("Invalid CE_CMP record");
1181       Constant *Op0 = ValueList.getConstantFwdRef(Record[1], OpTy);
1182       Constant *Op1 = ValueList.getConstantFwdRef(Record[2], OpTy);
1183 
1184       if (OpTy->isFPOrFPVectorTy())
1185         V = ConstantExpr::getFCmp(Record[3], Op0, Op1);
1186       else
1187         V = ConstantExpr::getICmp(Record[3], Op0, Op1);
1188       break;
1189     }
1190     case bitc::CST_CODE_INLINEASM: {
1191       if (Record.size() < 2) return Error("Invalid INLINEASM record");
1192       std::string AsmStr, ConstrStr;
1193       bool HasSideEffects = Record[0] & 1;
1194       bool IsAlignStack = Record[0] >> 1;
1195       unsigned AsmStrSize = Record[1];
1196       if (2+AsmStrSize >= Record.size())
1197         return Error("Invalid INLINEASM record");
1198       unsigned ConstStrSize = Record[2+AsmStrSize];
1199       if (3+AsmStrSize+ConstStrSize > Record.size())
1200         return Error("Invalid INLINEASM record");
1201 
1202       for (unsigned i = 0; i != AsmStrSize; ++i)
1203         AsmStr += (char)Record[2+i];
1204       for (unsigned i = 0; i != ConstStrSize; ++i)
1205         ConstrStr += (char)Record[3+AsmStrSize+i];
1206       const PointerType *PTy = cast<PointerType>(CurTy);
1207       V = InlineAsm::get(cast<FunctionType>(PTy->getElementType()),
1208                          AsmStr, ConstrStr, HasSideEffects, IsAlignStack);
1209       break;
1210     }
1211     case bitc::CST_CODE_BLOCKADDRESS:{
1212       if (Record.size() < 3) return Error("Invalid CE_BLOCKADDRESS record");
1213       const Type *FnTy = getTypeByID(Record[0]);
1214       if (FnTy == 0) return Error("Invalid CE_BLOCKADDRESS record");
1215       Function *Fn =
1216         dyn_cast_or_null<Function>(ValueList.getConstantFwdRef(Record[1],FnTy));
1217       if (Fn == 0) return Error("Invalid CE_BLOCKADDRESS record");
1218 
1219       GlobalVariable *FwdRef = new GlobalVariable(*Fn->getParent(),
1220                                                   Type::getInt8Ty(Context),
1221                                             false, GlobalValue::InternalLinkage,
1222                                                   0, "");
1223       BlockAddrFwdRefs[Fn].push_back(std::make_pair(Record[2], FwdRef));
1224       V = FwdRef;
1225       break;
1226     }
1227     }
1228 
1229     ValueList.AssignValue(V, NextCstNo);
1230     ++NextCstNo;
1231   }
1232 
1233   if (NextCstNo != ValueList.size())
1234     return Error("Invalid constant reference!");
1235 
1236   if (Stream.ReadBlockEnd())
1237     return Error("Error at end of constants block");
1238 
1239   // Once all the constants have been read, go through and resolve forward
1240   // references.
1241   ValueList.ResolveConstantForwardRefs();
1242   return false;
1243 }
1244 
1245 /// RememberAndSkipFunctionBody - When we see the block for a function body,
1246 /// remember where it is and then skip it.  This lets us lazily deserialize the
1247 /// functions.
1248 bool BitcodeReader::RememberAndSkipFunctionBody() {
1249   // Get the function we are talking about.
1250   if (FunctionsWithBodies.empty())
1251     return Error("Insufficient function protos");
1252 
1253   Function *Fn = FunctionsWithBodies.back();
1254   FunctionsWithBodies.pop_back();
1255 
1256   // Save the current stream state.
1257   uint64_t CurBit = Stream.GetCurrentBitNo();
1258   DeferredFunctionInfo[Fn] = CurBit;
1259 
1260   // Skip over the function block for now.
1261   if (Stream.SkipBlock())
1262     return Error("Malformed block record");
1263   return false;
1264 }
1265 
1266 bool BitcodeReader::ParseModule() {
1267   if (Stream.EnterSubBlock(bitc::MODULE_BLOCK_ID))
1268     return Error("Malformed block record");
1269 
1270   SmallVector<uint64_t, 64> Record;
1271   std::vector<std::string> SectionTable;
1272   std::vector<std::string> GCTable;
1273 
1274   // Read all the records for this module.
1275   while (!Stream.AtEndOfStream()) {
1276     unsigned Code = Stream.ReadCode();
1277     if (Code == bitc::END_BLOCK) {
1278       if (Stream.ReadBlockEnd())
1279         return Error("Error at end of module block");
1280 
1281       // Patch the initializers for globals and aliases up.
1282       ResolveGlobalAndAliasInits();
1283       if (!GlobalInits.empty() || !AliasInits.empty())
1284         return Error("Malformed global initializer set");
1285       if (!FunctionsWithBodies.empty())
1286         return Error("Too few function bodies found");
1287 
1288       // Look for intrinsic functions which need to be upgraded at some point
1289       for (Module::iterator FI = TheModule->begin(), FE = TheModule->end();
1290            FI != FE; ++FI) {
1291         Function* NewFn;
1292         if (UpgradeIntrinsicFunction(FI, NewFn))
1293           UpgradedIntrinsics.push_back(std::make_pair(FI, NewFn));
1294       }
1295 
1296       // Force deallocation of memory for these vectors to favor the client that
1297       // want lazy deserialization.
1298       std::vector<std::pair<GlobalVariable*, unsigned> >().swap(GlobalInits);
1299       std::vector<std::pair<GlobalAlias*, unsigned> >().swap(AliasInits);
1300       std::vector<Function*>().swap(FunctionsWithBodies);
1301       return false;
1302     }
1303 
1304     if (Code == bitc::ENTER_SUBBLOCK) {
1305       switch (Stream.ReadSubBlockID()) {
1306       default:  // Skip unknown content.
1307         if (Stream.SkipBlock())
1308           return Error("Malformed block record");
1309         break;
1310       case bitc::BLOCKINFO_BLOCK_ID:
1311         if (Stream.ReadBlockInfoBlock())
1312           return Error("Malformed BlockInfoBlock");
1313         break;
1314       case bitc::PARAMATTR_BLOCK_ID:
1315         if (ParseAttributeBlock())
1316           return true;
1317         break;
1318       case bitc::TYPE_BLOCK_ID:
1319         if (ParseTypeTable())
1320           return true;
1321         break;
1322       case bitc::TYPE_SYMTAB_BLOCK_ID:
1323         if (ParseTypeSymbolTable())
1324           return true;
1325         break;
1326       case bitc::VALUE_SYMTAB_BLOCK_ID:
1327         if (ParseValueSymbolTable())
1328           return true;
1329         break;
1330       case bitc::CONSTANTS_BLOCK_ID:
1331         if (ParseConstants() || ResolveGlobalAndAliasInits())
1332           return true;
1333         break;
1334       case bitc::METADATA_BLOCK_ID:
1335         if (ParseMetadata())
1336           return true;
1337         break;
1338       case bitc::FUNCTION_BLOCK_ID:
1339         // If this is the first function body we've seen, reverse the
1340         // FunctionsWithBodies list.
1341         if (!HasReversedFunctionsWithBodies) {
1342           std::reverse(FunctionsWithBodies.begin(), FunctionsWithBodies.end());
1343           HasReversedFunctionsWithBodies = true;
1344         }
1345 
1346         if (RememberAndSkipFunctionBody())
1347           return true;
1348         break;
1349       }
1350       continue;
1351     }
1352 
1353     if (Code == bitc::DEFINE_ABBREV) {
1354       Stream.ReadAbbrevRecord();
1355       continue;
1356     }
1357 
1358     // Read a record.
1359     switch (Stream.ReadRecord(Code, Record)) {
1360     default: break;  // Default behavior, ignore unknown content.
1361     case bitc::MODULE_CODE_VERSION:  // VERSION: [version#]
1362       if (Record.size() < 1)
1363         return Error("Malformed MODULE_CODE_VERSION");
1364       // Only version #0 is supported so far.
1365       if (Record[0] != 0)
1366         return Error("Unknown bitstream version!");
1367       break;
1368     case bitc::MODULE_CODE_TRIPLE: {  // TRIPLE: [strchr x N]
1369       std::string S;
1370       if (ConvertToString(Record, 0, S))
1371         return Error("Invalid MODULE_CODE_TRIPLE record");
1372       TheModule->setTargetTriple(S);
1373       break;
1374     }
1375     case bitc::MODULE_CODE_DATALAYOUT: {  // DATALAYOUT: [strchr x N]
1376       std::string S;
1377       if (ConvertToString(Record, 0, S))
1378         return Error("Invalid MODULE_CODE_DATALAYOUT record");
1379       TheModule->setDataLayout(S);
1380       break;
1381     }
1382     case bitc::MODULE_CODE_ASM: {  // ASM: [strchr x N]
1383       std::string S;
1384       if (ConvertToString(Record, 0, S))
1385         return Error("Invalid MODULE_CODE_ASM record");
1386       TheModule->setModuleInlineAsm(S);
1387       break;
1388     }
1389     case bitc::MODULE_CODE_DEPLIB: {  // DEPLIB: [strchr x N]
1390       std::string S;
1391       if (ConvertToString(Record, 0, S))
1392         return Error("Invalid MODULE_CODE_DEPLIB record");
1393       TheModule->addLibrary(S);
1394       break;
1395     }
1396     case bitc::MODULE_CODE_SECTIONNAME: {  // SECTIONNAME: [strchr x N]
1397       std::string S;
1398       if (ConvertToString(Record, 0, S))
1399         return Error("Invalid MODULE_CODE_SECTIONNAME record");
1400       SectionTable.push_back(S);
1401       break;
1402     }
1403     case bitc::MODULE_CODE_GCNAME: {  // SECTIONNAME: [strchr x N]
1404       std::string S;
1405       if (ConvertToString(Record, 0, S))
1406         return Error("Invalid MODULE_CODE_GCNAME record");
1407       GCTable.push_back(S);
1408       break;
1409     }
1410     // GLOBALVAR: [pointer type, isconst, initid,
1411     //             linkage, alignment, section, visibility, threadlocal]
1412     case bitc::MODULE_CODE_GLOBALVAR: {
1413       if (Record.size() < 6)
1414         return Error("Invalid MODULE_CODE_GLOBALVAR record");
1415       const Type *Ty = getTypeByID(Record[0]);
1416       if (!Ty->isPointerTy())
1417         return Error("Global not a pointer type!");
1418       unsigned AddressSpace = cast<PointerType>(Ty)->getAddressSpace();
1419       Ty = cast<PointerType>(Ty)->getElementType();
1420 
1421       bool isConstant = Record[1];
1422       GlobalValue::LinkageTypes Linkage = GetDecodedLinkage(Record[3]);
1423       unsigned Alignment = (1 << Record[4]) >> 1;
1424       std::string Section;
1425       if (Record[5]) {
1426         if (Record[5]-1 >= SectionTable.size())
1427           return Error("Invalid section ID");
1428         Section = SectionTable[Record[5]-1];
1429       }
1430       GlobalValue::VisibilityTypes Visibility = GlobalValue::DefaultVisibility;
1431       if (Record.size() > 6)
1432         Visibility = GetDecodedVisibility(Record[6]);
1433       bool isThreadLocal = false;
1434       if (Record.size() > 7)
1435         isThreadLocal = Record[7];
1436 
1437       GlobalVariable *NewGV =
1438         new GlobalVariable(*TheModule, Ty, isConstant, Linkage, 0, "", 0,
1439                            isThreadLocal, AddressSpace);
1440       NewGV->setAlignment(Alignment);
1441       if (!Section.empty())
1442         NewGV->setSection(Section);
1443       NewGV->setVisibility(Visibility);
1444       NewGV->setThreadLocal(isThreadLocal);
1445 
1446       ValueList.push_back(NewGV);
1447 
1448       // Remember which value to use for the global initializer.
1449       if (unsigned InitID = Record[2])
1450         GlobalInits.push_back(std::make_pair(NewGV, InitID-1));
1451       break;
1452     }
1453     // FUNCTION:  [type, callingconv, isproto, linkage, paramattr,
1454     //             alignment, section, visibility, gc]
1455     case bitc::MODULE_CODE_FUNCTION: {
1456       if (Record.size() < 8)
1457         return Error("Invalid MODULE_CODE_FUNCTION record");
1458       const Type *Ty = getTypeByID(Record[0]);
1459       if (!Ty->isPointerTy())
1460         return Error("Function not a pointer type!");
1461       const FunctionType *FTy =
1462         dyn_cast<FunctionType>(cast<PointerType>(Ty)->getElementType());
1463       if (!FTy)
1464         return Error("Function not a pointer to function type!");
1465 
1466       Function *Func = Function::Create(FTy, GlobalValue::ExternalLinkage,
1467                                         "", TheModule);
1468 
1469       Func->setCallingConv(static_cast<CallingConv::ID>(Record[1]));
1470       bool isProto = Record[2];
1471       Func->setLinkage(GetDecodedLinkage(Record[3]));
1472       Func->setAttributes(getAttributes(Record[4]));
1473 
1474       Func->setAlignment((1 << Record[5]) >> 1);
1475       if (Record[6]) {
1476         if (Record[6]-1 >= SectionTable.size())
1477           return Error("Invalid section ID");
1478         Func->setSection(SectionTable[Record[6]-1]);
1479       }
1480       Func->setVisibility(GetDecodedVisibility(Record[7]));
1481       if (Record.size() > 8 && Record[8]) {
1482         if (Record[8]-1 > GCTable.size())
1483           return Error("Invalid GC ID");
1484         Func->setGC(GCTable[Record[8]-1].c_str());
1485       }
1486       ValueList.push_back(Func);
1487 
1488       // If this is a function with a body, remember the prototype we are
1489       // creating now, so that we can match up the body with them later.
1490       if (!isProto)
1491         FunctionsWithBodies.push_back(Func);
1492       break;
1493     }
1494     // ALIAS: [alias type, aliasee val#, linkage]
1495     // ALIAS: [alias type, aliasee val#, linkage, visibility]
1496     case bitc::MODULE_CODE_ALIAS: {
1497       if (Record.size() < 3)
1498         return Error("Invalid MODULE_ALIAS record");
1499       const Type *Ty = getTypeByID(Record[0]);
1500       if (!Ty->isPointerTy())
1501         return Error("Function not a pointer type!");
1502 
1503       GlobalAlias *NewGA = new GlobalAlias(Ty, GetDecodedLinkage(Record[2]),
1504                                            "", 0, TheModule);
1505       // Old bitcode files didn't have visibility field.
1506       if (Record.size() > 3)
1507         NewGA->setVisibility(GetDecodedVisibility(Record[3]));
1508       ValueList.push_back(NewGA);
1509       AliasInits.push_back(std::make_pair(NewGA, Record[1]));
1510       break;
1511     }
1512     /// MODULE_CODE_PURGEVALS: [numvals]
1513     case bitc::MODULE_CODE_PURGEVALS:
1514       // Trim down the value list to the specified size.
1515       if (Record.size() < 1 || Record[0] > ValueList.size())
1516         return Error("Invalid MODULE_PURGEVALS record");
1517       ValueList.shrinkTo(Record[0]);
1518       break;
1519     }
1520     Record.clear();
1521   }
1522 
1523   return Error("Premature end of bitstream");
1524 }
1525 
1526 bool BitcodeReader::ParseBitcodeInto(Module *M) {
1527   TheModule = 0;
1528 
1529   unsigned char *BufPtr = (unsigned char *)Buffer->getBufferStart();
1530   unsigned char *BufEnd = BufPtr+Buffer->getBufferSize();
1531 
1532   if (Buffer->getBufferSize() & 3) {
1533     if (!isRawBitcode(BufPtr, BufEnd) && !isBitcodeWrapper(BufPtr, BufEnd))
1534       return Error("Invalid bitcode signature");
1535     else
1536       return Error("Bitcode stream should be a multiple of 4 bytes in length");
1537   }
1538 
1539   // If we have a wrapper header, parse it and ignore the non-bc file contents.
1540   // The magic number is 0x0B17C0DE stored in little endian.
1541   if (isBitcodeWrapper(BufPtr, BufEnd))
1542     if (SkipBitcodeWrapperHeader(BufPtr, BufEnd))
1543       return Error("Invalid bitcode wrapper header");
1544 
1545   StreamFile.init(BufPtr, BufEnd);
1546   Stream.init(StreamFile);
1547 
1548   // Sniff for the signature.
1549   if (Stream.Read(8) != 'B' ||
1550       Stream.Read(8) != 'C' ||
1551       Stream.Read(4) != 0x0 ||
1552       Stream.Read(4) != 0xC ||
1553       Stream.Read(4) != 0xE ||
1554       Stream.Read(4) != 0xD)
1555     return Error("Invalid bitcode signature");
1556 
1557   // We expect a number of well-defined blocks, though we don't necessarily
1558   // need to understand them all.
1559   while (!Stream.AtEndOfStream()) {
1560     unsigned Code = Stream.ReadCode();
1561 
1562     if (Code != bitc::ENTER_SUBBLOCK)
1563       return Error("Invalid record at top-level");
1564 
1565     unsigned BlockID = Stream.ReadSubBlockID();
1566 
1567     // We only know the MODULE subblock ID.
1568     switch (BlockID) {
1569     case bitc::BLOCKINFO_BLOCK_ID:
1570       if (Stream.ReadBlockInfoBlock())
1571         return Error("Malformed BlockInfoBlock");
1572       break;
1573     case bitc::MODULE_BLOCK_ID:
1574       // Reject multiple MODULE_BLOCK's in a single bitstream.
1575       if (TheModule)
1576         return Error("Multiple MODULE_BLOCKs in same stream");
1577       TheModule = M;
1578       if (ParseModule())
1579         return true;
1580       break;
1581     default:
1582       if (Stream.SkipBlock())
1583         return Error("Malformed block record");
1584       break;
1585     }
1586   }
1587 
1588   return false;
1589 }
1590 
1591 /// ParseMetadataAttachment - Parse metadata attachments.
1592 bool BitcodeReader::ParseMetadataAttachment() {
1593   if (Stream.EnterSubBlock(bitc::METADATA_ATTACHMENT_ID))
1594     return Error("Malformed block record");
1595 
1596   SmallVector<uint64_t, 64> Record;
1597   while(1) {
1598     unsigned Code = Stream.ReadCode();
1599     if (Code == bitc::END_BLOCK) {
1600       if (Stream.ReadBlockEnd())
1601         return Error("Error at end of PARAMATTR block");
1602       break;
1603     }
1604     if (Code == bitc::DEFINE_ABBREV) {
1605       Stream.ReadAbbrevRecord();
1606       continue;
1607     }
1608     // Read a metadata attachment record.
1609     Record.clear();
1610     switch (Stream.ReadRecord(Code, Record)) {
1611     default:  // Default behavior: ignore.
1612       break;
1613     case bitc::METADATA_ATTACHMENT: {
1614       unsigned RecordLength = Record.size();
1615       if (Record.empty() || (RecordLength - 1) % 2 == 1)
1616         return Error ("Invalid METADATA_ATTACHMENT reader!");
1617       Instruction *Inst = InstructionList[Record[0]];
1618       for (unsigned i = 1; i != RecordLength; i = i+2) {
1619         unsigned Kind = Record[i];
1620         DenseMap<unsigned, unsigned>::iterator I =
1621           MDKindMap.find(Kind);
1622         if (I == MDKindMap.end())
1623           return Error("Invalid metadata kind ID");
1624         Value *Node = MDValueList.getValueFwdRef(Record[i+1]);
1625         Inst->setMetadata(I->second, cast<MDNode>(Node));
1626       }
1627       break;
1628     }
1629     }
1630   }
1631   return false;
1632 }
1633 
1634 /// ParseFunctionBody - Lazily parse the specified function body block.
1635 bool BitcodeReader::ParseFunctionBody(Function *F) {
1636   if (Stream.EnterSubBlock(bitc::FUNCTION_BLOCK_ID))
1637     return Error("Malformed block record");
1638 
1639   InstructionList.clear();
1640   unsigned ModuleValueListSize = ValueList.size();
1641 
1642   // Add all the function arguments to the value table.
1643   for(Function::arg_iterator I = F->arg_begin(), E = F->arg_end(); I != E; ++I)
1644     ValueList.push_back(I);
1645 
1646   unsigned NextValueNo = ValueList.size();
1647   BasicBlock *CurBB = 0;
1648   unsigned CurBBNo = 0;
1649 
1650   DebugLoc LastLoc;
1651 
1652   // Read all the records.
1653   SmallVector<uint64_t, 64> Record;
1654   while (1) {
1655     unsigned Code = Stream.ReadCode();
1656     if (Code == bitc::END_BLOCK) {
1657       if (Stream.ReadBlockEnd())
1658         return Error("Error at end of function block");
1659       break;
1660     }
1661 
1662     if (Code == bitc::ENTER_SUBBLOCK) {
1663       switch (Stream.ReadSubBlockID()) {
1664       default:  // Skip unknown content.
1665         if (Stream.SkipBlock())
1666           return Error("Malformed block record");
1667         break;
1668       case bitc::CONSTANTS_BLOCK_ID:
1669         if (ParseConstants()) return true;
1670         NextValueNo = ValueList.size();
1671         break;
1672       case bitc::VALUE_SYMTAB_BLOCK_ID:
1673         if (ParseValueSymbolTable()) return true;
1674         break;
1675       case bitc::METADATA_ATTACHMENT_ID:
1676         if (ParseMetadataAttachment()) return true;
1677         break;
1678       case bitc::METADATA_BLOCK_ID:
1679         if (ParseMetadata()) return true;
1680         break;
1681       }
1682       continue;
1683     }
1684 
1685     if (Code == bitc::DEFINE_ABBREV) {
1686       Stream.ReadAbbrevRecord();
1687       continue;
1688     }
1689 
1690     // Read a record.
1691     Record.clear();
1692     Instruction *I = 0;
1693     unsigned BitCode = Stream.ReadRecord(Code, Record);
1694     switch (BitCode) {
1695     default: // Default behavior: reject
1696       return Error("Unknown instruction");
1697     case bitc::FUNC_CODE_DECLAREBLOCKS:     // DECLAREBLOCKS: [nblocks]
1698       if (Record.size() < 1 || Record[0] == 0)
1699         return Error("Invalid DECLAREBLOCKS record");
1700       // Create all the basic blocks for the function.
1701       FunctionBBs.resize(Record[0]);
1702       for (unsigned i = 0, e = FunctionBBs.size(); i != e; ++i)
1703         FunctionBBs[i] = BasicBlock::Create(Context, "", F);
1704       CurBB = FunctionBBs[0];
1705       continue;
1706 
1707 
1708     case bitc::FUNC_CODE_DEBUG_LOC_AGAIN:  // DEBUG_LOC_AGAIN
1709       // This record indicates that the last instruction is at the same
1710       // location as the previous instruction with a location.
1711       I = 0;
1712 
1713       // Get the last instruction emitted.
1714       if (CurBB && !CurBB->empty())
1715         I = &CurBB->back();
1716       else if (CurBBNo && FunctionBBs[CurBBNo-1] &&
1717                !FunctionBBs[CurBBNo-1]->empty())
1718         I = &FunctionBBs[CurBBNo-1]->back();
1719 
1720       if (I == 0) return Error("Invalid DEBUG_LOC_AGAIN record");
1721       I->setDebugLoc(LastLoc);
1722       I = 0;
1723       continue;
1724 
1725     case bitc::FUNC_CODE_DEBUG_LOC: {      // DEBUG_LOC: [line, col, scope, ia]
1726       I = 0;     // Get the last instruction emitted.
1727       if (CurBB && !CurBB->empty())
1728         I = &CurBB->back();
1729       else if (CurBBNo && FunctionBBs[CurBBNo-1] &&
1730                !FunctionBBs[CurBBNo-1]->empty())
1731         I = &FunctionBBs[CurBBNo-1]->back();
1732       if (I == 0 || Record.size() < 4)
1733         return Error("Invalid FUNC_CODE_DEBUG_LOC record");
1734 
1735       unsigned Line = Record[0], Col = Record[1];
1736       unsigned ScopeID = Record[2], IAID = Record[3];
1737 
1738       MDNode *Scope = 0, *IA = 0;
1739       if (ScopeID) Scope = cast<MDNode>(MDValueList.getValueFwdRef(ScopeID-1));
1740       if (IAID)    IA = cast<MDNode>(MDValueList.getValueFwdRef(IAID-1));
1741       LastLoc = DebugLoc::get(Line, Col, Scope, IA);
1742       I->setDebugLoc(LastLoc);
1743       I = 0;
1744       continue;
1745     }
1746 
1747     case bitc::FUNC_CODE_INST_BINOP: {    // BINOP: [opval, ty, opval, opcode]
1748       unsigned OpNum = 0;
1749       Value *LHS, *RHS;
1750       if (getValueTypePair(Record, OpNum, NextValueNo, LHS) ||
1751           getValue(Record, OpNum, LHS->getType(), RHS) ||
1752           OpNum+1 > Record.size())
1753         return Error("Invalid BINOP record");
1754 
1755       int Opc = GetDecodedBinaryOpcode(Record[OpNum++], LHS->getType());
1756       if (Opc == -1) return Error("Invalid BINOP record");
1757       I = BinaryOperator::Create((Instruction::BinaryOps)Opc, LHS, RHS);
1758       InstructionList.push_back(I);
1759       if (OpNum < Record.size()) {
1760         if (Opc == Instruction::Add ||
1761             Opc == Instruction::Sub ||
1762             Opc == Instruction::Mul) {
1763           if (Record[OpNum] & (1 << bitc::OBO_NO_SIGNED_WRAP))
1764             cast<BinaryOperator>(I)->setHasNoSignedWrap(true);
1765           if (Record[OpNum] & (1 << bitc::OBO_NO_UNSIGNED_WRAP))
1766             cast<BinaryOperator>(I)->setHasNoUnsignedWrap(true);
1767         } else if (Opc == Instruction::SDiv) {
1768           if (Record[OpNum] & (1 << bitc::SDIV_EXACT))
1769             cast<BinaryOperator>(I)->setIsExact(true);
1770         }
1771       }
1772       break;
1773     }
1774     case bitc::FUNC_CODE_INST_CAST: {    // CAST: [opval, opty, destty, castopc]
1775       unsigned OpNum = 0;
1776       Value *Op;
1777       if (getValueTypePair(Record, OpNum, NextValueNo, Op) ||
1778           OpNum+2 != Record.size())
1779         return Error("Invalid CAST record");
1780 
1781       const Type *ResTy = getTypeByID(Record[OpNum]);
1782       int Opc = GetDecodedCastOpcode(Record[OpNum+1]);
1783       if (Opc == -1 || ResTy == 0)
1784         return Error("Invalid CAST record");
1785       I = CastInst::Create((Instruction::CastOps)Opc, Op, ResTy);
1786       InstructionList.push_back(I);
1787       break;
1788     }
1789     case bitc::FUNC_CODE_INST_INBOUNDS_GEP:
1790     case bitc::FUNC_CODE_INST_GEP: { // GEP: [n x operands]
1791       unsigned OpNum = 0;
1792       Value *BasePtr;
1793       if (getValueTypePair(Record, OpNum, NextValueNo, BasePtr))
1794         return Error("Invalid GEP record");
1795 
1796       SmallVector<Value*, 16> GEPIdx;
1797       while (OpNum != Record.size()) {
1798         Value *Op;
1799         if (getValueTypePair(Record, OpNum, NextValueNo, Op))
1800           return Error("Invalid GEP record");
1801         GEPIdx.push_back(Op);
1802       }
1803 
1804       I = GetElementPtrInst::Create(BasePtr, GEPIdx.begin(), GEPIdx.end());
1805       InstructionList.push_back(I);
1806       if (BitCode == bitc::FUNC_CODE_INST_INBOUNDS_GEP)
1807         cast<GetElementPtrInst>(I)->setIsInBounds(true);
1808       break;
1809     }
1810 
1811     case bitc::FUNC_CODE_INST_EXTRACTVAL: {
1812                                        // EXTRACTVAL: [opty, opval, n x indices]
1813       unsigned OpNum = 0;
1814       Value *Agg;
1815       if (getValueTypePair(Record, OpNum, NextValueNo, Agg))
1816         return Error("Invalid EXTRACTVAL record");
1817 
1818       SmallVector<unsigned, 4> EXTRACTVALIdx;
1819       for (unsigned RecSize = Record.size();
1820            OpNum != RecSize; ++OpNum) {
1821         uint64_t Index = Record[OpNum];
1822         if ((unsigned)Index != Index)
1823           return Error("Invalid EXTRACTVAL index");
1824         EXTRACTVALIdx.push_back((unsigned)Index);
1825       }
1826 
1827       I = ExtractValueInst::Create(Agg,
1828                                    EXTRACTVALIdx.begin(), EXTRACTVALIdx.end());
1829       InstructionList.push_back(I);
1830       break;
1831     }
1832 
1833     case bitc::FUNC_CODE_INST_INSERTVAL: {
1834                            // INSERTVAL: [opty, opval, opty, opval, n x indices]
1835       unsigned OpNum = 0;
1836       Value *Agg;
1837       if (getValueTypePair(Record, OpNum, NextValueNo, Agg))
1838         return Error("Invalid INSERTVAL record");
1839       Value *Val;
1840       if (getValueTypePair(Record, OpNum, NextValueNo, Val))
1841         return Error("Invalid INSERTVAL record");
1842 
1843       SmallVector<unsigned, 4> INSERTVALIdx;
1844       for (unsigned RecSize = Record.size();
1845            OpNum != RecSize; ++OpNum) {
1846         uint64_t Index = Record[OpNum];
1847         if ((unsigned)Index != Index)
1848           return Error("Invalid INSERTVAL index");
1849         INSERTVALIdx.push_back((unsigned)Index);
1850       }
1851 
1852       I = InsertValueInst::Create(Agg, Val,
1853                                   INSERTVALIdx.begin(), INSERTVALIdx.end());
1854       InstructionList.push_back(I);
1855       break;
1856     }
1857 
1858     case bitc::FUNC_CODE_INST_SELECT: { // SELECT: [opval, ty, opval, opval]
1859       // obsolete form of select
1860       // handles select i1 ... in old bitcode
1861       unsigned OpNum = 0;
1862       Value *TrueVal, *FalseVal, *Cond;
1863       if (getValueTypePair(Record, OpNum, NextValueNo, TrueVal) ||
1864           getValue(Record, OpNum, TrueVal->getType(), FalseVal) ||
1865           getValue(Record, OpNum, Type::getInt1Ty(Context), Cond))
1866         return Error("Invalid SELECT record");
1867 
1868       I = SelectInst::Create(Cond, TrueVal, FalseVal);
1869       InstructionList.push_back(I);
1870       break;
1871     }
1872 
1873     case bitc::FUNC_CODE_INST_VSELECT: {// VSELECT: [ty,opval,opval,predty,pred]
1874       // new form of select
1875       // handles select i1 or select [N x i1]
1876       unsigned OpNum = 0;
1877       Value *TrueVal, *FalseVal, *Cond;
1878       if (getValueTypePair(Record, OpNum, NextValueNo, TrueVal) ||
1879           getValue(Record, OpNum, TrueVal->getType(), FalseVal) ||
1880           getValueTypePair(Record, OpNum, NextValueNo, Cond))
1881         return Error("Invalid SELECT record");
1882 
1883       // select condition can be either i1 or [N x i1]
1884       if (const VectorType* vector_type =
1885           dyn_cast<const VectorType>(Cond->getType())) {
1886         // expect <n x i1>
1887         if (vector_type->getElementType() != Type::getInt1Ty(Context))
1888           return Error("Invalid SELECT condition type");
1889       } else {
1890         // expect i1
1891         if (Cond->getType() != Type::getInt1Ty(Context))
1892           return Error("Invalid SELECT condition type");
1893       }
1894 
1895       I = SelectInst::Create(Cond, TrueVal, FalseVal);
1896       InstructionList.push_back(I);
1897       break;
1898     }
1899 
1900     case bitc::FUNC_CODE_INST_EXTRACTELT: { // EXTRACTELT: [opty, opval, opval]
1901       unsigned OpNum = 0;
1902       Value *Vec, *Idx;
1903       if (getValueTypePair(Record, OpNum, NextValueNo, Vec) ||
1904           getValue(Record, OpNum, Type::getInt32Ty(Context), Idx))
1905         return Error("Invalid EXTRACTELT record");
1906       I = ExtractElementInst::Create(Vec, Idx);
1907       InstructionList.push_back(I);
1908       break;
1909     }
1910 
1911     case bitc::FUNC_CODE_INST_INSERTELT: { // INSERTELT: [ty, opval,opval,opval]
1912       unsigned OpNum = 0;
1913       Value *Vec, *Elt, *Idx;
1914       if (getValueTypePair(Record, OpNum, NextValueNo, Vec) ||
1915           getValue(Record, OpNum,
1916                    cast<VectorType>(Vec->getType())->getElementType(), Elt) ||
1917           getValue(Record, OpNum, Type::getInt32Ty(Context), Idx))
1918         return Error("Invalid INSERTELT record");
1919       I = InsertElementInst::Create(Vec, Elt, Idx);
1920       InstructionList.push_back(I);
1921       break;
1922     }
1923 
1924     case bitc::FUNC_CODE_INST_SHUFFLEVEC: {// SHUFFLEVEC: [opval,ty,opval,opval]
1925       unsigned OpNum = 0;
1926       Value *Vec1, *Vec2, *Mask;
1927       if (getValueTypePair(Record, OpNum, NextValueNo, Vec1) ||
1928           getValue(Record, OpNum, Vec1->getType(), Vec2))
1929         return Error("Invalid SHUFFLEVEC record");
1930 
1931       if (getValueTypePair(Record, OpNum, NextValueNo, Mask))
1932         return Error("Invalid SHUFFLEVEC record");
1933       I = new ShuffleVectorInst(Vec1, Vec2, Mask);
1934       InstructionList.push_back(I);
1935       break;
1936     }
1937 
1938     case bitc::FUNC_CODE_INST_CMP:   // CMP: [opty, opval, opval, pred]
1939       // Old form of ICmp/FCmp returning bool
1940       // Existed to differentiate between icmp/fcmp and vicmp/vfcmp which were
1941       // both legal on vectors but had different behaviour.
1942     case bitc::FUNC_CODE_INST_CMP2: { // CMP2: [opty, opval, opval, pred]
1943       // FCmp/ICmp returning bool or vector of bool
1944 
1945       unsigned OpNum = 0;
1946       Value *LHS, *RHS;
1947       if (getValueTypePair(Record, OpNum, NextValueNo, LHS) ||
1948           getValue(Record, OpNum, LHS->getType(), RHS) ||
1949           OpNum+1 != Record.size())
1950         return Error("Invalid CMP record");
1951 
1952       if (LHS->getType()->isFPOrFPVectorTy())
1953         I = new FCmpInst((FCmpInst::Predicate)Record[OpNum], LHS, RHS);
1954       else
1955         I = new ICmpInst((ICmpInst::Predicate)Record[OpNum], LHS, RHS);
1956       InstructionList.push_back(I);
1957       break;
1958     }
1959 
1960     case bitc::FUNC_CODE_INST_GETRESULT: { // GETRESULT: [ty, val, n]
1961       if (Record.size() != 2)
1962         return Error("Invalid GETRESULT record");
1963       unsigned OpNum = 0;
1964       Value *Op;
1965       getValueTypePair(Record, OpNum, NextValueNo, Op);
1966       unsigned Index = Record[1];
1967       I = ExtractValueInst::Create(Op, Index);
1968       InstructionList.push_back(I);
1969       break;
1970     }
1971 
1972     case bitc::FUNC_CODE_INST_RET: // RET: [opty,opval<optional>]
1973       {
1974         unsigned Size = Record.size();
1975         if (Size == 0) {
1976           I = ReturnInst::Create(Context);
1977           InstructionList.push_back(I);
1978           break;
1979         }
1980 
1981         unsigned OpNum = 0;
1982         SmallVector<Value *,4> Vs;
1983         do {
1984           Value *Op = NULL;
1985           if (getValueTypePair(Record, OpNum, NextValueNo, Op))
1986             return Error("Invalid RET record");
1987           Vs.push_back(Op);
1988         } while(OpNum != Record.size());
1989 
1990         const Type *ReturnType = F->getReturnType();
1991         if (Vs.size() > 1 ||
1992             (ReturnType->isStructTy() &&
1993              (Vs.empty() || Vs[0]->getType() != ReturnType))) {
1994           Value *RV = UndefValue::get(ReturnType);
1995           for (unsigned i = 0, e = Vs.size(); i != e; ++i) {
1996             I = InsertValueInst::Create(RV, Vs[i], i, "mrv");
1997             InstructionList.push_back(I);
1998             CurBB->getInstList().push_back(I);
1999             ValueList.AssignValue(I, NextValueNo++);
2000             RV = I;
2001           }
2002           I = ReturnInst::Create(Context, RV);
2003           InstructionList.push_back(I);
2004           break;
2005         }
2006 
2007         I = ReturnInst::Create(Context, Vs[0]);
2008         InstructionList.push_back(I);
2009         break;
2010       }
2011     case bitc::FUNC_CODE_INST_BR: { // BR: [bb#, bb#, opval] or [bb#]
2012       if (Record.size() != 1 && Record.size() != 3)
2013         return Error("Invalid BR record");
2014       BasicBlock *TrueDest = getBasicBlock(Record[0]);
2015       if (TrueDest == 0)
2016         return Error("Invalid BR record");
2017 
2018       if (Record.size() == 1) {
2019         I = BranchInst::Create(TrueDest);
2020         InstructionList.push_back(I);
2021       }
2022       else {
2023         BasicBlock *FalseDest = getBasicBlock(Record[1]);
2024         Value *Cond = getFnValueByID(Record[2], Type::getInt1Ty(Context));
2025         if (FalseDest == 0 || Cond == 0)
2026           return Error("Invalid BR record");
2027         I = BranchInst::Create(TrueDest, FalseDest, Cond);
2028         InstructionList.push_back(I);
2029       }
2030       break;
2031     }
2032     case bitc::FUNC_CODE_INST_SWITCH: { // SWITCH: [opty, op0, op1, ...]
2033       if (Record.size() < 3 || (Record.size() & 1) == 0)
2034         return Error("Invalid SWITCH record");
2035       const Type *OpTy = getTypeByID(Record[0]);
2036       Value *Cond = getFnValueByID(Record[1], OpTy);
2037       BasicBlock *Default = getBasicBlock(Record[2]);
2038       if (OpTy == 0 || Cond == 0 || Default == 0)
2039         return Error("Invalid SWITCH record");
2040       unsigned NumCases = (Record.size()-3)/2;
2041       SwitchInst *SI = SwitchInst::Create(Cond, Default, NumCases);
2042       InstructionList.push_back(SI);
2043       for (unsigned i = 0, e = NumCases; i != e; ++i) {
2044         ConstantInt *CaseVal =
2045           dyn_cast_or_null<ConstantInt>(getFnValueByID(Record[3+i*2], OpTy));
2046         BasicBlock *DestBB = getBasicBlock(Record[1+3+i*2]);
2047         if (CaseVal == 0 || DestBB == 0) {
2048           delete SI;
2049           return Error("Invalid SWITCH record!");
2050         }
2051         SI->addCase(CaseVal, DestBB);
2052       }
2053       I = SI;
2054       break;
2055     }
2056     case bitc::FUNC_CODE_INST_INDIRECTBR: { // INDIRECTBR: [opty, op0, op1, ...]
2057       if (Record.size() < 2)
2058         return Error("Invalid INDIRECTBR record");
2059       const Type *OpTy = getTypeByID(Record[0]);
2060       Value *Address = getFnValueByID(Record[1], OpTy);
2061       if (OpTy == 0 || Address == 0)
2062         return Error("Invalid INDIRECTBR record");
2063       unsigned NumDests = Record.size()-2;
2064       IndirectBrInst *IBI = IndirectBrInst::Create(Address, NumDests);
2065       InstructionList.push_back(IBI);
2066       for (unsigned i = 0, e = NumDests; i != e; ++i) {
2067         if (BasicBlock *DestBB = getBasicBlock(Record[2+i])) {
2068           IBI->addDestination(DestBB);
2069         } else {
2070           delete IBI;
2071           return Error("Invalid INDIRECTBR record!");
2072         }
2073       }
2074       I = IBI;
2075       break;
2076     }
2077 
2078     case bitc::FUNC_CODE_INST_INVOKE: {
2079       // INVOKE: [attrs, cc, normBB, unwindBB, fnty, op0,op1,op2, ...]
2080       if (Record.size() < 4) return Error("Invalid INVOKE record");
2081       AttrListPtr PAL = getAttributes(Record[0]);
2082       unsigned CCInfo = Record[1];
2083       BasicBlock *NormalBB = getBasicBlock(Record[2]);
2084       BasicBlock *UnwindBB = getBasicBlock(Record[3]);
2085 
2086       unsigned OpNum = 4;
2087       Value *Callee;
2088       if (getValueTypePair(Record, OpNum, NextValueNo, Callee))
2089         return Error("Invalid INVOKE record");
2090 
2091       const PointerType *CalleeTy = dyn_cast<PointerType>(Callee->getType());
2092       const FunctionType *FTy = !CalleeTy ? 0 :
2093         dyn_cast<FunctionType>(CalleeTy->getElementType());
2094 
2095       // Check that the right number of fixed parameters are here.
2096       if (FTy == 0 || NormalBB == 0 || UnwindBB == 0 ||
2097           Record.size() < OpNum+FTy->getNumParams())
2098         return Error("Invalid INVOKE record");
2099 
2100       SmallVector<Value*, 16> Ops;
2101       for (unsigned i = 0, e = FTy->getNumParams(); i != e; ++i, ++OpNum) {
2102         Ops.push_back(getFnValueByID(Record[OpNum], FTy->getParamType(i)));
2103         if (Ops.back() == 0) return Error("Invalid INVOKE record");
2104       }
2105 
2106       if (!FTy->isVarArg()) {
2107         if (Record.size() != OpNum)
2108           return Error("Invalid INVOKE record");
2109       } else {
2110         // Read type/value pairs for varargs params.
2111         while (OpNum != Record.size()) {
2112           Value *Op;
2113           if (getValueTypePair(Record, OpNum, NextValueNo, Op))
2114             return Error("Invalid INVOKE record");
2115           Ops.push_back(Op);
2116         }
2117       }
2118 
2119       I = InvokeInst::Create(Callee, NormalBB, UnwindBB,
2120                              Ops.begin(), Ops.end());
2121       InstructionList.push_back(I);
2122       cast<InvokeInst>(I)->setCallingConv(
2123         static_cast<CallingConv::ID>(CCInfo));
2124       cast<InvokeInst>(I)->setAttributes(PAL);
2125       break;
2126     }
2127     case bitc::FUNC_CODE_INST_UNWIND: // UNWIND
2128       I = new UnwindInst(Context);
2129       InstructionList.push_back(I);
2130       break;
2131     case bitc::FUNC_CODE_INST_UNREACHABLE: // UNREACHABLE
2132       I = new UnreachableInst(Context);
2133       InstructionList.push_back(I);
2134       break;
2135     case bitc::FUNC_CODE_INST_PHI: { // PHI: [ty, val0,bb0, ...]
2136       if (Record.size() < 1 || ((Record.size()-1)&1))
2137         return Error("Invalid PHI record");
2138       const Type *Ty = getTypeByID(Record[0]);
2139       if (!Ty) return Error("Invalid PHI record");
2140 
2141       PHINode *PN = PHINode::Create(Ty);
2142       InstructionList.push_back(PN);
2143       PN->reserveOperandSpace((Record.size()-1)/2);
2144 
2145       for (unsigned i = 0, e = Record.size()-1; i != e; i += 2) {
2146         Value *V = getFnValueByID(Record[1+i], Ty);
2147         BasicBlock *BB = getBasicBlock(Record[2+i]);
2148         if (!V || !BB) return Error("Invalid PHI record");
2149         PN->addIncoming(V, BB);
2150       }
2151       I = PN;
2152       break;
2153     }
2154 
2155     case bitc::FUNC_CODE_INST_MALLOC: { // MALLOC: [instty, op, align]
2156       // Autoupgrade malloc instruction to malloc call.
2157       // FIXME: Remove in LLVM 3.0.
2158       if (Record.size() < 3)
2159         return Error("Invalid MALLOC record");
2160       const PointerType *Ty =
2161         dyn_cast_or_null<PointerType>(getTypeByID(Record[0]));
2162       Value *Size = getFnValueByID(Record[1], Type::getInt32Ty(Context));
2163       if (!Ty || !Size) return Error("Invalid MALLOC record");
2164       if (!CurBB) return Error("Invalid malloc instruction with no BB");
2165       const Type *Int32Ty = IntegerType::getInt32Ty(CurBB->getContext());
2166       Constant *AllocSize = ConstantExpr::getSizeOf(Ty->getElementType());
2167       AllocSize = ConstantExpr::getTruncOrBitCast(AllocSize, Int32Ty);
2168       I = CallInst::CreateMalloc(CurBB, Int32Ty, Ty->getElementType(),
2169                                  AllocSize, Size, NULL);
2170       InstructionList.push_back(I);
2171       break;
2172     }
2173     case bitc::FUNC_CODE_INST_FREE: { // FREE: [op, opty]
2174       unsigned OpNum = 0;
2175       Value *Op;
2176       if (getValueTypePair(Record, OpNum, NextValueNo, Op) ||
2177           OpNum != Record.size())
2178         return Error("Invalid FREE record");
2179       if (!CurBB) return Error("Invalid free instruction with no BB");
2180       I = CallInst::CreateFree(Op, CurBB);
2181       InstructionList.push_back(I);
2182       break;
2183     }
2184     case bitc::FUNC_CODE_INST_ALLOCA: { // ALLOCA: [instty, opty, op, align]
2185       // For backward compatibility, tolerate a lack of an opty, and use i32.
2186       // LLVM 3.0: Remove this.
2187       if (Record.size() < 3 || Record.size() > 4)
2188         return Error("Invalid ALLOCA record");
2189       unsigned OpNum = 0;
2190       const PointerType *Ty =
2191         dyn_cast_or_null<PointerType>(getTypeByID(Record[OpNum++]));
2192       const Type *OpTy = Record.size() == 4 ? getTypeByID(Record[OpNum++]) :
2193                                               Type::getInt32Ty(Context);
2194       Value *Size = getFnValueByID(Record[OpNum++], OpTy);
2195       unsigned Align = Record[OpNum++];
2196       if (!Ty || !Size) return Error("Invalid ALLOCA record");
2197       I = new AllocaInst(Ty->getElementType(), Size, (1 << Align) >> 1);
2198       InstructionList.push_back(I);
2199       break;
2200     }
2201     case bitc::FUNC_CODE_INST_LOAD: { // LOAD: [opty, op, align, vol]
2202       unsigned OpNum = 0;
2203       Value *Op;
2204       if (getValueTypePair(Record, OpNum, NextValueNo, Op) ||
2205           OpNum+2 != Record.size())
2206         return Error("Invalid LOAD record");
2207 
2208       I = new LoadInst(Op, "", Record[OpNum+1], (1 << Record[OpNum]) >> 1);
2209       InstructionList.push_back(I);
2210       break;
2211     }
2212     case bitc::FUNC_CODE_INST_STORE2: { // STORE2:[ptrty, ptr, val, align, vol]
2213       unsigned OpNum = 0;
2214       Value *Val, *Ptr;
2215       if (getValueTypePair(Record, OpNum, NextValueNo, Ptr) ||
2216           getValue(Record, OpNum,
2217                     cast<PointerType>(Ptr->getType())->getElementType(), Val) ||
2218           OpNum+2 != Record.size())
2219         return Error("Invalid STORE record");
2220 
2221       I = new StoreInst(Val, Ptr, Record[OpNum+1], (1 << Record[OpNum]) >> 1);
2222       InstructionList.push_back(I);
2223       break;
2224     }
2225     case bitc::FUNC_CODE_INST_STORE: { // STORE:[val, valty, ptr, align, vol]
2226       // FIXME: Legacy form of store instruction. Should be removed in LLVM 3.0.
2227       unsigned OpNum = 0;
2228       Value *Val, *Ptr;
2229       if (getValueTypePair(Record, OpNum, NextValueNo, Val) ||
2230           getValue(Record, OpNum,
2231                    PointerType::getUnqual(Val->getType()), Ptr)||
2232           OpNum+2 != Record.size())
2233         return Error("Invalid STORE record");
2234 
2235       I = new StoreInst(Val, Ptr, Record[OpNum+1], (1 << Record[OpNum]) >> 1);
2236       InstructionList.push_back(I);
2237       break;
2238     }
2239     case bitc::FUNC_CODE_INST_CALL: {
2240       // CALL: [paramattrs, cc, fnty, fnid, arg0, arg1...]
2241       if (Record.size() < 3)
2242         return Error("Invalid CALL record");
2243 
2244       AttrListPtr PAL = getAttributes(Record[0]);
2245       unsigned CCInfo = Record[1];
2246 
2247       unsigned OpNum = 2;
2248       Value *Callee;
2249       if (getValueTypePair(Record, OpNum, NextValueNo, Callee))
2250         return Error("Invalid CALL record");
2251 
2252       const PointerType *OpTy = dyn_cast<PointerType>(Callee->getType());
2253       const FunctionType *FTy = 0;
2254       if (OpTy) FTy = dyn_cast<FunctionType>(OpTy->getElementType());
2255       if (!FTy || Record.size() < FTy->getNumParams()+OpNum)
2256         return Error("Invalid CALL record");
2257 
2258       SmallVector<Value*, 16> Args;
2259       // Read the fixed params.
2260       for (unsigned i = 0, e = FTy->getNumParams(); i != e; ++i, ++OpNum) {
2261         if (FTy->getParamType(i)->getTypeID()==Type::LabelTyID)
2262           Args.push_back(getBasicBlock(Record[OpNum]));
2263         else
2264           Args.push_back(getFnValueByID(Record[OpNum], FTy->getParamType(i)));
2265         if (Args.back() == 0) return Error("Invalid CALL record");
2266       }
2267 
2268       // Read type/value pairs for varargs params.
2269       if (!FTy->isVarArg()) {
2270         if (OpNum != Record.size())
2271           return Error("Invalid CALL record");
2272       } else {
2273         while (OpNum != Record.size()) {
2274           Value *Op;
2275           if (getValueTypePair(Record, OpNum, NextValueNo, Op))
2276             return Error("Invalid CALL record");
2277           Args.push_back(Op);
2278         }
2279       }
2280 
2281       I = CallInst::Create(Callee, Args.begin(), Args.end());
2282       InstructionList.push_back(I);
2283       cast<CallInst>(I)->setCallingConv(
2284         static_cast<CallingConv::ID>(CCInfo>>1));
2285       cast<CallInst>(I)->setTailCall(CCInfo & 1);
2286       cast<CallInst>(I)->setAttributes(PAL);
2287       break;
2288     }
2289     case bitc::FUNC_CODE_INST_VAARG: { // VAARG: [valistty, valist, instty]
2290       if (Record.size() < 3)
2291         return Error("Invalid VAARG record");
2292       const Type *OpTy = getTypeByID(Record[0]);
2293       Value *Op = getFnValueByID(Record[1], OpTy);
2294       const Type *ResTy = getTypeByID(Record[2]);
2295       if (!OpTy || !Op || !ResTy)
2296         return Error("Invalid VAARG record");
2297       I = new VAArgInst(Op, ResTy);
2298       InstructionList.push_back(I);
2299       break;
2300     }
2301     }
2302 
2303     // Add instruction to end of current BB.  If there is no current BB, reject
2304     // this file.
2305     if (CurBB == 0) {
2306       delete I;
2307       return Error("Invalid instruction with no BB");
2308     }
2309     CurBB->getInstList().push_back(I);
2310 
2311     // If this was a terminator instruction, move to the next block.
2312     if (isa<TerminatorInst>(I)) {
2313       ++CurBBNo;
2314       CurBB = CurBBNo < FunctionBBs.size() ? FunctionBBs[CurBBNo] : 0;
2315     }
2316 
2317     // Non-void values get registered in the value table for future use.
2318     if (I && !I->getType()->isVoidTy())
2319       ValueList.AssignValue(I, NextValueNo++);
2320   }
2321 
2322   // Check the function list for unresolved values.
2323   if (Argument *A = dyn_cast<Argument>(ValueList.back())) {
2324     if (A->getParent() == 0) {
2325       // We found at least one unresolved value.  Nuke them all to avoid leaks.
2326       for (unsigned i = ModuleValueListSize, e = ValueList.size(); i != e; ++i){
2327         if ((A = dyn_cast<Argument>(ValueList.back())) && A->getParent() == 0) {
2328           A->replaceAllUsesWith(UndefValue::get(A->getType()));
2329           delete A;
2330         }
2331       }
2332       return Error("Never resolved value found in function!");
2333     }
2334   }
2335 
2336   // See if anything took the address of blocks in this function.  If so,
2337   // resolve them now.
2338   DenseMap<Function*, std::vector<BlockAddrRefTy> >::iterator BAFRI =
2339     BlockAddrFwdRefs.find(F);
2340   if (BAFRI != BlockAddrFwdRefs.end()) {
2341     std::vector<BlockAddrRefTy> &RefList = BAFRI->second;
2342     for (unsigned i = 0, e = RefList.size(); i != e; ++i) {
2343       unsigned BlockIdx = RefList[i].first;
2344       if (BlockIdx >= FunctionBBs.size())
2345         return Error("Invalid blockaddress block #");
2346 
2347       GlobalVariable *FwdRef = RefList[i].second;
2348       FwdRef->replaceAllUsesWith(BlockAddress::get(F, FunctionBBs[BlockIdx]));
2349       FwdRef->eraseFromParent();
2350     }
2351 
2352     BlockAddrFwdRefs.erase(BAFRI);
2353   }
2354 
2355   // Trim the value list down to the size it was before we parsed this function.
2356   ValueList.shrinkTo(ModuleValueListSize);
2357   std::vector<BasicBlock*>().swap(FunctionBBs);
2358 
2359   return false;
2360 }
2361 
2362 //===----------------------------------------------------------------------===//
2363 // GVMaterializer implementation
2364 //===----------------------------------------------------------------------===//
2365 
2366 
2367 bool BitcodeReader::isMaterializable(const GlobalValue *GV) const {
2368   if (const Function *F = dyn_cast<Function>(GV)) {
2369     return F->isDeclaration() &&
2370       DeferredFunctionInfo.count(const_cast<Function*>(F));
2371   }
2372   return false;
2373 }
2374 
2375 bool BitcodeReader::Materialize(GlobalValue *GV, std::string *ErrInfo) {
2376   Function *F = dyn_cast<Function>(GV);
2377   // If it's not a function or is already material, ignore the request.
2378   if (!F || !F->isMaterializable()) return false;
2379 
2380   DenseMap<Function*, uint64_t>::iterator DFII = DeferredFunctionInfo.find(F);
2381   assert(DFII != DeferredFunctionInfo.end() && "Deferred function not found!");
2382 
2383   // Move the bit stream to the saved position of the deferred function body.
2384   Stream.JumpToBit(DFII->second);
2385 
2386   if (ParseFunctionBody(F)) {
2387     if (ErrInfo) *ErrInfo = ErrorString;
2388     return true;
2389   }
2390 
2391   // Upgrade any old intrinsic calls in the function.
2392   for (UpgradedIntrinsicMap::iterator I = UpgradedIntrinsics.begin(),
2393        E = UpgradedIntrinsics.end(); I != E; ++I) {
2394     if (I->first != I->second) {
2395       for (Value::use_iterator UI = I->first->use_begin(),
2396            UE = I->first->use_end(); UI != UE; ) {
2397         if (CallInst* CI = dyn_cast<CallInst>(*UI++))
2398           UpgradeIntrinsicCall(CI, I->second);
2399       }
2400     }
2401   }
2402 
2403   return false;
2404 }
2405 
2406 bool BitcodeReader::isDematerializable(const GlobalValue *GV) const {
2407   const Function *F = dyn_cast<Function>(GV);
2408   if (!F || F->isDeclaration())
2409     return false;
2410   return DeferredFunctionInfo.count(const_cast<Function*>(F));
2411 }
2412 
2413 void BitcodeReader::Dematerialize(GlobalValue *GV) {
2414   Function *F = dyn_cast<Function>(GV);
2415   // If this function isn't dematerializable, this is a noop.
2416   if (!F || !isDematerializable(F))
2417     return;
2418 
2419   assert(DeferredFunctionInfo.count(F) && "No info to read function later?");
2420 
2421   // Just forget the function body, we can remat it later.
2422   F->deleteBody();
2423 }
2424 
2425 
2426 bool BitcodeReader::MaterializeModule(Module *M, std::string *ErrInfo) {
2427   assert(M == TheModule &&
2428          "Can only Materialize the Module this BitcodeReader is attached to.");
2429   // Iterate over the module, deserializing any functions that are still on
2430   // disk.
2431   for (Module::iterator F = TheModule->begin(), E = TheModule->end();
2432        F != E; ++F)
2433     if (F->isMaterializable() &&
2434         Materialize(F, ErrInfo))
2435       return true;
2436 
2437   // Upgrade any intrinsic calls that slipped through (should not happen!) and
2438   // delete the old functions to clean up. We can't do this unless the entire
2439   // module is materialized because there could always be another function body
2440   // with calls to the old function.
2441   for (std::vector<std::pair<Function*, Function*> >::iterator I =
2442        UpgradedIntrinsics.begin(), E = UpgradedIntrinsics.end(); I != E; ++I) {
2443     if (I->first != I->second) {
2444       for (Value::use_iterator UI = I->first->use_begin(),
2445            UE = I->first->use_end(); UI != UE; ) {
2446         if (CallInst* CI = dyn_cast<CallInst>(*UI++))
2447           UpgradeIntrinsicCall(CI, I->second);
2448       }
2449       if (!I->first->use_empty())
2450         I->first->replaceAllUsesWith(I->second);
2451       I->first->eraseFromParent();
2452     }
2453   }
2454   std::vector<std::pair<Function*, Function*> >().swap(UpgradedIntrinsics);
2455 
2456   // Check debug info intrinsics.
2457   CheckDebugInfoIntrinsics(TheModule);
2458 
2459   return false;
2460 }
2461 
2462 
2463 //===----------------------------------------------------------------------===//
2464 // External interface
2465 //===----------------------------------------------------------------------===//
2466 
2467 /// getLazyBitcodeModule - lazy function-at-a-time loading from a file.
2468 ///
2469 Module *llvm::getLazyBitcodeModule(MemoryBuffer *Buffer,
2470                                    LLVMContext& Context,
2471                                    std::string *ErrMsg) {
2472   Module *M = new Module(Buffer->getBufferIdentifier(), Context);
2473   BitcodeReader *R = new BitcodeReader(Buffer, Context);
2474   M->setMaterializer(R);
2475   if (R->ParseBitcodeInto(M)) {
2476     if (ErrMsg)
2477       *ErrMsg = R->getErrorString();
2478 
2479     delete M;  // Also deletes R.
2480     return 0;
2481   }
2482   // Have the BitcodeReader dtor delete 'Buffer'.
2483   R->setBufferOwned(true);
2484   return M;
2485 }
2486 
2487 /// ParseBitcodeFile - Read the specified bitcode file, returning the module.
2488 /// If an error occurs, return null and fill in *ErrMsg if non-null.
2489 Module *llvm::ParseBitcodeFile(MemoryBuffer *Buffer, LLVMContext& Context,
2490                                std::string *ErrMsg){
2491   Module *M = getLazyBitcodeModule(Buffer, Context, ErrMsg);
2492   if (!M) return 0;
2493 
2494   // Don't let the BitcodeReader dtor delete 'Buffer', regardless of whether
2495   // there was an error.
2496   static_cast<BitcodeReader*>(M->getMaterializer())->setBufferOwned(false);
2497 
2498   // Read in the entire module, and destroy the BitcodeReader.
2499   if (M->MaterializeAllPermanently(ErrMsg)) {
2500     delete M;
2501     return NULL;
2502   }
2503   return M;
2504 }
2505