diff options
| author | Nikita Popov <npopov@redhat.com> | 2026-02-12 14:41:00 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-02-12 14:41:00 +0100 |
| commit | 4167b285e228ee1cfff77f30eee66cbc7b4dd3db (patch) | |
| tree | bf96084da188ce1302998c6959825770fa626e3d /llvm/lib | |
| parent | dcb38a4ef788be1276ac1aee5b48a400dd18013f (diff) | |
| download | llvm-4167b285e228ee1cfff77f30eee66cbc7b4dd3db.tar.gz llvm-4167b285e228ee1cfff77f30eee66cbc7b4dd3db.tar.bz2 llvm-4167b285e228ee1cfff77f30eee66cbc7b4dd3db.zip | |
[AggressiveInstCombine] Create zext during store merge (#181125)
The top extracted value can include shifted-in zero bits. In that case
we should emit a zext before the new store.
Fixes https://github.com/llvm/llvm-project/issues/181117.
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Transforms/AggressiveInstCombine/AggressiveInstCombine.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/AggressiveInstCombine/AggressiveInstCombine.cpp b/llvm/lib/Transforms/AggressiveInstCombine/AggressiveInstCombine.cpp index 3341368208c2..797fabde3f25 100644 --- a/llvm/lib/Transforms/AggressiveInstCombine/AggressiveInstCombine.cpp +++ b/llvm/lib/Transforms/AggressiveInstCombine/AggressiveInstCombine.cpp @@ -915,7 +915,7 @@ static bool mergeConsecutivePartStores(ArrayRef<PartStore> Parts, Value *Val = First.Val; if (First.ValOffset != 0) Val = Builder.CreateLShr(Val, First.ValOffset); - Val = Builder.CreateTrunc(Val, NewTy); + Val = Builder.CreateZExtOrTrunc(Val, NewTy); StoreInst *Store = Builder.CreateAlignedStore( Val, First.Store->getPointerOperand(), First.Store->getAlign()); |
