[llvm] LowerAtomic: Use explicit alignment in lowerAtomicCmpXchgInst (PR #103767)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Wed Aug 14 06:02:27 PDT 2024
https://github.com/arsenm updated https://github.com/llvm/llvm-project/pull/103767
>From c4a2ad5bf2691287ec66113f9a528bd1d2d073ec Mon Sep 17 00:00:00 2001
From: Matt Arsenault <Matthew.Arsenault at amd.com>
Date: Wed, 14 Aug 2024 13:53:27 +0400
Subject: [PATCH] LowerAtomic: Use explicit alignment in lowerAtomicCmpXchgInst
---
llvm/lib/Transforms/Utils/LowerAtomic.cpp | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/llvm/lib/Transforms/Utils/LowerAtomic.cpp b/llvm/lib/Transforms/Utils/LowerAtomic.cpp
index b203970ef9c5a0..f9bf419fb02252 100644
--- a/llvm/lib/Transforms/Utils/LowerAtomic.cpp
+++ b/llvm/lib/Transforms/Utils/LowerAtomic.cpp
@@ -25,10 +25,11 @@ bool llvm::lowerAtomicCmpXchgInst(AtomicCmpXchgInst *CXI) {
Value *Cmp = CXI->getCompareOperand();
Value *Val = CXI->getNewValOperand();
- LoadInst *Orig = Builder.CreateLoad(Val->getType(), Ptr);
+ LoadInst *Orig =
+ Builder.CreateAlignedLoad(Val->getType(), Ptr, CXI->getAlign());
Value *Equal = Builder.CreateICmpEQ(Orig, Cmp);
Value *Res = Builder.CreateSelect(Equal, Val, Orig);
- Builder.CreateStore(Res, Ptr);
+ Builder.CreateAlignedStore(Res, Ptr, CXI->getAlign());
Res = Builder.CreateInsertValue(PoisonValue::get(CXI->getType()), Orig, 0);
Res = Builder.CreateInsertValue(Res, Equal, 1);
More information about the llvm-commits
mailing list