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