Lines Matching refs:IRB

484   Value *getShadowOffset(Value *Addr, IRBuilder<> &IRB);
495 void buildExternWeakCheckIfNeeded(IRBuilder<> &IRB, Function *F);
591 Value *getArgTLS(Type *T, unsigned ArgOffset, IRBuilder<> &IRB);
594 Value *getRetvalTLS(Type *T, IRBuilder<> &IRB);
599 Value *getArgOriginTLS(unsigned ArgNo, IRBuilder<> &IRB);
676 IRBuilder<> &IRB);
678 Value *collapseToPrimitiveShadow(Value *Shadow, IRBuilder<> &IRB);
703 Value *updateOrigin(Value *V, IRBuilder<> &IRB);
707 Value *updateOriginIfTainted(Value *Shadow, Value *Origin, IRBuilder<> &IRB);
711 Value *originToIntptr(IRBuilder<> &IRB, Value *Origin);
715 void paintOrigin(IRBuilder<> &IRB, Value *Origin, Value *StoreOriginAddr,
727 Value *convertToBool(Value *V, IRBuilder<> &IRB, const Twine &Name = "");
790 IRBuilder<> &IRB);
793 IRBuilder<> &IRB);
879 Value *PrimitiveShadow, IRBuilder<> &IRB) { in expandFromPrimitiveShadowRecursive() argument
881 return IRB.CreateInsertValue(Shadow, PrimitiveShadow, Indices); in expandFromPrimitiveShadowRecursive()
887 Shadow, Indices, AT->getElementType(), PrimitiveShadow, IRB); in expandFromPrimitiveShadowRecursive()
897 Shadow, Indices, ST->getElementType(Idx), PrimitiveShadow, IRB); in expandFromPrimitiveShadowRecursive()
920 IRBuilder<> IRB(Pos); in expandFromPrimitiveShadow() local
924 PrimitiveShadow, IRB); in expandFromPrimitiveShadow()
933 IRBuilder<> &IRB) { in collapseAggregateShadow() argument
937 Value *FirstItem = IRB.CreateExtractValue(Shadow, 0); in collapseAggregateShadow()
938 Value *Aggregator = collapseToPrimitiveShadow(FirstItem, IRB); in collapseAggregateShadow()
941 Value *ShadowItem = IRB.CreateExtractValue(Shadow, Idx); in collapseAggregateShadow()
942 Value *ShadowInner = collapseToPrimitiveShadow(ShadowItem, IRB); in collapseAggregateShadow()
943 Aggregator = IRB.CreateOr(Aggregator, ShadowInner); in collapseAggregateShadow()
949 IRBuilder<> &IRB) { in collapseToPrimitiveShadow() argument
954 return collapseAggregateShadow<>(AT, Shadow, IRB); in collapseToPrimitiveShadow()
956 return collapseAggregateShadow<>(ST, Shadow, IRB); in collapseToPrimitiveShadow()
971 IRBuilder<> IRB(Pos); in collapseToPrimitiveShadow() local
972 Value *PrimitiveShadow = collapseToPrimitiveShadow(Shadow, IRB); in collapseToPrimitiveShadow()
983 IRBuilder<> IRB(&I); in addConditionalCallbacksIfEnabled() local
987 IRB.CreateCall(DFS.DFSanConditionalCallbackOriginFn, in addConditionalCallbacksIfEnabled()
990 IRB.CreateCall(DFS.DFSanConditionalCallbackFn, {CondShadow}); in addConditionalCallbacksIfEnabled()
1142 void DataFlowSanitizer::buildExternWeakCheckIfNeeded(IRBuilder<> &IRB, in buildExternWeakCheckIfNeeded() argument
1153 Args.push_back(IRB.CreatePointerCast(F, IRB.getInt8PtrTy())); in buildExternWeakCheckIfNeeded()
1154 Args.push_back(IRB.CreateGlobalStringPtr(F->getName())); in buildExternWeakCheckIfNeeded()
1155 IRB.CreateCall(DFSanWrapperExternWeakNullFn, Args); in buildExternWeakCheckIfNeeded()
1580 IRBuilder<> IRB(Pos); in runImpl() local
1583 IRB.CreateICmpNE(PrimitiveShadow, DFSF.DFS.ZeroPrimitiveShadow); in runImpl()
1596 Value *DFSanFunction::getArgTLS(Type *T, unsigned ArgOffset, IRBuilder<> &IRB) { in getArgTLS() argument
1597 Value *Base = IRB.CreatePointerCast(DFS.ArgTLS, DFS.IntptrTy); in getArgTLS()
1599 Base = IRB.CreateAdd(Base, ConstantInt::get(DFS.IntptrTy, ArgOffset)); in getArgTLS()
1600 return IRB.CreateIntToPtr(Base, PointerType::get(DFS.getShadowTy(T), 0), in getArgTLS()
1604 Value *DFSanFunction::getRetvalTLS(Type *T, IRBuilder<> &IRB) { in getRetvalTLS() argument
1605 return IRB.CreatePointerCast( in getRetvalTLS()
1611 Value *DFSanFunction::getArgOriginTLS(unsigned ArgNo, IRBuilder<> &IRB) { in getArgOriginTLS() argument
1612 return IRB.CreateConstGEP2_64(DFS.ArgOriginTLSTy, DFS.ArgOriginTLS, 0, ArgNo, in getArgOriginTLS()
1627 IRBuilder<> IRB(ArgOriginTLSPos); in getOrigin() local
1628 Value *ArgOriginPtr = getArgOriginTLS(A->getArgNo(), IRB); in getOrigin()
1629 Origin = IRB.CreateLoad(DFS.OriginTy, ArgOriginPtr); in getOrigin()
1671 IRBuilder<> IRB(ArgTLSPos); in getShadowForTLSArgument() local
1672 Value *ArgShadowPtr = getArgTLS(FArg.getType(), ArgOffset, IRB); in getShadowForTLSArgument()
1673 return IRB.CreateAlignedLoad(DFS.getShadowTy(&FArg), ArgShadowPtr, in getShadowForTLSArgument()
1708 Value *DataFlowSanitizer::getShadowOffset(Value *Addr, IRBuilder<> &IRB) { in getShadowOffset() argument
1710 Value *OffsetLong = IRB.CreatePointerCast(Addr, IntptrTy); in getShadowOffset()
1715 IRB.CreateAnd(OffsetLong, ConstantInt::get(IntptrTy, ~AndMask)); in getShadowOffset()
1719 OffsetLong = IRB.CreateXor(OffsetLong, ConstantInt::get(IntptrTy, XorMask)); in getShadowOffset()
1727 IRBuilder<> IRB(Pos); in getShadowOriginAddress() local
1728 Value *ShadowOffset = getShadowOffset(Addr, IRB); in getShadowOriginAddress()
1733 IRB.CreateAdd(ShadowLong, ConstantInt::get(IntptrTy, ShadowBase)); in getShadowOriginAddress()
1737 IRB.CreateIntToPtr(ShadowLong, PointerType::get(ShadowTy, 0)); in getShadowOriginAddress()
1744 IRB.CreateAdd(OriginLong, ConstantInt::get(IntptrTy, OriginBase)); in getShadowOriginAddress()
1750 OriginLong = IRB.CreateAnd(OriginLong, ConstantInt::get(IntptrTy, ~Mask)); in getShadowOriginAddress()
1752 OriginPtr = IRB.CreateIntToPtr(OriginLong, OriginPtrTy); in getShadowOriginAddress()
1759 IRBuilder<> IRB(Pos); in getShadowAddress() local
1760 return IRB.CreateIntToPtr(ShadowOffset, PrimitiveShadowPtrTy); in getShadowAddress()
1764 IRBuilder<> IRB(Pos); in getShadowAddress() local
1765 Value *ShadowOffset = getShadowOffset(Addr, IRB); in getShadowAddress()
1815 IRBuilder<> IRB(Pos); in combineShadows() local
1817 CCS.Shadow = IRB.CreateOr(PV1, PV2); in combineShadows()
1876 IRBuilder<> IRB(Pos); in combineOrigins() local
1877 Value *Cond = IRB.CreateICmpNE(PrimitiveShadow, Zero); in combineOrigins()
1878 Origin = IRB.CreateSelect(Cond, OpOrigin, Origin); in combineOrigins()
1944 IRBuilder<> IRB(Pos); in loadNextOrigin() local
1946 IRB.CreateGEP(OriginTy, *OriginAddr, ConstantInt::get(IntptrTy, 1)); in loadNextOrigin()
1947 return IRB.CreateAlignedLoad(OriginTy, *OriginAddr, OriginAlign); in loadNextOrigin()
1976 IRBuilder<> IRB(Pos); in loadShadowFast() local
1977 Value *WideAddr = IRB.CreateBitCast(ShadowAddr, WideShadowTy->getPointerTo()); in loadShadowFast()
1979 IRB.CreateAlignedLoad(WideShadowTy, WideAddr, ShadowAlign); in loadShadowFast()
1993 Value *WideShadowLo = IRB.CreateShl( in loadShadowFast()
2016 WideAddr = IRB.CreateGEP(WideShadowTy, WideAddr, in loadShadowFast()
2019 IRB.CreateAlignedLoad(WideShadowTy, WideAddr, ShadowAlign); in loadShadowFast()
2020 CombinedWideShadow = IRB.CreateOr(CombinedWideShadow, NextWideShadow); in loadShadowFast()
2028 Value *ShrShadow = IRB.CreateLShr(CombinedWideShadow, Width); in loadShadowFast()
2029 CombinedWideShadow = IRB.CreateOr(CombinedWideShadow, ShrShadow); in loadShadowFast()
2031 return {IRB.CreateTrunc(CombinedWideShadow, DFS.PrimitiveShadowTy), in loadShadowFast()
2034 ConstantInt::getSigned(IRB.getInt64Ty(), 0)) in loadShadowFast()
2046 IRBuilder<> IRB(Pos); in loadShadowOriginSansLoadTracking() local
2047 Value *ShadowLI = IRB.CreateLoad(DFS.PrimitiveShadowTy, SI->second); in loadShadowOriginSansLoadTracking()
2051 ? IRB.CreateLoad(DFS.OriginTy, OI->second) in loadShadowOriginSansLoadTracking()
2081 IRBuilder<> IRB(Pos); in loadShadowOriginSansLoadTracking() local
2083 IRB.CreateCall(DFS.DFSanLoadLabelAndOriginFn, in loadShadowOriginSansLoadTracking()
2084 {IRB.CreatePointerCast(Addr, IRB.getInt8PtrTy()), in loadShadowOriginSansLoadTracking()
2087 return {IRB.CreateTrunc(IRB.CreateLShr(Call, DFS.OriginWidthBits), in loadShadowOriginSansLoadTracking()
2089 IRB.CreateTrunc(Call, DFS.OriginTy)}; in loadShadowOriginSansLoadTracking()
2101 IRBuilder<> IRB(Pos); in loadShadowOriginSansLoadTracking() local
2102 Origin = IRB.CreateAlignedLoad(DFS.OriginTy, OriginAddr, OriginAlign); in loadShadowOriginSansLoadTracking()
2114 IRBuilder<> IRB(Pos); in loadShadowOriginSansLoadTracking() local
2115 Value *ShadowAddr1 = IRB.CreateGEP(DFS.PrimitiveShadowTy, ShadowAddr, in loadShadowOriginSansLoadTracking()
2118 IRB.CreateAlignedLoad(DFS.PrimitiveShadowTy, ShadowAddr, ShadowAlign); in loadShadowOriginSansLoadTracking()
2120 IRB.CreateAlignedLoad(DFS.PrimitiveShadowTy, ShadowAddr1, ShadowAlign); in loadShadowOriginSansLoadTracking()
2130 IRBuilder<> IRB(Pos); in loadShadowOriginSansLoadTracking() local
2131 CallInst *FallbackCall = IRB.CreateCall( in loadShadowOriginSansLoadTracking()
2146 IRBuilder<> IRB(Pos); in loadShadowOrigin() local
2149 Origin = updateOriginIfTainted(PrimitiveShadow, Origin, IRB); in loadShadowOrigin()
2245 IRBuilder<> IRB(Pos); in visitLoadInst() local
2246 Value *Addr8 = IRB.CreateBitCast(LI.getPointerOperand(), DFSF.DFS.Int8Ptr); in visitLoadInst()
2247 IRB.CreateCall(DFSF.DFS.DFSanLoadCallbackFn, {PrimitiveShadow, Addr8}); in visitLoadInst()
2252 IRBuilder<> &IRB) { in updateOriginIfTainted() argument
2254 return IRB.CreateCall(DFS.DFSanChainOriginIfTaintedFn, {Shadow, Origin}); in updateOriginIfTainted()
2257 Value *DFSanFunction::updateOrigin(Value *V, IRBuilder<> &IRB) { in updateOrigin() argument
2260 return IRB.CreateCall(DFS.DFSanChainOriginFn, V); in updateOrigin()
2263 Value *DFSanFunction::originToIntptr(IRBuilder<> &IRB, Value *Origin) { in originToIntptr() argument
2270 Origin = IRB.CreateIntCast(Origin, DFS.IntptrTy, /* isSigned */ false); in originToIntptr()
2271 return IRB.CreateOr(Origin, IRB.CreateShl(Origin, OriginSize * 8)); in originToIntptr()
2274 void DFSanFunction::paintOrigin(IRBuilder<> &IRB, Value *Origin, in paintOrigin() argument
2287 Value *IntptrOrigin = originToIntptr(IRB, Origin); in paintOrigin()
2288 Value *IntptrStoreOriginPtr = IRB.CreatePointerCast( in paintOrigin()
2292 I ? IRB.CreateConstGEP1_32(DFS.IntptrTy, IntptrStoreOriginPtr, I) in paintOrigin()
2294 IRB.CreateAlignedStore(IntptrOrigin, Ptr, CurrentAlignment); in paintOrigin()
2302 Value *GEP = I ? IRB.CreateConstGEP1_32(DFS.OriginTy, StoreOriginAddr, I) in paintOrigin()
2304 IRB.CreateAlignedStore(Origin, GEP, CurrentAlignment); in paintOrigin()
2309 Value *DFSanFunction::convertToBool(Value *V, IRBuilder<> &IRB, in convertToBool() argument
2316 return IRB.CreateICmpNE(V, ConstantInt::get(VTy, 0), Name); in convertToBool()
2326 IRBuilder<> IRB(Pos); in storeOrigin() local
2329 paintOrigin(IRB, updateOrigin(Origin, IRB), StoreOriginAddr, Size, in storeOrigin()
2335 IRB.CreateCall(DFS.DFSanMaybeStoreOriginFn, in storeOrigin()
2337 IRB.CreatePointerCast(Addr, IRB.getInt8PtrTy()), in storeOrigin()
2340 Value *Cmp = convertToBool(CollapsedShadow, IRB, "_dfscmp"); in storeOrigin()
2342 Cmp, &*IRB.GetInsertPoint(), false, DFS.OriginStoreWeights, &DT); in storeOrigin()
2353 IRBuilder<> IRB(Pos); in storeZeroPrimitiveShadow() local
2359 IRB.CreateBitCast(ShadowAddr, PointerType::getUnqual(ShadowTy)); in storeZeroPrimitiveShadow()
2360 IRB.CreateAlignedStore(ExtZeroShadow, ExtShadowAddr, ShadowAlign); in storeZeroPrimitiveShadow()
2375 IRBuilder<> IRB(Pos); in storePrimitiveShadowOrigin() local
2376 IRB.CreateStore(PrimitiveShadow, SI->second); in storePrimitiveShadowOrigin()
2383 IRB.CreateStore(Origin, OI->second); in storePrimitiveShadowOrigin()
2395 IRBuilder<> IRB(Pos); in storePrimitiveShadowOrigin() local
2411 ShadowVec = IRB.CreateInsertElement( in storePrimitiveShadowOrigin()
2416 IRB.CreateBitCast(ShadowAddr, PointerType::getUnqual(ShadowVecTy)); in storePrimitiveShadowOrigin()
2419 IRB.CreateConstGEP1_32(ShadowVecTy, ShadowVecAddr, Offset); in storePrimitiveShadowOrigin()
2420 IRB.CreateAlignedStore(ShadowVec, CurShadowVecAddr, ShadowAlign); in storePrimitiveShadowOrigin()
2428 IRB.CreateConstGEP1_32(DFS.PrimitiveShadowTy, ShadowAddr, Offset); in storePrimitiveShadowOrigin()
2429 IRB.CreateAlignedStore(PrimitiveShadow, CurShadowAddr, ShadowAlign); in storePrimitiveShadowOrigin()
2502 IRBuilder<> IRB(&SI); in visitStoreInst() local
2503 Value *Addr8 = IRB.CreateBitCast(SI.getPointerOperand(), DFSF.DFS.Int8Ptr); in visitStoreInst()
2504 IRB.CreateCall(DFSF.DFS.DFSanStoreCallbackFn, {PrimitiveShadow, Addr8}); in visitStoreInst()
2519 IRBuilder<> IRB(&I); in visitCASOrRMW() local
2564 IRBuilder<> IRB(&CI); in visitCmpInst() local
2566 IRB.CreateCall(DFSF.DFS.DFSanCmpCallbackFn, CombinedShadow); in visitCmpInst()
2615 IRBuilder<> IRB(&I); in visitExtractValueInst() local
2618 Value *ResShadow = IRB.CreateExtractValue(AggShadow, I.getIndices()); in visitExtractValueInst()
2624 IRBuilder<> IRB(&I); in visitInsertValueInst() local
2627 Value *Res = IRB.CreateInsertValue(AggShadow, InsShadow, I.getIndices()); in visitInsertValueInst()
2647 IRBuilder<> IRB(&I); in visitAllocaInst() local
2648 DFSF.AllocaShadowMap[&I] = IRB.CreateAlloca(DFSF.DFS.PrimitiveShadowTy); in visitAllocaInst()
2651 IRB.CreateAlloca(DFSF.DFS.OriginTy, nullptr, "_dfsa"); in visitAllocaInst()
2713 IRBuilder<> IRB(&I); in visitMemSetInst() local
2718 IRB.CreateCall( in visitMemSetInst()
2721 IRB.CreateBitCast(I.getDest(), Type::getInt8PtrTy(*DFSF.DFS.Ctx)), in visitMemSetInst()
2722 IRB.CreateZExtOrTrunc(I.getLength(), DFSF.DFS.IntptrTy)}); in visitMemSetInst()
2726 IRBuilder<> IRB(&I); in visitMemTransferInst() local
2731 IRB.CreateCall( in visitMemTransferInst()
2733 {IRB.CreatePointerCast(I.getArgOperand(0), IRB.getInt8PtrTy()), in visitMemTransferInst()
2734 IRB.CreatePointerCast(I.getArgOperand(1), IRB.getInt8PtrTy()), in visitMemTransferInst()
2735 IRB.CreateIntCast(I.getArgOperand(2), DFSF.DFS.IntptrTy, false)}); in visitMemTransferInst()
2741 IRB.CreateMul(I.getLength(), ConstantInt::get(I.getLength()->getType(), in visitMemTransferInst()
2744 Value *DestShadow = IRB.CreateBitCast(RawDestShadow, Int8Ptr); in visitMemTransferInst()
2745 SrcShadow = IRB.CreateBitCast(SrcShadow, Int8Ptr); in visitMemTransferInst()
2747 IRB.CreateCall(I.getFunctionType(), I.getCalledOperand(), in visitMemTransferInst()
2752 IRB.CreateCall(DFSF.DFS.DFSanMemTransferCallbackFn, in visitMemTransferInst()
2754 IRB.CreateZExtOrTrunc(I.getLength(), DFSF.DFS.IntptrTy)}); in visitMemTransferInst()
2787 IRBuilder<> IRB(&RI); in visitReturnInst() local
2793 IRB.CreateAlignedStore(S, DFSF.getRetvalTLS(RT, IRB), ShadowTLSAlignment); in visitReturnInst()
2797 IRB.CreateStore(O, DFSF.getRetvalOriginTLS()); in visitReturnInst()
2804 IRBuilder<> &IRB) { in addShadowArguments() argument
2822 auto *LabelVAPtr = IRB.CreateStructGEP(LabelVATy, LabelVAAlloca, N); in addShadowArguments()
2823 IRB.CreateStore(DFSF.collapseToPrimitiveShadow(DFSF.getShadow(*I), &CB), in addShadowArguments()
2827 Args.push_back(IRB.CreateStructGEP(LabelVATy, LabelVAAlloca, 0)); in addShadowArguments()
2843 IRBuilder<> &IRB) { in addOriginArguments() argument
2861 auto *OriginVAPtr = IRB.CreateStructGEP(OriginVATy, OriginVAAlloca, N); in addOriginArguments()
2862 IRB.CreateStore(DFSF.getOrigin(*I), OriginVAPtr); in addOriginArguments()
2865 Args.push_back(IRB.CreateStructGEP(OriginVATy, OriginVAAlloca, 0)); in addOriginArguments()
2880 IRBuilder<> IRB(&CB); in visitWrappedCallBase() local
2884 IRB.CreateCall(DFSF.DFS.DFSanUnimplementedFn, in visitWrappedCallBase()
2885 IRB.CreateGlobalStringPtr(F.getName())); in visitWrappedCallBase()
2886 DFSF.DFS.buildExternWeakCheckIfNeeded(IRB, &F); in visitWrappedCallBase()
2892 DFSF.DFS.buildExternWeakCheckIfNeeded(IRB, &F); in visitWrappedCallBase()
2898 DFSF.DFS.buildExternWeakCheckIfNeeded(IRB, &F); in visitWrappedCallBase()
2935 addShadowArguments(F, CB, Args, IRB); in visitWrappedCallBase()
2940 addOriginArguments(F, CB, Args, IRB); in visitWrappedCallBase()
2945 CallInst *CustomCI = IRB.CreateCall(CustomF, Args); in visitWrappedCallBase()
2969 IRB.CreateLoad(DFSF.DFS.PrimitiveShadowTy, DFSF.LabelReturnAlloca); in visitWrappedCallBase()
2974 IRB.CreateLoad(DFSF.DFS.OriginTy, DFSF.OriginReturnAlloca); in visitWrappedCallBase()
3004 IRBuilder<> IRB(&CB); in visitCallBase() local
3018 IRB.CreateStore(DFSF.getOrigin(CB.getArgOperand(I)), in visitCallBase()
3019 DFSF.getArgOriginTLS(I, IRB)); in visitCallBase()
3028 IRB.CreateAlignedStore(DFSF.getShadow(CB.getArgOperand(I)), in visitCallBase()
3029 DFSF.getArgTLS(FT->getParamType(I), ArgOffset, IRB), in visitCallBase()