Skip to content

Conversation

@RKSimon
Copy link
Collaborator

@RKSimon RKSimon commented Oct 28, 2025

The pointer adjustment no longer guarantees any alignment

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

…), amt)) -> (load p + amt/8) fold

The pointer adjustment no longer guarantees any alignment

Missed in llvm#165266 and only noticed in some follow up work
@RKSimon RKSimon enabled auto-merge (squash) October 28, 2025 16:56
@llvmbot
Copy link
Member

llvmbot commented Oct 28, 2025

@llvm/pr-subscribers-backend-x86

Author: Simon Pilgrim (RKSimon)

Changes

The pointer adjustment no longer guarantees any alignment

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


Full diff: https://github.com/llvm/llvm-project/pull/165436.diff

1 Files Affected:

  • (modified) llvm/lib/Target/X86/X86ISelLowering.cpp (+2-1)
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;

@RKSimon RKSimon merged commit af110e1 into llvm:main Oct 28, 2025
9 of 11 checks passed
@RKSimon RKSimon deleted the x86-trunc-load-align branch October 28, 2025 17:32
@llvm-ci
Copy link
Collaborator

llvm-ci commented Oct 28, 2025

LLVM Buildbot has detected a new failure on builder clang-aarch64-quick running on linaro-clang-aarch64-quick while building llvm at step 5 "ninja check 1".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/65/builds/24637

Here is the relevant piece of the build log for the reference
Step 5 (ninja check 1) failure: stage 1 checked (failure)
******************** TEST 'Clangd Unit Tests :: ./ClangdTests/93/335' FAILED ********************
Script(shard):
--
GTEST_OUTPUT=json:/home/tcwg-buildbot/worker/clang-aarch64-quick/stage1/tools/clang/tools/extra/clangd/unittests/./ClangdTests-Clangd Unit Tests-3526613-93-335.json GTEST_SHUFFLE=0 GTEST_TOTAL_SHARDS=335 GTEST_SHARD_INDEX=93 /home/tcwg-buildbot/worker/clang-aarch64-quick/stage1/tools/clang/tools/extra/clangd/unittests/./ClangdTests
--

Script:
--
/home/tcwg-buildbot/worker/clang-aarch64-quick/stage1/tools/clang/tools/extra/clangd/unittests/./ClangdTests --gtest_filter=TUSchedulerTests.PublishWithStalePreamble
--
ASTWorker building file /clangd-test/foo.cpp version 1 with command 
[/clangd-test]
clang -ffreestanding /clangd-test/foo.cpp
Driver produced command: cc1 -cc1 -triple aarch64-unknown-linux-gnu -fsyntax-only -disable-free -clear-ast-before-backend -main-file-name foo.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -ffreestanding -enable-tlsdesc -target-cpu generic -target-feature +v8a -target-feature +fp-armv8 -target-feature +neon -target-abi aapcs -debugger-tuning=gdb -fdebug-compilation-dir=/clangd-test -fcoverage-compilation-dir=/clangd-test -resource-dir lib/clang/22 -internal-isystem lib/clang/22/include -internal-isystem /usr/local/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -fdeprecated-macro -ferror-limit 19 -fno-signed-char -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fcxx-exceptions -fexceptions -no-round-trip-args -target-feature -fmv -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -x c++ /clangd-test/foo.cpp
Building first preamble for /clangd-test/foo.cpp version 1
../llvm/clang-tools-extra/clangd/unittests/TUSchedulerTests.cpp:1263: Failure
Failed
Timed out waiting for diags

../llvm/clang-tools-extra/clangd/unittests/TUSchedulerTests.cpp:1296: Failure
Value of: BlockForDiags(PI)
Expected: has a first field that is equal to "1", and has a second field that is equal to "1"
  Actual: ("invalid", "version"), whose first field does not match

Built preamble of size 737140 for file /clangd-test/foo.cpp version 1 in 22.06 seconds

../llvm/clang-tools-extra/clangd/unittests/TUSchedulerTests.cpp:1263
Failed
Timed out waiting for diags

../llvm/clang-tools-extra/clangd/unittests/TUSchedulerTests.cpp:1296
Value of: BlockForDiags(PI)
Expected: has a first field that is equal to "1", and has a second field that is equal to "1"
  Actual: ("invalid", "version"), whose first field does not match



********************


aokblast pushed a commit to aokblast/llvm-project that referenced this pull request Oct 30, 2025
…), amt)) -> (load p + amt/8) fold (llvm#165436)

The pointer adjustment no longer guarantees any alignment

Missed in llvm#165266 and only noticed in some follow up work
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants