[compiler-rt] [llvm] [Memprof] Adds instrumentation support for memprof with histograms. (PR #100834)
Teresa Johnson via llvm-commits
llvm-commits at lists.llvm.org
Fri Jul 26 18:00:37 PDT 2024
================
@@ -489,16 +489,38 @@ void MemProfiler::instrumentAddress(Instruction *OrigIns,
return;
}
- // Create an inline sequence to compute shadow location, and increment the
- // value by one.
- Type *ShadowTy = Type::getInt64Ty(*C);
- Type *ShadowPtrTy = PointerType::get(ShadowTy, 0);
- Value *ShadowPtr = memToShadow(AddrLong, IRB);
- Value *ShadowAddr = IRB.CreateIntToPtr(ShadowPtr, ShadowPtrTy);
- Value *ShadowValue = IRB.CreateLoad(ShadowTy, ShadowAddr);
- Value *Inc = ConstantInt::get(Type::getInt64Ty(*C), 1);
- ShadowValue = IRB.CreateAdd(ShadowValue, Inc);
- IRB.CreateStore(ShadowValue, ShadowAddr);
+ if (ClHistogram) {
+ Type *ShadowTy = Type::getInt8Ty(*C);
+ Type *ShadowPtrTy = PointerType::get(ShadowTy, 0);
+ Value *Shadow = IRB.CreateAnd(AddrLong, Mapping.Mask);
+ Shadow = IRB.CreateLShr(Shadow, Mapping.Scale);
+ assert(DynamicShadowOffset);
+ Value *ShadowInteger = IRB.CreateAdd(Shadow, DynamicShadowOffset);
----------------
teresajohnson wrote:
Can't the above 4 lines just reuse memToShadow?
https://github.com/llvm/llvm-project/pull/100834
More information about the llvm-commits
mailing list