Skip to content

Conversation

@zyw-bot
Copy link
Collaborator

@zyw-bot zyw-bot commented Dec 11, 2025

Link: llvm/llvm-project#171828
Requested by: @dtcxzyw

@github-actions github-actions bot mentioned this pull request Dec 11, 2025
@zyw-bot
Copy link
Collaborator Author

zyw-bot commented Dec 11, 2025

Diff mode

runner: ariselab-64c-docker
baseline: llvm/llvm-project@a9a05df
patch: llvm/llvm-project#171828
sha256: 1446fbae4e0e4220f27c513dcf64706484552d72a9ebd30c303685ec088eff6e
commit: 3dd50c9

1701 files changed, 365687 insertions(+), 369104 deletions(-)

Improvements:
  reassociate.NumAnnihil 769 -> 770 +0.13%
  dse.NumFastStores 1103236 -> 1103925 +0.06%
  dse.NumGetDomMemoryDefPassed 1302933 -> 1303628 +0.05%
  instsimplify.NumSimplified 2467387 -> 2468118 +0.03%
  function-attrs.NumNonNullReturn 24676 -> 24681 +0.02%
  gvn.NumGVNLoad 1312777 -> 1312985 +0.02%
  dse.NumCFGSuccess 8310 -> 8311 +0.01%
  correlated-value-propagation.NumShlNSW 117062 -> 117076 +0.01%
  sccp.NumInstRemoved 1938368 -> 1938521 +0.01%
  instcombine.NumCombined 120633246 -> 120642502 +0.01%
Regressions:
  instcombine.NumConstProp 168159 -> 166615 -0.92%
  local.NumPHICSEs 185800 -> 185748 -0.03%
  memcpyopt.NumCpyToSet 10968 -> 10966 -0.02%
  instsimplify.NumExpand 292176 -> 292125 -0.02%
  loop-delete.NumBackedgesBroken 43536 -> 43529 -0.02%
  memdep.NumCacheCompleteNonLocalPtr 5340206 -> 5339376 -0.02%
  gvn.NumGVNEqProp 427638 -> 427576 -0.01%
  indvars.NumElimCmp 51435 -> 51428 -0.01%
  gvn.NumGVNInstr 149687 -> 149668 -0.01%
  gvn.NumGVNPRE 149687 -> 149668 -0.01%

