Lines Matching refs:IRB

703   IRBuilder<> IRB(*C);  in createKernelApi()  local
714 WarningFn = M.getOrInsertFunction("__msan_warning", IRB.getVoidTy(), in createKernelApi()
715 IRB.getInt32Ty()); in createKernelApi()
719 ArrayType::get(IRB.getInt64Ty(), kParamTLSSize / 8), in createKernelApi()
720 ArrayType::get(IRB.getInt64Ty(), kRetvalTLSSize / 8), in createKernelApi()
721 ArrayType::get(IRB.getInt64Ty(), kParamTLSSize / 8), in createKernelApi()
722 ArrayType::get(IRB.getInt64Ty(), kParamTLSSize / 8), /* va_arg_origin */ in createKernelApi()
723 IRB.getInt64Ty(), ArrayType::get(OriginTy, kParamTLSSize / 4), OriginTy, in createKernelApi()
728 Type *RetTy = StructType::get(PointerType::get(IRB.getInt8Ty(), 0), in createKernelApi()
729 PointerType::get(IRB.getInt32Ty(), 0)); in createKernelApi()
737 name_load, RetTy, PointerType::get(IRB.getInt8Ty(), 0)); in createKernelApi()
739 name_store, RetTy, PointerType::get(IRB.getInt8Ty(), 0)); in createKernelApi()
744 PointerType::get(IRB.getInt8Ty(), 0), IRB.getInt64Ty()); in createKernelApi()
747 PointerType::get(IRB.getInt8Ty(), 0), IRB.getInt64Ty()); in createKernelApi()
751 M.getOrInsertFunction("__msan_poison_alloca", IRB.getVoidTy(), in createKernelApi()
752 IRB.getInt8PtrTy(), IntptrTy, IRB.getInt8PtrTy()); in createKernelApi()
754 "__msan_unpoison_alloca", IRB.getVoidTy(), IRB.getInt8PtrTy(), IntptrTy); in createKernelApi()
767 IRBuilder<> IRB(*C); in createUserspaceApi() local
775 M.getOrInsertFunction(WarningFnName, IRB.getVoidTy(), IRB.getInt32Ty()); in createUserspaceApi()
780 ArrayType::get(IRB.getInt64Ty(), kRetvalTLSSize / 8)); in createUserspaceApi()
786 ArrayType::get(IRB.getInt64Ty(), kParamTLSSize / 8)); in createUserspaceApi()
794 ArrayType::get(IRB.getInt64Ty(), kParamTLSSize / 8)); in createUserspaceApi()
801 getOrInsertGlobal(M, "__msan_va_arg_overflow_size_tls", IRB.getInt64Ty()); in createUserspaceApi()
814 IRB.getVoidTy(), IRB.getIntNTy(AccessSize * 8), IRB.getInt32Ty()); in createUserspaceApi()
824 IRB.getVoidTy(), IRB.getIntNTy(AccessSize * 8), IRB.getInt8PtrTy(), in createUserspaceApi()
825 IRB.getInt32Ty()); in createUserspaceApi()
829 "__msan_set_alloca_origin4", IRB.getVoidTy(), IRB.getInt8PtrTy(), IntptrTy, in createUserspaceApi()
830 IRB.getInt8PtrTy(), IntptrTy); in createUserspaceApi()
832 M.getOrInsertFunction("__msan_poison_stack", IRB.getVoidTy(), in createUserspaceApi()
833 IRB.getInt8PtrTy(), IntptrTy); in createUserspaceApi()
842 IRBuilder<> IRB(*C); in initializeCallbacks() local
846 "__msan_chain_origin", IRB.getInt32Ty(), IRB.getInt32Ty()); in initializeCallbacks()
848 M.getOrInsertFunction("__msan_set_origin", IRB.getVoidTy(), in initializeCallbacks()
849 IRB.getInt8PtrTy(), IntptrTy, IRB.getInt32Ty()); in initializeCallbacks()
851 "__msan_memmove", IRB.getInt8PtrTy(), IRB.getInt8PtrTy(), in initializeCallbacks()
852 IRB.getInt8PtrTy(), IntptrTy); in initializeCallbacks()
854 "__msan_memcpy", IRB.getInt8PtrTy(), IRB.getInt8PtrTy(), IRB.getInt8PtrTy(), in initializeCallbacks()
857 "__msan_memset", IRB.getInt8PtrTy(), IRB.getInt8PtrTy(), IRB.getInt32Ty(), in initializeCallbacks()
861 M.getOrInsertFunction("__msan_instrument_asm_store", IRB.getVoidTy(), in initializeCallbacks()
862 PointerType::get(IRB.getInt8Ty(), 0), IntptrTy); in initializeCallbacks()
965 IRBuilder<> IRB(*C); in initializeModule() local
966 IntptrTy = IRB.getIntPtrTy(DL); in initializeModule()
967 OriginTy = IRB.getInt32Ty(); in initializeModule()
974 M.getOrInsertGlobal("__msan_track_origins", IRB.getInt32Ty(), [&] { in initializeModule()
976 M, IRB.getInt32Ty(), true, GlobalValue::WeakODRLinkage, in initializeModule()
977 IRB.getInt32(TrackOrigins), "__msan_track_origins"); in initializeModule()
981 M.getOrInsertGlobal("__msan_keep_going", IRB.getInt32Ty(), [&] { in initializeModule()
982 return new GlobalVariable(M, IRB.getInt32Ty(), true, in initializeModule()
984 IRB.getInt32(Recover), "__msan_keep_going"); in initializeModule()
1003 virtual void visitCallBase(CallBase &CB, IRBuilder<> &IRB) = 0;
1089 IRBuilder<> IRB(FnPrologueEnd); in MemorySanitizerVisitor() local
1090 insertKmsanPrologue(IRB); in MemorySanitizerVisitor()
1103 Value *updateOrigin(Value *V, IRBuilder<> &IRB) { in updateOrigin()
1105 return IRB.CreateCall(MS.MsanChainOriginFn, V); in updateOrigin()
1108 Value *originToIntptr(IRBuilder<> &IRB, Value *Origin) { in originToIntptr()
1113 Origin = IRB.CreateIntCast(Origin, MS.IntptrTy, /* isSigned */ false); in originToIntptr()
1114 return IRB.CreateOr(Origin, IRB.CreateShl(Origin, kOriginSize * 8)); in originToIntptr()
1118 void paintOrigin(IRBuilder<> &IRB, Value *Origin, Value *OriginPtr, in paintOrigin()
1129 Value *IntptrOrigin = originToIntptr(IRB, Origin); in paintOrigin()
1131 IRB.CreatePointerCast(OriginPtr, PointerType::get(MS.IntptrTy, 0)); in paintOrigin()
1133 Value *Ptr = i ? IRB.CreateConstGEP1_32(MS.IntptrTy, IntptrOriginPtr, i) in paintOrigin()
1135 IRB.CreateAlignedStore(IntptrOrigin, Ptr, CurrentAlignment); in paintOrigin()
1143 i ? IRB.CreateConstGEP1_32(MS.OriginTy, OriginPtr, i) : OriginPtr; in paintOrigin()
1144 IRB.CreateAlignedStore(Origin, GEP, CurrentAlignment); in paintOrigin()
1149 void storeOrigin(IRBuilder<> &IRB, Value *Addr, Value *Shadow, Value *Origin, in storeOrigin()
1154 Value *ConvertedShadow = convertShadowToScalar(Shadow, IRB); in storeOrigin()
1157 paintOrigin(IRB, updateOrigin(Origin, IRB), OriginPtr, StoreSize, in storeOrigin()
1167 IRB.CreateZExt(ConvertedShadow, IRB.getIntNTy(8 * (1 << SizeIndex))); in storeOrigin()
1168 CallBase *CB = IRB.CreateCall( in storeOrigin()
1170 IRB.CreatePointerCast(Addr, IRB.getInt8PtrTy()), Origin}); in storeOrigin()
1174 Value *Cmp = convertToBool(ConvertedShadow, IRB, "_mscmp"); in storeOrigin()
1176 Cmp, &*IRB.GetInsertPoint(), false, MS.OriginStoreWeights); in storeOrigin()
1185 IRBuilder<> IRB(SI); in materializeStores() local
1194 getShadowOriginPtr(Addr, IRB, ShadowTy, Alignment, /*isStore*/ true); in materializeStores()
1196 StoreInst *NewSI = IRB.CreateAlignedStore(Shadow, ShadowPtr, Alignment); in materializeStores()
1204 storeOrigin(IRB, Addr, Shadow, getOrigin(Val), OriginPtr, in materializeStores()
1210 void insertWarningFn(IRBuilder<> &IRB, Value *Origin) { in insertWarningFn()
1212 Origin = (Value *)IRB.getInt32(0); in insertWarningFn()
1214 IRB.CreateCall(MS.WarningFn, Origin)->setCannotMerge(); in insertWarningFn()
1222 IRBuilder<> IRB(OrigIns); in materializeOneCheck() local
1224 Value *ConvertedShadow = convertShadowToScalar(Shadow, IRB); in materializeOneCheck()
1229 insertWarningFn(IRB, Origin); in materializeOneCheck()
1241 IRB.CreateZExt(ConvertedShadow, IRB.getIntNTy(8 * (1 << SizeIndex))); in materializeOneCheck()
1242 CallBase *CB = IRB.CreateCall( in materializeOneCheck()
1244 MS.TrackOrigins && Origin ? Origin : (Value *)IRB.getInt32(0)}); in materializeOneCheck()
1248 Value *Cmp = convertToBool(ConvertedShadow, IRB, "_mscmp"); in materializeOneCheck()
1253 IRB.SetInsertPoint(CheckTerm); in materializeOneCheck()
1254 insertWarningFn(IRB, Origin); in materializeOneCheck()
1270 void insertKmsanPrologue(IRBuilder<> &IRB) { in insertKmsanPrologue()
1271 Value *ContextState = IRB.CreateCall(MS.MsanGetContextStateFn, {}); in insertKmsanPrologue()
1272 Constant *Zero = IRB.getInt32(0); in insertKmsanPrologue()
1273 MS.ParamTLS = IRB.CreateGEP(MS.MsanContextStateTy, ContextState, in insertKmsanPrologue()
1274 {Zero, IRB.getInt32(0)}, "param_shadow"); in insertKmsanPrologue()
1275 MS.RetvalTLS = IRB.CreateGEP(MS.MsanContextStateTy, ContextState, in insertKmsanPrologue()
1276 {Zero, IRB.getInt32(1)}, "retval_shadow"); in insertKmsanPrologue()
1277 MS.VAArgTLS = IRB.CreateGEP(MS.MsanContextStateTy, ContextState, in insertKmsanPrologue()
1278 {Zero, IRB.getInt32(2)}, "va_arg_shadow"); in insertKmsanPrologue()
1279 MS.VAArgOriginTLS = IRB.CreateGEP(MS.MsanContextStateTy, ContextState, in insertKmsanPrologue()
1280 {Zero, IRB.getInt32(3)}, "va_arg_origin"); in insertKmsanPrologue()
1282 IRB.CreateGEP(MS.MsanContextStateTy, ContextState, in insertKmsanPrologue()
1283 {Zero, IRB.getInt32(4)}, "va_arg_overflow_size"); in insertKmsanPrologue()
1284 MS.ParamOriginTLS = IRB.CreateGEP(MS.MsanContextStateTy, ContextState, in insertKmsanPrologue()
1285 {Zero, IRB.getInt32(5)}, "param_origin"); in insertKmsanPrologue()
1287 IRB.CreateGEP(MS.MsanContextStateTy, ContextState, in insertKmsanPrologue()
1288 {Zero, IRB.getInt32(6)}, "retval_origin"); in insertKmsanPrologue()
1385 IRBuilder<> &IRB) { in collapseStructShadow()
1386 Value *FalseVal = IRB.getIntN(/* width */ 1, /* value */ 0); in collapseStructShadow()
1391 Value *ShadowItem = IRB.CreateExtractValue(Shadow, Idx); in collapseStructShadow()
1392 Value *ShadowInner = convertShadowToScalar(ShadowItem, IRB); in collapseStructShadow()
1393 Value *ShadowBool = convertToBool(ShadowInner, IRB); in collapseStructShadow()
1396 Aggregator = IRB.CreateOr(Aggregator, ShadowBool); in collapseStructShadow()
1406 IRBuilder<> &IRB) { in collapseArrayShadow()
1408 return IRB.getIntN(/* width */ 1, /* value */ 0); in collapseArrayShadow()
1410 Value *FirstItem = IRB.CreateExtractValue(Shadow, 0); in collapseArrayShadow()
1411 Value *Aggregator = convertShadowToScalar(FirstItem, IRB); in collapseArrayShadow()
1414 Value *ShadowItem = IRB.CreateExtractValue(Shadow, Idx); in collapseArrayShadow()
1415 Value *ShadowInner = convertShadowToScalar(ShadowItem, IRB); in collapseArrayShadow()
1416 Aggregator = IRB.CreateOr(Aggregator, ShadowInner); in collapseArrayShadow()
1424 Value *convertShadowToScalar(Value *V, IRBuilder<> &IRB) { in convertShadowToScalar()
1426 return collapseStructShadow(Struct, V, IRB); in convertShadowToScalar()
1428 return collapseArrayShadow(Array, V, IRB); in convertShadowToScalar()
1432 return IRB.CreateBitCast(V, NoVecTy); in convertShadowToScalar()
1436 Value *convertToBool(Value *V, IRBuilder<> &IRB, const Twine &name = "") { in convertToBool()
1442 return IRB.CreateICmpNE(V, ConstantInt::get(VTy, 0), name); in convertToBool()
1449 Value *getShadowPtrOffset(Value *Addr, IRBuilder<> &IRB) { in getShadowPtrOffset()
1450 Value *OffsetLong = IRB.CreatePointerCast(Addr, MS.IntptrTy); in getShadowPtrOffset()
1455 IRB.CreateAnd(OffsetLong, ConstantInt::get(MS.IntptrTy, ~AndMask)); in getShadowPtrOffset()
1460 IRB.CreateXor(OffsetLong, ConstantInt::get(MS.IntptrTy, XorMask)); in getShadowPtrOffset()
1470 getShadowOriginPtrUserspace(Value *Addr, IRBuilder<> &IRB, Type *ShadowTy, in getShadowOriginPtrUserspace()
1472 Value *ShadowOffset = getShadowPtrOffset(Addr, IRB); in getShadowOriginPtrUserspace()
1477 IRB.CreateAdd(ShadowLong, in getShadowOriginPtrUserspace()
1481 IRB.CreateIntToPtr(ShadowLong, PointerType::get(ShadowTy, 0)); in getShadowOriginPtrUserspace()
1487 OriginLong = IRB.CreateAdd(OriginLong, in getShadowOriginPtrUserspace()
1492 IRB.CreateAnd(OriginLong, ConstantInt::get(MS.IntptrTy, ~Mask)); in getShadowOriginPtrUserspace()
1495 IRB.CreateIntToPtr(OriginLong, PointerType::get(MS.OriginTy, 0)); in getShadowOriginPtrUserspace()
1501 IRBuilder<> &IRB, in getShadowOriginPtrKernel()
1510 IRB.CreatePointerCast(Addr, PointerType::get(IRB.getInt8Ty(), 0)); in getShadowOriginPtrKernel()
1512 ShadowOriginPtrs = IRB.CreateCall(Getter, AddrCast); in getShadowOriginPtrKernel()
1515 ShadowOriginPtrs = IRB.CreateCall(isStore ? MS.MsanMetadataPtrForStoreN in getShadowOriginPtrKernel()
1519 Value *ShadowPtr = IRB.CreateExtractValue(ShadowOriginPtrs, 0); in getShadowOriginPtrKernel()
1520 ShadowPtr = IRB.CreatePointerCast(ShadowPtr, PointerType::get(ShadowTy, 0)); in getShadowOriginPtrKernel()
1521 Value *OriginPtr = IRB.CreateExtractValue(ShadowOriginPtrs, 1); in getShadowOriginPtrKernel()
1526 std::pair<Value *, Value *> getShadowOriginPtr(Value *Addr, IRBuilder<> &IRB, in getShadowOriginPtr()
1531 return getShadowOriginPtrKernel(Addr, IRB, ShadowTy, isStore); in getShadowOriginPtr()
1532 return getShadowOriginPtrUserspace(Addr, IRB, ShadowTy, Alignment); in getShadowOriginPtr()
1538 Value *getShadowPtrForArgument(Value *A, IRBuilder<> &IRB, in getShadowPtrForArgument()
1540 Value *Base = IRB.CreatePointerCast(MS.ParamTLS, MS.IntptrTy); in getShadowPtrForArgument()
1542 Base = IRB.CreateAdd(Base, ConstantInt::get(MS.IntptrTy, ArgOffset)); in getShadowPtrForArgument()
1543 return IRB.CreateIntToPtr(Base, PointerType::get(getShadowTy(A), 0), in getShadowPtrForArgument()
1548 Value *getOriginPtrForArgument(Value *A, IRBuilder<> &IRB, in getOriginPtrForArgument()
1552 Value *Base = IRB.CreatePointerCast(MS.ParamOriginTLS, MS.IntptrTy); in getOriginPtrForArgument()
1554 Base = IRB.CreateAdd(Base, ConstantInt::get(MS.IntptrTy, ArgOffset)); in getOriginPtrForArgument()
1555 return IRB.CreateIntToPtr(Base, PointerType::get(MS.OriginTy, 0), in getOriginPtrForArgument()
1560 Value *getShadowPtrForRetval(Value *A, IRBuilder<> &IRB) { in getShadowPtrForRetval()
1561 return IRB.CreatePointerCast(MS.RetvalTLS, in getShadowPtrForRetval()
1567 Value *getOriginPtrForRetval(IRBuilder<> &IRB) { in getOriginPtrForRetval()
1825 Value *makeAddReleaseOrderingTable(IRBuilder<> &IRB) { in makeAddReleaseOrderingTable()
1839 return ConstantDataVector::get(IRB.getContext(), in makeAddReleaseOrderingTable()
1860 Value *makeAddAcquireOrderingTable(IRBuilder<> &IRB) { in makeAddAcquireOrderingTable()
1874 return ConstantDataVector::get(IRB.getContext(), in makeAddAcquireOrderingTable()
1896 IRBuilder<> IRB(I.getNextNode()); in visitLoadInst() local
1903 getShadowOriginPtr(Addr, IRB, ShadowTy, Alignment, /*isStore*/ false); in visitLoadInst()
1905 IRB.CreateAlignedLoad(ShadowTy, ShadowPtr, Alignment, "_msld")); in visitLoadInst()
1920 &I, IRB.CreateAlignedLoad(MS.OriginTy, OriginPtr, OriginAlignment)); in visitLoadInst()
1940 IRBuilder<> IRB(&I); in handleCASOrRMW() local
1943 Value *ShadowPtr = getShadowOriginPtr(Addr, IRB, Val->getType(), Align(1), in handleCASOrRMW()
1956 IRB.CreateStore(getCleanShadow(Val), ShadowPtr); in handleCASOrRMW()
1975 IRBuilder<> IRB(&I); in visitExtractElementInst() local
1976 setShadow(&I, IRB.CreateExtractElement(getShadow(&I, 0), I.getOperand(1), in visitExtractElementInst()
1983 IRBuilder<> IRB(&I); in visitInsertElementInst() local
1984 setShadow(&I, IRB.CreateInsertElement(getShadow(&I, 0), getShadow(&I, 1), in visitInsertElementInst()
1990 IRBuilder<> IRB(&I); in visitShuffleVectorInst() local
1991 setShadow(&I, IRB.CreateShuffleVector(getShadow(&I, 0), getShadow(&I, 1), in visitShuffleVectorInst()
1998 IRBuilder<> IRB(&I); in visitSExtInst() local
1999 setShadow(&I, IRB.CreateSExt(getShadow(&I, 0), I.getType(), "_msprop")); in visitSExtInst()
2004 IRBuilder<> IRB(&I); in visitZExtInst() local
2005 setShadow(&I, IRB.CreateZExt(getShadow(&I, 0), I.getType(), "_msprop")); in visitZExtInst()
2010 IRBuilder<> IRB(&I); in visitTruncInst() local
2011 setShadow(&I, IRB.CreateTrunc(getShadow(&I, 0), I.getType(), "_msprop")); in visitTruncInst()
2022 IRBuilder<> IRB(&I); in visitBitCastInst() local
2023 setShadow(&I, IRB.CreateBitCast(getShadow(&I, 0), getShadowTy(&I))); in visitBitCastInst()
2028 IRBuilder<> IRB(&I); in visitPtrToIntInst() local
2029 setShadow(&I, IRB.CreateIntCast(getShadow(&I, 0), getShadowTy(&I), false, in visitPtrToIntInst()
2035 IRBuilder<> IRB(&I); in visitIntToPtrInst() local
2036 setShadow(&I, IRB.CreateIntCast(getShadow(&I, 0), getShadowTy(&I), false, in visitIntToPtrInst()
2054 IRBuilder<> IRB(&I); in visitAnd() local
2065 V1 = IRB.CreateIntCast(V1, S1->getType(), false); in visitAnd()
2066 V2 = IRB.CreateIntCast(V2, S2->getType(), false); in visitAnd()
2068 Value *S1S2 = IRB.CreateAnd(S1, S2); in visitAnd()
2069 Value *V1S2 = IRB.CreateAnd(V1, S2); in visitAnd()
2070 Value *S1V2 = IRB.CreateAnd(S1, V2); in visitAnd()
2071 setShadow(&I, IRB.CreateOr({S1S2, V1S2, S1V2})); in visitAnd()
2076 IRBuilder<> IRB(&I); in visitOr() local
2084 Value *V1 = IRB.CreateNot(I.getOperand(0)); in visitOr()
2085 Value *V2 = IRB.CreateNot(I.getOperand(1)); in visitOr()
2087 V1 = IRB.CreateIntCast(V1, S1->getType(), false); in visitOr()
2088 V2 = IRB.CreateIntCast(V2, S2->getType(), false); in visitOr()
2090 Value *S1S2 = IRB.CreateAnd(S1, S2); in visitOr()
2091 Value *V1S2 = IRB.CreateAnd(V1, S2); in visitOr()
2092 Value *S1V2 = IRB.CreateAnd(S1, V2); in visitOr()
2093 setShadow(&I, IRB.CreateOr({S1S2, V1S2, S1V2})); in visitOr()
2116 IRBuilder<> &IRB; member in __anon54a388730811::MemorySanitizerVisitor::Combiner
2120 Combiner(MemorySanitizerVisitor *MSV, IRBuilder<> &IRB) in Combiner() argument
2121 : IRB(IRB), MSV(MSV) {} in Combiner()
2130 OpShadow = MSV->CreateShadowCast(IRB, OpShadow, Shadow->getType()); in Add()
2131 Shadow = IRB.CreateOr(Shadow, OpShadow, "_msprop"); in Add()
2143 Value *FlatShadow = MSV->convertShadowToScalar(OpShadow, IRB); in Add()
2145 IRB.CreateICmpNE(FlatShadow, MSV->getCleanShadow(FlatShadow)); in Add()
2146 Origin = IRB.CreateSelect(Cond, OpOrigin, Origin); in Add()
2165 Shadow = MSV->CreateShadowCast(IRB, Shadow, MSV->getShadowTy(I)); in Done()
2181 IRBuilder<> IRB(&I); in setOriginForNaryOp() local
2182 OriginCombiner OC(this, IRB); in setOriginForNaryOp()
2198 Value *CreateShadowCast(IRBuilder<> &IRB, Value *V, Type *dstTy, in CreateShadowCast()
2204 return IRB.CreateICmpNE(V, getCleanShadow(V)); in CreateShadowCast()
2207 return IRB.CreateIntCast(V, dstTy, Signed); in CreateShadowCast()
2211 return IRB.CreateIntCast(V, dstTy, Signed); in CreateShadowCast()
2212 Value *V1 = IRB.CreateBitCast(V, Type::getIntNTy(*MS.C, srcSizeInBits)); in CreateShadowCast()
2214 IRB.CreateIntCast(V1, Type::getIntNTy(*MS.C, dstSizeInBits), Signed); in CreateShadowCast()
2215 return IRB.CreateBitCast(V2, dstTy); in CreateShadowCast()
2220 Value *CreateAppToShadowCast(IRBuilder<> &IRB, Value *V) { in CreateAppToShadowCast()
2225 return IRB.CreatePtrToInt(V, ShadowTy); in CreateAppToShadowCast()
2227 return IRB.CreateBitCast(V, ShadowTy); in CreateAppToShadowCast()
2232 IRBuilder<> IRB(&I); in handleShadowOr() local
2233 ShadowAndOriginCombiner SC(this, IRB); in handleShadowOr()
2279 IRBuilder<> IRB(&I); in handleMulByConstant() local
2281 IRB.CreateMul(getShadow(OtherArg), ShadowMul, "msprop_mul_cst")); in handleMulByConstant()
2304 IRBuilder<> IRB(&I); in handleIntegerDiv() local
2326 IRBuilder<> IRB(&I); in handleEqualityComparison() local
2335 A = IRB.CreatePointerCast(A, Sa->getType()); in handleEqualityComparison()
2336 B = IRB.CreatePointerCast(B, Sb->getType()); in handleEqualityComparison()
2341 Value *C = IRB.CreateXor(A, B); in handleEqualityComparison()
2342 Value *Sc = IRB.CreateOr(Sa, Sb); in handleEqualityComparison()
2351 IRB.CreateAnd(IRB.CreateICmpNE(Sc, Zero), in handleEqualityComparison()
2352 IRB.CreateICmpEQ( in handleEqualityComparison()
2353 IRB.CreateAnd(IRB.CreateXor(Sc, MinusOne), C), Zero)); in handleEqualityComparison()
2361 Value *getLowestPossibleValue(IRBuilder<> &IRB, Value *A, Value *Sa, in getLowestPossibleValue()
2365 Value *SaOtherBits = IRB.CreateLShr(IRB.CreateShl(Sa, 1), 1); in getLowestPossibleValue()
2366 Value *SaSignBit = IRB.CreateXor(Sa, SaOtherBits); in getLowestPossibleValue()
2369 IRB.CreateOr(IRB.CreateAnd(A, IRB.CreateNot(SaOtherBits)), SaSignBit); in getLowestPossibleValue()
2372 return IRB.CreateAnd(A, IRB.CreateNot(Sa)); in getLowestPossibleValue()
2378 Value *getHighestPossibleValue(IRBuilder<> &IRB, Value *A, Value *Sa, in getHighestPossibleValue()
2382 Value *SaOtherBits = IRB.CreateLShr(IRB.CreateShl(Sa, 1), 1); in getHighestPossibleValue()
2383 Value *SaSignBit = IRB.CreateXor(Sa, SaOtherBits); in getHighestPossibleValue()
2386 IRB.CreateOr(IRB.CreateAnd(A, IRB.CreateNot(SaSignBit)), SaOtherBits); in getHighestPossibleValue()
2389 return IRB.CreateOr(A, Sa); in getHighestPossibleValue()
2399 IRBuilder<> IRB(&I); in handleRelationalComparisonExact() local
2408 A = IRB.CreatePointerCast(A, Sa->getType()); in handleRelationalComparisonExact()
2409 B = IRB.CreatePointerCast(B, Sb->getType()); in handleRelationalComparisonExact()
2415 Value *S1 = IRB.CreateICmp(I.getPredicate(), in handleRelationalComparisonExact()
2416 getLowestPossibleValue(IRB, A, Sa, IsSigned), in handleRelationalComparisonExact()
2417 getHighestPossibleValue(IRB, B, Sb, IsSigned)); in handleRelationalComparisonExact()
2418 Value *S2 = IRB.CreateICmp(I.getPredicate(), in handleRelationalComparisonExact()
2419 getHighestPossibleValue(IRB, A, Sa, IsSigned), in handleRelationalComparisonExact()
2420 getLowestPossibleValue(IRB, B, Sb, IsSigned)); in handleRelationalComparisonExact()
2421 Value *Si = IRB.CreateXor(S1, S2); in handleRelationalComparisonExact()
2449 IRBuilder<> IRB(&I); in handleSignedRelationalComparison() local
2450 Value *Shadow = IRB.CreateICmpSLT(getShadow(op), getCleanShadow(op), in handleSignedRelationalComparison()
2493 IRBuilder<> IRB(&I); in handleShift() local
2498 Value *S2Conv = IRB.CreateSExt(IRB.CreateICmpNE(S2, getCleanShadow(S2)), in handleShift()
2501 Value *Shift = IRB.CreateBinOp(I.getOpcode(), S1, V2); in handleShift()
2502 setShadow(&I, IRB.CreateOr(Shift, S2Conv)); in handleShift()
2511 IRBuilder<> IRB(&I); in handleFunnelShift() local
2518 IRB.CreateSExt(IRB.CreateICmpNE(S2, getCleanShadow(S2)), S2->getType()); in handleFunnelShift()
2522 Value *Shift = IRB.CreateCall(Intrin, {S0, S1, V2}); in handleFunnelShift()
2523 setShadow(&I, IRB.CreateOr(Shift, S2Conv)); in handleFunnelShift()
2539 IRBuilder<> IRB(&I); in visitMemMoveInst() local
2540 IRB.CreateCall( in visitMemMoveInst()
2542 {IRB.CreatePointerCast(I.getArgOperand(0), IRB.getInt8PtrTy()), in visitMemMoveInst()
2543 IRB.CreatePointerCast(I.getArgOperand(1), IRB.getInt8PtrTy()), in visitMemMoveInst()
2544 IRB.CreateIntCast(I.getArgOperand(2), MS.IntptrTy, false)}); in visitMemMoveInst()
2554 IRBuilder<> IRB(&I); in visitMemCpyInst() local
2555 IRB.CreateCall( in visitMemCpyInst()
2557 {IRB.CreatePointerCast(I.getArgOperand(0), IRB.getInt8PtrTy()), in visitMemCpyInst()
2558 IRB.CreatePointerCast(I.getArgOperand(1), IRB.getInt8PtrTy()), in visitMemCpyInst()
2559 IRB.CreateIntCast(I.getArgOperand(2), MS.IntptrTy, false)}); in visitMemCpyInst()
2565 IRBuilder<> IRB(&I); in visitMemSetInst() local
2566 IRB.CreateCall( in visitMemSetInst()
2568 {IRB.CreatePointerCast(I.getArgOperand(0), IRB.getInt8PtrTy()), in visitMemSetInst()
2569 IRB.CreateIntCast(I.getArgOperand(1), IRB.getInt32Ty(), false), in visitMemSetInst()
2570 IRB.CreateIntCast(I.getArgOperand(2), MS.IntptrTy, false)}); in visitMemSetInst()
2587 IRBuilder<> IRB(&I); in handleVectorStoreIntrinsic() local
2595 Addr, IRB, Shadow->getType(), Align(1), /*isStore*/ true); in handleVectorStoreIntrinsic()
2596 IRB.CreateAlignedStore(Shadow, ShadowPtr, Align(1)); in handleVectorStoreIntrinsic()
2602 if (MS.TrackOrigins) IRB.CreateStore(getOrigin(&I, 1), OriginPtr); in handleVectorStoreIntrinsic()
2611 IRBuilder<> IRB(&I); in handleVectorLoadIntrinsic() local
2621 getShadowOriginPtr(Addr, IRB, ShadowTy, Alignment, /*isStore*/ false); in handleVectorLoadIntrinsic()
2623 IRB.CreateAlignedLoad(ShadowTy, ShadowPtr, Alignment, "_msld")); in handleVectorLoadIntrinsic()
2633 setOrigin(&I, IRB.CreateLoad(MS.OriginTy, OriginPtr)); in handleVectorLoadIntrinsic()
2660 IRBuilder<> IRB(&I); in maybeHandleSimpleNomemIntrinsic() local
2661 ShadowAndOriginCombiner SC(this, IRB); in maybeHandleSimpleNomemIntrinsic()
2724 IRBuilder<> IRB(&I); in handleBswap() local
2729 setShadow(&I, IRB.CreateCall(BswapFunc, getShadow(Op))); in handleBswap()
2750 IRBuilder<> IRB(&I); in handleVectorConvertIntrinsic() local
2780 AggShadow = IRB.CreateExtractElement( in handleVectorConvertIntrinsic()
2781 ConvertShadow, ConstantInt::get(IRB.getInt32Ty(), 0)); in handleVectorConvertIntrinsic()
2783 Value *MoreShadow = IRB.CreateExtractElement( in handleVectorConvertIntrinsic()
2784 ConvertShadow, ConstantInt::get(IRB.getInt32Ty(), i)); in handleVectorConvertIntrinsic()
2785 AggShadow = IRB.CreateOr(AggShadow, MoreShadow); in handleVectorConvertIntrinsic()
2801 ResultShadow = IRB.CreateInsertElement( in handleVectorConvertIntrinsic()
2803 ConstantInt::get(IRB.getInt32Ty(), i)); in handleVectorConvertIntrinsic()
2815 Value *Lower64ShadowExtend(IRBuilder<> &IRB, Value *S, Type *T) { in Lower64ShadowExtend()
2817 S = CreateShadowCast(IRB, S, IRB.getInt64Ty(), /* Signed */ true); in Lower64ShadowExtend()
2819 Value *S2 = IRB.CreateICmpNE(S, getCleanShadow(S)); in Lower64ShadowExtend()
2820 return CreateShadowCast(IRB, S2, T, /* Signed */ true); in Lower64ShadowExtend()
2825 Value *LowerElementShadowExtend(IRBuilder<> &IRB, Value *S, Type *T) { in LowerElementShadowExtend()
2826 Value *S1 = IRB.CreateExtractElement(S, (uint64_t)0); in LowerElementShadowExtend()
2827 Value *S2 = IRB.CreateICmpNE(S1, getCleanShadow(S1)); in LowerElementShadowExtend()
2828 return CreateShadowCast(IRB, S2, T, /* Signed */ true); in LowerElementShadowExtend()
2831 Value *VariableShadowExtend(IRBuilder<> &IRB, Value *S) { in VariableShadowExtend()
2834 Value *S2 = IRB.CreateICmpNE(S, getCleanShadow(S)); in VariableShadowExtend()
2835 return IRB.CreateSExt(S2, T); in VariableShadowExtend()
2847 IRBuilder<> IRB(&I); in handleVectorShiftIntrinsic() local
2852 Value *S2Conv = Variable ? VariableShadowExtend(IRB, S2) in handleVectorShiftIntrinsic()
2853 : Lower64ShadowExtend(IRB, S2, getShadowTy(&I)); in handleVectorShiftIntrinsic()
2856 Value *Shift = IRB.CreateCall(I.getFunctionType(), I.getCalledOperand(), in handleVectorShiftIntrinsic()
2857 {IRB.CreateBitCast(S1, V1->getType()), V2}); in handleVectorShiftIntrinsic()
2858 Shift = IRB.CreateBitCast(Shift, getShadowTy(&I)); in handleVectorShiftIntrinsic()
2859 setShadow(&I, IRB.CreateOr(Shift, S2Conv)); in handleVectorShiftIntrinsic()
2913 IRBuilder<> IRB(&I); in handleVectorPackIntrinsic() local
2923 S1 = IRB.CreateBitCast(S1, T); in handleVectorPackIntrinsic()
2924 S2 = IRB.CreateBitCast(S2, T); in handleVectorPackIntrinsic()
2926 Value *S1_ext = IRB.CreateSExt( in handleVectorPackIntrinsic()
2927 IRB.CreateICmpNE(S1, Constant::getNullValue(T)), T); in handleVectorPackIntrinsic()
2928 Value *S2_ext = IRB.CreateSExt( in handleVectorPackIntrinsic()
2929 IRB.CreateICmpNE(S2, Constant::getNullValue(T)), T); in handleVectorPackIntrinsic()
2932 S1_ext = IRB.CreateBitCast(S1_ext, X86_MMXTy); in handleVectorPackIntrinsic()
2933 S2_ext = IRB.CreateBitCast(S2_ext, X86_MMXTy); in handleVectorPackIntrinsic()
2940 IRB.CreateCall(ShadowFn, {S1_ext, S2_ext}, "_msprop_vector_pack"); in handleVectorPackIntrinsic()
2941 if (isX86_MMX) S = IRB.CreateBitCast(S, getShadowTy(&I)); in handleVectorPackIntrinsic()
2954 IRBuilder<> IRB(&I); in handleVectorSadIntrinsic() local
2955 Value *S = IRB.CreateOr(getShadow(&I, 0), getShadow(&I, 1)); in handleVectorSadIntrinsic()
2956 S = IRB.CreateBitCast(S, ResTy); in handleVectorSadIntrinsic()
2957 S = IRB.CreateSExt(IRB.CreateICmpNE(S, Constant::getNullValue(ResTy)), in handleVectorSadIntrinsic()
2959 S = IRB.CreateLShr(S, ZeroBitsPerResultElement); in handleVectorSadIntrinsic()
2960 S = IRB.CreateBitCast(S, getShadowTy(&I)); in handleVectorSadIntrinsic()
2970 IRBuilder<> IRB(&I); in handleVectorPmaddIntrinsic() local
2971 Value *S = IRB.CreateOr(getShadow(&I, 0), getShadow(&I, 1)); in handleVectorPmaddIntrinsic()
2972 S = IRB.CreateBitCast(S, ResTy); in handleVectorPmaddIntrinsic()
2973 S = IRB.CreateSExt(IRB.CreateICmpNE(S, Constant::getNullValue(ResTy)), in handleVectorPmaddIntrinsic()
2975 S = IRB.CreateBitCast(S, getShadowTy(&I)); in handleVectorPmaddIntrinsic()
2984 IRBuilder<> IRB(&I); in handleVectorComparePackedIntrinsic() local
2986 Value *S0 = IRB.CreateOr(getShadow(&I, 0), getShadow(&I, 1)); in handleVectorComparePackedIntrinsic()
2987 Value *S = IRB.CreateSExt( in handleVectorComparePackedIntrinsic()
2988 IRB.CreateICmpNE(S0, Constant::getNullValue(ResTy)), ResTy); in handleVectorComparePackedIntrinsic()
2997 IRBuilder<> IRB(&I); in handleVectorCompareScalarIntrinsic() local
2998 Value *S0 = IRB.CreateOr(getShadow(&I, 0), getShadow(&I, 1)); in handleVectorCompareScalarIntrinsic()
2999 Value *S = LowerElementShadowExtend(IRB, S0, getShadowTy(&I)); in handleVectorCompareScalarIntrinsic()
3007 IRBuilder<> IRB(&I); in handleVectorReduceIntrinsic() local
3008 Value *S = IRB.CreateOrReduce(getShadow(&I, 0)); in handleVectorReduceIntrinsic()
3017 IRBuilder<> IRB(&I); in handleVectorReduceOrIntrinsic() local
3019 Value *OperandUnsetBits = IRB.CreateNot(I.getOperand(0)); in handleVectorReduceOrIntrinsic()
3020 Value *OperandUnsetOrPoison = IRB.CreateOr(OperandUnsetBits, OperandShadow); in handleVectorReduceOrIntrinsic()
3022 Value *OutShadowMask = IRB.CreateAndReduce(OperandUnsetOrPoison); in handleVectorReduceOrIntrinsic()
3024 Value *OrShadow = IRB.CreateOrReduce(OperandShadow); in handleVectorReduceOrIntrinsic()
3025 Value *S = IRB.CreateAnd(OutShadowMask, OrShadow); in handleVectorReduceOrIntrinsic()
3035 IRBuilder<> IRB(&I); in handleVectorReduceAndIntrinsic() local
3037 Value *OperandSetOrPoison = IRB.CreateOr(I.getOperand(0), OperandShadow); in handleVectorReduceAndIntrinsic()
3039 Value *OutShadowMask = IRB.CreateAndReduce(OperandSetOrPoison); in handleVectorReduceAndIntrinsic()
3041 Value *OrShadow = IRB.CreateOrReduce(OperandShadow); in handleVectorReduceAndIntrinsic()
3042 Value *S = IRB.CreateAnd(OutShadowMask, OrShadow); in handleVectorReduceAndIntrinsic()
3049 IRBuilder<> IRB(&I); in handleStmxcsr() local
3051 Type *Ty = IRB.getInt32Ty(); in handleStmxcsr()
3053 getShadowOriginPtr(Addr, IRB, Ty, Align(1), /*isStore*/ true).first; in handleStmxcsr()
3055 IRB.CreateStore(getCleanShadow(Ty), in handleStmxcsr()
3056 IRB.CreatePointerCast(ShadowPtr, Ty->getPointerTo())); in handleStmxcsr()
3065 IRBuilder<> IRB(&I); in handleLdmxcsr() local
3067 Type *Ty = IRB.getInt32Ty(); in handleLdmxcsr()
3071 getShadowOriginPtr(Addr, IRB, Ty, Alignment, /*isStore*/ false); in handleLdmxcsr()
3076 Value *Shadow = IRB.CreateAlignedLoad(Ty, ShadowPtr, Alignment, "_ldmxcsr"); in handleLdmxcsr()
3077 Value *Origin = MS.TrackOrigins ? IRB.CreateLoad(MS.OriginTy, OriginPtr) in handleLdmxcsr()
3083 IRBuilder<> IRB(&I); in handleMaskedStore() local
3094 Addr, IRB, Shadow->getType(), Alignment, /*isStore*/ true); in handleMaskedStore()
3103 IRB.CreateMaskedStore(Shadow, ShadowPtr, Alignment, Mask); in handleMaskedStore()
3107 paintOrigin(IRB, getOrigin(V), OriginPtr, in handleMaskedStore()
3114 IRBuilder<> IRB(&I); in handleMaskedLoad() local
3125 getShadowOriginPtr(Addr, IRB, ShadowTy, Alignment, /*isStore*/ false); in handleMaskedLoad()
3126 setShadow(&I, IRB.CreateMaskedLoad(ShadowTy, ShadowPtr, Alignment, Mask, in handleMaskedLoad()
3140 Value *MaskedPassThruShadow = IRB.CreateAnd( in handleMaskedLoad()
3141 getShadow(PassThru), IRB.CreateSExt(IRB.CreateNeg(Mask), ShadowTy)); in handleMaskedLoad()
3143 Value *Acc = IRB.CreateExtractElement( in handleMaskedLoad()
3144 MaskedPassThruShadow, ConstantInt::get(IRB.getInt32Ty(), 0)); in handleMaskedLoad()
3148 Value *More = IRB.CreateExtractElement( in handleMaskedLoad()
3149 MaskedPassThruShadow, ConstantInt::get(IRB.getInt32Ty(), i)); in handleMaskedLoad()
3150 Acc = IRB.CreateOr(Acc, More); in handleMaskedLoad()
3153 Value *Origin = IRB.CreateSelect( in handleMaskedLoad()
3154 IRB.CreateICmpNE(Acc, Constant::getNullValue(Acc->getType())), in handleMaskedLoad()
3155 getOrigin(PassThru), IRB.CreateLoad(MS.OriginTy, OriginPtr)); in handleMaskedLoad()
3171 IRBuilder<> IRB(&I); in handleBmiIntrinsic() local
3176 SMask = IRB.CreateSExt(IRB.CreateICmpNE(SMask, getCleanShadow(ShadowTy)), in handleBmiIntrinsic()
3179 Value *S = IRB.CreateCall(I.getCalledFunction(), in handleBmiIntrinsic()
3181 S = IRB.CreateOr(SMask, S); in handleBmiIntrinsic()
3203 IRBuilder<> IRB(&I); in handlePclmulIntrinsic() local
3209 Value *Shuf0 = IRB.CreateShuffleVector(getShadow(&I, 0), in handlePclmulIntrinsic()
3211 Value *Shuf1 = IRB.CreateShuffleVector(getShadow(&I, 1), in handlePclmulIntrinsic()
3213 ShadowAndOriginCombiner SOC(this, IRB); in handlePclmulIntrinsic()
3221 IRBuilder<> IRB(&I); in handleUnarySdSsIntrinsic() local
3231 Value *Shadow = IRB.CreateShuffleVector(First, Second, Mask); in handleUnarySdSsIntrinsic()
3238 IRBuilder<> IRB(&I); in handleBinarySdSsIntrinsic() local
3243 Value *OrShadow = IRB.CreateOr(First, Second); in handleBinarySdSsIntrinsic()
3249 Value *Shadow = IRB.CreateShuffleVector(First, OrShadow, Mask); in handleBinarySdSsIntrinsic()
3263 IRBuilder<> IRB(&I); in handleAbsIntrinsic() local
3556 IRBuilder<> IRB(&CB); in visitLibAtomicLoad() local
3564 IRB.CreateExtractElement(makeAddAcquireOrderingTable(IRB), Ordering); in visitLibAtomicLoad()
3589 IRBuilder<> IRB(&CB); in visitLibAtomicStore() local
3596 IRB.CreateExtractElement(makeAddReleaseOrderingTable(IRB), Ordering); in visitLibAtomicStore()
3600 getShadowOriginPtr(DstPtr, IRB, IRB.getInt8Ty(), Align(1), in visitLibAtomicStore()
3605 IRB.CreateMemSet(DstShadowPtr, getCleanShadow(IRB.getInt8Ty()), Size, in visitLibAtomicStore()
3665 IRBuilder<> IRB(&CB); in visitCallBase() local
3699 Value *ArgShadowBase = getShadowPtrForArgument(A, IRB, ArgOffset); in visitCallBase()
3716 getShadowOriginPtr(A, IRB, IRB.getInt8Ty(), Alignment, in visitCallBase()
3719 Store = IRB.CreateMemSet(ArgShadowBase, in visitCallBase()
3720 Constant::getNullValue(IRB.getInt8Ty()), in visitCallBase()
3723 Store = IRB.CreateMemCpy(ArgShadowBase, Alignment, AShadowPtr, in visitCallBase()
3726 Value *ArgOriginBase = getOriginPtrForArgument(A, IRB, ArgOffset); in visitCallBase()
3730 IRB.CreateMemCpy( in visitCallBase()
3743 Store = IRB.CreateAlignedStore(ArgShadow, ArgShadowBase, in visitCallBase()
3747 IRB.CreateStore(getOrigin(A), in visitCallBase()
3748 getOriginPtrForArgument(A, IRB, ArgOffset)); in visitCallBase()
3762 VAHelper->visitCallBase(CB, IRB); in visitCallBase()
3824 IRBuilder<> IRB(&I); in visitReturnInst() local
3829 Value *ShadowPtr = getShadowPtrForRetval(RetVal, IRB); in visitReturnInst()
3848 IRB.CreateAlignedStore(Shadow, ShadowPtr, kShadowTLSAlignment); in visitReturnInst()
3850 IRB.CreateStore(getOrigin(RetVal), getOriginPtrForRetval(IRB)); in visitReturnInst()
3855 IRBuilder<> IRB(&I); in visitPHINode() local
3863 setShadow(&I, IRB.CreatePHI(getShadowTy(&I), I.getNumIncomingValues(), in visitPHINode()
3866 setOrigin(&I, IRB.CreatePHI(MS.OriginTy, I.getNumIncomingValues(), in visitPHINode()
3883 void poisonAllocaUserspace(AllocaInst &I, IRBuilder<> &IRB, Value *Len) { in poisonAllocaUserspace()
3885 IRB.CreateCall(MS.MsanPoisonStackFn, in poisonAllocaUserspace()
3886 {IRB.CreatePointerCast(&I, IRB.getInt8PtrTy()), Len}); in poisonAllocaUserspace()
3890 &I, IRB, IRB.getInt8Ty(), Align(1), /*isStore*/ true); in poisonAllocaUserspace()
3892 Value *PoisonValue = IRB.getInt8(PoisonStack ? ClPoisonStackPattern : 0); in poisonAllocaUserspace()
3893 IRB.CreateMemSet(ShadowBase, PoisonValue, Len, I.getAlign()); in poisonAllocaUserspace()
3898 IRB.CreateCall(MS.MsanSetAllocaOrigin4Fn, in poisonAllocaUserspace()
3899 {IRB.CreatePointerCast(&I, IRB.getInt8PtrTy()), Len, in poisonAllocaUserspace()
3900 IRB.CreatePointerCast(Descr, IRB.getInt8PtrTy()), in poisonAllocaUserspace()
3901 IRB.CreatePointerCast(&F, MS.IntptrTy)}); in poisonAllocaUserspace()
3905 void poisonAllocaKmsan(AllocaInst &I, IRBuilder<> &IRB, Value *Len) { in poisonAllocaKmsan()
3908 IRB.CreateCall(MS.MsanPoisonAllocaFn, in poisonAllocaKmsan()
3909 {IRB.CreatePointerCast(&I, IRB.getInt8PtrTy()), Len, in poisonAllocaKmsan()
3910 IRB.CreatePointerCast(Descr, IRB.getInt8PtrTy())}); in poisonAllocaKmsan()
3912 IRB.CreateCall(MS.MsanUnpoisonAllocaFn, in poisonAllocaKmsan()
3913 {IRB.CreatePointerCast(&I, IRB.getInt8PtrTy()), Len}); in poisonAllocaKmsan()
3920 IRBuilder<> IRB(InsPoint->getNextNode()); in instrumentAlloca() local
3925 Len = IRB.CreateMul(Len, I.getArraySize()); in instrumentAlloca()
3928 poisonAllocaKmsan(I, IRB, Len); in instrumentAlloca()
3930 poisonAllocaUserspace(I, IRB, Len); in instrumentAlloca()
3942 IRBuilder<> IRB(&I); in visitSelectInst() local
3952 Value *Sa0 = IRB.CreateSelect(B, Sc, Sd); in visitSelectInst()
3966 C = CreateAppToShadowCast(IRB, C); in visitSelectInst()
3967 D = CreateAppToShadowCast(IRB, D); in visitSelectInst()
3970 Sa1 = IRB.CreateOr({IRB.CreateXor(C, D), Sc, Sd}); in visitSelectInst()
3972 Value *Sa = IRB.CreateSelect(Sb, Sa1, Sa0, "_msprop_select"); in visitSelectInst()
3979 B = IRB.CreateICmpNE(IRB.CreateBitCast(B, FlatTy), in visitSelectInst()
3981 Sb = IRB.CreateICmpNE(IRB.CreateBitCast(Sb, FlatTy), in visitSelectInst()
3987 &I, IRB.CreateSelect(Sb, getOrigin(I.getCondition()), in visitSelectInst()
3988 IRB.CreateSelect(B, getOrigin(I.getTrueValue()), in visitSelectInst()
4015 IRBuilder<> IRB(&I); in visitExtractValueInst() local
4020 Value *ResShadow = IRB.CreateExtractValue(AggShadow, I.getIndices()); in visitExtractValueInst()
4027 IRBuilder<> IRB(&I); in visitInsertValueInst() local
4033 Value *Res = IRB.CreateInsertValue(AggShadow, InsShadow, I.getIndices()); in visitInsertValueInst()
4064 IRBuilder<> &IRB, const DataLayout &DL, in instrumentAsmArgument()
4080 Value *Ptr = IRB.CreatePointerCast(Operand, IRB.getInt8PtrTy()); in instrumentAsmArgument()
4082 IRB.CreateCall(MS.MsanInstrumentAsmStoreFn, {Ptr, SizeVal}); in instrumentAsmArgument()
4129 IRBuilder<> IRB(&I); in visitAsmInstruction() local
4139 instrumentAsmArgument(Operand, CB->getParamElementType(i), I, IRB, DL, in visitAsmInstruction()
4147 instrumentAsmArgument(Operand, CB->getParamElementType(i), I, IRB, DL, in visitAsmInstruction()
4231 void visitCallBase(CallBase &CB, IRBuilder<> &IRB) override { in visitCallBase()
4252 RealTy, IRB, OverflowOffset, alignTo(ArgSize, 8)); in visitCallBase()
4255 OriginBase = getOriginPtrForVAArgument(RealTy, IRB, OverflowOffset); in visitCallBase()
4261 MSV.getShadowOriginPtr(A, IRB, IRB.getInt8Ty(), kShadowTLSAlignment, in visitCallBase()
4264 IRB.CreateMemCpy(ShadowBase, kShadowTLSAlignment, ShadowPtr, in visitCallBase()
4267 IRB.CreateMemCpy(OriginBase, kShadowTLSAlignment, OriginPtr, in visitCallBase()
4279 getShadowPtrForVAArgument(A->getType(), IRB, GpOffset, 8); in visitCallBase()
4282 getOriginPtrForVAArgument(A->getType(), IRB, GpOffset); in visitCallBase()
4287 getShadowPtrForVAArgument(A->getType(), IRB, FpOffset, 16); in visitCallBase()
4290 getOriginPtrForVAArgument(A->getType(), IRB, FpOffset); in visitCallBase()
4298 getShadowPtrForVAArgument(A->getType(), IRB, OverflowOffset, 8); in visitCallBase()
4301 getOriginPtrForVAArgument(A->getType(), IRB, OverflowOffset); in visitCallBase()
4312 IRB.CreateAlignedStore(Shadow, ShadowBase, kShadowTLSAlignment); in visitCallBase()
4316 MSV.paintOrigin(IRB, Origin, OriginBase, StoreSize, in visitCallBase()
4322 ConstantInt::get(IRB.getInt64Ty(), OverflowOffset - AMD64FpEndOffset); in visitCallBase()
4323 IRB.CreateStore(OverflowSize, MS.VAArgOverflowSizeTLS); in visitCallBase()
4327 Value *getShadowPtrForVAArgument(Type *Ty, IRBuilder<> &IRB, in getShadowPtrForVAArgument()
4332 Value *Base = IRB.CreatePointerCast(MS.VAArgTLS, MS.IntptrTy); in getShadowPtrForVAArgument()
4333 Base = IRB.CreateAdd(Base, ConstantInt::get(MS.IntptrTy, ArgOffset)); in getShadowPtrForVAArgument()
4334 return IRB.CreateIntToPtr(Base, PointerType::get(MSV.getShadowTy(Ty), 0), in getShadowPtrForVAArgument()
4339 Value *getOriginPtrForVAArgument(Type *Ty, IRBuilder<> &IRB, int ArgOffset) { in getOriginPtrForVAArgument()
4340 Value *Base = IRB.CreatePointerCast(MS.VAArgOriginTLS, MS.IntptrTy); in getOriginPtrForVAArgument()
4344 Base = IRB.CreateAdd(Base, ConstantInt::get(MS.IntptrTy, ArgOffset)); in getOriginPtrForVAArgument()
4345 return IRB.CreateIntToPtr(Base, PointerType::get(MS.OriginTy, 0), in getOriginPtrForVAArgument()
4350 IRBuilder<> IRB(&I); in unpoisonVAListTagForInst() local
4355 MSV.getShadowOriginPtr(VAListTag, IRB, IRB.getInt8Ty(), Alignment, in unpoisonVAListTagForInst()
4360 IRB.CreateMemSet(ShadowPtr, Constant::getNullValue(IRB.getInt8Ty()), in unpoisonVAListTagForInst()
4384 IRBuilder<> IRB(MSV.FnPrologueEnd); in finalizeInstrumentation() local
4386 IRB.CreateLoad(IRB.getInt64Ty(), MS.VAArgOverflowSizeTLS); in finalizeInstrumentation()
4388 IRB.CreateAdd(ConstantInt::get(MS.IntptrTy, AMD64FpEndOffset), in finalizeInstrumentation()
4390 VAArgTLSCopy = IRB.CreateAlloca(Type::getInt8Ty(*MS.C), CopySize); in finalizeInstrumentation()
4391 IRB.CreateMemCpy(VAArgTLSCopy, Align(8), MS.VAArgTLS, Align(8), CopySize); in finalizeInstrumentation()
4393 VAArgTLSOriginCopy = IRB.CreateAlloca(Type::getInt8Ty(*MS.C), CopySize); in finalizeInstrumentation()
4394 IRB.CreateMemCpy(VAArgTLSOriginCopy, Align(8), MS.VAArgOriginTLS, in finalizeInstrumentation()
4403 IRBuilder<> IRB(OrigInst->getNextNode()); in finalizeInstrumentation() local
4407 Value *RegSaveAreaPtrPtr = IRB.CreateIntToPtr( in finalizeInstrumentation()
4408 IRB.CreateAdd(IRB.CreatePtrToInt(VAListTag, MS.IntptrTy), in finalizeInstrumentation()
4412 IRB.CreateLoad(RegSaveAreaPtrTy, RegSaveAreaPtrPtr); in finalizeInstrumentation()
4416 MSV.getShadowOriginPtr(RegSaveAreaPtr, IRB, IRB.getInt8Ty(), in finalizeInstrumentation()
4418 IRB.CreateMemCpy(RegSaveAreaShadowPtr, Alignment, VAArgTLSCopy, Alignment, in finalizeInstrumentation()
4421 IRB.CreateMemCpy(RegSaveAreaOriginPtr, Alignment, VAArgTLSOriginCopy, in finalizeInstrumentation()
4424 Value *OverflowArgAreaPtrPtr = IRB.CreateIntToPtr( in finalizeInstrumentation()
4425 IRB.CreateAdd(IRB.CreatePtrToInt(VAListTag, MS.IntptrTy), in finalizeInstrumentation()
4429 IRB.CreateLoad(OverflowArgAreaPtrTy, OverflowArgAreaPtrPtr); in finalizeInstrumentation()
4432 MSV.getShadowOriginPtr(OverflowArgAreaPtr, IRB, IRB.getInt8Ty(), in finalizeInstrumentation()
4434 Value *SrcPtr = IRB.CreateConstGEP1_32(IRB.getInt8Ty(), VAArgTLSCopy, in finalizeInstrumentation()
4436 IRB.CreateMemCpy(OverflowArgAreaShadowPtr, Alignment, SrcPtr, Alignment, in finalizeInstrumentation()
4439 SrcPtr = IRB.CreateConstGEP1_32(IRB.getInt8Ty(), VAArgTLSOriginCopy, in finalizeInstrumentation()
4441 IRB.CreateMemCpy(OverflowArgAreaOriginPtr, Alignment, SrcPtr, Alignment, in finalizeInstrumentation()
4461 void visitCallBase(CallBase &CB, IRBuilder<> &IRB) override { in visitCallBase()
4477 Base = getShadowPtrForVAArgument(A->getType(), IRB, VAArgOffset, ArgSize); in visitCallBase()
4482 IRB.CreateAlignedStore(MSV.getShadow(A), Base, kShadowTLSAlignment); in visitCallBase()
4485 Constant *TotalVAArgSize = ConstantInt::get(IRB.getInt64Ty(), VAArgOffset); in visitCallBase()
4488 IRB.CreateStore(TotalVAArgSize, MS.VAArgOverflowSizeTLS); in visitCallBase()
4492 Value *getShadowPtrForVAArgument(Type *Ty, IRBuilder<> &IRB, in getShadowPtrForVAArgument()
4497 Value *Base = IRB.CreatePointerCast(MS.VAArgTLS, MS.IntptrTy); in getShadowPtrForVAArgument()
4498 Base = IRB.CreateAdd(Base, ConstantInt::get(MS.IntptrTy, ArgOffset)); in getShadowPtrForVAArgument()
4499 return IRB.CreateIntToPtr(Base, PointerType::get(MSV.getShadowTy(Ty), 0), in getShadowPtrForVAArgument()
4504 IRBuilder<> IRB(&I); in visitVAStartInst() local
4510 VAListTag, IRB, IRB.getInt8Ty(), Alignment, /*isStore*/ true); in visitVAStartInst()
4511 IRB.CreateMemSet(ShadowPtr, Constant::getNullValue(IRB.getInt8Ty()), in visitVAStartInst()
4516 IRBuilder<> IRB(&I); in visitVACopyInst() local
4522 VAListTag, IRB, IRB.getInt8Ty(), Alignment, /*isStore*/ true); in visitVACopyInst()
4523 IRB.CreateMemSet(ShadowPtr, Constant::getNullValue(IRB.getInt8Ty()), in visitVACopyInst()
4530 IRBuilder<> IRB(MSV.FnPrologueEnd); in finalizeInstrumentation() local
4531 VAArgSize = IRB.CreateLoad(IRB.getInt64Ty(), MS.VAArgOverflowSizeTLS); in finalizeInstrumentation()
4532 Value *CopySize = IRB.CreateAdd(ConstantInt::get(MS.IntptrTy, 0), in finalizeInstrumentation()
4538 VAArgTLSCopy = IRB.CreateAlloca(Type::getInt8Ty(*MS.C), CopySize); in finalizeInstrumentation()
4539 IRB.CreateMemCpy(VAArgTLSCopy, Align(8), MS.VAArgTLS, Align(8), CopySize); in finalizeInstrumentation()
4546 IRBuilder<> IRB(OrigInst->getNextNode()); in finalizeInstrumentation() local
4550 IRB.CreateIntToPtr(IRB.CreatePtrToInt(VAListTag, MS.IntptrTy), in finalizeInstrumentation()
4553 IRB.CreateLoad(RegSaveAreaPtrTy, RegSaveAreaPtrPtr); in finalizeInstrumentation()
4557 MSV.getShadowOriginPtr(RegSaveAreaPtr, IRB, IRB.getInt8Ty(), in finalizeInstrumentation()
4559 IRB.CreateMemCpy(RegSaveAreaShadowPtr, Alignment, VAArgTLSCopy, Alignment, in finalizeInstrumentation()
4610 void visitCallBase(CallBase &CB, IRBuilder<> &IRB) override { in visitCallBase()
4629 Base = getShadowPtrForVAArgument(A->getType(), IRB, GrOffset, 8); in visitCallBase()
4633 Base = getShadowPtrForVAArgument(A->getType(), IRB, VrOffset, 8); in visitCallBase()
4642 Base = getShadowPtrForVAArgument(A->getType(), IRB, OverflowOffset, in visitCallBase()
4653 IRB.CreateAlignedStore(MSV.getShadow(A), Base, kShadowTLSAlignment); in visitCallBase()
4656 ConstantInt::get(IRB.getInt64Ty(), OverflowOffset - AArch64VAEndOffset); in visitCallBase()
4657 IRB.CreateStore(OverflowSize, MS.VAArgOverflowSizeTLS); in visitCallBase()
4661 Value *getShadowPtrForVAArgument(Type *Ty, IRBuilder<> &IRB, in getShadowPtrForVAArgument()
4666 Value *Base = IRB.CreatePointerCast(MS.VAArgTLS, MS.IntptrTy); in getShadowPtrForVAArgument()
4667 Base = IRB.CreateAdd(Base, ConstantInt::get(MS.IntptrTy, ArgOffset)); in getShadowPtrForVAArgument()
4668 return IRB.CreateIntToPtr(Base, PointerType::get(MSV.getShadowTy(Ty), 0), in getShadowPtrForVAArgument()
4673 IRBuilder<> IRB(&I); in visitVAStartInst() local
4679 VAListTag, IRB, IRB.getInt8Ty(), Alignment, /*isStore*/ true); in visitVAStartInst()
4680 IRB.CreateMemSet(ShadowPtr, Constant::getNullValue(IRB.getInt8Ty()), in visitVAStartInst()
4685 IRBuilder<> IRB(&I); in visitVACopyInst() local
4691 VAListTag, IRB, IRB.getInt8Ty(), Alignment, /*isStore*/ true); in visitVACopyInst()
4692 IRB.CreateMemSet(ShadowPtr, Constant::getNullValue(IRB.getInt8Ty()), in visitVACopyInst()
4697 Value* getVAField64(IRBuilder<> &IRB, Value *VAListTag, int offset) { in getVAField64()
4699 IRB.CreateIntToPtr( in getVAField64()
4700 IRB.CreateAdd(IRB.CreatePtrToInt(VAListTag, MS.IntptrTy), in getVAField64()
4703 return IRB.CreateLoad(Type::getInt64Ty(*MS.C), SaveAreaPtrPtr); in getVAField64()
4707 Value* getVAField32(IRBuilder<> &IRB, Value *VAListTag, int offset) { in getVAField32()
4709 IRB.CreateIntToPtr( in getVAField32()
4710 IRB.CreateAdd(IRB.CreatePtrToInt(VAListTag, MS.IntptrTy), in getVAField32()
4713 Value *SaveArea32 = IRB.CreateLoad(IRB.getInt32Ty(), SaveAreaPtr); in getVAField32()
4714 return IRB.CreateSExt(SaveArea32, MS.IntptrTy); in getVAField32()
4723 IRBuilder<> IRB(MSV.FnPrologueEnd); in finalizeInstrumentation() local
4725 IRB.CreateLoad(IRB.getInt64Ty(), MS.VAArgOverflowSizeTLS); in finalizeInstrumentation()
4727 IRB.CreateAdd(ConstantInt::get(MS.IntptrTy, AArch64VAEndOffset), in finalizeInstrumentation()
4729 VAArgTLSCopy = IRB.CreateAlloca(Type::getInt8Ty(*MS.C), CopySize); in finalizeInstrumentation()
4730 IRB.CreateMemCpy(VAArgTLSCopy, Align(8), MS.VAArgTLS, Align(8), CopySize); in finalizeInstrumentation()
4740 IRBuilder<> IRB(OrigInst->getNextNode()); in finalizeInstrumentation() local
4758 Value *StackSaveAreaPtr = getVAField64(IRB, VAListTag, 0); in finalizeInstrumentation()
4761 Value *GrTopSaveAreaPtr = getVAField64(IRB, VAListTag, 8); in finalizeInstrumentation()
4762 Value *GrOffSaveArea = getVAField32(IRB, VAListTag, 24); in finalizeInstrumentation()
4764 Value *GrRegSaveAreaPtr = IRB.CreateAdd(GrTopSaveAreaPtr, GrOffSaveArea); in finalizeInstrumentation()
4767 Value *VrTopSaveAreaPtr = getVAField64(IRB, VAListTag, 16); in finalizeInstrumentation()
4768 Value *VrOffSaveArea = getVAField32(IRB, VAListTag, 28); in finalizeInstrumentation()
4770 Value *VrRegSaveAreaPtr = IRB.CreateAdd(VrTopSaveAreaPtr, VrOffSaveArea); in finalizeInstrumentation()
4777 IRB.CreateAdd(GrArgSize, GrOffSaveArea); in finalizeInstrumentation()
4780 MSV.getShadowOriginPtr(GrRegSaveAreaPtr, IRB, IRB.getInt8Ty(), in finalizeInstrumentation()
4784 Value *GrSrcPtr = IRB.CreateInBoundsGEP(IRB.getInt8Ty(), VAArgTLSCopy, in finalizeInstrumentation()
4786 Value *GrCopySize = IRB.CreateSub(GrArgSize, GrRegSaveAreaShadowPtrOff); in finalizeInstrumentation()
4788 IRB.CreateMemCpy(GrRegSaveAreaShadowPtr, Align(8), GrSrcPtr, Align(8), in finalizeInstrumentation()
4793 IRB.CreateAdd(VrArgSize, VrOffSaveArea); in finalizeInstrumentation()
4796 MSV.getShadowOriginPtr(VrRegSaveAreaPtr, IRB, IRB.getInt8Ty(), in finalizeInstrumentation()
4800 Value *VrSrcPtr = IRB.CreateInBoundsGEP( in finalizeInstrumentation()
4801 IRB.getInt8Ty(), in finalizeInstrumentation()
4802 IRB.CreateInBoundsGEP(IRB.getInt8Ty(), VAArgTLSCopy, in finalizeInstrumentation()
4803 IRB.getInt32(AArch64VrBegOffset)), in finalizeInstrumentation()
4805 Value *VrCopySize = IRB.CreateSub(VrArgSize, VrRegSaveAreaShadowPtrOff); in finalizeInstrumentation()
4807 IRB.CreateMemCpy(VrRegSaveAreaShadowPtr, Align(8), VrSrcPtr, Align(8), in finalizeInstrumentation()
4812 MSV.getShadowOriginPtr(StackSaveAreaPtr, IRB, IRB.getInt8Ty(), in finalizeInstrumentation()
4817 IRB.CreateInBoundsGEP(IRB.getInt8Ty(), VAArgTLSCopy, in finalizeInstrumentation()
4818 IRB.getInt32(AArch64VAEndOffset)); in finalizeInstrumentation()
4820 IRB.CreateMemCpy(StackSaveAreaShadowPtr, Align(16), StackSrcPtr, in finalizeInstrumentation()
4839 void visitCallBase(CallBase &CB, IRBuilder<> &IRB) override { in visitCallBase()
4873 RealTy, IRB, VAArgOffset - VAArgBase, ArgSize); in visitCallBase()
4877 MSV.getShadowOriginPtr(A, IRB, IRB.getInt8Ty(), in visitCallBase()
4880 IRB.CreateMemCpy(Base, kShadowTLSAlignment, AShadowPtr, in visitCallBase()
4909 Base = getShadowPtrForVAArgument(A->getType(), IRB, in visitCallBase()
4912 IRB.CreateAlignedStore(MSV.getShadow(A), Base, kShadowTLSAlignment); in visitCallBase()
4921 Constant *TotalVAArgSize = ConstantInt::get(IRB.getInt64Ty(), in visitCallBase()
4925 IRB.CreateStore(TotalVAArgSize, MS.VAArgOverflowSizeTLS); in visitCallBase()
4929 Value *getShadowPtrForVAArgument(Type *Ty, IRBuilder<> &IRB, in getShadowPtrForVAArgument()
4934 Value *Base = IRB.CreatePointerCast(MS.VAArgTLS, MS.IntptrTy); in getShadowPtrForVAArgument()
4935 Base = IRB.CreateAdd(Base, ConstantInt::get(MS.IntptrTy, ArgOffset)); in getShadowPtrForVAArgument()
4936 return IRB.CreateIntToPtr(Base, PointerType::get(MSV.getShadowTy(Ty), 0), in getShadowPtrForVAArgument()
4941 IRBuilder<> IRB(&I); in visitVAStartInst() local
4947 VAListTag, IRB, IRB.getInt8Ty(), Alignment, /*isStore*/ true); in visitVAStartInst()
4948 IRB.CreateMemSet(ShadowPtr, Constant::getNullValue(IRB.getInt8Ty()), in visitVAStartInst()
4953 IRBuilder<> IRB(&I); in visitVACopyInst() local
4958 VAListTag, IRB, IRB.getInt8Ty(), Alignment, /*isStore*/ true); in visitVACopyInst()
4961 IRB.CreateMemSet(ShadowPtr, Constant::getNullValue(IRB.getInt8Ty()), in visitVACopyInst()
4968 IRBuilder<> IRB(MSV.FnPrologueEnd); in finalizeInstrumentation() local
4969 VAArgSize = IRB.CreateLoad(IRB.getInt64Ty(), MS.VAArgOverflowSizeTLS); in finalizeInstrumentation()
4970 Value *CopySize = IRB.CreateAdd(ConstantInt::get(MS.IntptrTy, 0), in finalizeInstrumentation()
4976 VAArgTLSCopy = IRB.CreateAlloca(Type::getInt8Ty(*MS.C), CopySize); in finalizeInstrumentation()
4977 IRB.CreateMemCpy(VAArgTLSCopy, Align(8), MS.VAArgTLS, Align(8), CopySize); in finalizeInstrumentation()
4984 IRBuilder<> IRB(OrigInst->getNextNode()); in finalizeInstrumentation() local
4988 IRB.CreateIntToPtr(IRB.CreatePtrToInt(VAListTag, MS.IntptrTy), in finalizeInstrumentation()
4991 IRB.CreateLoad(RegSaveAreaPtrTy, RegSaveAreaPtrPtr); in finalizeInstrumentation()
4995 MSV.getShadowOriginPtr(RegSaveAreaPtr, IRB, IRB.getInt8Ty(), in finalizeInstrumentation()
4997 IRB.CreateMemCpy(RegSaveAreaShadowPtr, Alignment, VAArgTLSCopy, Alignment, in finalizeInstrumentation()
5076 void visitCallBase(CallBase &CB, IRBuilder<> &IRB) override { in visitCallBase()
5120 ShadowBase = getShadowAddrForVAArgument(IRB, GpOffset + GapSize); in visitCallBase()
5122 OriginBase = getOriginPtrForVAArgument(IRB, GpOffset + GapSize); in visitCallBase()
5139 ShadowBase = getShadowAddrForVAArgument(IRB, FpOffset); in visitCallBase()
5141 OriginBase = getOriginPtrForVAArgument(IRB, FpOffset); in visitCallBase()
5168 getShadowAddrForVAArgument(IRB, OverflowOffset + GapSize); in visitCallBase()
5171 getOriginPtrForVAArgument(IRB, OverflowOffset + GapSize); in visitCallBase()
5186 Shadow = MSV.CreateShadowCast(IRB, Shadow, IRB.getInt64Ty(), in visitCallBase()
5188 ShadowBase = IRB.CreateIntToPtr( in visitCallBase()
5190 IRB.CreateStore(Shadow, ShadowBase); in visitCallBase()
5194 MSV.paintOrigin(IRB, Origin, OriginBase, StoreSize, in visitCallBase()
5199 IRB.getInt64Ty(), OverflowOffset - SystemZOverflowOffset); in visitCallBase()
5200 IRB.CreateStore(OverflowSize, MS.VAArgOverflowSizeTLS); in visitCallBase()
5203 Value *getShadowAddrForVAArgument(IRBuilder<> &IRB, unsigned ArgOffset) { in getShadowAddrForVAArgument()
5204 Value *Base = IRB.CreatePointerCast(MS.VAArgTLS, MS.IntptrTy); in getShadowAddrForVAArgument()
5205 return IRB.CreateAdd(Base, ConstantInt::get(MS.IntptrTy, ArgOffset)); in getShadowAddrForVAArgument()
5208 Value *getOriginPtrForVAArgument(IRBuilder<> &IRB, int ArgOffset) { in getOriginPtrForVAArgument()
5209 Value *Base = IRB.CreatePointerCast(MS.VAArgOriginTLS, MS.IntptrTy); in getOriginPtrForVAArgument()
5210 Base = IRB.CreateAdd(Base, ConstantInt::get(MS.IntptrTy, ArgOffset)); in getOriginPtrForVAArgument()
5211 return IRB.CreateIntToPtr(Base, PointerType::get(MS.OriginTy, 0), in getOriginPtrForVAArgument()
5216 IRBuilder<> IRB(&I); in unpoisonVAListTagForInst() local
5221 MSV.getShadowOriginPtr(VAListTag, IRB, IRB.getInt8Ty(), Alignment, in unpoisonVAListTagForInst()
5223 IRB.CreateMemSet(ShadowPtr, Constant::getNullValue(IRB.getInt8Ty()), in unpoisonVAListTagForInst()
5234 void copyRegSaveArea(IRBuilder<> &IRB, Value *VAListTag) { in copyRegSaveArea()
5236 Value *RegSaveAreaPtrPtr = IRB.CreateIntToPtr( in copyRegSaveArea()
5237 IRB.CreateAdd( in copyRegSaveArea()
5238 IRB.CreatePtrToInt(VAListTag, MS.IntptrTy), in copyRegSaveArea()
5241 Value *RegSaveAreaPtr = IRB.CreateLoad(RegSaveAreaPtrTy, RegSaveAreaPtrPtr); in copyRegSaveArea()
5245 MSV.getShadowOriginPtr(RegSaveAreaPtr, IRB, IRB.getInt8Ty(), Alignment, in copyRegSaveArea()
5248 IRB.CreateMemCpy(RegSaveAreaShadowPtr, Alignment, VAArgTLSCopy, Alignment, in copyRegSaveArea()
5251 IRB.CreateMemCpy(RegSaveAreaOriginPtr, Alignment, VAArgTLSOriginCopy, in copyRegSaveArea()
5255 void copyOverflowArea(IRBuilder<> &IRB, Value *VAListTag) { in copyOverflowArea()
5257 Value *OverflowArgAreaPtrPtr = IRB.CreateIntToPtr( in copyOverflowArea()
5258 IRB.CreateAdd( in copyOverflowArea()
5259 IRB.CreatePtrToInt(VAListTag, MS.IntptrTy), in copyOverflowArea()
5263 IRB.CreateLoad(OverflowArgAreaPtrTy, OverflowArgAreaPtrPtr); in copyOverflowArea()
5267 MSV.getShadowOriginPtr(OverflowArgAreaPtr, IRB, IRB.getInt8Ty(), in copyOverflowArea()
5269 Value *SrcPtr = IRB.CreateConstGEP1_32(IRB.getInt8Ty(), VAArgTLSCopy, in copyOverflowArea()
5271 IRB.CreateMemCpy(OverflowArgAreaShadowPtr, Alignment, SrcPtr, Alignment, in copyOverflowArea()
5274 SrcPtr = IRB.CreateConstGEP1_32(IRB.getInt8Ty(), VAArgTLSOriginCopy, in copyOverflowArea()
5276 IRB.CreateMemCpy(OverflowArgAreaOriginPtr, Alignment, SrcPtr, Alignment, in copyOverflowArea()
5287 IRBuilder<> IRB(MSV.FnPrologueEnd); in finalizeInstrumentation() local
5289 IRB.CreateLoad(IRB.getInt64Ty(), MS.VAArgOverflowSizeTLS); in finalizeInstrumentation()
5291 IRB.CreateAdd(ConstantInt::get(MS.IntptrTy, SystemZOverflowOffset), in finalizeInstrumentation()
5293 VAArgTLSCopy = IRB.CreateAlloca(Type::getInt8Ty(*MS.C), CopySize); in finalizeInstrumentation()
5294 IRB.CreateMemCpy(VAArgTLSCopy, Align(8), MS.VAArgTLS, Align(8), CopySize); in finalizeInstrumentation()
5296 VAArgTLSOriginCopy = IRB.CreateAlloca(Type::getInt8Ty(*MS.C), CopySize); in finalizeInstrumentation()
5297 IRB.CreateMemCpy(VAArgTLSOriginCopy, Align(8), MS.VAArgOriginTLS, in finalizeInstrumentation()
5307 IRBuilder<> IRB(OrigInst->getNextNode()); in finalizeInstrumentation() local
5309 copyRegSaveArea(IRB, VAListTag); in finalizeInstrumentation()
5310 copyOverflowArea(IRB, VAListTag); in finalizeInstrumentation()
5320 void visitCallBase(CallBase &CB, IRBuilder<> &IRB) override {} in visitCallBase()