Lines Matching refs:IRB
518 Value *getShadowOffset(Value *Addr, IRBuilder<> &IRB);
529 void buildExternWeakCheckIfNeeded(IRBuilder<> &IRB, Function *F);
626 Value *getArgTLS(Type *T, unsigned ArgOffset, IRBuilder<> &IRB);
629 Value *getRetvalTLS(Type *T, IRBuilder<> &IRB);
634 Value *getArgOriginTLS(unsigned ArgNo, IRBuilder<> &IRB);
706 void addReachesFunctionCallbacksIfEnabled(IRBuilder<> &IRB, Instruction &I,
716 IRBuilder<> &IRB);
718 Value *collapseToPrimitiveShadow(Value *Shadow, IRBuilder<> &IRB);
743 Value *updateOrigin(Value *V, IRBuilder<> &IRB);
747 Value *updateOriginIfTainted(Value *Shadow, Value *Origin, IRBuilder<> &IRB);
751 Value *originToIntptr(IRBuilder<> &IRB, Value *Origin);
755 void paintOrigin(IRBuilder<> &IRB, Value *Origin, Value *StoreOriginAddr,
767 Value *convertToBool(Value *V, IRBuilder<> &IRB, const Twine &Name = "");
834 IRBuilder<> &IRB);
837 IRBuilder<> &IRB);
839 Value *makeAddAcquireOrderingTable(IRBuilder<> &IRB);
840 Value *makeAddReleaseOrderingTable(IRBuilder<> &IRB);
946 Value *PrimitiveShadow, IRBuilder<> &IRB) { in expandFromPrimitiveShadowRecursive() argument
948 return IRB.CreateInsertValue(Shadow, PrimitiveShadow, Indices); in expandFromPrimitiveShadowRecursive()
954 Shadow, Indices, AT->getElementType(), PrimitiveShadow, IRB); in expandFromPrimitiveShadowRecursive()
964 Shadow, Indices, ST->getElementType(Idx), PrimitiveShadow, IRB); in expandFromPrimitiveShadowRecursive()
987 IRBuilder<> IRB(Pos); in expandFromPrimitiveShadow() local
991 PrimitiveShadow, IRB); in expandFromPrimitiveShadow()
1000 IRBuilder<> &IRB) { in collapseAggregateShadow() argument
1004 Value *FirstItem = IRB.CreateExtractValue(Shadow, 0); in collapseAggregateShadow()
1005 Value *Aggregator = collapseToPrimitiveShadow(FirstItem, IRB); in collapseAggregateShadow()
1008 Value *ShadowItem = IRB.CreateExtractValue(Shadow, Idx); in collapseAggregateShadow()
1009 Value *ShadowInner = collapseToPrimitiveShadow(ShadowItem, IRB); in collapseAggregateShadow()
1010 Aggregator = IRB.CreateOr(Aggregator, ShadowInner); in collapseAggregateShadow()
1016 IRBuilder<> &IRB) { in collapseToPrimitiveShadow() argument
1021 return collapseAggregateShadow<>(AT, Shadow, IRB); in collapseToPrimitiveShadow()
1023 return collapseAggregateShadow<>(ST, Shadow, IRB); in collapseToPrimitiveShadow()
1038 IRBuilder<> IRB(Pos); in collapseToPrimitiveShadow() local
1039 Value *PrimitiveShadow = collapseToPrimitiveShadow(Shadow, IRB); in collapseToPrimitiveShadow()
1050 IRBuilder<> IRB(&I); in addConditionalCallbacksIfEnabled() local
1055 CI = IRB.CreateCall(DFS.DFSanConditionalCallbackOriginFn, in addConditionalCallbacksIfEnabled()
1058 CI = IRB.CreateCall(DFS.DFSanConditionalCallbackFn, {CondShadow}); in addConditionalCallbacksIfEnabled()
1063 void DFSanFunction::addReachesFunctionCallbacksIfEnabled(IRBuilder<> &IRB, in addReachesFunctionCallbacksIfEnabled() argument
1070 Value *DataShadow = collapseToPrimitiveShadow(getShadow(Data), IRB); in addReachesFunctionCallbacksIfEnabled()
1076 FilePathPtr = IRB.CreateGlobalStringPtr( in addReachesFunctionCallbacksIfEnabled()
1082 IRB.CreateGlobalStringPtr(dbgloc->getFilename()); in addReachesFunctionCallbacksIfEnabled()
1086 IRB.CreateGlobalStringPtr(I.getFunction()->getName()); in addReachesFunctionCallbacksIfEnabled()
1094 CB = IRB.CreateCall(DFS.DFSanReachesFunctionCallbackOriginFn, args); in addReachesFunctionCallbacksIfEnabled()
1097 CB = IRB.CreateCall(DFS.DFSanReachesFunctionCallbackFn, args); in addReachesFunctionCallbacksIfEnabled()
1280 void DataFlowSanitizer::buildExternWeakCheckIfNeeded(IRBuilder<> &IRB, in buildExternWeakCheckIfNeeded() argument
1292 Args.push_back(IRB.CreateGlobalStringPtr(F->getName())); in buildExternWeakCheckIfNeeded()
1293 IRB.CreateCall(DFSanWrapperExternWeakNullFn, Args); in buildExternWeakCheckIfNeeded()
1715 IRBuilder<> IRB(Next); in runImpl() local
1716 DFSF.addReachesFunctionCallbacksIfEnabled(IRB, *Next, &FArg); in runImpl()
1770 IRBuilder<> IRB(Pos); in runImpl() local
1773 IRB.CreateICmpNE(PrimitiveShadow, DFSF.DFS.ZeroPrimitiveShadow); in runImpl()
1786 Value *DFSanFunction::getArgTLS(Type *T, unsigned ArgOffset, IRBuilder<> &IRB) { in getArgTLS() argument
1787 Value *Base = IRB.CreatePointerCast(DFS.ArgTLS, DFS.IntptrTy); in getArgTLS()
1789 Base = IRB.CreateAdd(Base, ConstantInt::get(DFS.IntptrTy, ArgOffset)); in getArgTLS()
1790 return IRB.CreateIntToPtr(Base, PointerType::get(DFS.getShadowTy(T), 0), in getArgTLS()
1794 Value *DFSanFunction::getRetvalTLS(Type *T, IRBuilder<> &IRB) { in getRetvalTLS() argument
1795 return IRB.CreatePointerCast( in getRetvalTLS()
1801 Value *DFSanFunction::getArgOriginTLS(unsigned ArgNo, IRBuilder<> &IRB) { in getArgOriginTLS() argument
1802 return IRB.CreateConstGEP2_64(DFS.ArgOriginTLSTy, DFS.ArgOriginTLS, 0, ArgNo, in getArgOriginTLS()
1817 IRBuilder<> IRB(ArgOriginTLSPos); in getOrigin() local
1818 Value *ArgOriginPtr = getArgOriginTLS(A->getArgNo(), IRB); in getOrigin()
1819 Origin = IRB.CreateLoad(DFS.OriginTy, ArgOriginPtr); in getOrigin()
1861 IRBuilder<> IRB(ArgTLSPos); in getShadowForTLSArgument() local
1862 Value *ArgShadowPtr = getArgTLS(FArg.getType(), ArgOffset, IRB); in getShadowForTLSArgument()
1863 return IRB.CreateAlignedLoad(DFS.getShadowTy(&FArg), ArgShadowPtr, in getShadowForTLSArgument()
1898 Value *DataFlowSanitizer::getShadowOffset(Value *Addr, IRBuilder<> &IRB) { in getShadowOffset() argument
1900 Value *OffsetLong = IRB.CreatePointerCast(Addr, IntptrTy); in getShadowOffset()
1905 IRB.CreateAnd(OffsetLong, ConstantInt::get(IntptrTy, ~AndMask)); in getShadowOffset()
1909 OffsetLong = IRB.CreateXor(OffsetLong, ConstantInt::get(IntptrTy, XorMask)); in getShadowOffset()
1917 IRBuilder<> IRB(Pos); in getShadowOriginAddress() local
1918 Value *ShadowOffset = getShadowOffset(Addr, IRB); in getShadowOriginAddress()
1923 IRB.CreateAdd(ShadowLong, ConstantInt::get(IntptrTy, ShadowBase)); in getShadowOriginAddress()
1927 IRB.CreateIntToPtr(ShadowLong, PointerType::get(ShadowTy, 0)); in getShadowOriginAddress()
1934 IRB.CreateAdd(OriginLong, ConstantInt::get(IntptrTy, OriginBase)); in getShadowOriginAddress()
1940 OriginLong = IRB.CreateAnd(OriginLong, ConstantInt::get(IntptrTy, ~Mask)); in getShadowOriginAddress()
1942 OriginPtr = IRB.CreateIntToPtr(OriginLong, OriginPtrTy); in getShadowOriginAddress()
1949 IRBuilder<> IRB(Pos); in getShadowAddress() local
1950 return IRB.CreateIntToPtr(ShadowOffset, PrimitiveShadowPtrTy); in getShadowAddress()
1954 IRBuilder<> IRB(Pos); in getShadowAddress() local
1955 Value *ShadowOffset = getShadowOffset(Addr, IRB); in getShadowAddress()
2005 IRBuilder<> IRB(Pos); in combineShadows() local
2007 CCS.Shadow = IRB.CreateOr(PV1, PV2); in combineShadows()
2066 IRBuilder<> IRB(Pos); in combineOrigins() local
2067 Value *Cond = IRB.CreateICmpNE(PrimitiveShadow, Zero); in combineOrigins()
2068 Origin = IRB.CreateSelect(Cond, OpOrigin, Origin); in combineOrigins()
2134 IRBuilder<> IRB(Pos); in loadNextOrigin() local
2136 IRB.CreateGEP(OriginTy, *OriginAddr, ConstantInt::get(IntptrTy, 1)); in loadNextOrigin()
2137 return IRB.CreateAlignedLoad(OriginTy, *OriginAddr, OriginAlign); in loadNextOrigin()
2166 IRBuilder<> IRB(Pos); in loadShadowFast() local
2168 IRB.CreateAlignedLoad(WideShadowTy, ShadowAddr, ShadowAlign); in loadShadowFast()
2182 Value *WideShadowLo = IRB.CreateShl( in loadShadowFast()
2205 ShadowAddr = IRB.CreateGEP(WideShadowTy, ShadowAddr, in loadShadowFast()
2208 IRB.CreateAlignedLoad(WideShadowTy, ShadowAddr, ShadowAlign); in loadShadowFast()
2209 CombinedWideShadow = IRB.CreateOr(CombinedWideShadow, NextWideShadow); in loadShadowFast()
2217 Value *ShrShadow = IRB.CreateLShr(CombinedWideShadow, Width); in loadShadowFast()
2218 CombinedWideShadow = IRB.CreateOr(CombinedWideShadow, ShrShadow); in loadShadowFast()
2220 return {IRB.CreateTrunc(CombinedWideShadow, DFS.PrimitiveShadowTy), in loadShadowFast()
2223 ConstantInt::getSigned(IRB.getInt64Ty(), 0)) in loadShadowFast()
2235 IRBuilder<> IRB(Pos); in loadShadowOriginSansLoadTracking() local
2236 Value *ShadowLI = IRB.CreateLoad(DFS.PrimitiveShadowTy, SI->second); in loadShadowOriginSansLoadTracking()
2240 ? IRB.CreateLoad(DFS.OriginTy, OI->second) in loadShadowOriginSansLoadTracking()
2270 IRBuilder<> IRB(Pos); in loadShadowOriginSansLoadTracking() local
2272 IRB.CreateCall(DFS.DFSanLoadLabelAndOriginFn, in loadShadowOriginSansLoadTracking()
2275 return {IRB.CreateTrunc(IRB.CreateLShr(Call, DFS.OriginWidthBits), in loadShadowOriginSansLoadTracking()
2277 IRB.CreateTrunc(Call, DFS.OriginTy)}; in loadShadowOriginSansLoadTracking()
2289 IRBuilder<> IRB(Pos); in loadShadowOriginSansLoadTracking() local
2290 Origin = IRB.CreateAlignedLoad(DFS.OriginTy, OriginAddr, OriginAlign); in loadShadowOriginSansLoadTracking()
2302 IRBuilder<> IRB(Pos); in loadShadowOriginSansLoadTracking() local
2303 Value *ShadowAddr1 = IRB.CreateGEP(DFS.PrimitiveShadowTy, ShadowAddr, in loadShadowOriginSansLoadTracking()
2306 IRB.CreateAlignedLoad(DFS.PrimitiveShadowTy, ShadowAddr, ShadowAlign); in loadShadowOriginSansLoadTracking()
2308 IRB.CreateAlignedLoad(DFS.PrimitiveShadowTy, ShadowAddr1, ShadowAlign); in loadShadowOriginSansLoadTracking()
2318 IRBuilder<> IRB(Pos); in loadShadowOriginSansLoadTracking() local
2319 CallInst *FallbackCall = IRB.CreateCall( in loadShadowOriginSansLoadTracking()
2334 IRBuilder<> IRB(Pos); in loadShadowOrigin() local
2337 Origin = updateOriginIfTainted(PrimitiveShadow, Origin, IRB); in loadShadowOrigin()
2434 IRBuilder<> IRB(Pos); in visitLoadInst() local
2437 IRB.CreateCall(DFSF.DFS.DFSanLoadCallbackFn, {PrimitiveShadow, Addr}); in visitLoadInst()
2441 IRBuilder<> IRB(AfterLi); in visitLoadInst() local
2442 DFSF.addReachesFunctionCallbacksIfEnabled(IRB, LI, &LI); in visitLoadInst()
2446 IRBuilder<> &IRB) { in updateOriginIfTainted() argument
2448 return IRB.CreateCall(DFS.DFSanChainOriginIfTaintedFn, {Shadow, Origin}); in updateOriginIfTainted()
2451 Value *DFSanFunction::updateOrigin(Value *V, IRBuilder<> &IRB) { in updateOrigin() argument
2454 return IRB.CreateCall(DFS.DFSanChainOriginFn, V); in updateOrigin()
2457 Value *DFSanFunction::originToIntptr(IRBuilder<> &IRB, Value *Origin) { in originToIntptr() argument
2464 Origin = IRB.CreateIntCast(Origin, DFS.IntptrTy, /* isSigned */ false); in originToIntptr()
2465 return IRB.CreateOr(Origin, IRB.CreateShl(Origin, OriginSize * 8)); in originToIntptr()
2468 void DFSanFunction::paintOrigin(IRBuilder<> &IRB, Value *Origin, in paintOrigin() argument
2481 Value *IntptrOrigin = originToIntptr(IRB, Origin); in paintOrigin()
2482 Value *IntptrStoreOriginPtr = IRB.CreatePointerCast( in paintOrigin()
2486 I ? IRB.CreateConstGEP1_32(DFS.IntptrTy, IntptrStoreOriginPtr, I) in paintOrigin()
2488 IRB.CreateAlignedStore(IntptrOrigin, Ptr, CurrentAlignment); in paintOrigin()
2496 Value *GEP = I ? IRB.CreateConstGEP1_32(DFS.OriginTy, StoreOriginAddr, I) in paintOrigin()
2498 IRB.CreateAlignedStore(Origin, GEP, CurrentAlignment); in paintOrigin()
2503 Value *DFSanFunction::convertToBool(Value *V, IRBuilder<> &IRB, in convertToBool() argument
2510 return IRB.CreateICmpNE(V, ConstantInt::get(VTy, 0), Name); in convertToBool()
2520 IRBuilder<> IRB(Pos); in storeOrigin() local
2523 paintOrigin(IRB, updateOrigin(Origin, IRB), StoreOriginAddr, Size, in storeOrigin()
2529 IRB.CreateCall( in storeOrigin()
2533 Value *Cmp = convertToBool(CollapsedShadow, IRB, "_dfscmp"); in storeOrigin()
2536 Cmp, &*IRB.GetInsertPoint(), false, DFS.OriginStoreWeights, &DTU); in storeOrigin()
2547 IRBuilder<> IRB(Pos); in storeZeroPrimitiveShadow() local
2552 IRB.CreateAlignedStore(ExtZeroShadow, ShadowAddr, ShadowAlign); in storeZeroPrimitiveShadow()
2567 IRBuilder<> IRB(Pos); in storePrimitiveShadowOrigin() local
2568 IRB.CreateStore(PrimitiveShadow, SI->second); in storePrimitiveShadowOrigin()
2575 IRB.CreateStore(Origin, OI->second); in storePrimitiveShadowOrigin()
2587 IRBuilder<> IRB(Pos); in storePrimitiveShadowOrigin() local
2603 ShadowVec = IRB.CreateInsertElement( in storePrimitiveShadowOrigin()
2609 IRB.CreateConstGEP1_32(ShadowVecTy, ShadowAddr, Offset); in storePrimitiveShadowOrigin()
2610 IRB.CreateAlignedStore(ShadowVec, CurShadowVecAddr, ShadowAlign); in storePrimitiveShadowOrigin()
2618 IRB.CreateConstGEP1_32(DFS.PrimitiveShadowTy, ShadowAddr, Offset); in storePrimitiveShadowOrigin()
2619 IRB.CreateAlignedStore(PrimitiveShadow, CurShadowAddr, ShadowAlign); in storePrimitiveShadowOrigin()
2692 IRBuilder<> IRB(&SI); in visitStoreInst() local
2695 IRB.CreateCall(DFSF.DFS.DFSanStoreCallbackFn, {PrimitiveShadow, Addr}); in visitStoreInst()
2711 IRBuilder<> IRB(&I); in visitCASOrRMW() local
2756 IRBuilder<> IRB(&CI); in visitCmpInst() local
2759 IRB.CreateCall(DFSF.DFS.DFSanCmpCallbackFn, CombinedShadow); in visitCmpInst()
2809 IRBuilder<> IRB(&I); in visitExtractValueInst() local
2812 Value *ResShadow = IRB.CreateExtractValue(AggShadow, I.getIndices()); in visitExtractValueInst()
2818 IRBuilder<> IRB(&I); in visitInsertValueInst() local
2821 Value *Res = IRB.CreateInsertValue(AggShadow, InsShadow, I.getIndices()); in visitInsertValueInst()
2841 IRBuilder<> IRB(&I); in visitAllocaInst() local
2842 DFSF.AllocaShadowMap[&I] = IRB.CreateAlloca(DFSF.DFS.PrimitiveShadowTy); in visitAllocaInst()
2845 IRB.CreateAlloca(DFSF.DFS.OriginTy, nullptr, "_dfsa"); in visitAllocaInst()
2907 IRBuilder<> IRB(&I); in visitMemSetInst() local
2912 IRB.CreateCall(DFSF.DFS.DFSanSetLabelFn, in visitMemSetInst()
2914 IRB.CreateZExtOrTrunc(I.getLength(), DFSF.DFS.IntptrTy)}); in visitMemSetInst()
2918 IRBuilder<> IRB(&I); in visitMemTransferInst() local
2923 IRB.CreateCall( in visitMemTransferInst()
2926 IRB.CreateIntCast(I.getArgOperand(2), DFSF.DFS.IntptrTy, false)}); in visitMemTransferInst()
2932 IRB.CreateMul(I.getLength(), ConstantInt::get(I.getLength()->getType(), in visitMemTransferInst()
2935 IRB.CreateCall(I.getFunctionType(), I.getCalledOperand(), in visitMemTransferInst()
2940 IRB.CreateCall( in visitMemTransferInst()
2942 {DestShadow, IRB.CreateZExtOrTrunc(I.getLength(), DFSF.DFS.IntptrTy)}); in visitMemTransferInst()
2975 IRBuilder<> IRB(&RI); in visitReturnInst() local
2981 IRB.CreateAlignedStore(S, DFSF.getRetvalTLS(RT, IRB), ShadowTLSAlignment); in visitReturnInst()
2985 IRB.CreateStore(O, DFSF.getRetvalOriginTLS()); in visitReturnInst()
2992 IRBuilder<> &IRB) { in addShadowArguments() argument
3010 auto *LabelVAPtr = IRB.CreateStructGEP(LabelVATy, LabelVAAlloca, N); in addShadowArguments()
3011 IRB.CreateStore(DFSF.collapseToPrimitiveShadow(DFSF.getShadow(*I), &CB), in addShadowArguments()
3015 Args.push_back(IRB.CreateStructGEP(LabelVATy, LabelVAAlloca, 0)); in addShadowArguments()
3031 IRBuilder<> &IRB) { in addOriginArguments() argument
3049 auto *OriginVAPtr = IRB.CreateStructGEP(OriginVATy, OriginVAAlloca, N); in addOriginArguments()
3050 IRB.CreateStore(DFSF.getOrigin(*I), OriginVAPtr); in addOriginArguments()
3053 Args.push_back(IRB.CreateStructGEP(OriginVATy, OriginVAAlloca, 0)); in addOriginArguments()
3068 IRBuilder<> IRB(&CB); in visitWrappedCallBase() local
3072 IRB.CreateCall(DFSF.DFS.DFSanUnimplementedFn, in visitWrappedCallBase()
3073 IRB.CreateGlobalStringPtr(F.getName())); in visitWrappedCallBase()
3074 DFSF.DFS.buildExternWeakCheckIfNeeded(IRB, &F); in visitWrappedCallBase()
3080 DFSF.DFS.buildExternWeakCheckIfNeeded(IRB, &F); in visitWrappedCallBase()
3086 DFSF.DFS.buildExternWeakCheckIfNeeded(IRB, &F); in visitWrappedCallBase()
3123 addShadowArguments(F, CB, Args, IRB); in visitWrappedCallBase()
3128 addOriginArguments(F, CB, Args, IRB); in visitWrappedCallBase()
3133 CallInst *CustomCI = IRB.CreateCall(CustomF, Args); in visitWrappedCallBase()
3157 IRB.CreateLoad(DFSF.DFS.PrimitiveShadowTy, DFSF.LabelReturnAlloca); in visitWrappedCallBase()
3162 IRB.CreateLoad(DFSF.DFS.OriginTy, DFSF.OriginReturnAlloca); in visitWrappedCallBase()
3174 Value *DFSanVisitor::makeAddAcquireOrderingTable(IRBuilder<> &IRB) { in makeAddAcquireOrderingTable() argument
3188 return ConstantDataVector::get(IRB.getContext(), in makeAddAcquireOrderingTable()
3196 IRBuilder<> IRB(&CB); in visitLibAtomicLoad() local
3204 IRB.CreateExtractElement(makeAddAcquireOrderingTable(IRB), Ordering); in visitLibAtomicLoad()
3218 Value *DFSanVisitor::makeAddReleaseOrderingTable(IRBuilder<> &IRB) { in makeAddReleaseOrderingTable() argument
3232 return ConstantDataVector::get(IRB.getContext(), in makeAddReleaseOrderingTable()
3237 IRBuilder<> IRB(&CB); in visitLibAtomicStore() local
3245 IRB.CreateExtractElement(makeAddReleaseOrderingTable(IRB), Ordering); in visitLibAtomicStore()
3251 IRB.CreateCall( in visitLibAtomicStore()
3253 {DstPtr, SrcPtr, IRB.CreateIntCast(Size, DFSF.DFS.IntptrTy, false)}); in visitLibAtomicStore()
3259 IRBuilder<> IRB(&CB); in visitLibAtomicExchange() local
3271 IRB.CreateCall( in visitLibAtomicExchange()
3273 {DstPtr, TargetPtr, IRB.CreateIntCast(Size, DFSF.DFS.IntptrTy, false)}); in visitLibAtomicExchange()
3276 IRB.CreateCall( in visitLibAtomicExchange()
3278 {TargetPtr, SrcPtr, IRB.CreateIntCast(Size, DFSF.DFS.IntptrTy, false)}); in visitLibAtomicExchange()
3359 IRBuilder<> IRB(&CB); in visitCallBase() local
3373 IRB.CreateStore(DFSF.getOrigin(CB.getArgOperand(I)), in visitCallBase()
3374 DFSF.getArgOriginTLS(I, IRB)); in visitCallBase()
3383 IRB.CreateAlignedStore(DFSF.getShadow(CB.getArgOperand(I)), in visitCallBase()
3384 DFSF.getArgTLS(FT->getParamType(I), ArgOffset, IRB), in visitCallBase()