[all-commits] [llvm/llvm-project] d69033: [SCEVExpander] Fix GEP IV inc reuse logic for opaq...

Nikita Popov via All-commits all-commits at lists.llvm.org
Wed Jul 12 02:32:32 PDT 2023

  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: d69033d245d4e129142b3908b8d406cdd897c9c9
  Author: Nikita Popov <npopov at redhat.com>
  Date:   2023-07-12 (Wed, 12 Jul 2023)

  Changed paths:
    M llvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp
    M llvm/test/CodeGen/Thumb2/LowOverheadLoops/memcall.ll
    M llvm/test/CodeGen/Thumb2/LowOverheadLoops/spillingmove.ll
    M llvm/test/CodeGen/Thumb2/mve-float16regloops.ll
    M llvm/test/CodeGen/Thumb2/mve-float32regloops.ll
    M llvm/test/CodeGen/X86/dag-update-nodetomatch.ll
    M llvm/test/Transforms/LoopStrengthReduce/2011-10-06-ReusePhi.ll

  Log Message:
  [SCEVExpander] Fix GEP IV inc reuse logic for opaque pointers

Instead of checking the pointer type, check the element type of
the GEP.

Previously we ended up reusing GEP increments that were not in
expanded form, thus not respecting LSRs choice of representation.

The change in 2011-10-06-ReusePhi.ll recovers a regression that
appeared when converting that test to opaque pointers.

Changes in various Thumb tests now compute the step outside the
loop instead of using add.w inside the loop, which is LSR's
preferred representation for this target.

More information about the All-commits mailing list