reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
618 Module *M = IRB.GetInsertBlock()->getParent()->getParent(); 619 Ptr = IRB.CreateBitCast(Ptr, Int8PtrTy); 620 IRB.CreateCall(Intrinsic::getDeclaration( 628 Value *PtrLong = IRB.CreatePointerCast(Ptr, IntptrTy); 629 Value *PtrTag = IRB.CreateTrunc(IRB.CreateLShr(PtrLong, kPointerTagShift), 629 Value *PtrTag = IRB.CreateTrunc(IRB.CreateLShr(PtrLong, kPointerTagShift), 630 IRB.getInt8Ty()); 631 Value *AddrLong = untagPointer(IRB, PtrLong); 632 Value *Shadow = memToShadow(AddrLong, IRB); 633 Value *MemTag = IRB.CreateLoad(Int8Ty, Shadow); 634 Value *TagMismatch = IRB.CreateICmpNE(PtrTag, MemTag); 639 Value *TagNotIgnored = IRB.CreateICmpNE(PtrTag, 641 TagMismatch = IRB.CreateAnd(TagMismatch, TagNotIgnored); 648 IRB.SetInsertPoint(CheckTerm); 650 IRB.CreateICmpUGT(MemTag, ConstantInt::get(Int8Ty, 15)); 655 IRB.SetInsertPoint(CheckTerm); 656 Value *PtrLowBits = IRB.CreateTrunc(IRB.CreateAnd(PtrLong, 15), Int8Ty); 656 Value *PtrLowBits = IRB.CreateTrunc(IRB.CreateAnd(PtrLong, 15), Int8Ty); 657 PtrLowBits = IRB.CreateAdd( 659 Value *PtrLowBitsOOB = IRB.CreateICmpUGE(PtrLowBits, MemTag); 664 IRB.SetInsertPoint(CheckTerm); 665 Value *InlineTagAddr = IRB.CreateOr(AddrLong, 15); 666 InlineTagAddr = IRB.CreateIntToPtr(InlineTagAddr, Int8PtrTy); 667 Value *InlineTag = IRB.CreateLoad(Int8Ty, InlineTagAddr); 668 Value *InlineTagMismatch = IRB.CreateICmpNE(PtrTag, InlineTag); 673 IRB.SetInsertPoint(CheckFailTerm); 679 FunctionType::get(IRB.getVoidTy(), {PtrLong->getType()}, false), 688 FunctionType::get(IRB.getVoidTy(), {PtrLong->getType()}, false), 696 IRB.CreateCall(Asm, PtrLong);