[llvm] [mlir] [OpenMP][CodeExtractor]Add align metadata to load instructions (PR #131131)
Michael Kruse via llvm-commits
llvm-commits at lists.llvm.org
Mon Apr 7 04:05:35 PDT 2025
================
@@ -1612,8 +1625,31 @@ void CodeExtractor::emitFunctionBody(
Idx[1] = ConstantInt::get(Type::getInt32Ty(header->getContext()), aggIdx);
GetElementPtrInst *GEP = GetElementPtrInst::Create(
StructArgTy, AggArg, Idx, "gep_" + inputs[i]->getName(), newFuncRoot);
- RewriteVal = new LoadInst(StructArgTy->getElementType(aggIdx), GEP,
- "loadgep_" + inputs[i]->getName(), newFuncRoot);
+ LoadInst *LoadGEP =
+ new LoadInst(StructArgTy->getElementType(aggIdx), GEP,
+ "loadgep_" + inputs[i]->getName(), newFuncRoot);
+ if (StructArgTy->getElementType(aggIdx)->isPointerTy()) {
+ unsigned AlignmentValue;
+ const Triple &TargetTriple =
+ newFunction->getParent()->getTargetTriple();
+ const DataLayout &DL = header->getDataLayout();
+ // Pointers without casting can provide more information about
+ // alignment. Use pointers without casts if given target preserves
+ // alignment information for cast the operation.
+ if (isAlignmentPreservedForAddrCast(TargetTriple))
+ AlignmentValue =
+ inputs[i]->stripPointerCasts()->getPointerAlignment(DL).value();
----------------
Meinersbur wrote:
Is it possible to make `getPointerAlignment` to strip irrelevant casts itsself?
https://github.com/llvm/llvm-project/pull/131131
More information about the llvm-commits
mailing list