[llvm] [ValueTracking] Augment isImpliedByDomCondition by data-relation (PR #187224)

Kunqiu Chen via llvm-commits llvm-commits at lists.llvm.org
Fri Mar 20 08:12:17 PDT 2026


Camsyn wrote:


I trigger a [llvm-opt-benchmark](https://github.com/llvm/llvm-project) locally, but fail to collect the comptime data as WSL environment does not support it.
```
2993 files changed, 99253 insertions(+), 101968 deletions(-)
+1236 Δ(+), -3951 Δ(-)

IR reduced files: top 20
  -368  bench/boost/optimized/expand_on_spheroid.ll
  -308  bench/boost/optimized/union_aa_geo.ll
  -226  bench/boost/optimized/union_aa_sph.ll
  -216  bench/boost/optimized/get_turns_linear_areal_sph.ll
  -200  bench/boost/optimized/get_turns_areal_areal_sph.ll
  -188  bench/boost/optimized/difference_l_a_sph.ll
  -182  bench/boost/optimized/get_turns_linear_linear_geo.ll
  -132  bench/boost/optimized/within_sph_geo.ll
  -132  bench/openspiel/optimized/ultimate_tic_tac_toe.ll
  -116  bench/boost/optimized/area_geo.ll
  -116  bench/meshlab/optimized/filter_sampling.ll
   -96  bench/boost/optimized/expand.ll
   -78  bench/boost/optimized/area_sph_geo.ll
   -70  bench/bullet3/optimized/b3ConvexHullContact.ll
   -68  bench/opencv/optimized/connectedcomponents.ll
   -59  bench/pola-rs/optimized/4h98aq07mwhgxxkngeaedo5d3.ll
   -54  bench/boost/optimized/calculate_point_order.ll
   -40  bench/boost/optimized/area.ll
   -39  bench/pugixml/optimized/pugixml.ll
   -38  bench/meshlab/optimized/filter_texture.ll

IR added files: top 20
  +350  bench/ruby/optimized/compile.ll                 : inlined ibf_dump_align
  +188  bench/boost/optimized/math_normalize_spheroidal.ll      : inlined _Z8test_boxIdEvT_S0_S0_S0_RKS0_S2_S2_S2_, _Z8test_boxIfEvT_S0_S0_S0_RKS0_S2_S2_S2_
  +110  bench/boost/optimized/basic_text_oprimitive.ll  : the same as follows.
  +110  bench/boost/optimized/basic_text_woprimitive.ll : New nuw flag hinders bdce to simplify `(a & 255) >>_{nuw} b` -> `a >> b`, and thus disinline a function.
        - regression caused by missed-opt in bdse, failing to simplify `(a & 255) >>_{nuw} b` -> `a >> b`
   +70  bench/velox/optimized/ArrayDuplicates.ll        : std::make_heap, more aggresive jump-threading
   +61  bench/abseil-cpp/optimized/cord_rep_btree.ll    : inlined _ZN4absl13cord_internal12CordRepBtree7NewLeafILNS1_8EdgeTypeE0EEEPS1_St17basic_string_viewIcSt11char_traitsIcEEm)
   +51  bench/postgres/optimized/queryjumblefuncs.ll    : more aggresive jump-threading
   +48  bench/openvdb/optimized/Prune.ll                : std::make_heap, more aggresive jump-threading
   +47  bench/open3d/optimized/EstimateNormals.ll       : < threshold -> promote simple-loop-unswitch
   +42  bench/velox/optimized/ArraySort.ll              : std::make_heap, more aggresive jump-threading
   +36  bench/clamav/optimized/pe_icons.ll              : not a regression; narrowUDivOrURem does it deliberately
   +18  bench/yalantinglibs/optimized/test_messages_proto2.pb.ll  :  std::make_heap, more aggresive jump-threading
   +18  bench/yalantinglibs/optimized/test_messages_proto3.pb.ll  :  std::make_heap, more aggresive jump-threading
    +6  bench/eastl/optimized/BenchmarkSort.ll          : std::make_heap, more aggresive jump-threading
    +6  bench/opencv/optimized/lda.ll                   : complex loop-transformation
    +5  bench/re2/optimized/prog.ll                     : std::make_heap, more aggresive jump-threading
    +4  bench/darktable/optimized/IiqDecoder.ll         : drop-unnecessary-assumes fails to drop some assumes
        - regression caused by drop-unnecessary-assumes : better LICM -> assume(...) shares common value
          ``` diff
          loop:
          - assume(x + 4 <= y) ; drop assume as x + 4 and y are ephemeral
            assume(x <= y - 4) ; after LICM, cannot drop assume as x is not ephemeral
            use(x);
          ```
    +4  bench/ffmpeg/optimized/mjpegdec.ll              : more aggresive jump-threading
    +4  bench/pbrt-v4/optimized/lights.ll               : use-order issue, causing simplifycfg fails to eliminate UB branch. 
        - regression caused by order-dependent UB branch elimination of simplifycfg.
          See https://github.com/llvm/llvm-project/issues/98799 too.
    +3  bench/eastl/optimized/TestHeap.ll               : std::make_heap, more aggresive jump-threading
```


https://github.com/llvm/llvm-project/pull/187224


More information about the llvm-commits mailing list