[all-commits] [llvm/llvm-project] 5f3d1b: DAG: Use poison in getLoad/getStore for offsets

Matt Arsenault via All-commits all-commits at lists.llvm.org
Thu Jul 30 05:37:54 PDT 2026


  Branch: refs/heads/users/arsenm/dag/use-poison-getLoad-getStore-offsets
  Home:   https://github.com/llvm/llvm-project
  Commit: 5f3d1bc2bec3a032d02d99d047e0fb4583d38baf
      https://github.com/llvm/llvm-project/commit/5f3d1bc2bec3a032d02d99d047e0fb4583d38baf
  Author: Matt Arsenault <Matthew.Arsenault at amd.com>
  Date:   2026-07-30 (Thu, 30 Jul 2026)

  Changed paths:
    M llvm/include/llvm/CodeGen/SelectionDAG.h
    M llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
    M llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
    M llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
    M llvm/lib/Target/AMDGPU/R600ISelLowering.cpp
    M llvm/test/CodeGen/AArch64/ragreedy-local-interval-cost.ll
    M llvm/test/CodeGen/X86/merge-store-partially-alias-loads.ll
    M llvm/test/tools/UpdateTestChecks/update_llc_test_checks/Inputs/amdgpu_isel.ll.expected
    M llvm/unittests/CodeGen/SelectionDAGPatternMatchTest.cpp

  Log Message:
  -----------
  DAG: Use poison in getLoad/getStore for offsets

The painful part of this is due to a few unfortunate things.

1. poison is legalized to undef
2. Non-indexed load/store encode the offset as an undef (which is
   not like a TargetConstant, and does get legalized)
3. 2 asserts in DAGCombiner expect identical load/store nodes,
   which assumes the offset will be preserved and not converted
   between poison and undef
4. The getLoad/getStore overloads are a mess, and a path was missing
   to recreate the store case with the original offset.



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list