Lines Matching refs:DFSF

783   DFSanFunction &DFSF;  member in __anonf4f619120211::DFSanVisitor
785 DFSanVisitor(DFSanFunction &DFSF) : DFSF(DFSF) {} in DFSanVisitor() argument
788 return DFSF.F->getParent()->getDataLayout(); in getDataLayout()
1692 DFSanFunction DFSF(*this, F, FnsWithNativeABI.count(F), in runImpl() local
1699 Value *FArgShadow = DFSF.getShadow(&FArg); in runImpl()
1707 dyn_cast<Instruction>(DFSF.getOrigin(&FArg))) { in runImpl()
1716 DFSF.addReachesFunctionCallbacksIfEnabled(IRB, *Next, &FArg); in runImpl()
1734 if (!DFSF.SkipInsts.count(Inst)) in runImpl()
1735 DFSanVisitor(DFSF).visit(Inst); in runImpl()
1746 for (DFSanFunction::PHIFixupElement &P : DFSF.PHIFixups) { in runImpl()
1750 Val, DFSF.getShadow(P.Phi->getIncomingValue(Val))); in runImpl()
1753 Val, DFSF.getOrigin(P.Phi->getIncomingValue(Val))); in runImpl()
1762 for (Value *V : DFSF.NonZeroChecks) { in runImpl()
1767 Pos = &DFSF.F->getEntryBlock().front(); in runImpl()
1771 Value *PrimitiveShadow = DFSF.collapseToPrimitiveShadow(V, Pos); in runImpl()
1773 IRB.CreateICmpNE(PrimitiveShadow, DFSF.DFS.ZeroPrimitiveShadow); in runImpl()
1777 ThenIRB.CreateCall(DFSF.DFS.DFSanNonzeroLabelFn, {}); in runImpl()
2040 Value *CombinedShadow = DFSF.combineOperandShadows(&I); in visitInstOperands()
2041 DFSF.setShadow(&I, CombinedShadow); in visitInstOperands()
2085 if (!DFSF.DFS.shouldTrackOrigins()) in visitInstOperandOrigins()
2087 Value *CombinedOrigin = DFSF.combineOperandOrigins(&I); in visitInstOperandOrigins()
2088 DFSF.setOrigin(&I, CombinedOrigin); in visitInstOperandOrigins()
2387 DFSF.setShadow(&LI, DFSF.DFS.getZeroShadow(&LI)); in visitLoadInst()
2388 DFSF.setOrigin(&LI, DFSF.DFS.ZeroOrigin); in visitLoadInst()
2406 DFSF.loadShadowOrigin(LI.getPointerOperand(), Size, LI.getAlign(), Pos); in visitLoadInst()
2407 const bool ShouldTrackOrigins = DFSF.DFS.shouldTrackOrigins(); in visitLoadInst()
2413 DFSF.isLookupTableConstant( in visitLoadInst()
2415 Value *PtrShadow = DFSF.getShadow(LI.getPointerOperand()); in visitLoadInst()
2416 PrimitiveShadow = DFSF.combineShadows(PrimitiveShadow, PtrShadow, Pos); in visitLoadInst()
2419 Origins.push_back(DFSF.getOrigin(LI.getPointerOperand())); in visitLoadInst()
2422 if (!DFSF.DFS.isZeroShadow(PrimitiveShadow)) in visitLoadInst()
2423 DFSF.NonZeroChecks.push_back(PrimitiveShadow); in visitLoadInst()
2426 DFSF.expandFromPrimitiveShadow(LI.getType(), PrimitiveShadow, Pos); in visitLoadInst()
2427 DFSF.setShadow(&LI, Shadow); in visitLoadInst()
2430 DFSF.setOrigin(&LI, DFSF.combineOrigins(Shadows, Origins, Pos)); in visitLoadInst()
2437 IRB.CreateCall(DFSF.DFS.DFSanLoadCallbackFn, {PrimitiveShadow, Addr}); in visitLoadInst()
2442 DFSF.addReachesFunctionCallbacksIfEnabled(IRB, LI, &LI); in visitLoadInst()
2663 DFSF.DFS.shouldTrackOrigins() && !SI.isAtomic(); in visitStoreInst()
2668 SI.isAtomic() ? DFSF.DFS.getZeroShadow(Val) : DFSF.getShadow(Val); in visitStoreInst()
2672 Origins.push_back(DFSF.getOrigin(Val)); in visitStoreInst()
2677 Value *PtrShadow = DFSF.getShadow(SI.getPointerOperand()); in visitStoreInst()
2680 Origins.push_back(DFSF.getOrigin(SI.getPointerOperand())); in visitStoreInst()
2682 PrimitiveShadow = DFSF.combineShadows(Shadow, PtrShadow, &SI); in visitStoreInst()
2684 PrimitiveShadow = DFSF.collapseToPrimitiveShadow(Shadow, &SI); in visitStoreInst()
2688 Origin = DFSF.combineOrigins(Shadows, Origins, &SI); in visitStoreInst()
2689 DFSF.storePrimitiveShadowOrigin(SI.getPointerOperand(), Size, SI.getAlign(), in visitStoreInst()
2695 IRB.CreateCall(DFSF.DFS.DFSanStoreCallbackFn, {PrimitiveShadow, Addr}); in visitStoreInst()
2713 const Align ShadowAlign = DFSF.getShadowAlign(InstAlignment); in visitCASOrRMW()
2714 DFSF.storeZeroPrimitiveShadow(Addr, Size, ShadowAlign, &I); in visitCASOrRMW()
2715 DFSF.setShadow(&I, DFSF.DFS.getZeroShadow(&I)); in visitCASOrRMW()
2716 DFSF.setOrigin(&I, DFSF.DFS.ZeroOrigin); in visitCASOrRMW()
2757 Value *CombinedShadow = DFSF.getShadow(&CI); in visitCmpInst()
2759 IRB.CreateCall(DFSF.DFS.DFSanCmpCallbackFn, CombinedShadow); in visitCmpInst()
2776 DFSF.setShadow(&LPI, DFSF.DFS.getZeroShadow(&LPI)); in visitLandingPadInst()
2777 DFSF.setOrigin(&LPI, DFSF.DFS.ZeroOrigin); in visitLandingPadInst()
2782 DFSF.isLookupTableConstant( in visitGetElementPtrInst()
2791 DFSF.setShadow(&GEPI, DFSF.getShadow(BasePointer)); in visitGetElementPtrInst()
2792 if (DFSF.DFS.shouldTrackOrigins()) in visitGetElementPtrInst()
2793 DFSF.setOrigin(&GEPI, DFSF.getOrigin(BasePointer)); in visitGetElementPtrInst()
2811 Value *AggShadow = DFSF.getShadow(Agg); in visitExtractValueInst()
2813 DFSF.setShadow(&I, ResShadow); in visitExtractValueInst()
2819 Value *AggShadow = DFSF.getShadow(I.getAggregateOperand()); in visitInsertValueInst()
2820 Value *InsShadow = DFSF.getShadow(I.getInsertedValueOperand()); in visitInsertValueInst()
2822 DFSF.setShadow(&I, Res); in visitInsertValueInst()
2842 DFSF.AllocaShadowMap[&I] = IRB.CreateAlloca(DFSF.DFS.PrimitiveShadowTy); in visitAllocaInst()
2843 if (DFSF.DFS.shouldTrackOrigins()) { in visitAllocaInst()
2844 DFSF.AllocaOriginMap[&I] = in visitAllocaInst()
2845 IRB.CreateAlloca(DFSF.DFS.OriginTy, nullptr, "_dfsa"); in visitAllocaInst()
2848 DFSF.setShadow(&I, DFSF.DFS.ZeroPrimitiveShadow); in visitAllocaInst()
2849 DFSF.setOrigin(&I, DFSF.DFS.ZeroOrigin); in visitAllocaInst()
2853 Value *CondShadow = DFSF.getShadow(I.getCondition()); in visitSelectInst()
2854 Value *TrueShadow = DFSF.getShadow(I.getTrueValue()); in visitSelectInst()
2855 Value *FalseShadow = DFSF.getShadow(I.getFalseValue()); in visitSelectInst()
2857 const bool ShouldTrackOrigins = DFSF.DFS.shouldTrackOrigins(); in visitSelectInst()
2861 ShouldTrackOrigins ? DFSF.getOrigin(I.getTrueValue()) : nullptr; in visitSelectInst()
2863 ShouldTrackOrigins ? DFSF.getOrigin(I.getFalseValue()) : nullptr; in visitSelectInst()
2865 DFSF.addConditionalCallbacksIfEnabled(I, I.getCondition()); in visitSelectInst()
2868 ShadowSel = DFSF.combineShadowsThenConvert(I.getType(), TrueShadow, in visitSelectInst()
2893 DFSF.setShadow(&I, ClTrackSelectControlFlow in visitSelectInst()
2894 ? DFSF.combineShadowsThenConvert( in visitSelectInst()
2900 Origins.push_back(DFSF.getOrigin(I.getCondition())); in visitSelectInst()
2902 DFSF.setOrigin(&I, DFSF.combineOrigins(Shadows, Origins, &I)); in visitSelectInst()
2908 Value *ValShadow = DFSF.getShadow(I.getValue()); in visitMemSetInst()
2909 Value *ValOrigin = DFSF.DFS.shouldTrackOrigins() in visitMemSetInst()
2910 ? DFSF.getOrigin(I.getValue()) in visitMemSetInst()
2911 : DFSF.DFS.ZeroOrigin; in visitMemSetInst()
2912 IRB.CreateCall(DFSF.DFS.DFSanSetLabelFn, in visitMemSetInst()
2914 IRB.CreateZExtOrTrunc(I.getLength(), DFSF.DFS.IntptrTy)}); in visitMemSetInst()
2922 if (DFSF.DFS.shouldTrackOrigins()) { in visitMemTransferInst()
2924 DFSF.DFS.DFSanMemOriginTransferFn, in visitMemTransferInst()
2926 IRB.CreateIntCast(I.getArgOperand(2), DFSF.DFS.IntptrTy, false)}); in visitMemTransferInst()
2929 Value *DestShadow = DFSF.DFS.getShadowAddress(I.getDest(), &I); in visitMemTransferInst()
2930 Value *SrcShadow = DFSF.DFS.getShadowAddress(I.getSource(), &I); in visitMemTransferInst()
2933 DFSF.DFS.ShadowWidthBytes)); in visitMemTransferInst()
2937 MTI->setDestAlignment(DFSF.getShadowAlign(I.getDestAlign().valueOrOne())); in visitMemTransferInst()
2938 MTI->setSourceAlignment(DFSF.getShadowAlign(I.getSourceAlign().valueOrOne())); in visitMemTransferInst()
2941 DFSF.DFS.DFSanMemTransferCallbackFn, in visitMemTransferInst()
2942 {DestShadow, IRB.CreateZExtOrTrunc(I.getLength(), DFSF.DFS.IntptrTy)}); in visitMemTransferInst()
2950 DFSF.addConditionalCallbacksIfEnabled(BR, BR.getCondition()); in visitBranchInst()
2954 DFSF.addConditionalCallbacksIfEnabled(SW, SW.getCondition()); in visitSwitchInst()
2969 if (!DFSF.IsNativeABI && RI.getReturnValue()) { in visitReturnInst()
2974 Value *S = DFSF.getShadow(RI.getReturnValue()); in visitReturnInst()
2976 Type *RT = DFSF.F->getFunctionType()->getReturnType(); in visitReturnInst()
2977 unsigned Size = getDataLayout().getTypeAllocSize(DFSF.DFS.getShadowTy(RT)); in visitReturnInst()
2981 IRB.CreateAlignedStore(S, DFSF.getRetvalTLS(RT, IRB), ShadowTLSAlignment); in visitReturnInst()
2983 if (DFSF.DFS.shouldTrackOrigins()) { in visitReturnInst()
2984 Value *O = DFSF.getOrigin(RI.getReturnValue()); in visitReturnInst()
2985 IRB.CreateStore(O, DFSF.getRetvalOriginTLS()); in visitReturnInst()
2999 Args.push_back(DFSF.collapseToPrimitiveShadow(DFSF.getShadow(*I), &CB)); in addShadowArguments()
3003 auto *LabelVATy = ArrayType::get(DFSF.DFS.PrimitiveShadowTy, in addShadowArguments()
3007 "labelva", &DFSF.F->getEntryBlock().front()); in addShadowArguments()
3011 IRB.CreateStore(DFSF.collapseToPrimitiveShadow(DFSF.getShadow(*I), &CB), in addShadowArguments()
3020 if (!DFSF.LabelReturnAlloca) { in addShadowArguments()
3021 DFSF.LabelReturnAlloca = new AllocaInst( in addShadowArguments()
3022 DFSF.DFS.PrimitiveShadowTy, getDataLayout().getAllocaAddrSpace(), in addShadowArguments()
3023 "labelreturn", &DFSF.F->getEntryBlock().front()); in addShadowArguments()
3025 Args.push_back(DFSF.LabelReturnAlloca); in addShadowArguments()
3038 Args.push_back(DFSF.getOrigin(*I)); in addOriginArguments()
3043 ArrayType::get(DFSF.DFS.OriginTy, CB.arg_size() - FT->getNumParams()); in addOriginArguments()
3046 "originva", &DFSF.F->getEntryBlock().front()); in addOriginArguments()
3050 IRB.CreateStore(DFSF.getOrigin(*I), OriginVAPtr); in addOriginArguments()
3058 if (!DFSF.OriginReturnAlloca) { in addOriginArguments()
3059 DFSF.OriginReturnAlloca = new AllocaInst( in addOriginArguments()
3060 DFSF.DFS.OriginTy, getDataLayout().getAllocaAddrSpace(), in addOriginArguments()
3061 "originreturn", &DFSF.F->getEntryBlock().front()); in addOriginArguments()
3063 Args.push_back(DFSF.OriginReturnAlloca); in addOriginArguments()
3069 switch (DFSF.DFS.getWrapperKind(&F)) { in visitWrappedCallBase()
3072 IRB.CreateCall(DFSF.DFS.DFSanUnimplementedFn, in visitWrappedCallBase()
3074 DFSF.DFS.buildExternWeakCheckIfNeeded(IRB, &F); in visitWrappedCallBase()
3075 DFSF.setShadow(&CB, DFSF.DFS.getZeroShadow(&CB)); in visitWrappedCallBase()
3076 DFSF.setOrigin(&CB, DFSF.DFS.ZeroOrigin); in visitWrappedCallBase()
3080 DFSF.DFS.buildExternWeakCheckIfNeeded(IRB, &F); in visitWrappedCallBase()
3081 DFSF.setShadow(&CB, DFSF.DFS.getZeroShadow(&CB)); in visitWrappedCallBase()
3082 DFSF.setOrigin(&CB, DFSF.DFS.ZeroOrigin); in visitWrappedCallBase()
3086 DFSF.DFS.buildExternWeakCheckIfNeeded(IRB, &F); in visitWrappedCallBase()
3097 const bool ShouldTrackOrigins = DFSF.DFS.shouldTrackOrigins(); in visitWrappedCallBase()
3099 TransformedFunction CustomFn = DFSF.DFS.getCustomFunctionType(FT); in visitWrappedCallBase()
3102 FunctionCallee CustomF = DFSF.DFS.Mod->getOrInsertFunction( in visitWrappedCallBase()
3109 CustomFn->removeFnAttrs(DFSF.DFS.ReadOnlyNoneAttrs); in visitWrappedCallBase()
3144 DFSF.DFS.PrimitiveShadowTy) in visitWrappedCallBase()
3149 DFSF.DFS.OriginTy) in visitWrappedCallBase()
3157 IRB.CreateLoad(DFSF.DFS.PrimitiveShadowTy, DFSF.LabelReturnAlloca); in visitWrappedCallBase()
3158 DFSF.setShadow(CustomCI, DFSF.expandFromPrimitiveShadow( in visitWrappedCallBase()
3162 IRB.CreateLoad(DFSF.DFS.OriginTy, DFSF.OriginReturnAlloca); in visitWrappedCallBase()
3163 DFSF.setOrigin(CustomCI, OriginLoad); in visitWrappedCallBase()
3214 DFSF.DFS.DFSanMemShadowOriginTransferFn, in visitLibAtomicLoad()
3215 {DstPtr, SrcPtr, NextIRB.CreateIntCast(Size, DFSF.DFS.IntptrTy, false)}); in visitLibAtomicLoad()
3252 DFSF.DFS.DFSanMemShadowOriginTransferFn, in visitLibAtomicStore()
3253 {DstPtr, SrcPtr, IRB.CreateIntCast(Size, DFSF.DFS.IntptrTy, false)}); in visitLibAtomicStore()
3272 DFSF.DFS.DFSanMemShadowOriginTransferFn, in visitLibAtomicExchange()
3273 {DstPtr, TargetPtr, IRB.CreateIntCast(Size, DFSF.DFS.IntptrTy, false)}); in visitLibAtomicExchange()
3277 DFSF.DFS.DFSanMemShadowOriginTransferFn, in visitLibAtomicExchange()
3278 {TargetPtr, SrcPtr, IRB.CreateIntCast(Size, DFSF.DFS.IntptrTy, false)}); in visitLibAtomicExchange()
3297 DFSF.setShadow(&CB, DFSF.DFS.getZeroShadow(&CB)); in visitLibAtomicCompareExchange()
3301 NextIRB.CreateCall(DFSF.DFS.DFSanMemShadowOriginConditionalExchangeFn, in visitLibAtomicCompareExchange()
3304 NextIRB.CreateIntCast(Size, DFSF.DFS.IntptrTy, false)}); in visitLibAtomicCompareExchange()
3316 if (F == DFSF.DFS.DFSanVarargWrapperFn.getCallee()->stripPointerCasts()) in visitCallBase()
3320 if (DFSF.TLI.getLibFunc(CB, LF)) { in visitCallBase()
3354 DFSF.DFS.UnwrappedFnMap.find(CB.getCalledOperand()); in visitCallBase()
3355 if (UnwrappedFnIt != DFSF.DFS.UnwrappedFnMap.end()) in visitCallBase()
3361 const bool ShouldTrackOrigins = DFSF.DFS.shouldTrackOrigins(); in visitCallBase()
3370 Value *ArgShadow = DFSF.getShadow(CB.getArgOperand(I)); in visitCallBase()
3371 if (I < DFSF.DFS.NumOfElementsInArgOrgTLS && in visitCallBase()
3372 !DFSF.DFS.isZeroShadow(ArgShadow)) in visitCallBase()
3373 IRB.CreateStore(DFSF.getOrigin(CB.getArgOperand(I)), in visitCallBase()
3374 DFSF.getArgOriginTLS(I, IRB)); in visitCallBase()
3378 DL.getTypeAllocSize(DFSF.DFS.getShadowTy(FT->getParamType(I))); in visitCallBase()
3383 IRB.CreateAlignedStore(DFSF.getShadow(CB.getArgOperand(I)), in visitCallBase()
3384 DFSF.getArgTLS(FT->getParamType(I), ArgOffset, IRB), in visitCallBase()
3396 SplitEdge(II->getParent(), II->getNormalDest(), &DFSF.DT); in visitCallBase()
3410 unsigned Size = DL.getTypeAllocSize(DFSF.DFS.getShadowTy(&CB)); in visitCallBase()
3413 DFSF.setShadow(&CB, DFSF.DFS.getZeroShadow(&CB)); in visitCallBase()
3416 DFSF.DFS.getShadowTy(&CB), DFSF.getRetvalTLS(CB.getType(), NextIRB), in visitCallBase()
3418 DFSF.SkipInsts.insert(LI); in visitCallBase()
3419 DFSF.setShadow(&CB, LI); in visitCallBase()
3420 DFSF.NonZeroChecks.push_back(LI); in visitCallBase()
3424 LoadInst *LI = NextIRB.CreateLoad(DFSF.DFS.OriginTy, in visitCallBase()
3425 DFSF.getRetvalOriginTLS(), "_dfsret_o"); in visitCallBase()
3426 DFSF.SkipInsts.insert(LI); in visitCallBase()
3427 DFSF.setOrigin(&CB, LI); in visitCallBase()
3430 DFSF.addReachesFunctionCallbacksIfEnabled(NextIRB, CB, &CB); in visitCallBase()
3435 Type *ShadowTy = DFSF.DFS.getShadowTy(&PN); in visitPHINode()
3444 DFSF.setShadow(&PN, ShadowPN); in visitPHINode()
3447 if (DFSF.DFS.shouldTrackOrigins()) { in visitPHINode()
3449 PHINode::Create(DFSF.DFS.OriginTy, PN.getNumIncomingValues(), "", &PN); in visitPHINode()
3450 Value *UndefOrigin = UndefValue::get(DFSF.DFS.OriginTy); in visitPHINode()
3453 DFSF.setOrigin(&PN, OriginPN); in visitPHINode()
3456 DFSF.PHIFixups.push_back({&PN, ShadowPN, OriginPN}); in visitPHINode()