[llvm] [X86] combineTruncate - drop load alignment after (trunc (srl (load p), amt)) -> (load p + amt/8) fold (PR #165436)

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Tue Oct 28 09:56:11 PDT 2025


https://github.com/RKSimon created https://github.com/llvm/llvm-project/pull/165436

The pointer adjustment no longer guarantees any alignment

Missed in #165266 and only noticed in some follow up work

>From 6419942cab6dd43f84b25117b4db5cd8e53f72d1 Mon Sep 17 00:00:00 2001
From: Simon Pilgrim <llvm-dev at redking.me.uk>
Date: Tue, 28 Oct 2025 16:55:24 +0000
Subject: [PATCH] [X86] combineTruncate - drop load alignment after (trunc (srl
 (load p), amt)) -> (load p + amt/8) fold

The pointer adjustment no longer guarantees any alignment

Missed in #165266 and only noticed in some follow up work
---
 llvm/lib/Target/X86/X86ISelLowering.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index b86020aa512ea..5785440a20e43 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -54679,7 +54679,8 @@ static SDValue combineTruncate(SDNode *N, SelectionDAG &DAG,
         SDValue NewPtr = DAG.getMemBasePlusOffset(
             Ld->getBasePtr(), PtrByteOfs, DL, SDNodeFlags::NoUnsignedWrap);
         SDValue NewLoad =
-            DAG.getLoad(VT, DL, Ld->getChain(), NewPtr, Ld->getMemOperand());
+            DAG.getLoad(VT, DL, Ld->getChain(), NewPtr, Ld->getPointerInfo(),
+                        Align(), Ld->getMemOperand()->getFlags());
         DAG.ReplaceAllUsesOfValueWith(Src.getOperand(0).getValue(1),
                                       NewLoad.getValue(1));
         return NewLoad;



More information about the llvm-commits mailing list