+12 jemalloc/jemalloc_cpp.ll
+6 openjdk/screencast_pipewire.ll
+6 ruby/ripper.ll
+3 duckdb/tcache.ll
+0 abseil-cpp/container_memory_test.ll
+0 arrow/scalar_cast_string.ll
+0 bullet3/btGjkEpa2.ll
+0 casadi/sparsity_internal.ll
+0 delta-rs/2n0ez5zuwgs53clg.ll
+0 duckdb/parquet_metadata.ll
+0 evmone/run.ll
+0 flac/replaygain_synthesis.ll
+0 harfbuzz/hb-subset-cff1.ll
+0 harfbuzz/hb-subset-cff2.ll
+0 icu/uloc.ll
+0 libsodium/ed25519_ref10.ll
+0 luau/ToString.ll
+0 meshlab/filter_parametrization.ll
+0 nori/nanovg.ll
+0 openjdk/whitebox.ll
+0 pingora-rs/acx590v32pn6eo20biyujqd8g.ll
+0 proj/test_defmodel.ll
+0 proj/test_tinshift.ll
+0 sdl/SDL_hidapi_switch.ll
+0 sqlite/sqlite3.ll
+0 vcpkg/catch.ll
+0 wasmtime-rs/3vdx8w41hjyzioqv.ll
+0 yara-x-rs/4ti00b5v1i93uxmwglssldjqn.ll
+0 zstd/cover.ll
+0 zstd/fastcover.ll
-1 abc/cuddReorder.ll
-1 abc/giaEnable.ll
-1 lean4/Attribute.ll
-1 lean4/Calc.ll
-1 lean4/Clause.ll
-1 lean4/Decode.ll
-1 lean4/ElimDeadVars.ll
-1 lean4/Ipc.ll
-1 lean4/LabelAttribute.ll
-1 llvm/StraightLineStrengthReduce.ll
-1 postgres/dependencies.ll
-1 postgres/mvdistinct.ll
-1 wireshark/file_wrappers.ll
-2 abc/cecSatG.ll
-2 abc/cuddTable.ll
-2 abc/giaDup.ll
-2 lean4/Channel.ll
-2 lean4/CheckTactic.ll
-2 lean4/DefView.ll
-2 lean4/Sugar.ll
-2 lean4/Topological.ll
-2 llvm/CheckExprLifetime.ll
-2 llvm/Sema.ll
-2 postgres/hashpage.ll
-2 quiche-rs/37pwr264wo6je1thewrpk2llp.ll
-2 ruby/compile.ll
-3 llvm/SemaObjC.ll
-3 quiche-rs/6car3ab1bnxp3jhehvv0c8q0i.ll
-3 quiche-rs/evfqynx3m984ucpmhnvcicaft.ll
-4 boost/settings_parser.ll
-4 duckdb/ub_duckdb_storage_buffer.ll
-4 folly/ExecutorWithPriority.ll
-4 folly/TimeoutQueue.ll
-4 hermes/OrderedHashMap.ll
-4 hyperscan/scratch.ll
-4 libigl/signed_distance_isosurface.ll
-4 pola-rs/0v7z9z9ew48jtuwunq14hr49c.ll
-4 postgres/brin_inclusion.ll
-4 postgres/brin_minmax.ll
-4 yalantinglibs/chat_room.ll
-5 lean4/ConstantFold.ll
-5 quiche-rs/52nxvgz8yoonp9w4jarabvals.ll
-6 lean4/LocalContext.ll
-8 quiche-rs/2gvjct5jtde9m3f5c2wx76gb9.ll
-9 lean4/Pattern.ll
-12 yalantinglibs/channel.ll
-13 cpython/pyarena.ll
-16 wolfssl/sha.ll
-21 abc/giaFanout.ll
-21 lvgl/lv_tlsf.ll
-24 libigl/min_quad_with_fixed.2.ll
-37 wolfssl/internal.ll
-41 llvm/PassBuilderPipelines.ll

@github-actions
Copy link
Contributor

Here's a concise summary of the major changes in this LLVM IR diff:

  1. Optimized pointer arithmetic and bit manipulation: Several functions (e.g., Cec3_CollectSuper_rec, cuddDynamicAllocNode, cuddAllocNode) replace and + lshr sequences with direct getelementptr calculations, simplifying address computation and improving clarity.

  2. Improved memory alignment in memcpy/memset calls: Across multiple benchmarks (abseil-cpp, arrow, delta-rs, duckdb, evmone, harfbuzz), llvm.memcpy and llvm.memset calls now specify higher alignment (e.g., align 4, align 8) instead of align 1, enabling more efficient vectorized or aligned memory operations.

  3. Refined load/store alignment annotations: Loads and stores (especially load ptr, load i64, load i32, store ptr) have been updated to use stricter alignment (e.g., align 8, align 16) in delta-rs, duckdb, flac, and icu. This reflects better-known alignment assumptions and enables stronger optimizations.

  4. Simplified boolean checks via operand reuse: In functions like Cec3_CollectSuper_rec and Gia_ManFanoutStart, redundant and/ptrtoint computations feeding icmp eq are removed — the comparison now uses an already-computed operand (e.g., %27 instead of %31), reducing instruction count and improving precision.

  5. Cleanup of dead or redundant initialization code: In cpython/pyarena.ll, manual zeroing of struct fields is replaced with a single llvm.memset, and in lean4/ modules, several unnecessary store i32 1 instructions (likely reference count initializations) are removed—suggesting improved allocation semantics or dead store elimination.

These changes collectively improve performance through better memory access patterns, reduced instruction count, and more precise alignment metadata—without altering program semantics.

model: qwen-plus-latest
CompletionUsage(completion_tokens=444, prompt_tokens=110164, total_tokens=110608, completion_tokens_details=None, prompt_tokens_details=None)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants