Lines Matching refs:DFSF

743   DFSanFunction &DFSF;  member in __anonc1e0408c0211::DFSanVisitor
745 DFSanVisitor(DFSanFunction &DFSF) : DFSF(DFSF) {} in DFSanVisitor() argument
748 return DFSF.F->getParent()->getDataLayout(); in getDataLayout()
1527 DFSanFunction DFSF(*this, F, FnsWithNativeABI.count(F), in runImpl() local
1544 if (!DFSF.SkipInsts.count(Inst)) in runImpl()
1545 DFSanVisitor(DFSF).visit(Inst); in runImpl()
1556 for (DFSanFunction::PHIFixupElement &P : DFSF.PHIFixups) { in runImpl()
1560 Val, DFSF.getShadow(P.Phi->getIncomingValue(Val))); in runImpl()
1563 Val, DFSF.getOrigin(P.Phi->getIncomingValue(Val))); in runImpl()
1572 for (Value *V : DFSF.NonZeroChecks) { in runImpl()
1577 Pos = &DFSF.F->getEntryBlock().front(); in runImpl()
1581 Value *PrimitiveShadow = DFSF.collapseToPrimitiveShadow(V, Pos); in runImpl()
1583 IRB.CreateICmpNE(PrimitiveShadow, DFSF.DFS.ZeroPrimitiveShadow); in runImpl()
1587 ThenIRB.CreateCall(DFSF.DFS.DFSanNonzeroLabelFn, {}); in runImpl()
1850 Value *CombinedShadow = DFSF.combineOperandShadows(&I); in visitInstOperands()
1851 DFSF.setShadow(&I, CombinedShadow); in visitInstOperands()
1895 if (!DFSF.DFS.shouldTrackOrigins()) in visitInstOperandOrigins()
1897 Value *CombinedOrigin = DFSF.combineOperandOrigins(&I); in visitInstOperandOrigins()
1898 DFSF.setOrigin(&I, CombinedOrigin); in visitInstOperandOrigins()
2199 DFSF.setShadow(&LI, DFSF.DFS.getZeroShadow(&LI)); in visitLoadInst()
2200 DFSF.setOrigin(&LI, DFSF.DFS.ZeroOrigin); in visitLoadInst()
2217 DFSF.loadShadowOrigin(LI.getPointerOperand(), Size, LI.getAlign(), Pos); in visitLoadInst()
2218 const bool ShouldTrackOrigins = DFSF.DFS.shouldTrackOrigins(); in visitLoadInst()
2224 DFSF.isLookupTableConstant( in visitLoadInst()
2226 Value *PtrShadow = DFSF.getShadow(LI.getPointerOperand()); in visitLoadInst()
2227 PrimitiveShadow = DFSF.combineShadows(PrimitiveShadow, PtrShadow, Pos); in visitLoadInst()
2230 Origins.push_back(DFSF.getOrigin(LI.getPointerOperand())); in visitLoadInst()
2233 if (!DFSF.DFS.isZeroShadow(PrimitiveShadow)) in visitLoadInst()
2234 DFSF.NonZeroChecks.push_back(PrimitiveShadow); in visitLoadInst()
2237 DFSF.expandFromPrimitiveShadow(LI.getType(), PrimitiveShadow, Pos); in visitLoadInst()
2238 DFSF.setShadow(&LI, Shadow); in visitLoadInst()
2241 DFSF.setOrigin(&LI, DFSF.combineOrigins(Shadows, Origins, Pos)); in visitLoadInst()
2246 Value *Addr8 = IRB.CreateBitCast(LI.getPointerOperand(), DFSF.DFS.Int8Ptr); in visitLoadInst()
2247 IRB.CreateCall(DFSF.DFS.DFSanLoadCallbackFn, {PrimitiveShadow, Addr8}); in visitLoadInst()
2473 DFSF.DFS.shouldTrackOrigins() && !SI.isAtomic(); in visitStoreInst()
2478 SI.isAtomic() ? DFSF.DFS.getZeroShadow(Val) : DFSF.getShadow(Val); in visitStoreInst()
2482 Origins.push_back(DFSF.getOrigin(Val)); in visitStoreInst()
2487 Value *PtrShadow = DFSF.getShadow(SI.getPointerOperand()); in visitStoreInst()
2490 Origins.push_back(DFSF.getOrigin(SI.getPointerOperand())); in visitStoreInst()
2492 PrimitiveShadow = DFSF.combineShadows(Shadow, PtrShadow, &SI); in visitStoreInst()
2494 PrimitiveShadow = DFSF.collapseToPrimitiveShadow(Shadow, &SI); in visitStoreInst()
2498 Origin = DFSF.combineOrigins(Shadows, Origins, &SI); in visitStoreInst()
2499 DFSF.storePrimitiveShadowOrigin(SI.getPointerOperand(), Size, SI.getAlign(), in visitStoreInst()
2503 Value *Addr8 = IRB.CreateBitCast(SI.getPointerOperand(), DFSF.DFS.Int8Ptr); in visitStoreInst()
2504 IRB.CreateCall(DFSF.DFS.DFSanStoreCallbackFn, {PrimitiveShadow, Addr8}); in visitStoreInst()
2521 const Align ShadowAlign = DFSF.getShadowAlign(InstAlignment); in visitCASOrRMW()
2522 DFSF.storeZeroPrimitiveShadow(Addr, Size, ShadowAlign, &I); in visitCASOrRMW()
2523 DFSF.setShadow(&I, DFSF.DFS.getZeroShadow(&I)); in visitCASOrRMW()
2524 DFSF.setOrigin(&I, DFSF.DFS.ZeroOrigin); in visitCASOrRMW()
2565 Value *CombinedShadow = DFSF.getShadow(&CI); in visitCmpInst()
2566 IRB.CreateCall(DFSF.DFS.DFSanCmpCallbackFn, CombinedShadow); in visitCmpInst()
2582 DFSF.setShadow(&LPI, DFSF.DFS.getZeroShadow(&LPI)); in visitLandingPadInst()
2583 DFSF.setOrigin(&LPI, DFSF.DFS.ZeroOrigin); in visitLandingPadInst()
2588 DFSF.isLookupTableConstant( in visitGetElementPtrInst()
2597 DFSF.setShadow(&GEPI, DFSF.getShadow(BasePointer)); in visitGetElementPtrInst()
2598 if (DFSF.DFS.shouldTrackOrigins()) in visitGetElementPtrInst()
2599 DFSF.setOrigin(&GEPI, DFSF.getOrigin(BasePointer)); in visitGetElementPtrInst()
2617 Value *AggShadow = DFSF.getShadow(Agg); in visitExtractValueInst()
2619 DFSF.setShadow(&I, ResShadow); in visitExtractValueInst()
2625 Value *AggShadow = DFSF.getShadow(I.getAggregateOperand()); in visitInsertValueInst()
2626 Value *InsShadow = DFSF.getShadow(I.getInsertedValueOperand()); in visitInsertValueInst()
2628 DFSF.setShadow(&I, Res); in visitInsertValueInst()
2648 DFSF.AllocaShadowMap[&I] = IRB.CreateAlloca(DFSF.DFS.PrimitiveShadowTy); in visitAllocaInst()
2649 if (DFSF.DFS.shouldTrackOrigins()) { in visitAllocaInst()
2650 DFSF.AllocaOriginMap[&I] = in visitAllocaInst()
2651 IRB.CreateAlloca(DFSF.DFS.OriginTy, nullptr, "_dfsa"); in visitAllocaInst()
2654 DFSF.setShadow(&I, DFSF.DFS.ZeroPrimitiveShadow); in visitAllocaInst()
2655 DFSF.setOrigin(&I, DFSF.DFS.ZeroOrigin); in visitAllocaInst()
2659 Value *CondShadow = DFSF.getShadow(I.getCondition()); in visitSelectInst()
2660 Value *TrueShadow = DFSF.getShadow(I.getTrueValue()); in visitSelectInst()
2661 Value *FalseShadow = DFSF.getShadow(I.getFalseValue()); in visitSelectInst()
2663 const bool ShouldTrackOrigins = DFSF.DFS.shouldTrackOrigins(); in visitSelectInst()
2667 ShouldTrackOrigins ? DFSF.getOrigin(I.getTrueValue()) : nullptr; in visitSelectInst()
2669 ShouldTrackOrigins ? DFSF.getOrigin(I.getFalseValue()) : nullptr; in visitSelectInst()
2671 DFSF.addConditionalCallbacksIfEnabled(I, I.getCondition()); in visitSelectInst()
2674 ShadowSel = DFSF.combineShadowsThenConvert(I.getType(), TrueShadow, in visitSelectInst()
2699 DFSF.setShadow(&I, ClTrackSelectControlFlow in visitSelectInst()
2700 ? DFSF.combineShadowsThenConvert( in visitSelectInst()
2706 Origins.push_back(DFSF.getOrigin(I.getCondition())); in visitSelectInst()
2708 DFSF.setOrigin(&I, DFSF.combineOrigins(Shadows, Origins, &I)); in visitSelectInst()
2714 Value *ValShadow = DFSF.getShadow(I.getValue()); in visitMemSetInst()
2715 Value *ValOrigin = DFSF.DFS.shouldTrackOrigins() in visitMemSetInst()
2716 ? DFSF.getOrigin(I.getValue()) in visitMemSetInst()
2717 : DFSF.DFS.ZeroOrigin; in visitMemSetInst()
2719 DFSF.DFS.DFSanSetLabelFn, in visitMemSetInst()
2721 IRB.CreateBitCast(I.getDest(), Type::getInt8PtrTy(*DFSF.DFS.Ctx)), in visitMemSetInst()
2722 IRB.CreateZExtOrTrunc(I.getLength(), DFSF.DFS.IntptrTy)}); in visitMemSetInst()
2730 if (DFSF.DFS.shouldTrackOrigins()) { in visitMemTransferInst()
2732 DFSF.DFS.DFSanMemOriginTransferFn, in visitMemTransferInst()
2735 IRB.CreateIntCast(I.getArgOperand(2), DFSF.DFS.IntptrTy, false)}); in visitMemTransferInst()
2738 Value *RawDestShadow = DFSF.DFS.getShadowAddress(I.getDest(), &I); in visitMemTransferInst()
2739 Value *SrcShadow = DFSF.DFS.getShadowAddress(I.getSource(), &I); in visitMemTransferInst()
2742 DFSF.DFS.ShadowWidthBytes)); in visitMemTransferInst()
2743 Type *Int8Ptr = Type::getInt8PtrTy(*DFSF.DFS.Ctx); in visitMemTransferInst()
2749 MTI->setDestAlignment(DFSF.getShadowAlign(I.getDestAlign().valueOrOne())); in visitMemTransferInst()
2750 MTI->setSourceAlignment(DFSF.getShadowAlign(I.getSourceAlign().valueOrOne())); in visitMemTransferInst()
2752 IRB.CreateCall(DFSF.DFS.DFSanMemTransferCallbackFn, in visitMemTransferInst()
2754 IRB.CreateZExtOrTrunc(I.getLength(), DFSF.DFS.IntptrTy)}); in visitMemTransferInst()
2762 DFSF.addConditionalCallbacksIfEnabled(BR, BR.getCondition()); in visitBranchInst()
2766 DFSF.addConditionalCallbacksIfEnabled(SW, SW.getCondition()); in visitSwitchInst()
2781 if (!DFSF.IsNativeABI && RI.getReturnValue()) { in visitReturnInst()
2786 Value *S = DFSF.getShadow(RI.getReturnValue()); in visitReturnInst()
2788 Type *RT = DFSF.F->getFunctionType()->getReturnType(); in visitReturnInst()
2789 unsigned Size = getDataLayout().getTypeAllocSize(DFSF.DFS.getShadowTy(RT)); in visitReturnInst()
2793 IRB.CreateAlignedStore(S, DFSF.getRetvalTLS(RT, IRB), ShadowTLSAlignment); in visitReturnInst()
2795 if (DFSF.DFS.shouldTrackOrigins()) { in visitReturnInst()
2796 Value *O = DFSF.getOrigin(RI.getReturnValue()); in visitReturnInst()
2797 IRB.CreateStore(O, DFSF.getRetvalOriginTLS()); in visitReturnInst()
2811 Args.push_back(DFSF.collapseToPrimitiveShadow(DFSF.getShadow(*I), &CB)); in addShadowArguments()
2815 auto *LabelVATy = ArrayType::get(DFSF.DFS.PrimitiveShadowTy, in addShadowArguments()
2819 "labelva", &DFSF.F->getEntryBlock().front()); in addShadowArguments()
2823 IRB.CreateStore(DFSF.collapseToPrimitiveShadow(DFSF.getShadow(*I), &CB), in addShadowArguments()
2832 if (!DFSF.LabelReturnAlloca) { in addShadowArguments()
2833 DFSF.LabelReturnAlloca = new AllocaInst( in addShadowArguments()
2834 DFSF.DFS.PrimitiveShadowTy, getDataLayout().getAllocaAddrSpace(), in addShadowArguments()
2835 "labelreturn", &DFSF.F->getEntryBlock().front()); in addShadowArguments()
2837 Args.push_back(DFSF.LabelReturnAlloca); in addShadowArguments()
2850 Args.push_back(DFSF.getOrigin(*I)); in addOriginArguments()
2855 ArrayType::get(DFSF.DFS.OriginTy, CB.arg_size() - FT->getNumParams()); in addOriginArguments()
2858 "originva", &DFSF.F->getEntryBlock().front()); in addOriginArguments()
2862 IRB.CreateStore(DFSF.getOrigin(*I), OriginVAPtr); in addOriginArguments()
2870 if (!DFSF.OriginReturnAlloca) { in addOriginArguments()
2871 DFSF.OriginReturnAlloca = new AllocaInst( in addOriginArguments()
2872 DFSF.DFS.OriginTy, getDataLayout().getAllocaAddrSpace(), in addOriginArguments()
2873 "originreturn", &DFSF.F->getEntryBlock().front()); in addOriginArguments()
2875 Args.push_back(DFSF.OriginReturnAlloca); in addOriginArguments()
2881 switch (DFSF.DFS.getWrapperKind(&F)) { in visitWrappedCallBase()
2884 IRB.CreateCall(DFSF.DFS.DFSanUnimplementedFn, in visitWrappedCallBase()
2886 DFSF.DFS.buildExternWeakCheckIfNeeded(IRB, &F); in visitWrappedCallBase()
2887 DFSF.setShadow(&CB, DFSF.DFS.getZeroShadow(&CB)); in visitWrappedCallBase()
2888 DFSF.setOrigin(&CB, DFSF.DFS.ZeroOrigin); in visitWrappedCallBase()
2892 DFSF.DFS.buildExternWeakCheckIfNeeded(IRB, &F); in visitWrappedCallBase()
2893 DFSF.setShadow(&CB, DFSF.DFS.getZeroShadow(&CB)); in visitWrappedCallBase()
2894 DFSF.setOrigin(&CB, DFSF.DFS.ZeroOrigin); in visitWrappedCallBase()
2898 DFSF.DFS.buildExternWeakCheckIfNeeded(IRB, &F); in visitWrappedCallBase()
2909 const bool ShouldTrackOrigins = DFSF.DFS.shouldTrackOrigins(); in visitWrappedCallBase()
2911 TransformedFunction CustomFn = DFSF.DFS.getCustomFunctionType(FT); in visitWrappedCallBase()
2914 FunctionCallee CustomF = DFSF.DFS.Mod->getOrInsertFunction( in visitWrappedCallBase()
2921 CustomFn->removeFnAttrs(DFSF.DFS.ReadOnlyNoneAttrs); in visitWrappedCallBase()
2956 DFSF.DFS.PrimitiveShadowTy) in visitWrappedCallBase()
2961 DFSF.DFS.OriginTy) in visitWrappedCallBase()
2969 IRB.CreateLoad(DFSF.DFS.PrimitiveShadowTy, DFSF.LabelReturnAlloca); in visitWrappedCallBase()
2970 DFSF.setShadow(CustomCI, DFSF.expandFromPrimitiveShadow( in visitWrappedCallBase()
2974 IRB.CreateLoad(DFSF.DFS.OriginTy, DFSF.OriginReturnAlloca); in visitWrappedCallBase()
2975 DFSF.setOrigin(CustomCI, OriginLoad); in visitWrappedCallBase()
2995 if (F == DFSF.DFS.DFSanVarargWrapperFn.getCallee()->stripPointerCasts()) in visitCallBase()
2999 DFSF.DFS.UnwrappedFnMap.find(CB.getCalledOperand()); in visitCallBase()
3000 if (UnwrappedFnIt != DFSF.DFS.UnwrappedFnMap.end()) in visitCallBase()
3006 const bool ShouldTrackOrigins = DFSF.DFS.shouldTrackOrigins(); in visitCallBase()
3015 Value *ArgShadow = DFSF.getShadow(CB.getArgOperand(I)); in visitCallBase()
3016 if (I < DFSF.DFS.NumOfElementsInArgOrgTLS && in visitCallBase()
3017 !DFSF.DFS.isZeroShadow(ArgShadow)) in visitCallBase()
3018 IRB.CreateStore(DFSF.getOrigin(CB.getArgOperand(I)), in visitCallBase()
3019 DFSF.getArgOriginTLS(I, IRB)); in visitCallBase()
3023 DL.getTypeAllocSize(DFSF.DFS.getShadowTy(FT->getParamType(I))); in visitCallBase()
3028 IRB.CreateAlignedStore(DFSF.getShadow(CB.getArgOperand(I)), in visitCallBase()
3029 DFSF.getArgTLS(FT->getParamType(I), ArgOffset, IRB), in visitCallBase()
3041 SplitEdge(II->getParent(), II->getNormalDest(), &DFSF.DT); in visitCallBase()
3055 unsigned Size = DL.getTypeAllocSize(DFSF.DFS.getShadowTy(&CB)); in visitCallBase()
3058 DFSF.setShadow(&CB, DFSF.DFS.getZeroShadow(&CB)); in visitCallBase()
3061 DFSF.DFS.getShadowTy(&CB), DFSF.getRetvalTLS(CB.getType(), NextIRB), in visitCallBase()
3063 DFSF.SkipInsts.insert(LI); in visitCallBase()
3064 DFSF.setShadow(&CB, LI); in visitCallBase()
3065 DFSF.NonZeroChecks.push_back(LI); in visitCallBase()
3069 LoadInst *LI = NextIRB.CreateLoad(DFSF.DFS.OriginTy, in visitCallBase()
3070 DFSF.getRetvalOriginTLS(), "_dfsret_o"); in visitCallBase()
3071 DFSF.SkipInsts.insert(LI); in visitCallBase()
3072 DFSF.setOrigin(&CB, LI); in visitCallBase()
3078 Type *ShadowTy = DFSF.DFS.getShadowTy(&PN); in visitPHINode()
3087 DFSF.setShadow(&PN, ShadowPN); in visitPHINode()
3090 if (DFSF.DFS.shouldTrackOrigins()) { in visitPHINode()
3092 PHINode::Create(DFSF.DFS.OriginTy, PN.getNumIncomingValues(), "", &PN); in visitPHINode()
3093 Value *UndefOrigin = UndefValue::get(DFSF.DFS.OriginTy); in visitPHINode()
3096 DFSF.setOrigin(&PN, OriginPN); in visitPHINode()
3099 DFSF.PHIFixups.push_back({&PN, ShadowPN, OriginPN}); in visitPHINode()