[compiler-rt] [llvm] [msan] Add 32-bit platforms support (PR #109284)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 12 14:05:35 PST 2024
================
@@ -5709,11 +5716,26 @@ struct VarArgPowerPCHelper : public VarArgHelperBase {
for (CallInst *OrigInst : VAStartInstrumentationList) {
NextNodeIRBuilder IRB(OrigInst);
Value *VAListTag = OrigInst->getArgOperand(0);
- Value *RegSaveAreaPtrPtr = IRB.CreateIntToPtr(
- IRB.CreatePtrToInt(VAListTag, MS.IntptrTy), MS.PtrTy);
+ Value *RegSaveAreaPtrPtr;
+
+ Triple TargetTriple(F.getParent()->getTargetTriple());
+
+ // In PPC32 va_list_tag is a struct, whereas in PPC64 it's a pointer
+ if (TargetTriple.isPPC64()) {
+ RegSaveAreaPtrPtr = IRB.CreateIntToPtr(
+ IRB.CreatePtrToInt(VAListTag, MS.IntptrTy), MS.PtrTy);
+ } else {
+ RegSaveAreaPtrPtr = IRB.CreateIntToPtr(
+ IRB.CreateAdd(IRB.CreatePtrToInt(VAListTag, MS.IntptrTy),
+ ConstantInt::get(MS.IntptrTy, 8)),
+ MS.PtrTy);
+ }
+
Value *RegSaveAreaPtr = IRB.CreateLoad(MS.PtrTy, RegSaveAreaPtrPtr);
Value *RegSaveAreaShadowPtr, *RegSaveAreaOriginPtr;
- const Align Alignment = Align(8);
+ const DataLayout &DL = F.getDataLayout();
----------------
k-kashapov wrote:
DL is declared in `visitCallBase`, this funciton is `finalizeInstrumentation`.
https://github.com/llvm/llvm-project/pull/109284
More information about the llvm-commits
mailing list