reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

lib/Transforms/Instrumentation/HWAddressSanitizer.cpp
  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);