[all-commits] [llvm/llvm-project] 336d72: [InstCombine] Preserve inbounds when folding selec...

Nikita Popov via All-commits all-commits at lists.llvm.org
Fri Jul 7 01:01:42 PDT 2023

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

  Changed paths:
    M llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
    M llvm/test/Transforms/InstCombine/select-gep.ll
    M llvm/test/Transforms/InstCombine/stpncpy-1.ll
    M llvm/test/Transforms/PhaseOrdering/gep-null-compare-in-loop.ll

  Log Message:
  [InstCombine] Preserve inbounds when folding select of GEP

The select base, (gep base, offset) to gep base, select (0, offset)
fold used to drop inbounds, because the gep base, 0 this introduces
might not be inbounds. After the semantics change in D154051, such
a GEP is always considered inbounds, in which allows us to preserve
the flag here.

As the PhaseOrdering test demonstrates, this can result in major
optimization improvements in some cases.

Differential Revision: https://reviews.llvm.org/D154055

More information about the All-commits mailing list