Lines Matching refs:DFSF

787   DFSanFunction &DFSF;  member in __anon5712215c0211::DFSanVisitor
789 DFSanVisitor(DFSanFunction &DFSF) : DFSF(DFSF) {} in DFSanVisitor() argument
792 return DFSF.F->getDataLayout(); in getDataLayout()
1697 DFSanFunction DFSF(*this, F, FnsWithNativeABI.count(F), in runImpl() local
1704 Value *FArgShadow = DFSF.getShadow(&FArg); in runImpl()
1712 dyn_cast<Instruction>(DFSF.getOrigin(&FArg))) { in runImpl()
1721 DFSF.addReachesFunctionCallbacksIfEnabled(IRB, *Next, &FArg); in runImpl()
1739 if (!DFSF.SkipInsts.count(Inst)) in runImpl()
1740 DFSanVisitor(DFSF).visit(Inst); in runImpl()
1751 for (DFSanFunction::PHIFixupElement &P : DFSF.PHIFixups) { in runImpl()
1755 Val, DFSF.getShadow(P.Phi->getIncomingValue(Val))); in runImpl()
1758 Val, DFSF.getOrigin(P.Phi->getIncomingValue(Val))); in runImpl()
1767 for (Value *V : DFSF.NonZeroChecks) { in runImpl()
1772 Pos = DFSF.F->getEntryBlock().begin(); in runImpl()
1776 Value *PrimitiveShadow = DFSF.collapseToPrimitiveShadow(V, Pos); in runImpl()
1778 IRB.CreateICmpNE(PrimitiveShadow, DFSF.DFS.ZeroPrimitiveShadow); in runImpl()
1782 ThenIRB.CreateCall(DFSF.DFS.DFSanNonzeroLabelFn, {}); in runImpl()
2050 Value *CombinedShadow = DFSF.combineOperandShadows(&I); in visitInstOperands()
2051 DFSF.setShadow(&I, CombinedShadow); in visitInstOperands()
2096 if (!DFSF.DFS.shouldTrackOrigins()) in visitInstOperandOrigins()
2098 Value *CombinedOrigin = DFSF.combineOperandOrigins(&I); in visitInstOperandOrigins()
2099 DFSF.setOrigin(&I, CombinedOrigin); in visitInstOperandOrigins()
2398 DFSF.setShadow(&LI, DFSF.DFS.getZeroShadow(&LI)); in visitLoadInst()
2399 DFSF.setOrigin(&LI, DFSF.DFS.ZeroOrigin); in visitLoadInst()
2420 DFSF.loadShadowOrigin(LI.getPointerOperand(), Size, LI.getAlign(), Pos); in visitLoadInst()
2421 const bool ShouldTrackOrigins = DFSF.DFS.shouldTrackOrigins(); in visitLoadInst()
2427 DFSF.isLookupTableConstant( in visitLoadInst()
2429 Value *PtrShadow = DFSF.getShadow(LI.getPointerOperand()); in visitLoadInst()
2430 PrimitiveShadow = DFSF.combineShadows(PrimitiveShadow, PtrShadow, Pos); in visitLoadInst()
2433 Origins.push_back(DFSF.getOrigin(LI.getPointerOperand())); in visitLoadInst()
2436 if (!DFSF.DFS.isZeroShadow(PrimitiveShadow)) in visitLoadInst()
2437 DFSF.NonZeroChecks.push_back(PrimitiveShadow); in visitLoadInst()
2440 DFSF.expandFromPrimitiveShadow(LI.getType(), PrimitiveShadow, Pos); in visitLoadInst()
2441 DFSF.setShadow(&LI, Shadow); in visitLoadInst()
2444 DFSF.setOrigin(&LI, DFSF.combineOrigins(Shadows, Origins, Pos)); in visitLoadInst()
2451 IRB.CreateCall(DFSF.DFS.DFSanLoadCallbackFn, {PrimitiveShadow, Addr}); in visitLoadInst()
2456 DFSF.addReachesFunctionCallbacksIfEnabled(IRB, LI, &LI); in visitLoadInst()
2677 DFSF.DFS.shouldTrackOrigins() && !SI.isAtomic(); in visitStoreInst()
2682 SI.isAtomic() ? DFSF.DFS.getZeroShadow(Val) : DFSF.getShadow(Val); in visitStoreInst()
2686 Origins.push_back(DFSF.getOrigin(Val)); in visitStoreInst()
2691 Value *PtrShadow = DFSF.getShadow(SI.getPointerOperand()); in visitStoreInst()
2694 Origins.push_back(DFSF.getOrigin(SI.getPointerOperand())); in visitStoreInst()
2696 PrimitiveShadow = DFSF.combineShadows(Shadow, PtrShadow, SI.getIterator()); in visitStoreInst()
2698 PrimitiveShadow = DFSF.collapseToPrimitiveShadow(Shadow, SI.getIterator()); in visitStoreInst()
2702 Origin = DFSF.combineOrigins(Shadows, Origins, SI.getIterator()); in visitStoreInst()
2703 DFSF.storePrimitiveShadowOrigin(SI.getPointerOperand(), Size, SI.getAlign(), in visitStoreInst()
2709 IRB.CreateCall(DFSF.DFS.DFSanStoreCallbackFn, {PrimitiveShadow, Addr}); in visitStoreInst()
2727 const Align ShadowAlign = DFSF.getShadowAlign(InstAlignment); in visitCASOrRMW()
2728 DFSF.storeZeroPrimitiveShadow(Addr, Size, ShadowAlign, I.getIterator()); in visitCASOrRMW()
2729 DFSF.setShadow(&I, DFSF.DFS.getZeroShadow(&I)); in visitCASOrRMW()
2730 DFSF.setOrigin(&I, DFSF.DFS.ZeroOrigin); in visitCASOrRMW()
2771 Value *CombinedShadow = DFSF.getShadow(&CI); in visitCmpInst()
2773 IRB.CreateCall(DFSF.DFS.DFSanCmpCallbackFn, CombinedShadow); in visitCmpInst()
2790 DFSF.setShadow(&LPI, DFSF.DFS.getZeroShadow(&LPI)); in visitLandingPadInst()
2791 DFSF.setOrigin(&LPI, DFSF.DFS.ZeroOrigin); in visitLandingPadInst()
2796 DFSF.isLookupTableConstant( in visitGetElementPtrInst()
2805 DFSF.setShadow(&GEPI, DFSF.getShadow(BasePointer)); in visitGetElementPtrInst()
2806 if (DFSF.DFS.shouldTrackOrigins()) in visitGetElementPtrInst()
2807 DFSF.setOrigin(&GEPI, DFSF.getOrigin(BasePointer)); in visitGetElementPtrInst()
2825 Value *AggShadow = DFSF.getShadow(Agg); in visitExtractValueInst()
2827 DFSF.setShadow(&I, ResShadow); in visitExtractValueInst()
2833 Value *AggShadow = DFSF.getShadow(I.getAggregateOperand()); in visitInsertValueInst()
2834 Value *InsShadow = DFSF.getShadow(I.getInsertedValueOperand()); in visitInsertValueInst()
2836 DFSF.setShadow(&I, Res); in visitInsertValueInst()
2856 DFSF.AllocaShadowMap[&I] = IRB.CreateAlloca(DFSF.DFS.PrimitiveShadowTy); in visitAllocaInst()
2857 if (DFSF.DFS.shouldTrackOrigins()) { in visitAllocaInst()
2858 DFSF.AllocaOriginMap[&I] = in visitAllocaInst()
2859 IRB.CreateAlloca(DFSF.DFS.OriginTy, nullptr, "_dfsa"); in visitAllocaInst()
2862 DFSF.setShadow(&I, DFSF.DFS.ZeroPrimitiveShadow); in visitAllocaInst()
2863 DFSF.setOrigin(&I, DFSF.DFS.ZeroOrigin); in visitAllocaInst()
2867 Value *CondShadow = DFSF.getShadow(I.getCondition()); in visitSelectInst()
2868 Value *TrueShadow = DFSF.getShadow(I.getTrueValue()); in visitSelectInst()
2869 Value *FalseShadow = DFSF.getShadow(I.getFalseValue()); in visitSelectInst()
2871 const bool ShouldTrackOrigins = DFSF.DFS.shouldTrackOrigins(); in visitSelectInst()
2875 ShouldTrackOrigins ? DFSF.getOrigin(I.getTrueValue()) : nullptr; in visitSelectInst()
2877 ShouldTrackOrigins ? DFSF.getOrigin(I.getFalseValue()) : nullptr; in visitSelectInst()
2879 DFSF.addConditionalCallbacksIfEnabled(I, I.getCondition()); in visitSelectInst()
2882 ShadowSel = DFSF.combineShadowsThenConvert(I.getType(), TrueShadow, in visitSelectInst()
2907 DFSF.setShadow(&I, ClTrackSelectControlFlow ? DFSF.combineShadowsThenConvert( in visitSelectInst()
2914 Origins.push_back(DFSF.getOrigin(I.getCondition())); in visitSelectInst()
2916 DFSF.setOrigin(&I, DFSF.combineOrigins(Shadows, Origins, I.getIterator())); in visitSelectInst()
2922 Value *ValShadow = DFSF.getShadow(I.getValue()); in visitMemSetInst()
2923 Value *ValOrigin = DFSF.DFS.shouldTrackOrigins() in visitMemSetInst()
2924 ? DFSF.getOrigin(I.getValue()) in visitMemSetInst()
2925 : DFSF.DFS.ZeroOrigin; in visitMemSetInst()
2926 IRB.CreateCall(DFSF.DFS.DFSanSetLabelFn, in visitMemSetInst()
2928 IRB.CreateZExtOrTrunc(I.getLength(), DFSF.DFS.IntptrTy)}); in visitMemSetInst()
2936 if (DFSF.DFS.shouldTrackOrigins()) { in visitMemTransferInst()
2938 DFSF.DFS.DFSanMemOriginTransferFn, in visitMemTransferInst()
2940 IRB.CreateIntCast(I.getArgOperand(2), DFSF.DFS.IntptrTy, false)}); in visitMemTransferInst()
2943 Value *DestShadow = DFSF.DFS.getShadowAddress(I.getDest(), I.getIterator()); in visitMemTransferInst()
2944 Value *SrcShadow = DFSF.DFS.getShadowAddress(I.getSource(), I.getIterator()); in visitMemTransferInst()
2947 DFSF.DFS.ShadowWidthBytes)); in visitMemTransferInst()
2951 MTI->setDestAlignment(DFSF.getShadowAlign(I.getDestAlign().valueOrOne())); in visitMemTransferInst()
2952 MTI->setSourceAlignment(DFSF.getShadowAlign(I.getSourceAlign().valueOrOne())); in visitMemTransferInst()
2955 DFSF.DFS.DFSanMemTransferCallbackFn, in visitMemTransferInst()
2956 {DestShadow, IRB.CreateZExtOrTrunc(I.getLength(), DFSF.DFS.IntptrTy)}); in visitMemTransferInst()
2964 DFSF.addConditionalCallbacksIfEnabled(BR, BR.getCondition()); in visitBranchInst()
2968 DFSF.addConditionalCallbacksIfEnabled(SW, SW.getCondition()); in visitSwitchInst()
2983 if (!DFSF.IsNativeABI && RI.getReturnValue()) { in visitReturnInst()
2988 Value *S = DFSF.getShadow(RI.getReturnValue()); in visitReturnInst()
2990 Type *RT = DFSF.F->getFunctionType()->getReturnType(); in visitReturnInst()
2991 unsigned Size = getDataLayout().getTypeAllocSize(DFSF.DFS.getShadowTy(RT)); in visitReturnInst()
2995 IRB.CreateAlignedStore(S, DFSF.getRetvalTLS(RT, IRB), ShadowTLSAlignment); in visitReturnInst()
2997 if (DFSF.DFS.shouldTrackOrigins()) { in visitReturnInst()
2998 Value *O = DFSF.getOrigin(RI.getReturnValue()); in visitReturnInst()
2999 IRB.CreateStore(O, DFSF.getRetvalOriginTLS()); in visitReturnInst()
3014 DFSF.collapseToPrimitiveShadow(DFSF.getShadow(*I), CB.getIterator())); in addShadowArguments()
3018 auto *LabelVATy = ArrayType::get(DFSF.DFS.PrimitiveShadowTy, in addShadowArguments()
3022 "labelva", DFSF.F->getEntryBlock().begin()); in addShadowArguments()
3027 DFSF.collapseToPrimitiveShadow(DFSF.getShadow(*I), CB.getIterator()), in addShadowArguments()
3036 if (!DFSF.LabelReturnAlloca) { in addShadowArguments()
3037 DFSF.LabelReturnAlloca = new AllocaInst( in addShadowArguments()
3038 DFSF.DFS.PrimitiveShadowTy, getDataLayout().getAllocaAddrSpace(), in addShadowArguments()
3039 "labelreturn", DFSF.F->getEntryBlock().begin()); in addShadowArguments()
3041 Args.push_back(DFSF.LabelReturnAlloca); in addShadowArguments()
3054 Args.push_back(DFSF.getOrigin(*I)); in addOriginArguments()
3059 ArrayType::get(DFSF.DFS.OriginTy, CB.arg_size() - FT->getNumParams()); in addOriginArguments()
3062 "originva", DFSF.F->getEntryBlock().begin()); in addOriginArguments()
3066 IRB.CreateStore(DFSF.getOrigin(*I), OriginVAPtr); in addOriginArguments()
3074 if (!DFSF.OriginReturnAlloca) { in addOriginArguments()
3075 DFSF.OriginReturnAlloca = new AllocaInst( in addOriginArguments()
3076 DFSF.DFS.OriginTy, getDataLayout().getAllocaAddrSpace(), in addOriginArguments()
3077 "originreturn", DFSF.F->getEntryBlock().begin()); in addOriginArguments()
3079 Args.push_back(DFSF.OriginReturnAlloca); in addOriginArguments()
3085 switch (DFSF.DFS.getWrapperKind(&F)) { in visitWrappedCallBase()
3088 IRB.CreateCall(DFSF.DFS.DFSanUnimplementedFn, in visitWrappedCallBase()
3090 DFSF.DFS.buildExternWeakCheckIfNeeded(IRB, &F); in visitWrappedCallBase()
3091 DFSF.setShadow(&CB, DFSF.DFS.getZeroShadow(&CB)); in visitWrappedCallBase()
3092 DFSF.setOrigin(&CB, DFSF.DFS.ZeroOrigin); in visitWrappedCallBase()
3096 DFSF.DFS.buildExternWeakCheckIfNeeded(IRB, &F); in visitWrappedCallBase()
3097 DFSF.setShadow(&CB, DFSF.DFS.getZeroShadow(&CB)); in visitWrappedCallBase()
3098 DFSF.setOrigin(&CB, DFSF.DFS.ZeroOrigin); in visitWrappedCallBase()
3102 DFSF.DFS.buildExternWeakCheckIfNeeded(IRB, &F); in visitWrappedCallBase()
3113 const bool ShouldTrackOrigins = DFSF.DFS.shouldTrackOrigins(); in visitWrappedCallBase()
3115 TransformedFunction CustomFn = DFSF.DFS.getCustomFunctionType(FT); in visitWrappedCallBase()
3118 FunctionCallee CustomF = DFSF.DFS.Mod->getOrInsertFunction( in visitWrappedCallBase()
3125 CustomFn->removeFnAttrs(DFSF.DFS.ReadOnlyNoneAttrs); in visitWrappedCallBase()
3160 DFSF.DFS.PrimitiveShadowTy) in visitWrappedCallBase()
3165 DFSF.DFS.OriginTy) in visitWrappedCallBase()
3173 IRB.CreateLoad(DFSF.DFS.PrimitiveShadowTy, DFSF.LabelReturnAlloca); in visitWrappedCallBase()
3174 DFSF.setShadow(CustomCI, in visitWrappedCallBase()
3175 DFSF.expandFromPrimitiveShadow( in visitWrappedCallBase()
3179 IRB.CreateLoad(DFSF.DFS.OriginTy, DFSF.OriginReturnAlloca); in visitWrappedCallBase()
3180 DFSF.setOrigin(CustomCI, OriginLoad); in visitWrappedCallBase()
3230 DFSF.DFS.DFSanMemShadowOriginTransferFn, in visitLibAtomicLoad()
3231 {DstPtr, SrcPtr, NextIRB.CreateIntCast(Size, DFSF.DFS.IntptrTy, false)}); in visitLibAtomicLoad()
3267 DFSF.DFS.DFSanMemShadowOriginTransferFn, in visitLibAtomicStore()
3268 {DstPtr, SrcPtr, IRB.CreateIntCast(Size, DFSF.DFS.IntptrTy, false)}); in visitLibAtomicStore()
3287 DFSF.DFS.DFSanMemShadowOriginTransferFn, in visitLibAtomicExchange()
3288 {DstPtr, TargetPtr, IRB.CreateIntCast(Size, DFSF.DFS.IntptrTy, false)}); in visitLibAtomicExchange()
3292 DFSF.DFS.DFSanMemShadowOriginTransferFn, in visitLibAtomicExchange()
3293 {TargetPtr, SrcPtr, IRB.CreateIntCast(Size, DFSF.DFS.IntptrTy, false)}); in visitLibAtomicExchange()
3312 DFSF.setShadow(&CB, DFSF.DFS.getZeroShadow(&CB)); in visitLibAtomicCompareExchange()
3316 NextIRB.CreateCall(DFSF.DFS.DFSanMemShadowOriginConditionalExchangeFn, in visitLibAtomicCompareExchange()
3319 NextIRB.CreateIntCast(Size, DFSF.DFS.IntptrTy, false)}); in visitLibAtomicCompareExchange()
3331 if (F == DFSF.DFS.DFSanVarargWrapperFn.getCallee()->stripPointerCasts()) in visitCallBase()
3335 if (DFSF.TLI.getLibFunc(CB, LF)) { in visitCallBase()
3369 DFSF.DFS.UnwrappedFnMap.find(CB.getCalledOperand()); in visitCallBase()
3370 if (UnwrappedFnIt != DFSF.DFS.UnwrappedFnMap.end()) in visitCallBase()
3376 const bool ShouldTrackOrigins = DFSF.DFS.shouldTrackOrigins(); in visitCallBase()
3385 Value *ArgShadow = DFSF.getShadow(CB.getArgOperand(I)); in visitCallBase()
3386 if (I < DFSF.DFS.NumOfElementsInArgOrgTLS && in visitCallBase()
3387 !DFSF.DFS.isZeroShadow(ArgShadow)) in visitCallBase()
3388 IRB.CreateStore(DFSF.getOrigin(CB.getArgOperand(I)), in visitCallBase()
3389 DFSF.getArgOriginTLS(I, IRB)); in visitCallBase()
3393 DL.getTypeAllocSize(DFSF.DFS.getShadowTy(FT->getParamType(I))); in visitCallBase()
3398 IRB.CreateAlignedStore(DFSF.getShadow(CB.getArgOperand(I)), in visitCallBase()
3399 DFSF.getArgTLS(FT->getParamType(I), ArgOffset, IRB), in visitCallBase()
3411 SplitEdge(II->getParent(), II->getNormalDest(), &DFSF.DT); in visitCallBase()
3425 unsigned Size = DL.getTypeAllocSize(DFSF.DFS.getShadowTy(&CB)); in visitCallBase()
3428 DFSF.setShadow(&CB, DFSF.DFS.getZeroShadow(&CB)); in visitCallBase()
3431 DFSF.DFS.getShadowTy(&CB), DFSF.getRetvalTLS(CB.getType(), NextIRB), in visitCallBase()
3433 DFSF.SkipInsts.insert(LI); in visitCallBase()
3434 DFSF.setShadow(&CB, LI); in visitCallBase()
3435 DFSF.NonZeroChecks.push_back(LI); in visitCallBase()
3439 LoadInst *LI = NextIRB.CreateLoad(DFSF.DFS.OriginTy, in visitCallBase()
3440 DFSF.getRetvalOriginTLS(), "_dfsret_o"); in visitCallBase()
3441 DFSF.SkipInsts.insert(LI); in visitCallBase()
3442 DFSF.setOrigin(&CB, LI); in visitCallBase()
3445 DFSF.addReachesFunctionCallbacksIfEnabled(NextIRB, CB, &CB); in visitCallBase()
3450 Type *ShadowTy = DFSF.DFS.getShadowTy(&PN); in visitPHINode()
3459 DFSF.setShadow(&PN, ShadowPN); in visitPHINode()
3462 if (DFSF.DFS.shouldTrackOrigins()) { in visitPHINode()
3463 OriginPN = PHINode::Create(DFSF.DFS.OriginTy, PN.getNumIncomingValues(), "", in visitPHINode()
3465 Value *UndefOrigin = UndefValue::get(DFSF.DFS.OriginTy); in visitPHINode()
3468 DFSF.setOrigin(&PN, OriginPN); in visitPHINode()
3471 DFSF.PHIFixups.push_back({&PN, ShadowPN, OriginPN}); in visitPHINode()