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 "BitReader_3_0.h" 16 #include "llvm/ADT/STLExtras.h" 17 #include "llvm/ADT/SmallString.h" 18 #include "llvm/ADT/SmallVector.h" 19 #include "llvm/IR/AutoUpgrade.h" 20 #include "llvm/IR/Constants.h" 21 #include "llvm/IR/CFG.h" 22 #include "llvm/IR/DerivedTypes.h" 23 #include "llvm/IR/DiagnosticPrinter.h" 24 #include "llvm/IR/GVMaterializer.h" 25 #include "llvm/IR/InlineAsm.h" 26 #include "llvm/IR/IntrinsicInst.h" 27 #include "llvm/IR/IRBuilder.h" 28 #include "llvm/IR/LLVMContext.h" 29 #include "llvm/IR/Module.h" 30 #include "llvm/IR/OperandTraits.h" 31 #include "llvm/IR/Operator.h" 32 #include "llvm/ADT/SmallPtrSet.h" 33 #include "llvm/Support/ManagedStatic.h" 34 #include "llvm/Support/MathExtras.h" 35 #include "llvm/Support/MemoryBuffer.h" 36 37 using namespace llvm; 38 using namespace llvm_3_0; 39 40 #define FUNC_CODE_INST_UNWIND_2_7 14 41 #define eh_exception_2_7 145 42 #define eh_selector_2_7 149 43 44 #define TYPE_BLOCK_ID_OLD_3_0 10 45 #define TYPE_SYMTAB_BLOCK_ID_OLD_3_0 13 46 #define TYPE_CODE_STRUCT_OLD_3_0 10 47 48 namespace { 49 void FindExnAndSelIntrinsics(BasicBlock *BB, CallInst *&Exn, 50 CallInst *&Sel, 51 SmallPtrSet<BasicBlock*, 8> &Visited) { 52 if (!Visited.insert(BB).second) return; 53 54 for (BasicBlock::iterator 55 I = BB->begin(), E = BB->end(); I != E; ++I) { 56 if (CallInst *CI = dyn_cast<CallInst>(I)) { 57 switch (CI->getCalledFunction()->getIntrinsicID()) { 58 default: break; 59 case eh_exception_2_7: 60 assert(!Exn && "Found more than one eh.exception call!"); 61 Exn = CI; 62 break; 63 case eh_selector_2_7: 64 assert(!Sel && "Found more than one eh.selector call!"); 65 Sel = CI; 66 break; 67 } 68 69 if (Exn && Sel) return; 70 } 71 } 72 73 if (Exn && Sel) return; 74 75 for (succ_iterator I = succ_begin(BB), E = succ_end(BB); I != E; ++I) { 76 FindExnAndSelIntrinsics(*I, Exn, Sel, Visited); 77 if (Exn && Sel) return; 78 } 79 } 80 81 82 83 /// TransferClausesToLandingPadInst - Transfer the exception handling clauses 84 /// from the eh_selector call to the new landingpad instruction. 85 void TransferClausesToLandingPadInst(LandingPadInst *LPI, 86 CallInst *EHSel) { 87 LLVMContext &Context = LPI->getContext(); 88 unsigned N = EHSel->getNumArgOperands(); 89 90 for (unsigned i = N - 1; i > 1; --i) { 91 if (const ConstantInt *CI = dyn_cast<ConstantInt>(EHSel->getArgOperand(i))){ 92 unsigned FilterLength = CI->getZExtValue(); 93 unsigned FirstCatch = i + FilterLength + !FilterLength; 94 assert(FirstCatch <= N && "Invalid filter length"); 95 96 if (FirstCatch < N) 97 for (unsigned j = FirstCatch; j < N; ++j) { 98 Value *Val = EHSel->getArgOperand(j); 99 if (!Val->hasName() || Val->getName() != "llvm.eh.catch.all.value") { 100 LPI->addClause(cast<Constant>(EHSel->getArgOperand(j))); 101 } else { 102 GlobalVariable *GV = cast<GlobalVariable>(Val); 103 LPI->addClause(GV->getInitializer()); 104 } 105 } 106 107 if (!FilterLength) { 108 // Cleanup. 109 LPI->setCleanup(true); 110 } else { 111 // Filter. 112 SmallVector<Constant *, 4> TyInfo; 113 TyInfo.reserve(FilterLength - 1); 114 for (unsigned j = i + 1; j < FirstCatch; ++j) 115 TyInfo.push_back(cast<Constant>(EHSel->getArgOperand(j))); 116 ArrayType *AType = 117 ArrayType::get(!TyInfo.empty() ? TyInfo[0]->getType() : 118 PointerType::getUnqual(Type::getInt8Ty(Context)), 119 TyInfo.size()); 120 LPI->addClause(ConstantArray::get(AType, TyInfo)); 121 } 122 123 N = i; 124 } 125 } 126 127 if (N > 2) 128 for (unsigned j = 2; j < N; ++j) { 129 Value *Val = EHSel->getArgOperand(j); 130 if (!Val->hasName() || Val->getName() != "llvm.eh.catch.all.value") { 131 LPI->addClause(cast<Constant>(EHSel->getArgOperand(j))); 132 } else { 133 GlobalVariable *GV = cast<GlobalVariable>(Val); 134 LPI->addClause(GV->getInitializer()); 135 } 136 } 137 } 138 139 140 /// This function upgrades the old pre-3.0 exception handling system to the new 141 /// one. N.B. This will be removed in 3.1. 142 void UpgradeExceptionHandling(Module *M) { 143 Function *EHException = M->getFunction("llvm.eh.exception"); 144 Function *EHSelector = M->getFunction("llvm.eh.selector"); 145 if (!EHException || !EHSelector) 146 return; 147 148 LLVMContext &Context = M->getContext(); 149 Type *ExnTy = PointerType::getUnqual(Type::getInt8Ty(Context)); 150 Type *SelTy = Type::getInt32Ty(Context); 151 Type *LPadSlotTy = StructType::get(ExnTy, SelTy, nullptr); 152 153 // This map links the invoke instruction with the eh.exception and eh.selector 154 // calls associated with it. 155 DenseMap<InvokeInst*, std::pair<Value*, Value*> > InvokeToIntrinsicsMap; 156 for (Module::iterator 157 I = M->begin(), E = M->end(); I != E; ++I) { 158 Function &F = *I; 159 160 for (Function::iterator 161 II = F.begin(), IE = F.end(); II != IE; ++II) { 162 BasicBlock *BB = &*II; 163 InvokeInst *Inst = dyn_cast<InvokeInst>(BB->getTerminator()); 164 if (!Inst) continue; 165 BasicBlock *UnwindDest = Inst->getUnwindDest(); 166 if (UnwindDest->isLandingPad()) continue; // Already converted. 167 168 SmallPtrSet<BasicBlock*, 8> Visited; 169 CallInst *Exn = 0; 170 CallInst *Sel = 0; 171 FindExnAndSelIntrinsics(UnwindDest, Exn, Sel, Visited); 172 assert(Exn && Sel && "Cannot find eh.exception and eh.selector calls!"); 173 InvokeToIntrinsicsMap[Inst] = std::make_pair(Exn, Sel); 174 } 175 } 176 177 // This map stores the slots where the exception object and selector value are 178 // stored within a function. 179 DenseMap<Function*, std::pair<Value*, Value*> > FnToLPadSlotMap; 180 SmallPtrSet<Instruction*, 32> DeadInsts; 181 for (DenseMap<InvokeInst*, std::pair<Value*, Value*> >::iterator 182 I = InvokeToIntrinsicsMap.begin(), E = InvokeToIntrinsicsMap.end(); 183 I != E; ++I) { 184 InvokeInst *Invoke = I->first; 185 BasicBlock *UnwindDest = Invoke->getUnwindDest(); 186 Function *F = UnwindDest->getParent(); 187 std::pair<Value*, Value*> EHIntrinsics = I->second; 188 CallInst *Exn = cast<CallInst>(EHIntrinsics.first); 189 CallInst *Sel = cast<CallInst>(EHIntrinsics.second); 190 191 // Store the exception object and selector value in the entry block. 192 Value *ExnSlot = 0; 193 Value *SelSlot = 0; 194 if (!FnToLPadSlotMap[F].first) { 195 BasicBlock *Entry = &F->front(); 196 ExnSlot = new AllocaInst(ExnTy, "exn", Entry->getTerminator()); 197 SelSlot = new AllocaInst(SelTy, "sel", Entry->getTerminator()); 198 FnToLPadSlotMap[F] = std::make_pair(ExnSlot, SelSlot); 199 } else { 200 ExnSlot = FnToLPadSlotMap[F].first; 201 SelSlot = FnToLPadSlotMap[F].second; 202 } 203 204 if (!UnwindDest->getSinglePredecessor()) { 205 // The unwind destination doesn't have a single predecessor. Create an 206 // unwind destination which has only one predecessor. 207 BasicBlock *NewBB = BasicBlock::Create(Context, "new.lpad", 208 UnwindDest->getParent()); 209 BranchInst::Create(UnwindDest, NewBB); 210 Invoke->setUnwindDest(NewBB); 211 212 // Fix up any PHIs in the original unwind destination block. 213 for (BasicBlock::iterator 214 II = UnwindDest->begin(); isa<PHINode>(II); ++II) { 215 PHINode *PN = cast<PHINode>(II); 216 int Idx = PN->getBasicBlockIndex(Invoke->getParent()); 217 if (Idx == -1) continue; 218 PN->setIncomingBlock(Idx, NewBB); 219 } 220 221 UnwindDest = NewBB; 222 } 223 224 IRBuilder<> Builder(Context); 225 Builder.SetInsertPoint(UnwindDest, UnwindDest->getFirstInsertionPt()); 226 227 LandingPadInst *LPI = Builder.CreateLandingPad(LPadSlotTy, 0); 228 Value *LPExn = Builder.CreateExtractValue(LPI, 0); 229 Value *LPSel = Builder.CreateExtractValue(LPI, 1); 230 Builder.CreateStore(LPExn, ExnSlot); 231 Builder.CreateStore(LPSel, SelSlot); 232 233 TransferClausesToLandingPadInst(LPI, Sel); 234 235 DeadInsts.insert(Exn); 236 DeadInsts.insert(Sel); 237 } 238 239 // Replace the old intrinsic calls with the values from the landingpad 240 // instruction(s). These values were stored in allocas for us to use here. 241 for (DenseMap<InvokeInst*, std::pair<Value*, Value*> >::iterator 242 I = InvokeToIntrinsicsMap.begin(), E = InvokeToIntrinsicsMap.end(); 243 I != E; ++I) { 244 std::pair<Value*, Value*> EHIntrinsics = I->second; 245 CallInst *Exn = cast<CallInst>(EHIntrinsics.first); 246 CallInst *Sel = cast<CallInst>(EHIntrinsics.second); 247 BasicBlock *Parent = Exn->getParent(); 248 249 std::pair<Value*,Value*> ExnSelSlots = FnToLPadSlotMap[Parent->getParent()]; 250 251 IRBuilder<> Builder(Context); 252 Builder.SetInsertPoint(Parent, Exn->getIterator()); 253 LoadInst *LPExn = Builder.CreateLoad(ExnSelSlots.first, "exn.load"); 254 LoadInst *LPSel = Builder.CreateLoad(ExnSelSlots.second, "sel.load"); 255 256 Exn->replaceAllUsesWith(LPExn); 257 Sel->replaceAllUsesWith(LPSel); 258 } 259 260 // Remove the dead instructions. 261 for (SmallPtrSet<Instruction*, 32>::iterator 262 I = DeadInsts.begin(), E = DeadInsts.end(); I != E; ++I) { 263 Instruction *Inst = *I; 264 Inst->eraseFromParent(); 265 } 266 267 // Replace calls to "llvm.eh.resume" with the 'resume' instruction. Load the 268 // exception and selector values from the stored place. 269 Function *EHResume = M->getFunction("llvm.eh.resume"); 270 if (!EHResume) return; 271 272 while (!EHResume->use_empty()) { 273 CallInst *Resume = cast<CallInst>(*EHResume->use_begin()); 274 BasicBlock *BB = Resume->getParent(); 275 276 IRBuilder<> Builder(Context); 277 Builder.SetInsertPoint(BB, Resume->getIterator()); 278 279 Value *LPadVal = 280 Builder.CreateInsertValue(UndefValue::get(LPadSlotTy), 281 Resume->getArgOperand(0), 0, "lpad.val"); 282 LPadVal = Builder.CreateInsertValue(LPadVal, Resume->getArgOperand(1), 283 1, "lpad.val"); 284 Builder.CreateResume(LPadVal); 285 286 // Remove all instructions after the 'resume.' 287 BasicBlock::iterator I = Resume->getIterator(); 288 while (I != BB->end()) { 289 Instruction *Inst = &*I++; 290 Inst->eraseFromParent(); 291 } 292 } 293 } 294 295 296 void StripDebugInfoOfFunction(Module* M, const char* name) { 297 if (Function* FuncStart = M->getFunction(name)) { 298 while (!FuncStart->use_empty()) { 299 cast<CallInst>(*FuncStart->use_begin())->eraseFromParent(); 300 } 301 FuncStart->eraseFromParent(); 302 } 303 } 304 305 /// This function strips all debug info intrinsics, except for llvm.dbg.declare. 306 /// If an llvm.dbg.declare intrinsic is invalid, then this function simply 307 /// strips that use. 308 void CheckDebugInfoIntrinsics(Module *M) { 309 StripDebugInfoOfFunction(M, "llvm.dbg.func.start"); 310 StripDebugInfoOfFunction(M, "llvm.dbg.stoppoint"); 311 StripDebugInfoOfFunction(M, "llvm.dbg.region.start"); 312 StripDebugInfoOfFunction(M, "llvm.dbg.region.end"); 313 314 if (Function *Declare = M->getFunction("llvm.dbg.declare")) { 315 if (!Declare->use_empty()) { 316 DbgDeclareInst *DDI = cast<DbgDeclareInst>(*Declare->use_begin()); 317 if (!isa<MDNode>(ValueAsMetadata::get(DDI->getArgOperand(0))) || 318 !isa<MDNode>(ValueAsMetadata::get(DDI->getArgOperand(1)))) { 319 while (!Declare->use_empty()) { 320 CallInst *CI = cast<CallInst>(*Declare->use_begin()); 321 CI->eraseFromParent(); 322 } 323 Declare->eraseFromParent(); 324 } 325 } 326 } 327 } 328 329 330 //===----------------------------------------------------------------------===// 331 // BitcodeReaderValueList Class 332 //===----------------------------------------------------------------------===// 333 334 class BitcodeReaderValueList { 335 std::vector<WeakVH> ValuePtrs; 336 337 /// ResolveConstants - As we resolve forward-referenced constants, we add 338 /// information about them to this vector. This allows us to resolve them in 339 /// bulk instead of resolving each reference at a time. See the code in 340 /// ResolveConstantForwardRefs for more information about this. 341 /// 342 /// The key of this vector is the placeholder constant, the value is the slot 343 /// number that holds the resolved value. 344 typedef std::vector<std::pair<Constant*, unsigned> > ResolveConstantsTy; 345 ResolveConstantsTy ResolveConstants; 346 LLVMContext &Context; 347 public: 348 explicit BitcodeReaderValueList(LLVMContext &C) : Context(C) {} 349 ~BitcodeReaderValueList() { 350 assert(ResolveConstants.empty() && "Constants not resolved?"); 351 } 352 353 // vector compatibility methods 354 unsigned size() const { return ValuePtrs.size(); } 355 void resize(unsigned N) { ValuePtrs.resize(N); } 356 void push_back(Value *V) { 357 ValuePtrs.push_back(V); 358 } 359 360 void clear() { 361 assert(ResolveConstants.empty() && "Constants not resolved?"); 362 ValuePtrs.clear(); 363 } 364 365 Value *operator[](unsigned i) const { 366 assert(i < ValuePtrs.size()); 367 return ValuePtrs[i]; 368 } 369 370 Value *back() const { return ValuePtrs.back(); } 371 void pop_back() { ValuePtrs.pop_back(); } 372 bool empty() const { return ValuePtrs.empty(); } 373 void shrinkTo(unsigned N) { 374 assert(N <= size() && "Invalid shrinkTo request!"); 375 ValuePtrs.resize(N); 376 } 377 378 Constant *getConstantFwdRef(unsigned Idx, Type *Ty); 379 Value *getValueFwdRef(unsigned Idx, Type *Ty); 380 381 void AssignValue(Value *V, unsigned Idx); 382 383 /// ResolveConstantForwardRefs - Once all constants are read, this method bulk 384 /// resolves any forward references. 385 void ResolveConstantForwardRefs(); 386 }; 387 388 389 //===----------------------------------------------------------------------===// 390 // BitcodeReaderMDValueList Class 391 //===----------------------------------------------------------------------===// 392 393 class BitcodeReaderMDValueList { 394 unsigned NumFwdRefs; 395 bool AnyFwdRefs; 396 std::vector<TrackingMDRef> MDValuePtrs; 397 398 LLVMContext &Context; 399 public: 400 explicit BitcodeReaderMDValueList(LLVMContext &C) 401 : NumFwdRefs(0), AnyFwdRefs(false), Context(C) {} 402 403 // vector compatibility methods 404 unsigned size() const { return MDValuePtrs.size(); } 405 void resize(unsigned N) { MDValuePtrs.resize(N); } 406 void push_back(Metadata *MD) { MDValuePtrs.emplace_back(MD); } 407 void clear() { MDValuePtrs.clear(); } 408 Metadata *back() const { return MDValuePtrs.back(); } 409 void pop_back() { MDValuePtrs.pop_back(); } 410 bool empty() const { return MDValuePtrs.empty(); } 411 412 Metadata *operator[](unsigned i) const { 413 assert(i < MDValuePtrs.size()); 414 return MDValuePtrs[i]; 415 } 416 417 void shrinkTo(unsigned N) { 418 assert(N <= size() && "Invalid shrinkTo request!"); 419 MDValuePtrs.resize(N); 420 } 421 422 Metadata *getValueFwdRef(unsigned Idx); 423 void AssignValue(Metadata *MD, unsigned Idx); 424 void tryToResolveCycles(); 425 }; 426 427 class BitcodeReader : public GVMaterializer { 428 LLVMContext &Context; 429 DiagnosticHandlerFunction DiagnosticHandler; 430 Module *TheModule; 431 std::unique_ptr<MemoryBuffer> Buffer; 432 std::unique_ptr<BitstreamReader> StreamFile; 433 BitstreamCursor Stream; 434 std::unique_ptr<DataStreamer> LazyStreamer; 435 uint64_t NextUnreadBit; 436 bool SeenValueSymbolTable; 437 438 std::vector<Type*> TypeList; 439 BitcodeReaderValueList ValueList; 440 BitcodeReaderMDValueList MDValueList; 441 SmallVector<Instruction *, 64> InstructionList; 442 443 std::vector<std::pair<GlobalVariable*, unsigned> > GlobalInits; 444 std::vector<std::pair<GlobalAlias*, unsigned> > AliasInits; 445 446 /// MAttributes - The set of attributes by index. Index zero in the 447 /// file is for null, and is thus not represented here. As such all indices 448 /// are off by one. 449 std::vector<AttributeSet> MAttributes; 450 451 /// \brief The set of attribute groups. 452 std::map<unsigned, AttributeSet> MAttributeGroups; 453 454 /// FunctionBBs - While parsing a function body, this is a list of the basic 455 /// blocks for the function. 456 std::vector<BasicBlock*> FunctionBBs; 457 458 // When reading the module header, this list is populated with functions that 459 // have bodies later in the file. 460 std::vector<Function*> FunctionsWithBodies; 461 462 // When intrinsic functions are encountered which require upgrading they are 463 // stored here with their replacement function. 464 typedef std::vector<std::pair<Function*, Function*> > UpgradedIntrinsicMap; 465 UpgradedIntrinsicMap UpgradedIntrinsics; 466 467 // Map the bitcode's custom MDKind ID to the Module's MDKind ID. 468 DenseMap<unsigned, unsigned> MDKindMap; 469 470 // Several operations happen after the module header has been read, but 471 // before function bodies are processed. This keeps track of whether 472 // we've done this yet. 473 bool SeenFirstFunctionBody; 474 475 /// DeferredFunctionInfo - When function bodies are initially scanned, this 476 /// map contains info about where to find deferred function body in the 477 /// stream. 478 DenseMap<Function*, uint64_t> DeferredFunctionInfo; 479 480 /// BlockAddrFwdRefs - These are blockaddr references to basic blocks. These 481 /// are resolved lazily when functions are loaded. 482 typedef std::pair<unsigned, GlobalVariable*> BlockAddrRefTy; 483 DenseMap<Function*, std::vector<BlockAddrRefTy> > BlockAddrFwdRefs; 484 485 static const std::error_category &BitcodeErrorCategory(); 486 487 public: 488 std::error_code Error(BitcodeError E, const Twine &Message); 489 std::error_code Error(BitcodeError E); 490 std::error_code Error(const Twine &Message); 491 492 explicit BitcodeReader(MemoryBuffer *buffer, LLVMContext &C, 493 DiagnosticHandlerFunction DiagnosticHandler); 494 ~BitcodeReader() { FreeState(); } 495 496 void FreeState(); 497 498 void releaseBuffer(); 499 500 bool isDematerializable(const GlobalValue *GV) const; 501 std::error_code materialize(GlobalValue *GV) override; 502 std::error_code materializeModule() override; 503 std::vector<StructType *> getIdentifiedStructTypes() const override; 504 void dematerialize(GlobalValue *GV); 505 506 /// @brief Main interface to parsing a bitcode buffer. 507 /// @returns true if an error occurred. 508 std::error_code ParseBitcodeInto(Module *M); 509 510 /// @brief Cheap mechanism to just extract module triple 511 /// @returns true if an error occurred. 512 llvm::ErrorOr<std::string> parseTriple(); 513 514 static uint64_t decodeSignRotatedValue(uint64_t V); 515 516 /// Materialize any deferred Metadata block. 517 std::error_code materializeMetadata() override; 518 519 void setStripDebugInfo() override; 520 521 private: 522 std::vector<StructType *> IdentifiedStructTypes; 523 StructType *createIdentifiedStructType(LLVMContext &Context, StringRef Name); 524 StructType *createIdentifiedStructType(LLVMContext &Context); 525 526 Type *getTypeByID(unsigned ID); 527 Type *getTypeByIDOrNull(unsigned ID); 528 Value *getFnValueByID(unsigned ID, Type *Ty) { 529 if (Ty && Ty->isMetadataTy()) 530 return MetadataAsValue::get(Ty->getContext(), getFnMetadataByID(ID)); 531 return ValueList.getValueFwdRef(ID, Ty); 532 } 533 Metadata *getFnMetadataByID(unsigned ID) { 534 return MDValueList.getValueFwdRef(ID); 535 } 536 BasicBlock *getBasicBlock(unsigned ID) const { 537 if (ID >= FunctionBBs.size()) return nullptr; // Invalid ID 538 return FunctionBBs[ID]; 539 } 540 AttributeSet getAttributes(unsigned i) const { 541 if (i-1 < MAttributes.size()) 542 return MAttributes[i-1]; 543 return AttributeSet(); 544 } 545 546 /// getValueTypePair - Read a value/type pair out of the specified record from 547 /// slot 'Slot'. Increment Slot past the number of slots used in the record. 548 /// Return true on failure. 549 bool getValueTypePair(SmallVectorImpl<uint64_t> &Record, unsigned &Slot, 550 unsigned InstNum, Value *&ResVal) { 551 if (Slot == Record.size()) return true; 552 unsigned ValNo = (unsigned)Record[Slot++]; 553 if (ValNo < InstNum) { 554 // If this is not a forward reference, just return the value we already 555 // have. 556 ResVal = getFnValueByID(ValNo, nullptr); 557 return ResVal == nullptr; 558 } else if (Slot == Record.size()) { 559 return true; 560 } 561 562 unsigned TypeNo = (unsigned)Record[Slot++]; 563 ResVal = getFnValueByID(ValNo, getTypeByID(TypeNo)); 564 return ResVal == nullptr; 565 } 566 bool getValue(SmallVector<uint64_t, 64> &Record, unsigned &Slot, 567 Type *Ty, Value *&ResVal) { 568 if (Slot == Record.size()) return true; 569 unsigned ValNo = (unsigned)Record[Slot++]; 570 ResVal = getFnValueByID(ValNo, Ty); 571 return ResVal == 0; 572 } 573 574 575 std::error_code ParseModule(bool Resume); 576 std::error_code ParseAttributeBlock(); 577 std::error_code ParseTypeTable(); 578 std::error_code ParseOldTypeTable(); // FIXME: Remove in LLVM 3.1 579 std::error_code ParseTypeTableBody(); 580 581 std::error_code ParseOldTypeSymbolTable(); // FIXME: Remove in LLVM 3.1 582 std::error_code ParseValueSymbolTable(); 583 std::error_code ParseConstants(); 584 std::error_code RememberAndSkipFunctionBody(); 585 std::error_code ParseFunctionBody(Function *F); 586 std::error_code GlobalCleanup(); 587 std::error_code ResolveGlobalAndAliasInits(); 588 std::error_code ParseMetadata(); 589 std::error_code ParseMetadataAttachment(); 590 llvm::ErrorOr<std::string> parseModuleTriple(); 591 std::error_code InitStream(); 592 std::error_code InitStreamFromBuffer(); 593 std::error_code InitLazyStream(); 594 }; 595 596 } // end anonymous namespace 597 598 static std::error_code Error(const DiagnosticHandlerFunction &DiagnosticHandler, 599 std::error_code EC, const Twine &Message) { 600 BitcodeDiagnosticInfo DI(EC, DS_Error, Message); 601 DiagnosticHandler(DI); 602 return EC; 603 } 604 605 static std::error_code Error(const DiagnosticHandlerFunction &DiagnosticHandler, 606 std::error_code EC) { 607 return Error(DiagnosticHandler, EC, EC.message()); 608 } 609 610 std::error_code BitcodeReader::Error(BitcodeError E, const Twine &Message) { 611 return ::Error(DiagnosticHandler, make_error_code(E), Message); 612 } 613 614 std::error_code BitcodeReader::Error(const Twine &Message) { 615 return ::Error(DiagnosticHandler, 616 make_error_code(BitcodeError::CorruptedBitcode), Message); 617 } 618 619 std::error_code BitcodeReader::Error(BitcodeError E) { 620 return ::Error(DiagnosticHandler, make_error_code(E)); 621 } 622 623 static DiagnosticHandlerFunction getDiagHandler(DiagnosticHandlerFunction F, 624 LLVMContext &C) { 625 if (F) 626 return F; 627 return [&C](const DiagnosticInfo &DI) { C.diagnose(DI); }; 628 } 629 630 BitcodeReader::BitcodeReader(MemoryBuffer *buffer, LLVMContext &C, 631 DiagnosticHandlerFunction DiagnosticHandler) 632 : Context(C), DiagnosticHandler(getDiagHandler(DiagnosticHandler, C)), 633 TheModule(nullptr), Buffer(buffer), LazyStreamer(nullptr), 634 NextUnreadBit(0), SeenValueSymbolTable(false), ValueList(C), 635 MDValueList(C), SeenFirstFunctionBody(false) {} 636 637 638 void BitcodeReader::FreeState() { 639 Buffer = nullptr; 640 std::vector<Type*>().swap(TypeList); 641 ValueList.clear(); 642 MDValueList.clear(); 643 644 std::vector<AttributeSet>().swap(MAttributes); 645 std::vector<BasicBlock*>().swap(FunctionBBs); 646 std::vector<Function*>().swap(FunctionsWithBodies); 647 DeferredFunctionInfo.clear(); 648 MDKindMap.clear(); 649 } 650 651 //===----------------------------------------------------------------------===// 652 // Helper functions to implement forward reference resolution, etc. 653 //===----------------------------------------------------------------------===// 654 655 /// ConvertToString - Convert a string from a record into an std::string, return 656 /// true on failure. 657 template<typename StrTy> 658 static bool ConvertToString(ArrayRef<uint64_t> Record, unsigned Idx, 659 StrTy &Result) { 660 if (Idx > Record.size()) 661 return true; 662 663 for (unsigned i = Idx, e = Record.size(); i != e; ++i) 664 Result += (char)Record[i]; 665 return false; 666 } 667 668 static GlobalValue::LinkageTypes getDecodedLinkage(unsigned Val) { 669 switch (Val) { 670 default: // Map unknown/new linkages to external 671 case 0: 672 return GlobalValue::ExternalLinkage; 673 case 1: 674 return GlobalValue::WeakAnyLinkage; 675 case 2: 676 return GlobalValue::AppendingLinkage; 677 case 3: 678 return GlobalValue::InternalLinkage; 679 case 4: 680 return GlobalValue::LinkOnceAnyLinkage; 681 case 5: 682 return GlobalValue::ExternalLinkage; // Obsolete DLLImportLinkage 683 case 6: 684 return GlobalValue::ExternalLinkage; // Obsolete DLLExportLinkage 685 case 7: 686 return GlobalValue::ExternalWeakLinkage; 687 case 8: 688 return GlobalValue::CommonLinkage; 689 case 9: 690 return GlobalValue::PrivateLinkage; 691 case 10: 692 return GlobalValue::WeakODRLinkage; 693 case 11: 694 return GlobalValue::LinkOnceODRLinkage; 695 case 12: 696 return GlobalValue::AvailableExternallyLinkage; 697 case 13: 698 return GlobalValue::PrivateLinkage; // Obsolete LinkerPrivateLinkage 699 case 14: 700 return GlobalValue::ExternalWeakLinkage; // Obsolete LinkerPrivateWeakLinkage 701 //ANDROID: convert LinkOnceODRAutoHideLinkage -> LinkOnceODRLinkage 702 case 15: 703 return GlobalValue::LinkOnceODRLinkage; 704 } 705 } 706 707 static GlobalValue::VisibilityTypes GetDecodedVisibility(unsigned Val) { 708 switch (Val) { 709 default: // Map unknown visibilities to default. 710 case 0: return GlobalValue::DefaultVisibility; 711 case 1: return GlobalValue::HiddenVisibility; 712 case 2: return GlobalValue::ProtectedVisibility; 713 } 714 } 715 716 static GlobalVariable::ThreadLocalMode GetDecodedThreadLocalMode(unsigned Val) { 717 switch (Val) { 718 case 0: return GlobalVariable::NotThreadLocal; 719 default: // Map unknown non-zero value to general dynamic. 720 case 1: return GlobalVariable::GeneralDynamicTLSModel; 721 case 2: return GlobalVariable::LocalDynamicTLSModel; 722 case 3: return GlobalVariable::InitialExecTLSModel; 723 case 4: return GlobalVariable::LocalExecTLSModel; 724 } 725 } 726 727 static GlobalVariable::UnnamedAddr getDecodedUnnamedAddrType(unsigned Val) { 728 switch (Val) { 729 default: // Map unknown to UnnamedAddr::None. 730 case 0: return GlobalVariable::UnnamedAddr::None; 731 case 1: return GlobalVariable::UnnamedAddr::Global; 732 case 2: return GlobalVariable::UnnamedAddr::Local; 733 } 734 } 735 736 static int GetDecodedCastOpcode(unsigned Val) { 737 switch (Val) { 738 default: return -1; 739 case bitc::CAST_TRUNC : return Instruction::Trunc; 740 case bitc::CAST_ZEXT : return Instruction::ZExt; 741 case bitc::CAST_SEXT : return Instruction::SExt; 742 case bitc::CAST_FPTOUI : return Instruction::FPToUI; 743 case bitc::CAST_FPTOSI : return Instruction::FPToSI; 744 case bitc::CAST_UITOFP : return Instruction::UIToFP; 745 case bitc::CAST_SITOFP : return Instruction::SIToFP; 746 case bitc::CAST_FPTRUNC : return Instruction::FPTrunc; 747 case bitc::CAST_FPEXT : return Instruction::FPExt; 748 case bitc::CAST_PTRTOINT: return Instruction::PtrToInt; 749 case bitc::CAST_INTTOPTR: return Instruction::IntToPtr; 750 case bitc::CAST_BITCAST : return Instruction::BitCast; 751 } 752 } 753 static int GetDecodedBinaryOpcode(unsigned Val, Type *Ty) { 754 switch (Val) { 755 default: return -1; 756 case bitc::BINOP_ADD: 757 return Ty->isFPOrFPVectorTy() ? Instruction::FAdd : Instruction::Add; 758 case bitc::BINOP_SUB: 759 return Ty->isFPOrFPVectorTy() ? Instruction::FSub : Instruction::Sub; 760 case bitc::BINOP_MUL: 761 return Ty->isFPOrFPVectorTy() ? Instruction::FMul : Instruction::Mul; 762 case bitc::BINOP_UDIV: return Instruction::UDiv; 763 case bitc::BINOP_SDIV: 764 return Ty->isFPOrFPVectorTy() ? Instruction::FDiv : Instruction::SDiv; 765 case bitc::BINOP_UREM: return Instruction::URem; 766 case bitc::BINOP_SREM: 767 return Ty->isFPOrFPVectorTy() ? Instruction::FRem : Instruction::SRem; 768 case bitc::BINOP_SHL: return Instruction::Shl; 769 case bitc::BINOP_LSHR: return Instruction::LShr; 770 case bitc::BINOP_ASHR: return Instruction::AShr; 771 case bitc::BINOP_AND: return Instruction::And; 772 case bitc::BINOP_OR: return Instruction::Or; 773 case bitc::BINOP_XOR: return Instruction::Xor; 774 } 775 } 776 777 static AtomicRMWInst::BinOp GetDecodedRMWOperation(unsigned Val) { 778 switch (Val) { 779 default: return AtomicRMWInst::BAD_BINOP; 780 case bitc::RMW_XCHG: return AtomicRMWInst::Xchg; 781 case bitc::RMW_ADD: return AtomicRMWInst::Add; 782 case bitc::RMW_SUB: return AtomicRMWInst::Sub; 783 case bitc::RMW_AND: return AtomicRMWInst::And; 784 case bitc::RMW_NAND: return AtomicRMWInst::Nand; 785 case bitc::RMW_OR: return AtomicRMWInst::Or; 786 case bitc::RMW_XOR: return AtomicRMWInst::Xor; 787 case bitc::RMW_MAX: return AtomicRMWInst::Max; 788 case bitc::RMW_MIN: return AtomicRMWInst::Min; 789 case bitc::RMW_UMAX: return AtomicRMWInst::UMax; 790 case bitc::RMW_UMIN: return AtomicRMWInst::UMin; 791 } 792 } 793 794 static AtomicOrdering GetDecodedOrdering(unsigned Val) { 795 switch (Val) { 796 case bitc::ORDERING_NOTATOMIC: return AtomicOrdering::NotAtomic; 797 case bitc::ORDERING_UNORDERED: return AtomicOrdering::Unordered; 798 case bitc::ORDERING_MONOTONIC: return AtomicOrdering::Monotonic; 799 case bitc::ORDERING_ACQUIRE: return AtomicOrdering::Acquire; 800 case bitc::ORDERING_RELEASE: return AtomicOrdering::Release; 801 case bitc::ORDERING_ACQREL: return AtomicOrdering::AcquireRelease; 802 default: // Map unknown orderings to sequentially-consistent. 803 case bitc::ORDERING_SEQCST: return AtomicOrdering::SequentiallyConsistent; 804 } 805 } 806 807 static SynchronizationScope GetDecodedSynchScope(unsigned Val) { 808 switch (Val) { 809 case bitc::SYNCHSCOPE_SINGLETHREAD: return SingleThread; 810 default: // Map unknown scopes to cross-thread. 811 case bitc::SYNCHSCOPE_CROSSTHREAD: return CrossThread; 812 } 813 } 814 815 namespace llvm { 816 namespace { 817 /// @brief A class for maintaining the slot number definition 818 /// as a placeholder for the actual definition for forward constants defs. 819 class ConstantPlaceHolder : public ConstantExpr { 820 void operator=(const ConstantPlaceHolder &) = delete; 821 public: 822 // allocate space for exactly one operand 823 void *operator new(size_t s) { 824 return User::operator new(s, 1); 825 } 826 explicit ConstantPlaceHolder(Type *Ty, LLVMContext& Context) 827 : ConstantExpr(Ty, Instruction::UserOp1, &Op<0>(), 1) { 828 Op<0>() = UndefValue::get(Type::getInt32Ty(Context)); 829 } 830 831 /// @brief Methods to support type inquiry through isa, cast, and dyn_cast. 832 static bool classof(const Value *V) { 833 return isa<ConstantExpr>(V) && 834 cast<ConstantExpr>(V)->getOpcode() == Instruction::UserOp1; 835 } 836 837 838 /// Provide fast operand accessors 839 DECLARE_TRANSPARENT_OPERAND_ACCESSORS(Value); 840 }; 841 } 842 843 // FIXME: can we inherit this from ConstantExpr? 844 template <> 845 struct OperandTraits<ConstantPlaceHolder> : 846 public FixedNumOperandTraits<ConstantPlaceHolder, 1> { 847 }; 848 DEFINE_TRANSPARENT_OPERAND_ACCESSORS(ConstantPlaceHolder, Value) 849 } 850 851 852 void BitcodeReaderValueList::AssignValue(Value *V, unsigned Idx) { 853 if (Idx == size()) { 854 push_back(V); 855 return; 856 } 857 858 if (Idx >= size()) 859 resize(Idx+1); 860 861 WeakVH &OldV = ValuePtrs[Idx]; 862 if (!OldV) { 863 OldV = V; 864 return; 865 } 866 867 // Handle constants and non-constants (e.g. instrs) differently for 868 // efficiency. 869 if (Constant *PHC = dyn_cast<Constant>(&*OldV)) { 870 ResolveConstants.push_back(std::make_pair(PHC, Idx)); 871 OldV = V; 872 } else { 873 // If there was a forward reference to this value, replace it. 874 Value *PrevVal = OldV; 875 OldV->replaceAllUsesWith(V); 876 delete PrevVal; 877 } 878 } 879 880 881 Constant *BitcodeReaderValueList::getConstantFwdRef(unsigned Idx, 882 Type *Ty) { 883 if (Idx >= size()) 884 resize(Idx + 1); 885 886 if (Value *V = ValuePtrs[Idx]) { 887 assert(Ty == V->getType() && "Type mismatch in constant table!"); 888 return cast<Constant>(V); 889 } 890 891 // Create and return a placeholder, which will later be RAUW'd. 892 Constant *C = new ConstantPlaceHolder(Ty, Context); 893 ValuePtrs[Idx] = C; 894 return C; 895 } 896 897 Value *BitcodeReaderValueList::getValueFwdRef(unsigned Idx, Type *Ty) { 898 if (Idx >= size()) 899 resize(Idx + 1); 900 901 if (Value *V = ValuePtrs[Idx]) { 902 assert((!Ty || Ty == V->getType()) && "Type mismatch in value table!"); 903 return V; 904 } 905 906 // No type specified, must be invalid reference. 907 if (!Ty) return nullptr; 908 909 // Create and return a placeholder, which will later be RAUW'd. 910 Value *V = new Argument(Ty); 911 ValuePtrs[Idx] = V; 912 return V; 913 } 914 915 /// ResolveConstantForwardRefs - Once all constants are read, this method bulk 916 /// resolves any forward references. The idea behind this is that we sometimes 917 /// get constants (such as large arrays) which reference *many* forward ref 918 /// constants. Replacing each of these causes a lot of thrashing when 919 /// building/reuniquing the constant. Instead of doing this, we look at all the 920 /// uses and rewrite all the place holders at once for any constant that uses 921 /// a placeholder. 922 void BitcodeReaderValueList::ResolveConstantForwardRefs() { 923 // Sort the values by-pointer so that they are efficient to look up with a 924 // binary search. 925 std::sort(ResolveConstants.begin(), ResolveConstants.end()); 926 927 SmallVector<Constant*, 64> NewOps; 928 929 while (!ResolveConstants.empty()) { 930 Value *RealVal = operator[](ResolveConstants.back().second); 931 Constant *Placeholder = ResolveConstants.back().first; 932 ResolveConstants.pop_back(); 933 934 // Loop over all users of the placeholder, updating them to reference the 935 // new value. If they reference more than one placeholder, update them all 936 // at once. 937 while (!Placeholder->use_empty()) { 938 auto UI = Placeholder->user_begin(); 939 User *U = *UI; 940 941 // If the using object isn't uniqued, just update the operands. This 942 // handles instructions and initializers for global variables. 943 if (!isa<Constant>(U) || isa<GlobalValue>(U)) { 944 UI.getUse().set(RealVal); 945 continue; 946 } 947 948 // Otherwise, we have a constant that uses the placeholder. Replace that 949 // constant with a new constant that has *all* placeholder uses updated. 950 Constant *UserC = cast<Constant>(U); 951 for (User::op_iterator I = UserC->op_begin(), E = UserC->op_end(); 952 I != E; ++I) { 953 Value *NewOp; 954 if (!isa<ConstantPlaceHolder>(*I)) { 955 // Not a placeholder reference. 956 NewOp = *I; 957 } else if (*I == Placeholder) { 958 // Common case is that it just references this one placeholder. 959 NewOp = RealVal; 960 } else { 961 // Otherwise, look up the placeholder in ResolveConstants. 962 ResolveConstantsTy::iterator It = 963 std::lower_bound(ResolveConstants.begin(), ResolveConstants.end(), 964 std::pair<Constant*, unsigned>(cast<Constant>(*I), 965 0)); 966 assert(It != ResolveConstants.end() && It->first == *I); 967 NewOp = operator[](It->second); 968 } 969 970 NewOps.push_back(cast<Constant>(NewOp)); 971 } 972 973 // Make the new constant. 974 Constant *NewC; 975 if (ConstantArray *UserCA = dyn_cast<ConstantArray>(UserC)) { 976 NewC = ConstantArray::get(UserCA->getType(), NewOps); 977 } else if (ConstantStruct *UserCS = dyn_cast<ConstantStruct>(UserC)) { 978 NewC = ConstantStruct::get(UserCS->getType(), NewOps); 979 } else if (isa<ConstantVector>(UserC)) { 980 NewC = ConstantVector::get(NewOps); 981 } else { 982 assert(isa<ConstantExpr>(UserC) && "Must be a ConstantExpr."); 983 NewC = cast<ConstantExpr>(UserC)->getWithOperands(NewOps); 984 } 985 986 UserC->replaceAllUsesWith(NewC); 987 UserC->destroyConstant(); 988 NewOps.clear(); 989 } 990 991 // Update all ValueHandles, they should be the only users at this point. 992 Placeholder->replaceAllUsesWith(RealVal); 993 delete Placeholder; 994 } 995 } 996 997 void BitcodeReaderMDValueList::AssignValue(Metadata *MD, unsigned Idx) { 998 if (Idx == size()) { 999 push_back(MD); 1000 return; 1001 } 1002 1003 if (Idx >= size()) 1004 resize(Idx+1); 1005 1006 TrackingMDRef &OldMD = MDValuePtrs[Idx]; 1007 if (!OldMD) { 1008 OldMD.reset(MD); 1009 return; 1010 } 1011 1012 // If there was a forward reference to this value, replace it. 1013 TempMDTuple PrevMD(cast<MDTuple>(OldMD.get())); 1014 PrevMD->replaceAllUsesWith(MD); 1015 --NumFwdRefs; 1016 } 1017 1018 Metadata *BitcodeReaderMDValueList::getValueFwdRef(unsigned Idx) { 1019 if (Idx >= size()) 1020 resize(Idx + 1); 1021 1022 if (Metadata *MD = MDValuePtrs[Idx]) 1023 return MD; 1024 1025 // Create and return a placeholder, which will later be RAUW'd. 1026 AnyFwdRefs = true; 1027 ++NumFwdRefs; 1028 Metadata *MD = MDNode::getTemporary(Context, None).release(); 1029 MDValuePtrs[Idx].reset(MD); 1030 return MD; 1031 } 1032 1033 void BitcodeReaderMDValueList::tryToResolveCycles() { 1034 if (!AnyFwdRefs) 1035 // Nothing to do. 1036 return; 1037 1038 if (NumFwdRefs) 1039 // Still forward references... can't resolve cycles. 1040 return; 1041 1042 // Resolve any cycles. 1043 for (auto &MD : MDValuePtrs) { 1044 auto *N = dyn_cast_or_null<MDNode>(MD); 1045 if (!N) 1046 continue; 1047 1048 assert(!N->isTemporary() && "Unexpected forward reference"); 1049 N->resolveCycles(); 1050 } 1051 } 1052 1053 Type *BitcodeReader::getTypeByID(unsigned ID) { 1054 // The type table size is always specified correctly. 1055 if (ID >= TypeList.size()) 1056 return nullptr; 1057 1058 if (Type *Ty = TypeList[ID]) 1059 return Ty; 1060 1061 // If we have a forward reference, the only possible case is when it is to a 1062 // named struct. Just create a placeholder for now. 1063 return TypeList[ID] = createIdentifiedStructType(Context); 1064 } 1065 1066 StructType *BitcodeReader::createIdentifiedStructType(LLVMContext &Context, 1067 StringRef Name) { 1068 auto *Ret = StructType::create(Context, Name); 1069 IdentifiedStructTypes.push_back(Ret); 1070 return Ret; 1071 } 1072 1073 StructType *BitcodeReader::createIdentifiedStructType(LLVMContext &Context) { 1074 auto *Ret = StructType::create(Context); 1075 IdentifiedStructTypes.push_back(Ret); 1076 return Ret; 1077 } 1078 1079 1080 /// FIXME: Remove in LLVM 3.1, only used by ParseOldTypeTable. 1081 Type *BitcodeReader::getTypeByIDOrNull(unsigned ID) { 1082 if (ID >= TypeList.size()) 1083 TypeList.resize(ID+1); 1084 1085 return TypeList[ID]; 1086 } 1087 1088 //===----------------------------------------------------------------------===// 1089 // Functions for parsing blocks from the bitcode file 1090 //===----------------------------------------------------------------------===// 1091 1092 1093 /// \brief This fills an AttrBuilder object with the LLVM attributes that have 1094 /// been decoded from the given integer. This function must stay in sync with 1095 /// 'encodeLLVMAttributesForBitcode'. 1096 static void decodeLLVMAttributesForBitcode(AttrBuilder &B, 1097 uint64_t EncodedAttrs) { 1098 // FIXME: Remove in 4.0. 1099 1100 // The alignment is stored as a 16-bit raw value from bits 31--16. We shift 1101 // the bits above 31 down by 11 bits. 1102 unsigned Alignment = (EncodedAttrs & (0xffffULL << 16)) >> 16; 1103 assert((!Alignment || isPowerOf2_32(Alignment)) && 1104 "Alignment must be a power of two."); 1105 1106 if (Alignment) 1107 B.addAlignmentAttr(Alignment); 1108 B.addRawValue(((EncodedAttrs & (0xfffffULL << 32)) >> 11) | 1109 (EncodedAttrs & 0xffff)); 1110 } 1111 1112 std::error_code BitcodeReader::ParseAttributeBlock() { 1113 if (Stream.EnterSubBlock(bitc::PARAMATTR_BLOCK_ID)) 1114 return Error("Invalid record"); 1115 1116 if (!MAttributes.empty()) 1117 return Error("Invalid multiple blocks"); 1118 1119 SmallVector<uint64_t, 64> Record; 1120 1121 SmallVector<AttributeSet, 8> Attrs; 1122 1123 // Read all the records. 1124 while (1) { 1125 BitstreamEntry Entry = Stream.advanceSkippingSubblocks(); 1126 1127 switch (Entry.Kind) { 1128 case BitstreamEntry::SubBlock: // Handled for us already. 1129 case BitstreamEntry::Error: 1130 return Error("Malformed block"); 1131 case BitstreamEntry::EndBlock: 1132 return std::error_code(); 1133 case BitstreamEntry::Record: 1134 // The interesting case. 1135 break; 1136 } 1137 1138 // Read a record. 1139 Record.clear(); 1140 switch (Stream.readRecord(Entry.ID, Record)) { 1141 default: // Default behavior: ignore. 1142 break; 1143 case bitc::PARAMATTR_CODE_ENTRY_OLD: { // ENTRY: [paramidx0, attr0, ...] 1144 // FIXME: Remove in 4.0. 1145 if (Record.size() & 1) 1146 return Error("Invalid record"); 1147 1148 for (unsigned i = 0, e = Record.size(); i != e; i += 2) { 1149 AttrBuilder B; 1150 decodeLLVMAttributesForBitcode(B, Record[i+1]); 1151 Attrs.push_back(AttributeSet::get(Context, Record[i], B)); 1152 } 1153 1154 MAttributes.push_back(AttributeSet::get(Context, Attrs)); 1155 Attrs.clear(); 1156 break; 1157 } 1158 case bitc::PARAMATTR_CODE_ENTRY: { // ENTRY: [attrgrp0, attrgrp1, ...] 1159 for (unsigned i = 0, e = Record.size(); i != e; ++i) 1160 Attrs.push_back(MAttributeGroups[Record[i]]); 1161 1162 MAttributes.push_back(AttributeSet::get(Context, Attrs)); 1163 Attrs.clear(); 1164 break; 1165 } 1166 } 1167 } 1168 } 1169 1170 1171 std::error_code BitcodeReader::ParseTypeTable() { 1172 if (Stream.EnterSubBlock(bitc::TYPE_BLOCK_ID_NEW)) 1173 return Error("Invalid record"); 1174 1175 return ParseTypeTableBody(); 1176 } 1177 1178 std::error_code BitcodeReader::ParseTypeTableBody() { 1179 if (!TypeList.empty()) 1180 return Error("Invalid multiple blocks"); 1181 1182 SmallVector<uint64_t, 64> Record; 1183 unsigned NumRecords = 0; 1184 1185 SmallString<64> TypeName; 1186 1187 // Read all the records for this type table. 1188 while (1) { 1189 BitstreamEntry Entry = Stream.advanceSkippingSubblocks(); 1190 1191 switch (Entry.Kind) { 1192 case BitstreamEntry::SubBlock: // Handled for us already. 1193 case BitstreamEntry::Error: 1194 return Error("Malformed block"); 1195 case BitstreamEntry::EndBlock: 1196 if (NumRecords != TypeList.size()) 1197 return Error("Malformed block"); 1198 return std::error_code(); 1199 case BitstreamEntry::Record: 1200 // The interesting case. 1201 break; 1202 } 1203 1204 // Read a record. 1205 Record.clear(); 1206 Type *ResultTy = nullptr; 1207 switch (Stream.readRecord(Entry.ID, Record)) { 1208 default: 1209 return Error("Invalid value"); 1210 case bitc::TYPE_CODE_NUMENTRY: // TYPE_CODE_NUMENTRY: [numentries] 1211 // TYPE_CODE_NUMENTRY contains a count of the number of types in the 1212 // type list. This allows us to reserve space. 1213 if (Record.size() < 1) 1214 return Error("Invalid record"); 1215 TypeList.resize(Record[0]); 1216 continue; 1217 case bitc::TYPE_CODE_VOID: // VOID 1218 ResultTy = Type::getVoidTy(Context); 1219 break; 1220 case bitc::TYPE_CODE_HALF: // HALF 1221 ResultTy = Type::getHalfTy(Context); 1222 break; 1223 case bitc::TYPE_CODE_FLOAT: // FLOAT 1224 ResultTy = Type::getFloatTy(Context); 1225 break; 1226 case bitc::TYPE_CODE_DOUBLE: // DOUBLE 1227 ResultTy = Type::getDoubleTy(Context); 1228 break; 1229 case bitc::TYPE_CODE_X86_FP80: // X86_FP80 1230 ResultTy = Type::getX86_FP80Ty(Context); 1231 break; 1232 case bitc::TYPE_CODE_FP128: // FP128 1233 ResultTy = Type::getFP128Ty(Context); 1234 break; 1235 case bitc::TYPE_CODE_PPC_FP128: // PPC_FP128 1236 ResultTy = Type::getPPC_FP128Ty(Context); 1237 break; 1238 case bitc::TYPE_CODE_LABEL: // LABEL 1239 ResultTy = Type::getLabelTy(Context); 1240 break; 1241 case bitc::TYPE_CODE_METADATA: // METADATA 1242 ResultTy = Type::getMetadataTy(Context); 1243 break; 1244 case bitc::TYPE_CODE_X86_MMX: // X86_MMX 1245 ResultTy = Type::getX86_MMXTy(Context); 1246 break; 1247 case bitc::TYPE_CODE_INTEGER: // INTEGER: [width] 1248 if (Record.size() < 1) 1249 return Error("Invalid record"); 1250 1251 ResultTy = IntegerType::get(Context, Record[0]); 1252 break; 1253 case bitc::TYPE_CODE_POINTER: { // POINTER: [pointee type] or 1254 // [pointee type, address space] 1255 if (Record.size() < 1) 1256 return Error("Invalid record"); 1257 unsigned AddressSpace = 0; 1258 if (Record.size() == 2) 1259 AddressSpace = Record[1]; 1260 ResultTy = getTypeByID(Record[0]); 1261 if (!ResultTy) 1262 return Error("Invalid type"); 1263 ResultTy = PointerType::get(ResultTy, AddressSpace); 1264 break; 1265 } 1266 case bitc::TYPE_CODE_FUNCTION_OLD: { 1267 // FIXME: attrid is dead, remove it in LLVM 4.0 1268 // FUNCTION: [vararg, attrid, retty, paramty x N] 1269 if (Record.size() < 3) 1270 return Error("Invalid record"); 1271 SmallVector<Type*, 8> ArgTys; 1272 for (unsigned i = 3, e = Record.size(); i != e; ++i) { 1273 if (Type *T = getTypeByID(Record[i])) 1274 ArgTys.push_back(T); 1275 else 1276 break; 1277 } 1278 1279 ResultTy = getTypeByID(Record[2]); 1280 if (!ResultTy || ArgTys.size() < Record.size()-3) 1281 return Error("Invalid type"); 1282 1283 ResultTy = FunctionType::get(ResultTy, ArgTys, Record[0]); 1284 break; 1285 } 1286 case bitc::TYPE_CODE_FUNCTION: { 1287 // FUNCTION: [vararg, retty, paramty x N] 1288 if (Record.size() < 2) 1289 return Error("Invalid record"); 1290 SmallVector<Type*, 8> ArgTys; 1291 for (unsigned i = 2, e = Record.size(); i != e; ++i) { 1292 if (Type *T = getTypeByID(Record[i])) 1293 ArgTys.push_back(T); 1294 else 1295 break; 1296 } 1297 1298 ResultTy = getTypeByID(Record[1]); 1299 if (!ResultTy || ArgTys.size() < Record.size()-2) 1300 return Error("Invalid type"); 1301 1302 ResultTy = FunctionType::get(ResultTy, ArgTys, Record[0]); 1303 break; 1304 } 1305 case bitc::TYPE_CODE_STRUCT_ANON: { // STRUCT: [ispacked, eltty x N] 1306 if (Record.size() < 1) 1307 return Error("Invalid record"); 1308 SmallVector<Type*, 8> EltTys; 1309 for (unsigned i = 1, e = Record.size(); i != e; ++i) { 1310 if (Type *T = getTypeByID(Record[i])) 1311 EltTys.push_back(T); 1312 else 1313 break; 1314 } 1315 if (EltTys.size() != Record.size()-1) 1316 return Error("Invalid type"); 1317 ResultTy = StructType::get(Context, EltTys, Record[0]); 1318 break; 1319 } 1320 case bitc::TYPE_CODE_STRUCT_NAME: // STRUCT_NAME: [strchr x N] 1321 if (ConvertToString(Record, 0, TypeName)) 1322 return Error("Invalid record"); 1323 continue; 1324 1325 case bitc::TYPE_CODE_STRUCT_NAMED: { // STRUCT: [ispacked, eltty x N] 1326 if (Record.size() < 1) 1327 return Error("Invalid record"); 1328 1329 if (NumRecords >= TypeList.size()) 1330 return Error("Invalid TYPE table"); 1331 1332 // Check to see if this was forward referenced, if so fill in the temp. 1333 StructType *Res = cast_or_null<StructType>(TypeList[NumRecords]); 1334 if (Res) { 1335 Res->setName(TypeName); 1336 TypeList[NumRecords] = nullptr; 1337 } else // Otherwise, create a new struct. 1338 Res = createIdentifiedStructType(Context, TypeName); 1339 TypeName.clear(); 1340 1341 SmallVector<Type*, 8> EltTys; 1342 for (unsigned i = 1, e = Record.size(); i != e; ++i) { 1343 if (Type *T = getTypeByID(Record[i])) 1344 EltTys.push_back(T); 1345 else 1346 break; 1347 } 1348 if (EltTys.size() != Record.size()-1) 1349 return Error("Invalid record"); 1350 Res->setBody(EltTys, Record[0]); 1351 ResultTy = Res; 1352 break; 1353 } 1354 case bitc::TYPE_CODE_OPAQUE: { // OPAQUE: [] 1355 if (Record.size() != 1) 1356 return Error("Invalid record"); 1357 1358 if (NumRecords >= TypeList.size()) 1359 return Error("Invalid TYPE table"); 1360 1361 // Check to see if this was forward referenced, if so fill in the temp. 1362 StructType *Res = cast_or_null<StructType>(TypeList[NumRecords]); 1363 if (Res) { 1364 Res->setName(TypeName); 1365 TypeList[NumRecords] = nullptr; 1366 } else // Otherwise, create a new struct with no body. 1367 Res = createIdentifiedStructType(Context, TypeName); 1368 TypeName.clear(); 1369 ResultTy = Res; 1370 break; 1371 } 1372 case bitc::TYPE_CODE_ARRAY: // ARRAY: [numelts, eltty] 1373 if (Record.size() < 2) 1374 return Error("Invalid record"); 1375 if ((ResultTy = getTypeByID(Record[1]))) 1376 ResultTy = ArrayType::get(ResultTy, Record[0]); 1377 else 1378 return Error("Invalid type"); 1379 break; 1380 case bitc::TYPE_CODE_VECTOR: // VECTOR: [numelts, eltty] 1381 if (Record.size() < 2) 1382 return Error("Invalid record"); 1383 if ((ResultTy = getTypeByID(Record[1]))) 1384 ResultTy = VectorType::get(ResultTy, Record[0]); 1385 else 1386 return Error("Invalid type"); 1387 break; 1388 } 1389 1390 if (NumRecords >= TypeList.size()) 1391 return Error("Invalid TYPE table"); 1392 assert(ResultTy && "Didn't read a type?"); 1393 assert(!TypeList[NumRecords] && "Already read type?"); 1394 TypeList[NumRecords++] = ResultTy; 1395 } 1396 } 1397 1398 // FIXME: Remove in LLVM 3.1 1399 std::error_code BitcodeReader::ParseOldTypeTable() { 1400 if (Stream.EnterSubBlock(TYPE_BLOCK_ID_OLD_3_0)) 1401 return Error("Malformed block"); 1402 1403 if (!TypeList.empty()) 1404 return Error("Invalid TYPE table"); 1405 1406 1407 // While horrible, we have no good ordering of types in the bc file. Just 1408 // iteratively parse types out of the bc file in multiple passes until we get 1409 // them all. Do this by saving a cursor for the start of the type block. 1410 BitstreamCursor StartOfTypeBlockCursor(Stream); 1411 1412 unsigned NumTypesRead = 0; 1413 1414 SmallVector<uint64_t, 64> Record; 1415 RestartScan: 1416 unsigned NextTypeID = 0; 1417 bool ReadAnyTypes = false; 1418 1419 // Read all the records for this type table. 1420 while (1) { 1421 unsigned Code = Stream.ReadCode(); 1422 if (Code == bitc::END_BLOCK) { 1423 if (NextTypeID != TypeList.size()) 1424 return Error("Invalid TYPE table"); 1425 1426 // If we haven't read all of the types yet, iterate again. 1427 if (NumTypesRead != TypeList.size()) { 1428 // If we didn't successfully read any types in this pass, then we must 1429 // have an unhandled forward reference. 1430 if (!ReadAnyTypes) 1431 return Error("Invalid TYPE table"); 1432 1433 Stream = StartOfTypeBlockCursor; 1434 goto RestartScan; 1435 } 1436 1437 if (Stream.ReadBlockEnd()) 1438 return Error("Invalid TYPE table"); 1439 return std::error_code(); 1440 } 1441 1442 if (Code == bitc::ENTER_SUBBLOCK) { 1443 // No known subblocks, always skip them. 1444 Stream.ReadSubBlockID(); 1445 if (Stream.SkipBlock()) 1446 return Error("Malformed block"); 1447 continue; 1448 } 1449 1450 if (Code == bitc::DEFINE_ABBREV) { 1451 Stream.ReadAbbrevRecord(); 1452 continue; 1453 } 1454 1455 // Read a record. 1456 Record.clear(); 1457 Type *ResultTy = nullptr; 1458 switch (Stream.readRecord(Code, Record)) { 1459 default: return Error("Invalid TYPE table"); 1460 case bitc::TYPE_CODE_NUMENTRY: // TYPE_CODE_NUMENTRY: [numentries] 1461 // TYPE_CODE_NUMENTRY contains a count of the number of types in the 1462 // type list. This allows us to reserve space. 1463 if (Record.size() < 1) 1464 return Error("Invalid TYPE table"); 1465 TypeList.resize(Record[0]); 1466 continue; 1467 case bitc::TYPE_CODE_VOID: // VOID 1468 ResultTy = Type::getVoidTy(Context); 1469 break; 1470 case bitc::TYPE_CODE_FLOAT: // FLOAT 1471 ResultTy = Type::getFloatTy(Context); 1472 break; 1473 case bitc::TYPE_CODE_DOUBLE: // DOUBLE 1474 ResultTy = Type::getDoubleTy(Context); 1475 break; 1476 case bitc::TYPE_CODE_X86_FP80: // X86_FP80 1477 ResultTy = Type::getX86_FP80Ty(Context); 1478 break; 1479 case bitc::TYPE_CODE_FP128: // FP128 1480 ResultTy = Type::getFP128Ty(Context); 1481 break; 1482 case bitc::TYPE_CODE_PPC_FP128: // PPC_FP128 1483 ResultTy = Type::getPPC_FP128Ty(Context); 1484 break; 1485 case bitc::TYPE_CODE_LABEL: // LABEL 1486 ResultTy = Type::getLabelTy(Context); 1487 break; 1488 case bitc::TYPE_CODE_METADATA: // METADATA 1489 ResultTy = Type::getMetadataTy(Context); 1490 break; 1491 case bitc::TYPE_CODE_X86_MMX: // X86_MMX 1492 ResultTy = Type::getX86_MMXTy(Context); 1493 break; 1494 case bitc::TYPE_CODE_INTEGER: // INTEGER: [width] 1495 if (Record.size() < 1) 1496 return Error("Invalid TYPE table"); 1497 ResultTy = IntegerType::get(Context, Record[0]); 1498 break; 1499 case bitc::TYPE_CODE_OPAQUE: // OPAQUE 1500 if (NextTypeID < TypeList.size() && TypeList[NextTypeID] == 0) 1501 ResultTy = StructType::create(Context, ""); 1502 break; 1503 case TYPE_CODE_STRUCT_OLD_3_0: {// STRUCT_OLD 1504 if (NextTypeID >= TypeList.size()) break; 1505 // If we already read it, don't reprocess. 1506 if (TypeList[NextTypeID] && 1507 !cast<StructType>(TypeList[NextTypeID])->isOpaque()) 1508 break; 1509 1510 // Set a type. 1511 if (TypeList[NextTypeID] == 0) 1512 TypeList[NextTypeID] = StructType::create(Context, ""); 1513 1514 std::vector<Type*> EltTys; 1515 for (unsigned i = 1, e = Record.size(); i != e; ++i) { 1516 if (Type *Elt = getTypeByIDOrNull(Record[i])) 1517 EltTys.push_back(Elt); 1518 else 1519 break; 1520 } 1521 1522 if (EltTys.size() != Record.size()-1) 1523 break; // Not all elements are ready. 1524 1525 cast<StructType>(TypeList[NextTypeID])->setBody(EltTys, Record[0]); 1526 ResultTy = TypeList[NextTypeID]; 1527 TypeList[NextTypeID] = 0; 1528 break; 1529 } 1530 case bitc::TYPE_CODE_POINTER: { // POINTER: [pointee type] or 1531 // [pointee type, address space] 1532 if (Record.size() < 1) 1533 return Error("Invalid TYPE table"); 1534 unsigned AddressSpace = 0; 1535 if (Record.size() == 2) 1536 AddressSpace = Record[1]; 1537 if ((ResultTy = getTypeByIDOrNull(Record[0]))) 1538 ResultTy = PointerType::get(ResultTy, AddressSpace); 1539 break; 1540 } 1541 case bitc::TYPE_CODE_FUNCTION_OLD: { 1542 // FIXME: attrid is dead, remove it in LLVM 3.0 1543 // FUNCTION: [vararg, attrid, retty, paramty x N] 1544 if (Record.size() < 3) 1545 return Error("Invalid TYPE table"); 1546 std::vector<Type*> ArgTys; 1547 for (unsigned i = 3, e = Record.size(); i != e; ++i) { 1548 if (Type *Elt = getTypeByIDOrNull(Record[i])) 1549 ArgTys.push_back(Elt); 1550 else 1551 break; 1552 } 1553 if (ArgTys.size()+3 != Record.size()) 1554 break; // Something was null. 1555 if ((ResultTy = getTypeByIDOrNull(Record[2]))) 1556 ResultTy = FunctionType::get(ResultTy, ArgTys, Record[0]); 1557 break; 1558 } 1559 case bitc::TYPE_CODE_FUNCTION: { 1560 // FUNCTION: [vararg, retty, paramty x N] 1561 if (Record.size() < 2) 1562 return Error("Invalid TYPE table"); 1563 std::vector<Type*> ArgTys; 1564 for (unsigned i = 2, e = Record.size(); i != e; ++i) { 1565 if (Type *Elt = getTypeByIDOrNull(Record[i])) 1566 ArgTys.push_back(Elt); 1567 else 1568 break; 1569 } 1570 if (ArgTys.size()+2 != Record.size()) 1571 break; // Something was null. 1572 if ((ResultTy = getTypeByIDOrNull(Record[1]))) 1573 ResultTy = FunctionType::get(ResultTy, ArgTys, Record[0]); 1574 break; 1575 } 1576 case bitc::TYPE_CODE_ARRAY: // ARRAY: [numelts, eltty] 1577 if (Record.size() < 2) 1578 return Error("Invalid TYPE table"); 1579 if ((ResultTy = getTypeByIDOrNull(Record[1]))) 1580 ResultTy = ArrayType::get(ResultTy, Record[0]); 1581 break; 1582 case bitc::TYPE_CODE_VECTOR: // VECTOR: [numelts, eltty] 1583 if (Record.size() < 2) 1584 return Error("Invalid TYPE table"); 1585 if ((ResultTy = getTypeByIDOrNull(Record[1]))) 1586 ResultTy = VectorType::get(ResultTy, Record[0]); 1587 break; 1588 } 1589 1590 if (NextTypeID >= TypeList.size()) 1591 return Error("Invalid TYPE table"); 1592 1593 if (ResultTy && TypeList[NextTypeID] == 0) { 1594 ++NumTypesRead; 1595 ReadAnyTypes = true; 1596 1597 TypeList[NextTypeID] = ResultTy; 1598 } 1599 1600 ++NextTypeID; 1601 } 1602 } 1603 1604 1605 std::error_code BitcodeReader::ParseOldTypeSymbolTable() { 1606 if (Stream.EnterSubBlock(TYPE_SYMTAB_BLOCK_ID_OLD_3_0)) 1607 return Error("Malformed block"); 1608 1609 SmallVector<uint64_t, 64> Record; 1610 1611 // Read all the records for this type table. 1612 std::string TypeName; 1613 while (1) { 1614 unsigned Code = Stream.ReadCode(); 1615 if (Code == bitc::END_BLOCK) { 1616 if (Stream.ReadBlockEnd()) 1617 return Error("Malformed block"); 1618 return std::error_code(); 1619 } 1620 1621 if (Code == bitc::ENTER_SUBBLOCK) { 1622 // No known subblocks, always skip them. 1623 Stream.ReadSubBlockID(); 1624 if (Stream.SkipBlock()) 1625 return Error("Malformed block"); 1626 continue; 1627 } 1628 1629 if (Code == bitc::DEFINE_ABBREV) { 1630 Stream.ReadAbbrevRecord(); 1631 continue; 1632 } 1633 1634 // Read a record. 1635 Record.clear(); 1636 switch (Stream.readRecord(Code, Record)) { 1637 default: // Default behavior: unknown type. 1638 break; 1639 case bitc::TST_CODE_ENTRY: // TST_ENTRY: [typeid, namechar x N] 1640 if (ConvertToString(Record, 1, TypeName)) 1641 return Error("Invalid record"); 1642 unsigned TypeID = Record[0]; 1643 if (TypeID >= TypeList.size()) 1644 return Error("Invalid record"); 1645 1646 // Only apply the type name to a struct type with no name. 1647 if (StructType *STy = dyn_cast<StructType>(TypeList[TypeID])) 1648 if (!STy->isLiteral() && !STy->hasName()) 1649 STy->setName(TypeName); 1650 TypeName.clear(); 1651 break; 1652 } 1653 } 1654 } 1655 1656 std::error_code BitcodeReader::ParseValueSymbolTable() { 1657 if (Stream.EnterSubBlock(bitc::VALUE_SYMTAB_BLOCK_ID)) 1658 return Error("Invalid record"); 1659 1660 SmallVector<uint64_t, 64> Record; 1661 1662 // Read all the records for this value table. 1663 SmallString<128> ValueName; 1664 while (1) { 1665 unsigned Code = Stream.ReadCode(); 1666 if (Code == bitc::END_BLOCK) { 1667 if (Stream.ReadBlockEnd()) 1668 return Error("Malformed block"); 1669 return std::error_code(); 1670 } 1671 if (Code == bitc::ENTER_SUBBLOCK) { 1672 // No known subblocks, always skip them. 1673 Stream.ReadSubBlockID(); 1674 if (Stream.SkipBlock()) 1675 return Error("Malformed block"); 1676 continue; 1677 } 1678 1679 if (Code == bitc::DEFINE_ABBREV) { 1680 Stream.ReadAbbrevRecord(); 1681 continue; 1682 } 1683 1684 // Read a record. 1685 Record.clear(); 1686 switch (Stream.readRecord(Code, Record)) { 1687 default: // Default behavior: unknown type. 1688 break; 1689 case bitc::VST_CODE_ENTRY: { // VST_ENTRY: [valueid, namechar x N] 1690 if (ConvertToString(Record, 1, ValueName)) 1691 return Error("Invalid record"); 1692 unsigned ValueID = Record[0]; 1693 if (ValueID >= ValueList.size()) 1694 return Error("Invalid record"); 1695 Value *V = ValueList[ValueID]; 1696 1697 V->setName(StringRef(ValueName.data(), ValueName.size())); 1698 ValueName.clear(); 1699 break; 1700 } 1701 case bitc::VST_CODE_BBENTRY: { 1702 if (ConvertToString(Record, 1, ValueName)) 1703 return Error("Invalid record"); 1704 BasicBlock *BB = getBasicBlock(Record[0]); 1705 if (!BB) 1706 return Error("Invalid record"); 1707 1708 BB->setName(StringRef(ValueName.data(), ValueName.size())); 1709 ValueName.clear(); 1710 break; 1711 } 1712 } 1713 } 1714 } 1715 1716 std::error_code BitcodeReader::ParseMetadata() { 1717 unsigned NextMDValueNo = MDValueList.size(); 1718 1719 if (Stream.EnterSubBlock(bitc::METADATA_BLOCK_ID)) 1720 return Error("Invalid record"); 1721 1722 SmallVector<uint64_t, 64> Record; 1723 1724 // Read all the records. 1725 while (1) { 1726 unsigned Code = Stream.ReadCode(); 1727 if (Code == bitc::END_BLOCK) { 1728 if (Stream.ReadBlockEnd()) 1729 return Error("Malformed block"); 1730 return std::error_code(); 1731 } 1732 1733 if (Code == bitc::ENTER_SUBBLOCK) { 1734 // No known subblocks, always skip them. 1735 Stream.ReadSubBlockID(); 1736 if (Stream.SkipBlock()) 1737 return Error("Malformed block"); 1738 continue; 1739 } 1740 1741 if (Code == bitc::DEFINE_ABBREV) { 1742 Stream.ReadAbbrevRecord(); 1743 continue; 1744 } 1745 1746 bool IsFunctionLocal = false; 1747 // Read a record. 1748 Record.clear(); 1749 Code = Stream.readRecord(Code, Record); 1750 switch (Code) { 1751 default: // Default behavior: ignore. 1752 break; 1753 case bitc::METADATA_NAME: { 1754 // Read name of the named metadata. 1755 SmallString<8> Name(Record.begin(), Record.end()); 1756 Record.clear(); 1757 Code = Stream.ReadCode(); 1758 1759 // METADATA_NAME is always followed by METADATA_NAMED_NODE. 1760 unsigned NextBitCode = Stream.readRecord(Code, Record); 1761 assert(NextBitCode == bitc::METADATA_NAMED_NODE); (void)NextBitCode; 1762 1763 // Read named metadata elements. 1764 unsigned Size = Record.size(); 1765 NamedMDNode *NMD = TheModule->getOrInsertNamedMetadata(Name); 1766 for (unsigned i = 0; i != Size; ++i) { 1767 MDNode *MD = dyn_cast_or_null<MDNode>(MDValueList.getValueFwdRef(Record[i])); 1768 if (!MD) 1769 return Error("Invalid record"); 1770 NMD->addOperand(MD); 1771 } 1772 break; 1773 } 1774 case bitc::METADATA_OLD_FN_NODE: 1775 IsFunctionLocal = true; 1776 // fall-through 1777 case bitc::METADATA_OLD_NODE: { 1778 if (Record.size() % 2 == 1) 1779 return Error("Invalid record"); 1780 1781 unsigned Size = Record.size(); 1782 SmallVector<Metadata *, 8> Elts; 1783 for (unsigned i = 0; i != Size; i += 2) { 1784 Type *Ty = getTypeByID(Record[i]); 1785 if (!Ty) 1786 return Error("Invalid record"); 1787 if (Ty->isMetadataTy()) 1788 Elts.push_back(MDValueList.getValueFwdRef(Record[i+1])); 1789 else if (!Ty->isVoidTy()) { 1790 auto *MD = 1791 ValueAsMetadata::get(ValueList.getValueFwdRef(Record[i + 1], Ty)); 1792 assert(isa<ConstantAsMetadata>(MD) && 1793 "Expected non-function-local metadata"); 1794 Elts.push_back(MD); 1795 } else 1796 Elts.push_back(nullptr); 1797 } 1798 MDValueList.AssignValue(MDNode::get(Context, Elts), NextMDValueNo++); 1799 break; 1800 } 1801 case bitc::METADATA_STRING_OLD: { 1802 std::string String(Record.begin(), Record.end()); 1803 1804 // Test for upgrading !llvm.loop. 1805 mayBeOldLoopAttachmentTag(String); 1806 1807 Metadata *MD = MDString::get(Context, String); 1808 MDValueList.AssignValue(MD, NextMDValueNo++); 1809 break; 1810 } 1811 case bitc::METADATA_KIND: { 1812 if (Record.size() < 2) 1813 return Error("Invalid record"); 1814 1815 unsigned Kind = Record[0]; 1816 SmallString<8> Name(Record.begin()+1, Record.end()); 1817 1818 unsigned NewKind = TheModule->getMDKindID(Name.str()); 1819 if (!MDKindMap.insert(std::make_pair(Kind, NewKind)).second) 1820 return Error("Conflicting METADATA_KIND records"); 1821 break; 1822 } 1823 } 1824 } 1825 } 1826 1827 /// decodeSignRotatedValue - Decode a signed value stored with the sign bit in 1828 /// the LSB for dense VBR encoding. 1829 uint64_t BitcodeReader::decodeSignRotatedValue(uint64_t V) { 1830 if ((V & 1) == 0) 1831 return V >> 1; 1832 if (V != 1) 1833 return -(V >> 1); 1834 // There is no such thing as -0 with integers. "-0" really means MININT. 1835 return 1ULL << 63; 1836 } 1837 1838 // FIXME: Delete this in LLVM 4.0 and just assert that the aliasee is a 1839 // GlobalObject. 1840 static GlobalObject & 1841 getGlobalObjectInExpr(const DenseMap<GlobalAlias *, Constant *> &Map, 1842 Constant &C) { 1843 auto *GO = dyn_cast<GlobalObject>(&C); 1844 if (GO) 1845 return *GO; 1846 1847 auto *GA = dyn_cast<GlobalAlias>(&C); 1848 if (GA) 1849 return getGlobalObjectInExpr(Map, *Map.find(GA)->second); 1850 1851 auto &CE = cast<ConstantExpr>(C); 1852 assert(CE.getOpcode() == Instruction::BitCast || 1853 CE.getOpcode() == Instruction::GetElementPtr || 1854 CE.getOpcode() == Instruction::AddrSpaceCast); 1855 if (CE.getOpcode() == Instruction::GetElementPtr) 1856 assert(cast<GEPOperator>(CE).hasAllZeroIndices()); 1857 return getGlobalObjectInExpr(Map, *CE.getOperand(0)); 1858 } 1859 1860 /// ResolveGlobalAndAliasInits - Resolve all of the initializers for global 1861 /// values and aliases that we can. 1862 std::error_code BitcodeReader::ResolveGlobalAndAliasInits() { 1863 std::vector<std::pair<GlobalVariable*, unsigned> > GlobalInitWorklist; 1864 std::vector<std::pair<GlobalAlias*, unsigned> > AliasInitWorklist; 1865 1866 GlobalInitWorklist.swap(GlobalInits); 1867 AliasInitWorklist.swap(AliasInits); 1868 1869 while (!GlobalInitWorklist.empty()) { 1870 unsigned ValID = GlobalInitWorklist.back().second; 1871 if (ValID >= ValueList.size()) { 1872 // Not ready to resolve this yet, it requires something later in the file. 1873 GlobalInits.push_back(GlobalInitWorklist.back()); 1874 } else { 1875 if (Constant *C = dyn_cast_or_null<Constant>(ValueList[ValID])) 1876 GlobalInitWorklist.back().first->setInitializer(C); 1877 else 1878 return Error("Expected a constant"); 1879 } 1880 GlobalInitWorklist.pop_back(); 1881 } 1882 1883 // FIXME: Delete this in LLVM 4.0 1884 // Older versions of llvm could write an alias pointing to another. We cannot 1885 // construct those aliases, so we first collect an alias to aliasee expression 1886 // and then compute the actual aliasee. 1887 DenseMap<GlobalAlias *, Constant *> AliasInit; 1888 1889 while (!AliasInitWorklist.empty()) { 1890 unsigned ValID = AliasInitWorklist.back().second; 1891 if (ValID >= ValueList.size()) { 1892 AliasInits.push_back(AliasInitWorklist.back()); 1893 } else { 1894 if (Constant *C = dyn_cast_or_null<Constant>(ValueList[ValID])) 1895 AliasInit.insert(std::make_pair(AliasInitWorklist.back().first, C)); 1896 else 1897 return Error("Expected a constant"); 1898 } 1899 AliasInitWorklist.pop_back(); 1900 } 1901 1902 for (auto &Pair : AliasInit) { 1903 auto &GO = getGlobalObjectInExpr(AliasInit, *Pair.second); 1904 Pair.first->setAliasee(&GO); 1905 } 1906 1907 return std::error_code(); 1908 } 1909 1910 static APInt ReadWideAPInt(ArrayRef<uint64_t> Vals, unsigned TypeBits) { 1911 SmallVector<uint64_t, 8> Words(Vals.size()); 1912 std::transform(Vals.begin(), Vals.end(), Words.begin(), 1913 BitcodeReader::decodeSignRotatedValue); 1914 1915 return APInt(TypeBits, Words); 1916 } 1917 1918 std::error_code BitcodeReader::ParseConstants() { 1919 if (Stream.EnterSubBlock(bitc::CONSTANTS_BLOCK_ID)) 1920 return Error("Invalid record"); 1921 1922 SmallVector<uint64_t, 64> Record; 1923 1924 // Read all the records for this value table. 1925 Type *CurTy = Type::getInt32Ty(Context); 1926 unsigned NextCstNo = ValueList.size(); 1927 while (1) { 1928 BitstreamEntry Entry = Stream.advanceSkippingSubblocks(); 1929 1930 switch (Entry.Kind) { 1931 case BitstreamEntry::SubBlock: // Handled for us already. 1932 case BitstreamEntry::Error: 1933 return Error("Malformed block"); 1934 case BitstreamEntry::EndBlock: 1935 if (NextCstNo != ValueList.size()) 1936 return Error("Invalid constant reference"); 1937 1938 // Once all the constants have been read, go through and resolve forward 1939 // references. 1940 ValueList.ResolveConstantForwardRefs(); 1941 return std::error_code(); 1942 case BitstreamEntry::Record: 1943 // The interesting case. 1944 break; 1945 } 1946 1947 // Read a record. 1948 Record.clear(); 1949 Value *V = nullptr; 1950 unsigned BitCode = Stream.readRecord(Entry.ID, Record); 1951 switch (BitCode) { 1952 default: // Default behavior: unknown constant 1953 case bitc::CST_CODE_UNDEF: // UNDEF 1954 V = UndefValue::get(CurTy); 1955 break; 1956 case bitc::CST_CODE_SETTYPE: // SETTYPE: [typeid] 1957 if (Record.empty()) 1958 return Error("Invalid record"); 1959 if (Record[0] >= TypeList.size()) 1960 return Error("Invalid record"); 1961 CurTy = TypeList[Record[0]]; 1962 continue; // Skip the ValueList manipulation. 1963 case bitc::CST_CODE_NULL: // NULL 1964 V = Constant::getNullValue(CurTy); 1965 break; 1966 case bitc::CST_CODE_INTEGER: // INTEGER: [intval] 1967 if (!CurTy->isIntegerTy() || Record.empty()) 1968 return Error("Invalid record"); 1969 V = ConstantInt::get(CurTy, decodeSignRotatedValue(Record[0])); 1970 break; 1971 case bitc::CST_CODE_WIDE_INTEGER: {// WIDE_INTEGER: [n x intval] 1972 if (!CurTy->isIntegerTy() || Record.empty()) 1973 return Error("Invalid record"); 1974 1975 APInt VInt = ReadWideAPInt(Record, 1976 cast<IntegerType>(CurTy)->getBitWidth()); 1977 V = ConstantInt::get(Context, VInt); 1978 1979 break; 1980 } 1981 case bitc::CST_CODE_FLOAT: { // FLOAT: [fpval] 1982 if (Record.empty()) 1983 return Error("Invalid record"); 1984 if (CurTy->isHalfTy()) 1985 V = ConstantFP::get(Context, APFloat(APFloat::IEEEhalf, 1986 APInt(16, (uint16_t)Record[0]))); 1987 else if (CurTy->isFloatTy()) 1988 V = ConstantFP::get(Context, APFloat(APFloat::IEEEsingle, 1989 APInt(32, (uint32_t)Record[0]))); 1990 else if (CurTy->isDoubleTy()) 1991 V = ConstantFP::get(Context, APFloat(APFloat::IEEEdouble, 1992 APInt(64, Record[0]))); 1993 else if (CurTy->isX86_FP80Ty()) { 1994 // Bits are not stored the same way as a normal i80 APInt, compensate. 1995 uint64_t Rearrange[2]; 1996 Rearrange[0] = (Record[1] & 0xffffLL) | (Record[0] << 16); 1997 Rearrange[1] = Record[0] >> 48; 1998 V = ConstantFP::get(Context, APFloat(APFloat::x87DoubleExtended, 1999 APInt(80, Rearrange))); 2000 } else if (CurTy->isFP128Ty()) 2001 V = ConstantFP::get(Context, APFloat(APFloat::IEEEquad, 2002 APInt(128, Record))); 2003 else if (CurTy->isPPC_FP128Ty()) 2004 V = ConstantFP::get(Context, APFloat(APFloat::PPCDoubleDouble, 2005 APInt(128, Record))); 2006 else 2007 V = UndefValue::get(CurTy); 2008 break; 2009 } 2010 2011 case bitc::CST_CODE_AGGREGATE: {// AGGREGATE: [n x value number] 2012 if (Record.empty()) 2013 return Error("Invalid record"); 2014 2015 unsigned Size = Record.size(); 2016 SmallVector<Constant*, 16> Elts; 2017 2018 if (StructType *STy = dyn_cast<StructType>(CurTy)) { 2019 for (unsigned i = 0; i != Size; ++i) 2020 Elts.push_back(ValueList.getConstantFwdRef(Record[i], 2021 STy->getElementType(i))); 2022 V = ConstantStruct::get(STy, Elts); 2023 } else if (ArrayType *ATy = dyn_cast<ArrayType>(CurTy)) { 2024 Type *EltTy = ATy->getElementType(); 2025 for (unsigned i = 0; i != Size; ++i) 2026 Elts.push_back(ValueList.getConstantFwdRef(Record[i], EltTy)); 2027 V = ConstantArray::get(ATy, Elts); 2028 } else if (VectorType *VTy = dyn_cast<VectorType>(CurTy)) { 2029 Type *EltTy = VTy->getElementType(); 2030 for (unsigned i = 0; i != Size; ++i) 2031 Elts.push_back(ValueList.getConstantFwdRef(Record[i], EltTy)); 2032 V = ConstantVector::get(Elts); 2033 } else { 2034 V = UndefValue::get(CurTy); 2035 } 2036 break; 2037 } 2038 case bitc::CST_CODE_STRING: { // STRING: [values] 2039 if (Record.empty()) 2040 return Error("Invalid record"); 2041 2042 ArrayType *ATy = cast<ArrayType>(CurTy); 2043 Type *EltTy = ATy->getElementType(); 2044 2045 unsigned Size = Record.size(); 2046 std::vector<Constant*> Elts; 2047 for (unsigned i = 0; i != Size; ++i) 2048 Elts.push_back(ConstantInt::get(EltTy, Record[i])); 2049 V = ConstantArray::get(ATy, Elts); 2050 break; 2051 } 2052 case bitc::CST_CODE_CSTRING: { // CSTRING: [values] 2053 if (Record.empty()) 2054 return Error("Invalid record"); 2055 2056 ArrayType *ATy = cast<ArrayType>(CurTy); 2057 Type *EltTy = ATy->getElementType(); 2058 2059 unsigned Size = Record.size(); 2060 std::vector<Constant*> Elts; 2061 for (unsigned i = 0; i != Size; ++i) 2062 Elts.push_back(ConstantInt::get(EltTy, Record[i])); 2063 Elts.push_back(Constant::getNullValue(EltTy)); 2064 V = ConstantArray::get(ATy, Elts); 2065 break; 2066 } 2067 case bitc::CST_CODE_CE_BINOP: { // CE_BINOP: [opcode, opval, opval] 2068 if (Record.size() < 3) 2069 return Error("Invalid record"); 2070 int Opc = GetDecodedBinaryOpcode(Record[0], CurTy); 2071 if (Opc < 0) { 2072 V = UndefValue::get(CurTy); // Unknown binop. 2073 } else { 2074 Constant *LHS = ValueList.getConstantFwdRef(Record[1], CurTy); 2075 Constant *RHS = ValueList.getConstantFwdRef(Record[2], CurTy); 2076 unsigned Flags = 0; 2077 if (Record.size() >= 4) { 2078 if (Opc == Instruction::Add || 2079 Opc == Instruction::Sub || 2080 Opc == Instruction::Mul || 2081 Opc == Instruction::Shl) { 2082 if (Record[3] & (1 << bitc::OBO_NO_SIGNED_WRAP)) 2083 Flags |= OverflowingBinaryOperator::NoSignedWrap; 2084 if (Record[3] & (1 << bitc::OBO_NO_UNSIGNED_WRAP)) 2085 Flags |= OverflowingBinaryOperator::NoUnsignedWrap; 2086 } else if (Opc == Instruction::SDiv || 2087 Opc == Instruction::UDiv || 2088 Opc == Instruction::LShr || 2089 Opc == Instruction::AShr) { 2090 if (Record[3] & (1 << bitc::PEO_EXACT)) 2091 Flags |= SDivOperator::IsExact; 2092 } 2093 } 2094 V = ConstantExpr::get(Opc, LHS, RHS, Flags); 2095 } 2096 break; 2097 } 2098 case bitc::CST_CODE_CE_CAST: { // CE_CAST: [opcode, opty, opval] 2099 if (Record.size() < 3) 2100 return Error("Invalid record"); 2101 int Opc = GetDecodedCastOpcode(Record[0]); 2102 if (Opc < 0) { 2103 V = UndefValue::get(CurTy); // Unknown cast. 2104 } else { 2105 Type *OpTy = getTypeByID(Record[1]); 2106 if (!OpTy) 2107 return Error("Invalid record"); 2108 Constant *Op = ValueList.getConstantFwdRef(Record[2], OpTy); 2109 V = ConstantExpr::getCast(Opc, Op, CurTy); 2110 } 2111 break; 2112 } 2113 case bitc::CST_CODE_CE_INBOUNDS_GEP: 2114 case bitc::CST_CODE_CE_GEP: { // CE_GEP: [n x operands] 2115 Type *PointeeType = nullptr; 2116 if (Record.size() & 1) 2117 return Error("Invalid record"); 2118 SmallVector<Constant*, 16> Elts; 2119 for (unsigned i = 0, e = Record.size(); i != e; i += 2) { 2120 Type *ElTy = getTypeByID(Record[i]); 2121 if (!ElTy) 2122 return Error("Invalid record"); 2123 Elts.push_back(ValueList.getConstantFwdRef(Record[i+1], ElTy)); 2124 } 2125 ArrayRef<Constant *> Indices(Elts.begin() + 1, Elts.end()); 2126 V = ConstantExpr::getGetElementPtr(PointeeType, Elts[0], Indices, 2127 BitCode == 2128 bitc::CST_CODE_CE_INBOUNDS_GEP); 2129 break; 2130 } 2131 case bitc::CST_CODE_CE_SELECT: // CE_SELECT: [opval#, opval#, opval#] 2132 if (Record.size() < 3) 2133 return Error("Invalid record"); 2134 V = ConstantExpr::getSelect(ValueList.getConstantFwdRef(Record[0], 2135 Type::getInt1Ty(Context)), 2136 ValueList.getConstantFwdRef(Record[1],CurTy), 2137 ValueList.getConstantFwdRef(Record[2],CurTy)); 2138 break; 2139 case bitc::CST_CODE_CE_EXTRACTELT: { // CE_EXTRACTELT: [opty, opval, opval] 2140 if (Record.size() < 3) 2141 return Error("Invalid record"); 2142 VectorType *OpTy = 2143 dyn_cast_or_null<VectorType>(getTypeByID(Record[0])); 2144 if (!OpTy) 2145 return Error("Invalid record"); 2146 Constant *Op0 = ValueList.getConstantFwdRef(Record[1], OpTy); 2147 Constant *Op1 = ValueList.getConstantFwdRef(Record[2], Type::getInt32Ty(Context)); 2148 V = ConstantExpr::getExtractElement(Op0, Op1); 2149 break; 2150 } 2151 case bitc::CST_CODE_CE_INSERTELT: { // CE_INSERTELT: [opval, opval, opval] 2152 VectorType *OpTy = dyn_cast<VectorType>(CurTy); 2153 if (Record.size() < 3 || !OpTy) 2154 return Error("Invalid record"); 2155 Constant *Op0 = ValueList.getConstantFwdRef(Record[0], OpTy); 2156 Constant *Op1 = ValueList.getConstantFwdRef(Record[1], 2157 OpTy->getElementType()); 2158 Constant *Op2 = ValueList.getConstantFwdRef(Record[2], Type::getInt32Ty(Context)); 2159 V = ConstantExpr::getInsertElement(Op0, Op1, Op2); 2160 break; 2161 } 2162 case bitc::CST_CODE_CE_SHUFFLEVEC: { // CE_SHUFFLEVEC: [opval, opval, opval] 2163 VectorType *OpTy = dyn_cast<VectorType>(CurTy); 2164 if (Record.size() < 3 || !OpTy) 2165 return Error("Invalid record"); 2166 Constant *Op0 = ValueList.getConstantFwdRef(Record[0], OpTy); 2167 Constant *Op1 = ValueList.getConstantFwdRef(Record[1], OpTy); 2168 Type *ShufTy = VectorType::get(Type::getInt32Ty(Context), 2169 OpTy->getNumElements()); 2170 Constant *Op2 = ValueList.getConstantFwdRef(Record[2], ShufTy); 2171 V = ConstantExpr::getShuffleVector(Op0, Op1, Op2); 2172 break; 2173 } 2174 case bitc::CST_CODE_CE_SHUFVEC_EX: { // [opty, opval, opval, opval] 2175 VectorType *RTy = dyn_cast<VectorType>(CurTy); 2176 VectorType *OpTy = 2177 dyn_cast_or_null<VectorType>(getTypeByID(Record[0])); 2178 if (Record.size() < 4 || !RTy || !OpTy) 2179 return Error("Invalid record"); 2180 Constant *Op0 = ValueList.getConstantFwdRef(Record[1], OpTy); 2181 Constant *Op1 = ValueList.getConstantFwdRef(Record[2], OpTy); 2182 Type *ShufTy = VectorType::get(Type::getInt32Ty(Context), 2183 RTy->getNumElements()); 2184 Constant *Op2 = ValueList.getConstantFwdRef(Record[3], ShufTy); 2185 V = ConstantExpr::getShuffleVector(Op0, Op1, Op2); 2186 break; 2187 } 2188 case bitc::CST_CODE_CE_CMP: { // CE_CMP: [opty, opval, opval, pred] 2189 if (Record.size() < 4) 2190 return Error("Invalid record"); 2191 Type *OpTy = getTypeByID(Record[0]); 2192 if (!OpTy) 2193 return Error("Invalid record"); 2194 Constant *Op0 = ValueList.getConstantFwdRef(Record[1], OpTy); 2195 Constant *Op1 = ValueList.getConstantFwdRef(Record[2], OpTy); 2196 2197 if (OpTy->isFPOrFPVectorTy()) 2198 V = ConstantExpr::getFCmp(Record[3], Op0, Op1); 2199 else 2200 V = ConstantExpr::getICmp(Record[3], Op0, Op1); 2201 break; 2202 } 2203 case bitc::CST_CODE_INLINEASM: 2204 case bitc::CST_CODE_INLINEASM_OLD: { 2205 if (Record.size() < 2) 2206 return Error("Invalid record"); 2207 std::string AsmStr, ConstrStr; 2208 bool HasSideEffects = Record[0] & 1; 2209 bool IsAlignStack = Record[0] >> 1; 2210 unsigned AsmStrSize = Record[1]; 2211 if (2+AsmStrSize >= Record.size()) 2212 return Error("Invalid record"); 2213 unsigned ConstStrSize = Record[2+AsmStrSize]; 2214 if (3+AsmStrSize+ConstStrSize > Record.size()) 2215 return Error("Invalid record"); 2216 2217 for (unsigned i = 0; i != AsmStrSize; ++i) 2218 AsmStr += (char)Record[2+i]; 2219 for (unsigned i = 0; i != ConstStrSize; ++i) 2220 ConstrStr += (char)Record[3+AsmStrSize+i]; 2221 PointerType *PTy = cast<PointerType>(CurTy); 2222 V = InlineAsm::get(cast<FunctionType>(PTy->getElementType()), 2223 AsmStr, ConstrStr, HasSideEffects, IsAlignStack); 2224 break; 2225 } 2226 case bitc::CST_CODE_BLOCKADDRESS:{ 2227 if (Record.size() < 3) 2228 return Error("Invalid record"); 2229 Type *FnTy = getTypeByID(Record[0]); 2230 if (!FnTy) 2231 return Error("Invalid record"); 2232 Function *Fn = 2233 dyn_cast_or_null<Function>(ValueList.getConstantFwdRef(Record[1],FnTy)); 2234 if (!Fn) 2235 return Error("Invalid record"); 2236 2237 GlobalVariable *FwdRef = new GlobalVariable(*Fn->getParent(), 2238 Type::getInt8Ty(Context), 2239 false, GlobalValue::InternalLinkage, 2240 0, ""); 2241 BlockAddrFwdRefs[Fn].push_back(std::make_pair(Record[2], FwdRef)); 2242 V = FwdRef; 2243 break; 2244 } 2245 } 2246 2247 ValueList.AssignValue(V, NextCstNo); 2248 ++NextCstNo; 2249 } 2250 2251 if (NextCstNo != ValueList.size()) 2252 return Error("Invalid constant reference"); 2253 2254 if (Stream.ReadBlockEnd()) 2255 return Error("Expected a constant"); 2256 2257 // Once all the constants have been read, go through and resolve forward 2258 // references. 2259 ValueList.ResolveConstantForwardRefs(); 2260 return std::error_code(); 2261 } 2262 2263 std::error_code BitcodeReader::materializeMetadata() { 2264 return std::error_code(); 2265 } 2266 2267 void BitcodeReader::setStripDebugInfo() { } 2268 2269 /// RememberAndSkipFunctionBody - When we see the block for a function body, 2270 /// remember where it is and then skip it. This lets us lazily deserialize the 2271 /// functions. 2272 std::error_code BitcodeReader::RememberAndSkipFunctionBody() { 2273 // Get the function we are talking about. 2274 if (FunctionsWithBodies.empty()) 2275 return Error("Insufficient function protos"); 2276 2277 Function *Fn = FunctionsWithBodies.back(); 2278 FunctionsWithBodies.pop_back(); 2279 2280 // Save the current stream state. 2281 uint64_t CurBit = Stream.GetCurrentBitNo(); 2282 DeferredFunctionInfo[Fn] = CurBit; 2283 2284 // Skip over the function block for now. 2285 if (Stream.SkipBlock()) 2286 return Error("Invalid record"); 2287 return std::error_code(); 2288 } 2289 2290 std::error_code BitcodeReader::GlobalCleanup() { 2291 // Patch the initializers for globals and aliases up. 2292 ResolveGlobalAndAliasInits(); 2293 if (!GlobalInits.empty() || !AliasInits.empty()) 2294 return Error("Malformed global initializer set"); 2295 2296 // Look for intrinsic functions which need to be upgraded at some point 2297 for (Module::iterator FI = TheModule->begin(), FE = TheModule->end(); 2298 FI != FE; ++FI) { 2299 Function *NewFn; 2300 if (UpgradeIntrinsicFunction(&*FI, NewFn)) 2301 UpgradedIntrinsics.push_back(std::make_pair(&*FI, NewFn)); 2302 } 2303 2304 // Look for global variables which need to be renamed. 2305 for (Module::global_iterator 2306 GI = TheModule->global_begin(), GE = TheModule->global_end(); 2307 GI != GE; GI++) { 2308 GlobalVariable *GV = &*GI; 2309 UpgradeGlobalVariable(GV); 2310 } 2311 2312 // Force deallocation of memory for these vectors to favor the client that 2313 // want lazy deserialization. 2314 std::vector<std::pair<GlobalVariable*, unsigned> >().swap(GlobalInits); 2315 std::vector<std::pair<GlobalAlias*, unsigned> >().swap(AliasInits); 2316 return std::error_code(); 2317 } 2318 2319 std::error_code BitcodeReader::ParseModule(bool Resume) { 2320 if (Resume) 2321 Stream.JumpToBit(NextUnreadBit); 2322 else if (Stream.EnterSubBlock(bitc::MODULE_BLOCK_ID)) 2323 return Error("Invalid record"); 2324 2325 SmallVector<uint64_t, 64> Record; 2326 std::vector<std::string> SectionTable; 2327 std::vector<std::string> GCTable; 2328 2329 // Read all the records for this module. 2330 while (1) { 2331 BitstreamEntry Entry = Stream.advance(); 2332 2333 switch (Entry.Kind) { 2334 case BitstreamEntry::Error: 2335 return Error("Malformed block"); 2336 case BitstreamEntry::EndBlock: 2337 return GlobalCleanup(); 2338 2339 case BitstreamEntry::SubBlock: 2340 switch (Entry.ID) { 2341 default: // Skip unknown content. 2342 if (Stream.SkipBlock()) 2343 return Error("Invalid record"); 2344 break; 2345 case bitc::BLOCKINFO_BLOCK_ID: 2346 if (Stream.ReadBlockInfoBlock()) 2347 return Error("Malformed block"); 2348 break; 2349 case bitc::PARAMATTR_BLOCK_ID: 2350 if (std::error_code EC = ParseAttributeBlock()) 2351 return EC; 2352 break; 2353 case bitc::TYPE_BLOCK_ID_NEW: 2354 if (std::error_code EC = ParseTypeTable()) 2355 return EC; 2356 break; 2357 case TYPE_BLOCK_ID_OLD_3_0: 2358 if (std::error_code EC = ParseOldTypeTable()) 2359 return EC; 2360 break; 2361 case TYPE_SYMTAB_BLOCK_ID_OLD_3_0: 2362 if (std::error_code EC = ParseOldTypeSymbolTable()) 2363 return EC; 2364 break; 2365 case bitc::VALUE_SYMTAB_BLOCK_ID: 2366 if (std::error_code EC = ParseValueSymbolTable()) 2367 return EC; 2368 SeenValueSymbolTable = true; 2369 break; 2370 case bitc::CONSTANTS_BLOCK_ID: 2371 if (std::error_code EC = ParseConstants()) 2372 return EC; 2373 if (std::error_code EC = ResolveGlobalAndAliasInits()) 2374 return EC; 2375 break; 2376 case bitc::METADATA_BLOCK_ID: 2377 if (std::error_code EC = ParseMetadata()) 2378 return EC; 2379 break; 2380 case bitc::FUNCTION_BLOCK_ID: 2381 // If this is the first function body we've seen, reverse the 2382 // FunctionsWithBodies list. 2383 if (!SeenFirstFunctionBody) { 2384 std::reverse(FunctionsWithBodies.begin(), FunctionsWithBodies.end()); 2385 if (std::error_code EC = GlobalCleanup()) 2386 return EC; 2387 SeenFirstFunctionBody = true; 2388 } 2389 2390 if (std::error_code EC = RememberAndSkipFunctionBody()) 2391 return EC; 2392 // For streaming bitcode, suspend parsing when we reach the function 2393 // bodies. Subsequent materialization calls will resume it when 2394 // necessary. For streaming, the function bodies must be at the end of 2395 // the bitcode. If the bitcode file is old, the symbol table will be 2396 // at the end instead and will not have been seen yet. In this case, 2397 // just finish the parse now. 2398 if (LazyStreamer && SeenValueSymbolTable) { 2399 NextUnreadBit = Stream.GetCurrentBitNo(); 2400 return std::error_code(); 2401 } 2402 break; 2403 break; 2404 } 2405 continue; 2406 2407 case BitstreamEntry::Record: 2408 // The interesting case. 2409 break; 2410 } 2411 2412 2413 // Read a record. 2414 switch (Stream.readRecord(Entry.ID, Record)) { 2415 default: break; // Default behavior, ignore unknown content. 2416 case bitc::MODULE_CODE_VERSION: { // VERSION: [version#] 2417 if (Record.size() < 1) 2418 return Error("Invalid record"); 2419 // Only version #0 is supported so far. 2420 if (Record[0] != 0) 2421 return Error("Invalid value"); 2422 break; 2423 } 2424 case bitc::MODULE_CODE_TRIPLE: { // TRIPLE: [strchr x N] 2425 std::string S; 2426 if (ConvertToString(Record, 0, S)) 2427 return Error("Invalid record"); 2428 TheModule->setTargetTriple(S); 2429 break; 2430 } 2431 case bitc::MODULE_CODE_DATALAYOUT: { // DATALAYOUT: [strchr x N] 2432 std::string S; 2433 if (ConvertToString(Record, 0, S)) 2434 return Error("Invalid record"); 2435 TheModule->setDataLayout(S); 2436 break; 2437 } 2438 case bitc::MODULE_CODE_ASM: { // ASM: [strchr x N] 2439 std::string S; 2440 if (ConvertToString(Record, 0, S)) 2441 return Error("Invalid record"); 2442 TheModule->setModuleInlineAsm(S); 2443 break; 2444 } 2445 case bitc::MODULE_CODE_DEPLIB: { // DEPLIB: [strchr x N] 2446 std::string S; 2447 if (ConvertToString(Record, 0, S)) 2448 return Error("Invalid record"); 2449 // ANDROID: Ignore value, since we never used it anyways. 2450 // TheModule->addLibrary(S); 2451 break; 2452 } 2453 case bitc::MODULE_CODE_SECTIONNAME: { // SECTIONNAME: [strchr x N] 2454 std::string S; 2455 if (ConvertToString(Record, 0, S)) 2456 return Error("Invalid record"); 2457 SectionTable.push_back(S); 2458 break; 2459 } 2460 case bitc::MODULE_CODE_GCNAME: { // SECTIONNAME: [strchr x N] 2461 std::string S; 2462 if (ConvertToString(Record, 0, S)) 2463 return Error("Invalid record"); 2464 GCTable.push_back(S); 2465 break; 2466 } 2467 // GLOBALVAR: [pointer type, isconst, initid, 2468 // linkage, alignment, section, visibility, threadlocal, 2469 // unnamed_addr] 2470 case bitc::MODULE_CODE_GLOBALVAR: { 2471 if (Record.size() < 6) 2472 return Error("Invalid record"); 2473 Type *Ty = getTypeByID(Record[0]); 2474 if (!Ty) 2475 return Error("Invalid record"); 2476 if (!Ty->isPointerTy()) 2477 return Error("Invalid type for value"); 2478 unsigned AddressSpace = cast<PointerType>(Ty)->getAddressSpace(); 2479 Ty = cast<PointerType>(Ty)->getElementType(); 2480 2481 bool isConstant = Record[1]; 2482 uint64_t RawLinkage = Record[3]; 2483 GlobalValue::LinkageTypes Linkage = getDecodedLinkage(RawLinkage); 2484 unsigned Alignment = (1 << Record[4]) >> 1; 2485 std::string Section; 2486 if (Record[5]) { 2487 if (Record[5]-1 >= SectionTable.size()) 2488 return Error("Invalid ID"); 2489 Section = SectionTable[Record[5]-1]; 2490 } 2491 GlobalValue::VisibilityTypes Visibility = GlobalValue::DefaultVisibility; 2492 if (Record.size() > 6) 2493 Visibility = GetDecodedVisibility(Record[6]); 2494 2495 GlobalVariable::ThreadLocalMode TLM = GlobalVariable::NotThreadLocal; 2496 if (Record.size() > 7) 2497 TLM = GetDecodedThreadLocalMode(Record[7]); 2498 2499 GlobalValue::UnnamedAddr UnnamedAddr = GlobalValue::UnnamedAddr::None; 2500 if (Record.size() > 8) 2501 UnnamedAddr = getDecodedUnnamedAddrType(Record[8]); 2502 2503 GlobalVariable *NewGV = 2504 new GlobalVariable(*TheModule, Ty, isConstant, Linkage, nullptr, "", nullptr, 2505 TLM, AddressSpace); 2506 NewGV->setAlignment(Alignment); 2507 if (!Section.empty()) 2508 NewGV->setSection(Section); 2509 NewGV->setVisibility(Visibility); 2510 NewGV->setUnnamedAddr(UnnamedAddr); 2511 2512 ValueList.push_back(NewGV); 2513 2514 // Remember which value to use for the global initializer. 2515 if (unsigned InitID = Record[2]) 2516 GlobalInits.push_back(std::make_pair(NewGV, InitID-1)); 2517 break; 2518 } 2519 // FUNCTION: [type, callingconv, isproto, linkage, paramattr, 2520 // alignment, section, visibility, gc, unnamed_addr] 2521 case bitc::MODULE_CODE_FUNCTION: { 2522 if (Record.size() < 8) 2523 return Error("Invalid record"); 2524 Type *Ty = getTypeByID(Record[0]); 2525 if (!Ty) 2526 return Error("Invalid record"); 2527 if (!Ty->isPointerTy()) 2528 return Error("Invalid type for value"); 2529 FunctionType *FTy = 2530 dyn_cast<FunctionType>(cast<PointerType>(Ty)->getElementType()); 2531 if (!FTy) 2532 return Error("Invalid type for value"); 2533 2534 Function *Func = Function::Create(FTy, GlobalValue::ExternalLinkage, 2535 "", TheModule); 2536 2537 Func->setCallingConv(static_cast<CallingConv::ID>(Record[1])); 2538 bool isProto = Record[2]; 2539 uint64_t RawLinkage = Record[3]; 2540 Func->setLinkage(getDecodedLinkage(RawLinkage)); 2541 Func->setAttributes(getAttributes(Record[4])); 2542 2543 Func->setAlignment((1 << Record[5]) >> 1); 2544 if (Record[6]) { 2545 if (Record[6]-1 >= SectionTable.size()) 2546 return Error("Invalid ID"); 2547 Func->setSection(SectionTable[Record[6]-1]); 2548 } 2549 Func->setVisibility(GetDecodedVisibility(Record[7])); 2550 if (Record.size() > 8 && Record[8]) { 2551 if (Record[8]-1 > GCTable.size()) 2552 return Error("Invalid ID"); 2553 Func->setGC(GCTable[Record[8]-1].c_str()); 2554 } 2555 GlobalValue::UnnamedAddr UnnamedAddr = GlobalValue::UnnamedAddr::None; 2556 if (Record.size() > 9) 2557 UnnamedAddr = getDecodedUnnamedAddrType(Record[9]); 2558 Func->setUnnamedAddr(UnnamedAddr); 2559 ValueList.push_back(Func); 2560 2561 // If this is a function with a body, remember the prototype we are 2562 // creating now, so that we can match up the body with them later. 2563 if (!isProto) { 2564 Func->setIsMaterializable(true); 2565 FunctionsWithBodies.push_back(Func); 2566 if (LazyStreamer) 2567 DeferredFunctionInfo[Func] = 0; 2568 } 2569 break; 2570 } 2571 // ALIAS: [alias type, aliasee val#, linkage] 2572 // ALIAS: [alias type, aliasee val#, linkage, visibility] 2573 case bitc::MODULE_CODE_ALIAS_OLD: { 2574 if (Record.size() < 3) 2575 return Error("Invalid record"); 2576 Type *Ty = getTypeByID(Record[0]); 2577 if (!Ty) 2578 return Error("Invalid record"); 2579 auto *PTy = dyn_cast<PointerType>(Ty); 2580 if (!PTy) 2581 return Error("Invalid type for value"); 2582 2583 auto *NewGA = 2584 GlobalAlias::create(PTy->getElementType(), PTy->getAddressSpace(), 2585 getDecodedLinkage(Record[2]), "", TheModule); 2586 // Old bitcode files didn't have visibility field. 2587 if (Record.size() > 3) 2588 NewGA->setVisibility(GetDecodedVisibility(Record[3])); 2589 ValueList.push_back(NewGA); 2590 AliasInits.push_back(std::make_pair(NewGA, Record[1])); 2591 break; 2592 } 2593 /// MODULE_CODE_PURGEVALS: [numvals] 2594 case bitc::MODULE_CODE_PURGEVALS: 2595 // Trim down the value list to the specified size. 2596 if (Record.size() < 1 || Record[0] > ValueList.size()) 2597 return Error("Invalid record"); 2598 ValueList.shrinkTo(Record[0]); 2599 break; 2600 } 2601 Record.clear(); 2602 } 2603 } 2604 2605 std::error_code BitcodeReader::ParseBitcodeInto(Module *M) { 2606 TheModule = nullptr; 2607 2608 if (std::error_code EC = InitStream()) 2609 return EC; 2610 2611 // Sniff for the signature. 2612 if (Stream.Read(8) != 'B' || 2613 Stream.Read(8) != 'C' || 2614 Stream.Read(4) != 0x0 || 2615 Stream.Read(4) != 0xC || 2616 Stream.Read(4) != 0xE || 2617 Stream.Read(4) != 0xD) 2618 return Error("Invalid bitcode signature"); 2619 2620 // We expect a number of well-defined blocks, though we don't necessarily 2621 // need to understand them all. 2622 while (1) { 2623 if (Stream.AtEndOfStream()) 2624 return std::error_code(); 2625 2626 BitstreamEntry Entry = 2627 Stream.advance(BitstreamCursor::AF_DontAutoprocessAbbrevs); 2628 2629 switch (Entry.Kind) { 2630 case BitstreamEntry::Error: 2631 return Error("Malformed block"); 2632 case BitstreamEntry::EndBlock: 2633 return std::error_code(); 2634 2635 case BitstreamEntry::SubBlock: 2636 switch (Entry.ID) { 2637 case bitc::BLOCKINFO_BLOCK_ID: 2638 if (Stream.ReadBlockInfoBlock()) 2639 return Error("Malformed block"); 2640 break; 2641 case bitc::MODULE_BLOCK_ID: 2642 // Reject multiple MODULE_BLOCK's in a single bitstream. 2643 if (TheModule) 2644 return Error("Invalid multiple blocks"); 2645 TheModule = M; 2646 if (std::error_code EC = ParseModule(false)) 2647 return EC; 2648 if (LazyStreamer) 2649 return std::error_code(); 2650 break; 2651 default: 2652 if (Stream.SkipBlock()) 2653 return Error("Invalid record"); 2654 break; 2655 } 2656 continue; 2657 case BitstreamEntry::Record: 2658 // There should be no records in the top-level of blocks. 2659 2660 // The ranlib in Xcode 4 will align archive members by appending newlines 2661 // to the end of them. If this file size is a multiple of 4 but not 8, we 2662 // have to read and ignore these final 4 bytes :-( 2663 if (Stream.getAbbrevIDWidth() == 2 && Entry.ID == 2 && 2664 Stream.Read(6) == 2 && Stream.Read(24) == 0xa0a0a && 2665 Stream.AtEndOfStream()) 2666 return std::error_code(); 2667 2668 return Error("Invalid record"); 2669 } 2670 } 2671 } 2672 2673 llvm::ErrorOr<std::string> BitcodeReader::parseModuleTriple() { 2674 if (Stream.EnterSubBlock(bitc::MODULE_BLOCK_ID)) 2675 return Error("Invalid record"); 2676 2677 SmallVector<uint64_t, 64> Record; 2678 2679 std::string Triple; 2680 // Read all the records for this module. 2681 while (1) { 2682 BitstreamEntry Entry = Stream.advanceSkippingSubblocks(); 2683 2684 switch (Entry.Kind) { 2685 case BitstreamEntry::SubBlock: // Handled for us already. 2686 case BitstreamEntry::Error: 2687 return Error("Malformed block"); 2688 case BitstreamEntry::EndBlock: 2689 return Triple; 2690 case BitstreamEntry::Record: 2691 // The interesting case. 2692 break; 2693 } 2694 2695 // Read a record. 2696 switch (Stream.readRecord(Entry.ID, Record)) { 2697 default: break; // Default behavior, ignore unknown content. 2698 case bitc::MODULE_CODE_VERSION: // VERSION: [version#] 2699 if (Record.size() < 1) 2700 return Error("Invalid record"); 2701 // Only version #0 is supported so far. 2702 if (Record[0] != 0) 2703 return Error("Invalid record"); 2704 break; 2705 case bitc::MODULE_CODE_TRIPLE: { // TRIPLE: [strchr x N] 2706 std::string S; 2707 if (ConvertToString(Record, 0, S)) 2708 return Error("Invalid record"); 2709 Triple = S; 2710 break; 2711 } 2712 } 2713 Record.clear(); 2714 } 2715 2716 return Error("Invalid bitcode signature"); 2717 } 2718 2719 llvm::ErrorOr<std::string> BitcodeReader::parseTriple() { 2720 if (std::error_code EC = InitStream()) 2721 return EC; 2722 2723 // Sniff for the signature. 2724 if (Stream.Read(8) != 'B' || 2725 Stream.Read(8) != 'C' || 2726 Stream.Read(4) != 0x0 || 2727 Stream.Read(4) != 0xC || 2728 Stream.Read(4) != 0xE || 2729 Stream.Read(4) != 0xD) 2730 return Error("Invalid bitcode signature"); 2731 2732 // We expect a number of well-defined blocks, though we don't necessarily 2733 // need to understand them all. 2734 while (1) { 2735 BitstreamEntry Entry = Stream.advance(); 2736 2737 switch (Entry.Kind) { 2738 case BitstreamEntry::Error: 2739 return Error("Malformed block"); 2740 case BitstreamEntry::EndBlock: 2741 return std::error_code(); 2742 2743 case BitstreamEntry::SubBlock: 2744 if (Entry.ID == bitc::MODULE_BLOCK_ID) 2745 return parseModuleTriple(); 2746 2747 // Ignore other sub-blocks. 2748 if (Stream.SkipBlock()) 2749 return Error("Malformed block"); 2750 continue; 2751 2752 case BitstreamEntry::Record: 2753 Stream.skipRecord(Entry.ID); 2754 continue; 2755 } 2756 } 2757 } 2758 2759 /// ParseMetadataAttachment - Parse metadata attachments. 2760 std::error_code BitcodeReader::ParseMetadataAttachment() { 2761 if (Stream.EnterSubBlock(bitc::METADATA_ATTACHMENT_ID)) 2762 return Error("Invalid record"); 2763 2764 SmallVector<uint64_t, 64> Record; 2765 while (1) { 2766 BitstreamEntry Entry = Stream.advanceSkippingSubblocks(); 2767 2768 switch (Entry.Kind) { 2769 case BitstreamEntry::SubBlock: // Handled for us already. 2770 case BitstreamEntry::Error: 2771 return Error("Malformed block"); 2772 case BitstreamEntry::EndBlock: 2773 return std::error_code(); 2774 case BitstreamEntry::Record: 2775 // The interesting case. 2776 break; 2777 } 2778 2779 // Read a metadata attachment record. 2780 Record.clear(); 2781 switch (Stream.readRecord(Entry.ID, Record)) { 2782 default: // Default behavior: ignore. 2783 break; 2784 case bitc::METADATA_ATTACHMENT: { 2785 unsigned RecordLength = Record.size(); 2786 if (Record.empty() || (RecordLength - 1) % 2 == 1) 2787 return Error("Invalid record"); 2788 Instruction *Inst = InstructionList[Record[0]]; 2789 for (unsigned i = 1; i != RecordLength; i = i+2) { 2790 unsigned Kind = Record[i]; 2791 DenseMap<unsigned, unsigned>::iterator I = 2792 MDKindMap.find(Kind); 2793 if (I == MDKindMap.end()) 2794 return Error("Invalid ID"); 2795 Metadata *Node = MDValueList.getValueFwdRef(Record[i + 1]); 2796 Inst->setMetadata(I->second, cast<MDNode>(Node)); 2797 } 2798 break; 2799 } 2800 } 2801 } 2802 } 2803 2804 /// ParseFunctionBody - Lazily parse the specified function body block. 2805 std::error_code BitcodeReader::ParseFunctionBody(Function *F) { 2806 if (Stream.EnterSubBlock(bitc::FUNCTION_BLOCK_ID)) 2807 return Error("Invalid record"); 2808 2809 InstructionList.clear(); 2810 unsigned ModuleValueListSize = ValueList.size(); 2811 unsigned ModuleMDValueListSize = MDValueList.size(); 2812 2813 // Add all the function arguments to the value table. 2814 for(Function::arg_iterator I = F->arg_begin(), E = F->arg_end(); I != E; ++I) 2815 ValueList.push_back(&*I); 2816 2817 unsigned NextValueNo = ValueList.size(); 2818 BasicBlock *CurBB = nullptr; 2819 unsigned CurBBNo = 0; 2820 2821 DebugLoc LastLoc; 2822 2823 // Read all the records. 2824 SmallVector<uint64_t, 64> Record; 2825 while (1) { 2826 unsigned Code = Stream.ReadCode(); 2827 if (Code == bitc::END_BLOCK) { 2828 if (Stream.ReadBlockEnd()) 2829 return Error("Malformed block"); 2830 break; 2831 } 2832 2833 if (Code == bitc::ENTER_SUBBLOCK) { 2834 switch (Stream.ReadSubBlockID()) { 2835 default: // Skip unknown content. 2836 if (Stream.SkipBlock()) 2837 return Error("Invalid record"); 2838 break; 2839 case bitc::CONSTANTS_BLOCK_ID: 2840 if (std::error_code EC = ParseConstants()) 2841 return EC; 2842 NextValueNo = ValueList.size(); 2843 break; 2844 case bitc::VALUE_SYMTAB_BLOCK_ID: 2845 if (std::error_code EC = ParseValueSymbolTable()) 2846 return EC; 2847 break; 2848 case bitc::METADATA_ATTACHMENT_ID: 2849 if (std::error_code EC = ParseMetadataAttachment()) 2850 return EC; 2851 break; 2852 case bitc::METADATA_BLOCK_ID: 2853 if (std::error_code EC = ParseMetadata()) 2854 return EC; 2855 break; 2856 } 2857 continue; 2858 } 2859 2860 if (Code == bitc::DEFINE_ABBREV) { 2861 Stream.ReadAbbrevRecord(); 2862 continue; 2863 } 2864 2865 // Read a record. 2866 Record.clear(); 2867 Instruction *I = nullptr; 2868 unsigned BitCode = Stream.readRecord(Code, Record); 2869 switch (BitCode) { 2870 default: // Default behavior: reject 2871 return Error("Invalid value"); 2872 case bitc::FUNC_CODE_DECLAREBLOCKS: // DECLAREBLOCKS: [nblocks] 2873 if (Record.size() < 1 || Record[0] == 0) 2874 return Error("Invalid record"); 2875 // Create all the basic blocks for the function. 2876 FunctionBBs.resize(Record[0]); 2877 for (unsigned i = 0, e = FunctionBBs.size(); i != e; ++i) 2878 FunctionBBs[i] = BasicBlock::Create(Context, "", F); 2879 CurBB = FunctionBBs[0]; 2880 continue; 2881 2882 case bitc::FUNC_CODE_DEBUG_LOC_AGAIN: // DEBUG_LOC_AGAIN 2883 // This record indicates that the last instruction is at the same 2884 // location as the previous instruction with a location. 2885 I = nullptr; 2886 2887 // Get the last instruction emitted. 2888 if (CurBB && !CurBB->empty()) 2889 I = &CurBB->back(); 2890 else if (CurBBNo && FunctionBBs[CurBBNo-1] && 2891 !FunctionBBs[CurBBNo-1]->empty()) 2892 I = &FunctionBBs[CurBBNo-1]->back(); 2893 2894 if (!I) 2895 return Error("Invalid record"); 2896 I->setDebugLoc(LastLoc); 2897 I = nullptr; 2898 continue; 2899 2900 case bitc::FUNC_CODE_DEBUG_LOC: { // DEBUG_LOC: [line, col, scope, ia] 2901 I = nullptr; // Get the last instruction emitted. 2902 if (CurBB && !CurBB->empty()) 2903 I = &CurBB->back(); 2904 else if (CurBBNo && FunctionBBs[CurBBNo-1] && 2905 !FunctionBBs[CurBBNo-1]->empty()) 2906 I = &FunctionBBs[CurBBNo-1]->back(); 2907 if (!I || Record.size() < 4) 2908 return Error("Invalid record"); 2909 2910 unsigned Line = Record[0], Col = Record[1]; 2911 unsigned ScopeID = Record[2], IAID = Record[3]; 2912 2913 MDNode *Scope = nullptr, *IA = nullptr; 2914 if (ScopeID) Scope = cast<MDNode>(MDValueList.getValueFwdRef(ScopeID-1)); 2915 if (IAID) IA = cast<MDNode>(MDValueList.getValueFwdRef(IAID-1)); 2916 LastLoc = DebugLoc::get(Line, Col, Scope, IA); 2917 I->setDebugLoc(LastLoc); 2918 I = nullptr; 2919 continue; 2920 } 2921 2922 case bitc::FUNC_CODE_INST_BINOP: { // BINOP: [opval, ty, opval, opcode] 2923 unsigned OpNum = 0; 2924 Value *LHS, *RHS; 2925 if (getValueTypePair(Record, OpNum, NextValueNo, LHS) || 2926 getValue(Record, OpNum, LHS->getType(), RHS) || 2927 OpNum+1 > Record.size()) 2928 return Error("Invalid record"); 2929 2930 int Opc = GetDecodedBinaryOpcode(Record[OpNum++], LHS->getType()); 2931 if (Opc == -1) 2932 return Error("Invalid record"); 2933 I = BinaryOperator::Create((Instruction::BinaryOps)Opc, LHS, RHS); 2934 InstructionList.push_back(I); 2935 if (OpNum < Record.size()) { 2936 if (Opc == Instruction::Add || 2937 Opc == Instruction::Sub || 2938 Opc == Instruction::Mul || 2939 Opc == Instruction::Shl) { 2940 if (Record[OpNum] & (1 << bitc::OBO_NO_SIGNED_WRAP)) 2941 cast<BinaryOperator>(I)->setHasNoSignedWrap(true); 2942 if (Record[OpNum] & (1 << bitc::OBO_NO_UNSIGNED_WRAP)) 2943 cast<BinaryOperator>(I)->setHasNoUnsignedWrap(true); 2944 } else if (Opc == Instruction::SDiv || 2945 Opc == Instruction::UDiv || 2946 Opc == Instruction::LShr || 2947 Opc == Instruction::AShr) { 2948 if (Record[OpNum] & (1 << bitc::PEO_EXACT)) 2949 cast<BinaryOperator>(I)->setIsExact(true); 2950 } 2951 } 2952 break; 2953 } 2954 case bitc::FUNC_CODE_INST_CAST: { // CAST: [opval, opty, destty, castopc] 2955 unsigned OpNum = 0; 2956 Value *Op; 2957 if (getValueTypePair(Record, OpNum, NextValueNo, Op) || 2958 OpNum+2 != Record.size()) 2959 return Error("Invalid record"); 2960 2961 Type *ResTy = getTypeByID(Record[OpNum]); 2962 int Opc = GetDecodedCastOpcode(Record[OpNum+1]); 2963 if (Opc == -1 || !ResTy) 2964 return Error("Invalid record"); 2965 I = CastInst::Create((Instruction::CastOps)Opc, Op, ResTy); 2966 InstructionList.push_back(I); 2967 break; 2968 } 2969 case bitc::FUNC_CODE_INST_INBOUNDS_GEP_OLD: 2970 case bitc::FUNC_CODE_INST_GEP_OLD: // GEP: [n x operands] 2971 case bitc::FUNC_CODE_INST_GEP: { // GEP: [n x operands] 2972 unsigned OpNum = 0; 2973 2974 Type *Ty; 2975 bool InBounds; 2976 2977 if (BitCode == bitc::FUNC_CODE_INST_GEP) { 2978 InBounds = Record[OpNum++]; 2979 Ty = getTypeByID(Record[OpNum++]); 2980 } else { 2981 InBounds = BitCode == bitc::FUNC_CODE_INST_INBOUNDS_GEP_OLD; 2982 Ty = nullptr; 2983 } 2984 2985 Value *BasePtr; 2986 if (getValueTypePair(Record, OpNum, NextValueNo, BasePtr)) 2987 return Error("Invalid record"); 2988 2989 if (Ty && 2990 Ty != 2991 cast<SequentialType>(BasePtr->getType()->getScalarType()) 2992 ->getElementType()) 2993 return Error( 2994 "Explicit gep type does not match pointee type of pointer operand"); 2995 2996 SmallVector<Value*, 16> GEPIdx; 2997 while (OpNum != Record.size()) { 2998 Value *Op; 2999 if (getValueTypePair(Record, OpNum, NextValueNo, Op)) 3000 return Error("Invalid record"); 3001 GEPIdx.push_back(Op); 3002 } 3003 3004 I = GetElementPtrInst::Create(Ty, BasePtr, GEPIdx); 3005 3006 InstructionList.push_back(I); 3007 if (InBounds) 3008 cast<GetElementPtrInst>(I)->setIsInBounds(true); 3009 break; 3010 } 3011 3012 case bitc::FUNC_CODE_INST_EXTRACTVAL: { 3013 // EXTRACTVAL: [opty, opval, n x indices] 3014 unsigned OpNum = 0; 3015 Value *Agg; 3016 if (getValueTypePair(Record, OpNum, NextValueNo, Agg)) 3017 return Error("Invalid record"); 3018 3019 SmallVector<unsigned, 4> EXTRACTVALIdx; 3020 for (unsigned RecSize = Record.size(); 3021 OpNum != RecSize; ++OpNum) { 3022 uint64_t Index = Record[OpNum]; 3023 if ((unsigned)Index != Index) 3024 return Error("Invalid value"); 3025 EXTRACTVALIdx.push_back((unsigned)Index); 3026 } 3027 3028 I = ExtractValueInst::Create(Agg, EXTRACTVALIdx); 3029 InstructionList.push_back(I); 3030 break; 3031 } 3032 3033 case bitc::FUNC_CODE_INST_INSERTVAL: { 3034 // INSERTVAL: [opty, opval, opty, opval, n x indices] 3035 unsigned OpNum = 0; 3036 Value *Agg; 3037 if (getValueTypePair(Record, OpNum, NextValueNo, Agg)) 3038 return Error("Invalid record"); 3039 Value *Val; 3040 if (getValueTypePair(Record, OpNum, NextValueNo, Val)) 3041 return Error("Invalid record"); 3042 3043 SmallVector<unsigned, 4> INSERTVALIdx; 3044 for (unsigned RecSize = Record.size(); 3045 OpNum != RecSize; ++OpNum) { 3046 uint64_t Index = Record[OpNum]; 3047 if ((unsigned)Index != Index) 3048 return Error("Invalid value"); 3049 INSERTVALIdx.push_back((unsigned)Index); 3050 } 3051 3052 I = InsertValueInst::Create(Agg, Val, INSERTVALIdx); 3053 InstructionList.push_back(I); 3054 break; 3055 } 3056 3057 case bitc::FUNC_CODE_INST_SELECT: { // SELECT: [opval, ty, opval, opval] 3058 // obsolete form of select 3059 // handles select i1 ... in old bitcode 3060 unsigned OpNum = 0; 3061 Value *TrueVal, *FalseVal, *Cond; 3062 if (getValueTypePair(Record, OpNum, NextValueNo, TrueVal) || 3063 getValue(Record, OpNum, TrueVal->getType(), FalseVal) || 3064 getValue(Record, OpNum, Type::getInt1Ty(Context), Cond)) 3065 return Error("Invalid record"); 3066 3067 I = SelectInst::Create(Cond, TrueVal, FalseVal); 3068 InstructionList.push_back(I); 3069 break; 3070 } 3071 3072 case bitc::FUNC_CODE_INST_VSELECT: {// VSELECT: [ty,opval,opval,predty,pred] 3073 // new form of select 3074 // handles select i1 or select [N x i1] 3075 unsigned OpNum = 0; 3076 Value *TrueVal, *FalseVal, *Cond; 3077 if (getValueTypePair(Record, OpNum, NextValueNo, TrueVal) || 3078 getValue(Record, OpNum, TrueVal->getType(), FalseVal) || 3079 getValueTypePair(Record, OpNum, NextValueNo, Cond)) 3080 return Error("Invalid record"); 3081 3082 // select condition can be either i1 or [N x i1] 3083 if (VectorType* vector_type = 3084 dyn_cast<VectorType>(Cond->getType())) { 3085 // expect <n x i1> 3086 if (vector_type->getElementType() != Type::getInt1Ty(Context)) 3087 return Error("Invalid type for value"); 3088 } else { 3089 // expect i1 3090 if (Cond->getType() != Type::getInt1Ty(Context)) 3091 return Error("Invalid type for value"); 3092 } 3093 3094 I = SelectInst::Create(Cond, TrueVal, FalseVal); 3095 InstructionList.push_back(I); 3096 break; 3097 } 3098 3099 case bitc::FUNC_CODE_INST_EXTRACTELT: { // EXTRACTELT: [opty, opval, opval] 3100 unsigned OpNum = 0; 3101 Value *Vec, *Idx; 3102 if (getValueTypePair(Record, OpNum, NextValueNo, Vec) || 3103 getValue(Record, OpNum, Type::getInt32Ty(Context), Idx)) 3104 return Error("Invalid record"); 3105 I = ExtractElementInst::Create(Vec, Idx); 3106 InstructionList.push_back(I); 3107 break; 3108 } 3109 3110 case bitc::FUNC_CODE_INST_INSERTELT: { // INSERTELT: [ty, opval,opval,opval] 3111 unsigned OpNum = 0; 3112 Value *Vec, *Elt, *Idx; 3113 if (getValueTypePair(Record, OpNum, NextValueNo, Vec) || 3114 getValue(Record, OpNum, 3115 cast<VectorType>(Vec->getType())->getElementType(), Elt) || 3116 getValue(Record, OpNum, Type::getInt32Ty(Context), Idx)) 3117 return Error("Invalid record"); 3118 I = InsertElementInst::Create(Vec, Elt, Idx); 3119 InstructionList.push_back(I); 3120 break; 3121 } 3122 3123 case bitc::FUNC_CODE_INST_SHUFFLEVEC: {// SHUFFLEVEC: [opval,ty,opval,opval] 3124 unsigned OpNum = 0; 3125 Value *Vec1, *Vec2, *Mask; 3126 if (getValueTypePair(Record, OpNum, NextValueNo, Vec1) || 3127 getValue(Record, OpNum, Vec1->getType(), Vec2)) 3128 return Error("Invalid record"); 3129 3130 if (getValueTypePair(Record, OpNum, NextValueNo, Mask)) 3131 return Error("Invalid record"); 3132 I = new ShuffleVectorInst(Vec1, Vec2, Mask); 3133 InstructionList.push_back(I); 3134 break; 3135 } 3136 3137 case bitc::FUNC_CODE_INST_CMP: // CMP: [opty, opval, opval, pred] 3138 // Old form of ICmp/FCmp returning bool 3139 // Existed to differentiate between icmp/fcmp and vicmp/vfcmp which were 3140 // both legal on vectors but had different behaviour. 3141 case bitc::FUNC_CODE_INST_CMP2: { // CMP2: [opty, opval, opval, pred] 3142 // FCmp/ICmp returning bool or vector of bool 3143 3144 unsigned OpNum = 0; 3145 Value *LHS, *RHS; 3146 if (getValueTypePair(Record, OpNum, NextValueNo, LHS) || 3147 getValue(Record, OpNum, LHS->getType(), RHS) || 3148 OpNum+1 != Record.size()) 3149 return Error("Invalid record"); 3150 3151 if (LHS->getType()->isFPOrFPVectorTy()) 3152 I = new FCmpInst((FCmpInst::Predicate)Record[OpNum], LHS, RHS); 3153 else 3154 I = new ICmpInst((ICmpInst::Predicate)Record[OpNum], LHS, RHS); 3155 InstructionList.push_back(I); 3156 break; 3157 } 3158 3159 case bitc::FUNC_CODE_INST_RET: // RET: [opty,opval<optional>] 3160 { 3161 unsigned Size = Record.size(); 3162 if (Size == 0) { 3163 I = ReturnInst::Create(Context); 3164 InstructionList.push_back(I); 3165 break; 3166 } 3167 3168 unsigned OpNum = 0; 3169 Value *Op = nullptr; 3170 if (getValueTypePair(Record, OpNum, NextValueNo, Op)) 3171 return Error("Invalid record"); 3172 if (OpNum != Record.size()) 3173 return Error("Invalid record"); 3174 3175 I = ReturnInst::Create(Context, Op); 3176 InstructionList.push_back(I); 3177 break; 3178 } 3179 case bitc::FUNC_CODE_INST_BR: { // BR: [bb#, bb#, opval] or [bb#] 3180 if (Record.size() != 1 && Record.size() != 3) 3181 return Error("Invalid record"); 3182 BasicBlock *TrueDest = getBasicBlock(Record[0]); 3183 if (!TrueDest) 3184 return Error("Invalid record"); 3185 3186 if (Record.size() == 1) { 3187 I = BranchInst::Create(TrueDest); 3188 InstructionList.push_back(I); 3189 } 3190 else { 3191 BasicBlock *FalseDest = getBasicBlock(Record[1]); 3192 Value *Cond = getFnValueByID(Record[2], Type::getInt1Ty(Context)); 3193 if (!FalseDest || !Cond) 3194 return Error("Invalid record"); 3195 I = BranchInst::Create(TrueDest, FalseDest, Cond); 3196 InstructionList.push_back(I); 3197 } 3198 break; 3199 } 3200 case bitc::FUNC_CODE_INST_SWITCH: { // SWITCH: [opty, op0, op1, ...] 3201 if (Record.size() < 3 || (Record.size() & 1) == 0) 3202 return Error("Invalid record"); 3203 Type *OpTy = getTypeByID(Record[0]); 3204 Value *Cond = getFnValueByID(Record[1], OpTy); 3205 BasicBlock *Default = getBasicBlock(Record[2]); 3206 if (!OpTy || !Cond || !Default) 3207 return Error("Invalid record"); 3208 unsigned NumCases = (Record.size()-3)/2; 3209 SwitchInst *SI = SwitchInst::Create(Cond, Default, NumCases); 3210 InstructionList.push_back(SI); 3211 for (unsigned i = 0, e = NumCases; i != e; ++i) { 3212 ConstantInt *CaseVal = 3213 dyn_cast_or_null<ConstantInt>(getFnValueByID(Record[3+i*2], OpTy)); 3214 BasicBlock *DestBB = getBasicBlock(Record[1+3+i*2]); 3215 if (!CaseVal || !DestBB) { 3216 delete SI; 3217 return Error("Invalid record"); 3218 } 3219 SI->addCase(CaseVal, DestBB); 3220 } 3221 I = SI; 3222 break; 3223 } 3224 case bitc::FUNC_CODE_INST_INDIRECTBR: { // INDIRECTBR: [opty, op0, op1, ...] 3225 if (Record.size() < 2) 3226 return Error("Invalid record"); 3227 Type *OpTy = getTypeByID(Record[0]); 3228 Value *Address = getFnValueByID(Record[1], OpTy); 3229 if (!OpTy || !Address) 3230 return Error("Invalid record"); 3231 unsigned NumDests = Record.size()-2; 3232 IndirectBrInst *IBI = IndirectBrInst::Create(Address, NumDests); 3233 InstructionList.push_back(IBI); 3234 for (unsigned i = 0, e = NumDests; i != e; ++i) { 3235 if (BasicBlock *DestBB = getBasicBlock(Record[2+i])) { 3236 IBI->addDestination(DestBB); 3237 } else { 3238 delete IBI; 3239 return Error("Invalid record"); 3240 } 3241 } 3242 I = IBI; 3243 break; 3244 } 3245 3246 case bitc::FUNC_CODE_INST_INVOKE: { 3247 // INVOKE: [attrs, cc, normBB, unwindBB, fnty, op0,op1,op2, ...] 3248 if (Record.size() < 4) 3249 return Error("Invalid record"); 3250 AttributeSet PAL = getAttributes(Record[0]); 3251 unsigned CCInfo = Record[1]; 3252 BasicBlock *NormalBB = getBasicBlock(Record[2]); 3253 BasicBlock *UnwindBB = getBasicBlock(Record[3]); 3254 3255 unsigned OpNum = 4; 3256 Value *Callee; 3257 if (getValueTypePair(Record, OpNum, NextValueNo, Callee)) 3258 return Error("Invalid record"); 3259 3260 PointerType *CalleeTy = dyn_cast<PointerType>(Callee->getType()); 3261 FunctionType *FTy = !CalleeTy ? nullptr : 3262 dyn_cast<FunctionType>(CalleeTy->getElementType()); 3263 3264 // Check that the right number of fixed parameters are here. 3265 if (!FTy || !NormalBB || !UnwindBB || 3266 Record.size() < OpNum+FTy->getNumParams()) 3267 return Error("Invalid record"); 3268 3269 SmallVector<Value*, 16> Ops; 3270 for (unsigned i = 0, e = FTy->getNumParams(); i != e; ++i, ++OpNum) { 3271 Ops.push_back(getFnValueByID(Record[OpNum], FTy->getParamType(i))); 3272 if (!Ops.back()) 3273 return Error("Invalid record"); 3274 } 3275 3276 if (!FTy->isVarArg()) { 3277 if (Record.size() != OpNum) 3278 return Error("Invalid record"); 3279 } else { 3280 // Read type/value pairs for varargs params. 3281 while (OpNum != Record.size()) { 3282 Value *Op; 3283 if (getValueTypePair(Record, OpNum, NextValueNo, Op)) 3284 return Error("Invalid record"); 3285 Ops.push_back(Op); 3286 } 3287 } 3288 3289 I = InvokeInst::Create(Callee, NormalBB, UnwindBB, Ops); 3290 InstructionList.push_back(I); 3291 cast<InvokeInst>(I)->setCallingConv( 3292 static_cast<CallingConv::ID>(CCInfo)); 3293 cast<InvokeInst>(I)->setAttributes(PAL); 3294 break; 3295 } 3296 case bitc::FUNC_CODE_INST_RESUME: { // RESUME: [opval] 3297 unsigned Idx = 0; 3298 Value *Val = nullptr; 3299 if (getValueTypePair(Record, Idx, NextValueNo, Val)) 3300 return Error("Invalid record"); 3301 I = ResumeInst::Create(Val); 3302 InstructionList.push_back(I); 3303 break; 3304 } 3305 case FUNC_CODE_INST_UNWIND_2_7: { // UNWIND_OLD 3306 // 'unwind' instruction has been removed in LLVM 3.1 3307 // Replace 'unwind' with 'landingpad' and 'resume'. 3308 Type *ExnTy = StructType::get(Type::getInt8PtrTy(Context), 3309 Type::getInt32Ty(Context), nullptr); 3310 3311 LandingPadInst *LP = LandingPadInst::Create(ExnTy, 1); 3312 LP->setCleanup(true); 3313 3314 CurBB->getInstList().push_back(LP); 3315 I = ResumeInst::Create(LP); 3316 InstructionList.push_back(I); 3317 break; 3318 } 3319 case bitc::FUNC_CODE_INST_UNREACHABLE: // UNREACHABLE 3320 I = new UnreachableInst(Context); 3321 InstructionList.push_back(I); 3322 break; 3323 case bitc::FUNC_CODE_INST_PHI: { // PHI: [ty, val0,bb0, ...] 3324 if (Record.size() < 1 || ((Record.size()-1)&1)) 3325 return Error("Invalid record"); 3326 Type *Ty = getTypeByID(Record[0]); 3327 if (!Ty) 3328 return Error("Invalid record"); 3329 3330 PHINode *PN = PHINode::Create(Ty, (Record.size()-1)/2); 3331 InstructionList.push_back(PN); 3332 3333 for (unsigned i = 0, e = Record.size()-1; i != e; i += 2) { 3334 Value *V = getFnValueByID(Record[1+i], Ty); 3335 BasicBlock *BB = getBasicBlock(Record[2+i]); 3336 if (!V || !BB) 3337 return Error("Invalid record"); 3338 PN->addIncoming(V, BB); 3339 } 3340 I = PN; 3341 break; 3342 } 3343 3344 case bitc::FUNC_CODE_INST_LANDINGPAD_OLD: { 3345 // LANDINGPAD: [ty, val, val, num, (id0,val0 ...)?] 3346 unsigned Idx = 0; 3347 if (Record.size() < 4) 3348 return Error("Invalid record"); 3349 Type *Ty = getTypeByID(Record[Idx++]); 3350 if (!Ty) 3351 return Error("Invalid record"); 3352 Value *PersFn = nullptr; 3353 if (getValueTypePair(Record, Idx, NextValueNo, PersFn)) 3354 return Error("Invalid record"); 3355 3356 bool IsCleanup = !!Record[Idx++]; 3357 unsigned NumClauses = Record[Idx++]; 3358 LandingPadInst *LP = LandingPadInst::Create(Ty, NumClauses); 3359 LP->setCleanup(IsCleanup); 3360 for (unsigned J = 0; J != NumClauses; ++J) { 3361 LandingPadInst::ClauseType CT = 3362 LandingPadInst::ClauseType(Record[Idx++]); (void)CT; 3363 Value *Val; 3364 3365 if (getValueTypePair(Record, Idx, NextValueNo, Val)) { 3366 delete LP; 3367 return Error("Invalid record"); 3368 } 3369 3370 assert((CT != LandingPadInst::Catch || 3371 !isa<ArrayType>(Val->getType())) && 3372 "Catch clause has a invalid type!"); 3373 assert((CT != LandingPadInst::Filter || 3374 isa<ArrayType>(Val->getType())) && 3375 "Filter clause has invalid type!"); 3376 LP->addClause(cast<Constant>(Val)); 3377 } 3378 3379 I = LP; 3380 InstructionList.push_back(I); 3381 break; 3382 } 3383 3384 case bitc::FUNC_CODE_INST_ALLOCA: { // ALLOCA: [instty, opty, op, align] 3385 if (Record.size() != 4) 3386 return Error("Invalid record"); 3387 PointerType *Ty = 3388 dyn_cast_or_null<PointerType>(getTypeByID(Record[0])); 3389 Type *OpTy = getTypeByID(Record[1]); 3390 Value *Size = getFnValueByID(Record[2], OpTy); 3391 unsigned Align = Record[3]; 3392 if (!Ty || !Size) 3393 return Error("Invalid record"); 3394 I = new AllocaInst(Ty->getElementType(), Size, (1 << Align) >> 1); 3395 InstructionList.push_back(I); 3396 break; 3397 } 3398 case bitc::FUNC_CODE_INST_LOAD: { // LOAD: [opty, op, align, vol] 3399 unsigned OpNum = 0; 3400 Value *Op; 3401 if (getValueTypePair(Record, OpNum, NextValueNo, Op) || 3402 OpNum+2 != Record.size()) 3403 return Error("Invalid record"); 3404 3405 I = new LoadInst(Op, "", Record[OpNum+1], (1 << Record[OpNum]) >> 1); 3406 InstructionList.push_back(I); 3407 break; 3408 } 3409 case bitc::FUNC_CODE_INST_LOADATOMIC: { 3410 // LOADATOMIC: [opty, op, align, vol, ordering, synchscope] 3411 unsigned OpNum = 0; 3412 Value *Op; 3413 if (getValueTypePair(Record, OpNum, NextValueNo, Op) || 3414 OpNum+4 != Record.size()) 3415 return Error("Invalid record"); 3416 3417 AtomicOrdering Ordering = GetDecodedOrdering(Record[OpNum+2]); 3418 if (Ordering == AtomicOrdering::NotAtomic || 3419 Ordering == AtomicOrdering::Release || 3420 Ordering == AtomicOrdering::AcquireRelease) 3421 return Error("Invalid record"); 3422 if (Ordering != AtomicOrdering::NotAtomic && Record[OpNum] == 0) 3423 return Error("Invalid record"); 3424 SynchronizationScope SynchScope = GetDecodedSynchScope(Record[OpNum+3]); 3425 3426 I = new LoadInst(Op, "", Record[OpNum+1], (1 << Record[OpNum]) >> 1, 3427 Ordering, SynchScope); 3428 InstructionList.push_back(I); 3429 break; 3430 } 3431 case bitc::FUNC_CODE_INST_STORE_OLD: { // STORE2:[ptrty, ptr, val, align, vol] 3432 unsigned OpNum = 0; 3433 Value *Val, *Ptr; 3434 if (getValueTypePair(Record, OpNum, NextValueNo, Ptr) || 3435 getValue(Record, OpNum, 3436 cast<PointerType>(Ptr->getType())->getElementType(), Val) || 3437 OpNum+2 != Record.size()) 3438 return Error("Invalid record"); 3439 3440 I = new StoreInst(Val, Ptr, Record[OpNum+1], (1 << Record[OpNum]) >> 1); 3441 InstructionList.push_back(I); 3442 break; 3443 } 3444 case bitc::FUNC_CODE_INST_STOREATOMIC_OLD: { 3445 // STOREATOMIC: [ptrty, ptr, val, align, vol, ordering, synchscope] 3446 unsigned OpNum = 0; 3447 Value *Val, *Ptr; 3448 if (getValueTypePair(Record, OpNum, NextValueNo, Ptr) || 3449 getValue(Record, OpNum, 3450 cast<PointerType>(Ptr->getType())->getElementType(), Val) || 3451 OpNum+4 != Record.size()) 3452 return Error("Invalid record"); 3453 3454 AtomicOrdering Ordering = GetDecodedOrdering(Record[OpNum+2]); 3455 if (Ordering == AtomicOrdering::NotAtomic || 3456 Ordering == AtomicOrdering::Acquire || 3457 Ordering == AtomicOrdering::AcquireRelease) 3458 return Error("Invalid record"); 3459 SynchronizationScope SynchScope = GetDecodedSynchScope(Record[OpNum+3]); 3460 if (Ordering != AtomicOrdering::NotAtomic && Record[OpNum] == 0) 3461 return Error("Invalid record"); 3462 3463 I = new StoreInst(Val, Ptr, Record[OpNum+1], (1 << Record[OpNum]) >> 1, 3464 Ordering, SynchScope); 3465 InstructionList.push_back(I); 3466 break; 3467 } 3468 case bitc::FUNC_CODE_INST_CMPXCHG_OLD: { 3469 // CMPXCHG:[ptrty, ptr, cmp, new, vol, ordering, synchscope] 3470 unsigned OpNum = 0; 3471 Value *Ptr, *Cmp, *New; 3472 if (getValueTypePair(Record, OpNum, NextValueNo, Ptr) || 3473 getValue(Record, OpNum, 3474 cast<PointerType>(Ptr->getType())->getElementType(), Cmp) || 3475 getValue(Record, OpNum, 3476 cast<PointerType>(Ptr->getType())->getElementType(), New) || 3477 OpNum+3 != Record.size()) 3478 return Error("Invalid record"); 3479 AtomicOrdering Ordering = GetDecodedOrdering(Record[OpNum+1]); 3480 if (Ordering == AtomicOrdering::NotAtomic || 3481 Ordering == AtomicOrdering::Unordered) 3482 return Error("Invalid record"); 3483 SynchronizationScope SynchScope = GetDecodedSynchScope(Record[OpNum+2]); 3484 I = new AtomicCmpXchgInst(Ptr, Cmp, New, Ordering, Ordering, SynchScope); 3485 cast<AtomicCmpXchgInst>(I)->setVolatile(Record[OpNum]); 3486 InstructionList.push_back(I); 3487 break; 3488 } 3489 case bitc::FUNC_CODE_INST_ATOMICRMW: { 3490 // ATOMICRMW:[ptrty, ptr, val, op, vol, ordering, synchscope] 3491 unsigned OpNum = 0; 3492 Value *Ptr, *Val; 3493 if (getValueTypePair(Record, OpNum, NextValueNo, Ptr) || 3494 getValue(Record, OpNum, 3495 cast<PointerType>(Ptr->getType())->getElementType(), Val) || 3496 OpNum+4 != Record.size()) 3497 return Error("Invalid record"); 3498 AtomicRMWInst::BinOp Operation = GetDecodedRMWOperation(Record[OpNum]); 3499 if (Operation < AtomicRMWInst::FIRST_BINOP || 3500 Operation > AtomicRMWInst::LAST_BINOP) 3501 return Error("Invalid record"); 3502 AtomicOrdering Ordering = GetDecodedOrdering(Record[OpNum+2]); 3503 if (Ordering == AtomicOrdering::NotAtomic || 3504 Ordering == AtomicOrdering::Unordered) 3505 return Error("Invalid record"); 3506 SynchronizationScope SynchScope = GetDecodedSynchScope(Record[OpNum+3]); 3507 I = new AtomicRMWInst(Operation, Ptr, Val, Ordering, SynchScope); 3508 cast<AtomicRMWInst>(I)->setVolatile(Record[OpNum+1]); 3509 InstructionList.push_back(I); 3510 break; 3511 } 3512 case bitc::FUNC_CODE_INST_FENCE: { // FENCE:[ordering, synchscope] 3513 if (2 != Record.size()) 3514 return Error("Invalid record"); 3515 AtomicOrdering Ordering = GetDecodedOrdering(Record[0]); 3516 if (Ordering == AtomicOrdering::NotAtomic || 3517 Ordering == AtomicOrdering::Unordered || 3518 Ordering == AtomicOrdering::Monotonic) 3519 return Error("Invalid record"); 3520 SynchronizationScope SynchScope = GetDecodedSynchScope(Record[1]); 3521 I = new FenceInst(Context, Ordering, SynchScope); 3522 InstructionList.push_back(I); 3523 break; 3524 } 3525 case bitc::FUNC_CODE_INST_CALL: { 3526 // CALL: [paramattrs, cc, fnty, fnid, arg0, arg1...] 3527 if (Record.size() < 3) 3528 return Error("Invalid record"); 3529 3530 AttributeSet PAL = getAttributes(Record[0]); 3531 unsigned CCInfo = Record[1]; 3532 3533 unsigned OpNum = 2; 3534 Value *Callee; 3535 if (getValueTypePair(Record, OpNum, NextValueNo, Callee)) 3536 return Error("Invalid record"); 3537 3538 PointerType *OpTy = dyn_cast<PointerType>(Callee->getType()); 3539 FunctionType *FTy = nullptr; 3540 if (OpTy) FTy = dyn_cast<FunctionType>(OpTy->getElementType()); 3541 if (!FTy || Record.size() < FTy->getNumParams()+OpNum) 3542 return Error("Invalid record"); 3543 3544 SmallVector<Value*, 16> Args; 3545 // Read the fixed params. 3546 for (unsigned i = 0, e = FTy->getNumParams(); i != e; ++i, ++OpNum) { 3547 if (FTy->getParamType(i)->isLabelTy()) 3548 Args.push_back(getBasicBlock(Record[OpNum])); 3549 else 3550 Args.push_back(getFnValueByID(Record[OpNum], FTy->getParamType(i))); 3551 if (!Args.back()) 3552 return Error("Invalid record"); 3553 } 3554 3555 // Read type/value pairs for varargs params. 3556 if (!FTy->isVarArg()) { 3557 if (OpNum != Record.size()) 3558 return Error("Invalid record"); 3559 } else { 3560 while (OpNum != Record.size()) { 3561 Value *Op; 3562 if (getValueTypePair(Record, OpNum, NextValueNo, Op)) 3563 return Error("Invalid record"); 3564 Args.push_back(Op); 3565 } 3566 } 3567 3568 I = CallInst::Create(Callee, Args); 3569 InstructionList.push_back(I); 3570 cast<CallInst>(I)->setCallingConv( 3571 static_cast<CallingConv::ID>(CCInfo>>1)); 3572 cast<CallInst>(I)->setTailCall(CCInfo & 1); 3573 cast<CallInst>(I)->setAttributes(PAL); 3574 break; 3575 } 3576 case bitc::FUNC_CODE_INST_VAARG: { // VAARG: [valistty, valist, instty] 3577 if (Record.size() < 3) 3578 return Error("Invalid record"); 3579 Type *OpTy = getTypeByID(Record[0]); 3580 Value *Op = getFnValueByID(Record[1], OpTy); 3581 Type *ResTy = getTypeByID(Record[2]); 3582 if (!OpTy || !Op || !ResTy) 3583 return Error("Invalid record"); 3584 I = new VAArgInst(Op, ResTy); 3585 InstructionList.push_back(I); 3586 break; 3587 } 3588 } 3589 3590 // Add instruction to end of current BB. If there is no current BB, reject 3591 // this file. 3592 if (!CurBB) { 3593 delete I; 3594 return Error("Invalid instruction with no BB"); 3595 } 3596 CurBB->getInstList().push_back(I); 3597 3598 // If this was a terminator instruction, move to the next block. 3599 if (isa<TerminatorInst>(I)) { 3600 ++CurBBNo; 3601 CurBB = CurBBNo < FunctionBBs.size() ? FunctionBBs[CurBBNo] : nullptr; 3602 } 3603 3604 // Non-void values get registered in the value table for future use. 3605 if (I && !I->getType()->isVoidTy()) 3606 ValueList.AssignValue(I, NextValueNo++); 3607 } 3608 3609 // Check the function list for unresolved values. 3610 if (Argument *A = dyn_cast<Argument>(ValueList.back())) { 3611 if (!A->getParent()) { 3612 // We found at least one unresolved value. Nuke them all to avoid leaks. 3613 for (unsigned i = ModuleValueListSize, e = ValueList.size(); i != e; ++i){ 3614 if ((A = dyn_cast_or_null<Argument>(ValueList[i])) && !A->getParent()) { 3615 A->replaceAllUsesWith(UndefValue::get(A->getType())); 3616 delete A; 3617 } 3618 } 3619 return Error("Never resolved value found in function"); 3620 } 3621 } 3622 3623 // FIXME: Check for unresolved forward-declared metadata references 3624 // and clean up leaks. 3625 3626 // See if anything took the address of blocks in this function. If so, 3627 // resolve them now. 3628 DenseMap<Function*, std::vector<BlockAddrRefTy> >::iterator BAFRI = 3629 BlockAddrFwdRefs.find(F); 3630 if (BAFRI != BlockAddrFwdRefs.end()) { 3631 std::vector<BlockAddrRefTy> &RefList = BAFRI->second; 3632 for (unsigned i = 0, e = RefList.size(); i != e; ++i) { 3633 unsigned BlockIdx = RefList[i].first; 3634 if (BlockIdx >= FunctionBBs.size()) 3635 return Error("Invalid ID"); 3636 3637 GlobalVariable *FwdRef = RefList[i].second; 3638 FwdRef->replaceAllUsesWith(BlockAddress::get(F, FunctionBBs[BlockIdx])); 3639 FwdRef->eraseFromParent(); 3640 } 3641 3642 BlockAddrFwdRefs.erase(BAFRI); 3643 } 3644 3645 // Trim the value list down to the size it was before we parsed this function. 3646 ValueList.shrinkTo(ModuleValueListSize); 3647 MDValueList.shrinkTo(ModuleMDValueListSize); 3648 std::vector<BasicBlock*>().swap(FunctionBBs); 3649 return std::error_code(); 3650 } 3651 3652 //===----------------------------------------------------------------------===// 3653 // GVMaterializer implementation 3654 //===----------------------------------------------------------------------===// 3655 3656 void BitcodeReader::releaseBuffer() { Buffer.release(); } 3657 3658 std::error_code BitcodeReader::materialize(GlobalValue *GV) { 3659 if (std::error_code EC = materializeMetadata()) 3660 return EC; 3661 3662 Function *F = dyn_cast<Function>(GV); 3663 // If it's not a function or is already material, ignore the request. 3664 if (!F || !F->isMaterializable()) 3665 return std::error_code(); 3666 3667 DenseMap<Function*, uint64_t>::iterator DFII = DeferredFunctionInfo.find(F); 3668 assert(DFII != DeferredFunctionInfo.end() && "Deferred function not found!"); 3669 3670 // Move the bit stream to the saved position of the deferred function body. 3671 Stream.JumpToBit(DFII->second); 3672 3673 if (std::error_code EC = ParseFunctionBody(F)) 3674 return EC; 3675 F->setIsMaterializable(false); 3676 3677 // Upgrade any old intrinsic calls in the function. 3678 for (UpgradedIntrinsicMap::iterator I = UpgradedIntrinsics.begin(), 3679 E = UpgradedIntrinsics.end(); I != E; ++I) { 3680 if (I->first != I->second) { 3681 for (auto UI = I->first->user_begin(), UE = I->first->user_end(); 3682 UI != UE;) { 3683 if (CallInst* CI = dyn_cast<CallInst>(*UI++)) 3684 UpgradeIntrinsicCall(CI, I->second); 3685 } 3686 } 3687 } 3688 3689 return std::error_code(); 3690 } 3691 3692 bool BitcodeReader::isDematerializable(const GlobalValue *GV) const { 3693 const Function *F = dyn_cast<Function>(GV); 3694 if (!F || F->isDeclaration()) 3695 return false; 3696 return DeferredFunctionInfo.count(const_cast<Function*>(F)); 3697 } 3698 3699 void BitcodeReader::dematerialize(GlobalValue *GV) { 3700 Function *F = dyn_cast<Function>(GV); 3701 // If this function isn't dematerializable, this is a noop. 3702 if (!F || !isDematerializable(F)) 3703 return; 3704 3705 assert(DeferredFunctionInfo.count(F) && "No info to read function later?"); 3706 3707 // Just forget the function body, we can remat it later. 3708 F->deleteBody(); 3709 F->setIsMaterializable(true); 3710 } 3711 3712 std::error_code BitcodeReader::materializeModule() { 3713 // Iterate over the module, deserializing any functions that are still on 3714 // disk. 3715 for (Module::iterator F = TheModule->begin(), E = TheModule->end(); 3716 F != E; ++F) { 3717 if (std::error_code EC = materialize(&*F)) 3718 return EC; 3719 } 3720 // At this point, if there are any function bodies, the current bit is 3721 // pointing to the END_BLOCK record after them. Now make sure the rest 3722 // of the bits in the module have been read. 3723 if (NextUnreadBit) 3724 ParseModule(true); 3725 3726 // Upgrade any intrinsic calls that slipped through (should not happen!) and 3727 // delete the old functions to clean up. We can't do this unless the entire 3728 // module is materialized because there could always be another function body 3729 // with calls to the old function. 3730 for (std::vector<std::pair<Function*, Function*> >::iterator I = 3731 UpgradedIntrinsics.begin(), E = UpgradedIntrinsics.end(); I != E; ++I) { 3732 if (I->first != I->second) { 3733 for (auto UI = I->first->user_begin(), UE = I->first->user_end(); 3734 UI != UE;) { 3735 if (CallInst* CI = dyn_cast<CallInst>(*UI++)) 3736 UpgradeIntrinsicCall(CI, I->second); 3737 } 3738 if (!I->first->use_empty()) 3739 I->first->replaceAllUsesWith(I->second); 3740 I->first->eraseFromParent(); 3741 } 3742 } 3743 std::vector<std::pair<Function*, Function*> >().swap(UpgradedIntrinsics); 3744 3745 // Upgrade to new EH scheme. N.B. This will go away in 3.1. 3746 UpgradeExceptionHandling(TheModule); 3747 3748 // Check debug info intrinsics. 3749 CheckDebugInfoIntrinsics(TheModule); 3750 3751 return std::error_code(); 3752 } 3753 3754 std::vector<StructType *> BitcodeReader::getIdentifiedStructTypes() const { 3755 return IdentifiedStructTypes; 3756 } 3757 3758 std::error_code BitcodeReader::InitStream() { 3759 if (LazyStreamer) 3760 return InitLazyStream(); 3761 return InitStreamFromBuffer(); 3762 } 3763 3764 std::error_code BitcodeReader::InitStreamFromBuffer() { 3765 const unsigned char *BufPtr = (const unsigned char*)Buffer->getBufferStart(); 3766 const unsigned char *BufEnd = BufPtr+Buffer->getBufferSize(); 3767 3768 if (Buffer->getBufferSize() & 3) 3769 return Error("Invalid bitcode signature"); 3770 3771 // If we have a wrapper header, parse it and ignore the non-bc file contents. 3772 // The magic number is 0x0B17C0DE stored in little endian. 3773 if (isBitcodeWrapper(BufPtr, BufEnd)) 3774 if (SkipBitcodeWrapperHeader(BufPtr, BufEnd, true)) 3775 return Error("Invalid bitcode wrapper header"); 3776 3777 StreamFile.reset(new BitstreamReader(BufPtr, BufEnd)); 3778 Stream.init(&*StreamFile); 3779 3780 return std::error_code(); 3781 } 3782 3783 std::error_code BitcodeReader::InitLazyStream() { 3784 // Check and strip off the bitcode wrapper; BitstreamReader expects never to 3785 // see it. 3786 auto OwnedBytes = llvm::make_unique<StreamingMemoryObject>( 3787 std::move(LazyStreamer)); 3788 StreamingMemoryObject &Bytes = *OwnedBytes; 3789 StreamFile = llvm::make_unique<BitstreamReader>(std::move(OwnedBytes)); 3790 Stream.init(&*StreamFile); 3791 3792 unsigned char buf[16]; 3793 if (Bytes.readBytes(buf, 16, 0) != 16) 3794 return Error("Invalid bitcode signature"); 3795 3796 if (!isBitcode(buf, buf + 16)) 3797 return Error("Invalid bitcode signature"); 3798 3799 if (isBitcodeWrapper(buf, buf + 4)) { 3800 const unsigned char *bitcodeStart = buf; 3801 const unsigned char *bitcodeEnd = buf + 16; 3802 SkipBitcodeWrapperHeader(bitcodeStart, bitcodeEnd, false); 3803 Bytes.dropLeadingBytes(bitcodeStart - buf); 3804 Bytes.setKnownObjectSize(bitcodeEnd - bitcodeStart); 3805 } 3806 return std::error_code(); 3807 } 3808 3809 namespace { 3810 class BitcodeErrorCategoryType : public std::error_category { 3811 const char *name() const LLVM_NOEXCEPT override { 3812 return "llvm.bitcode"; 3813 } 3814 std::string message(int IE) const override { 3815 BitcodeError E = static_cast<BitcodeError>(IE); 3816 switch (E) { 3817 case BitcodeError::InvalidBitcodeSignature: 3818 return "Invalid bitcode signature"; 3819 case BitcodeError::CorruptedBitcode: 3820 return "Corrupted bitcode"; 3821 } 3822 llvm_unreachable("Unknown error type!"); 3823 } 3824 }; 3825 } 3826 3827 static ManagedStatic<BitcodeErrorCategoryType> ErrorCategory; 3828 3829 const std::error_category &BitcodeReader::BitcodeErrorCategory() { 3830 return *ErrorCategory; 3831 } 3832 3833 //===----------------------------------------------------------------------===// 3834 // External interface 3835 //===----------------------------------------------------------------------===// 3836 3837 /// getLazyBitcodeModule - lazy function-at-a-time loading from a file. 3838 /// 3839 static llvm::ErrorOr<llvm::Module *> 3840 getLazyBitcodeModuleImpl(std::unique_ptr<MemoryBuffer> &&Buffer, 3841 LLVMContext &Context, bool WillMaterializeAll, 3842 const DiagnosticHandlerFunction &DiagnosticHandler) { 3843 Module *M = new Module(Buffer->getBufferIdentifier(), Context); 3844 BitcodeReader *R = 3845 new BitcodeReader(Buffer.get(), Context, DiagnosticHandler); 3846 M->setMaterializer(R); 3847 3848 auto cleanupOnError = [&](std::error_code EC) { 3849 R->releaseBuffer(); // Never take ownership on error. 3850 delete M; // Also deletes R. 3851 return EC; 3852 }; 3853 3854 if (std::error_code EC = R->ParseBitcodeInto(M)) 3855 return cleanupOnError(EC); 3856 3857 Buffer.release(); // The BitcodeReader owns it now. 3858 return M; 3859 } 3860 3861 llvm::ErrorOr<Module *> 3862 llvm_3_0::getLazyBitcodeModule(std::unique_ptr<MemoryBuffer> &&Buffer, 3863 LLVMContext &Context, 3864 const DiagnosticHandlerFunction &DiagnosticHandler) { 3865 return getLazyBitcodeModuleImpl(std::move(Buffer), Context, false, 3866 DiagnosticHandler); 3867 } 3868 3869 /// ParseBitcodeFile - Read the specified bitcode file, returning the module. 3870 /// If an error occurs, return null and fill in *ErrMsg if non-null. 3871 llvm::ErrorOr<llvm::Module *> 3872 llvm_3_0::parseBitcodeFile(MemoryBufferRef Buffer, LLVMContext &Context, 3873 const DiagnosticHandlerFunction &DiagnosticHandler) { 3874 std::unique_ptr<MemoryBuffer> Buf = MemoryBuffer::getMemBuffer(Buffer, false); 3875 ErrorOr<Module *> ModuleOrErr = getLazyBitcodeModuleImpl( 3876 std::move(Buf), Context, true, DiagnosticHandler); 3877 if (!ModuleOrErr) 3878 return ModuleOrErr; 3879 Module *M = ModuleOrErr.get(); 3880 // Read in the entire module, and destroy the BitcodeReader. 3881 if (std::error_code EC = M->materializeAll()) { 3882 delete M; 3883 return EC; 3884 } 3885 3886 return M; 3887 } 3888 3889 std::string 3890 llvm_3_0::getBitcodeTargetTriple(MemoryBufferRef Buffer, LLVMContext &Context, 3891 DiagnosticHandlerFunction DiagnosticHandler) { 3892 std::unique_ptr<MemoryBuffer> Buf = MemoryBuffer::getMemBuffer(Buffer, false); 3893 auto R = llvm::make_unique<BitcodeReader>(Buf.release(), Context, 3894 DiagnosticHandler); 3895 ErrorOr<std::string> Triple = R->parseTriple(); 3896 if (Triple.getError()) 3897 return ""; 3898 return Triple.get(); 3899 } 3900