Skip to content

pre-commit: PR183688#3519

Open
zyw-bot wants to merge 3 commits intomainfrom
test-run22496879466
Open

pre-commit: PR183688#3519
zyw-bot wants to merge 3 commits intomainfrom
test-run22496879466

Conversation

@zyw-bot
Copy link
Collaborator

@zyw-bot zyw-bot commented Feb 27, 2026

Link: llvm/llvm-project#183688
Requested by: @nikic

@github-actions github-actions bot mentioned this pull request Feb 27, 2026
@zyw-bot
Copy link
Collaborator Author

zyw-bot commented Feb 27, 2026

Diff mode

runner: ariselab-64c-docker
baseline: llvm/llvm-project@4eab75e
patch: llvm/llvm-project#183688
sha256: fee73abd387dbbe103be01c3faeba86f730562a920be57bf2a789977bfc91564
commit: 2482eae

2819 files changed, 2693950 insertions(+), 2649393 deletions(-)

Improvements:
  instcombine.NumConstProp 155104 -> 218727 +41.02%
  correlated-value-propagation.NumCmps 270335 -> 353357 +30.71%
  bdce.NumRemoved 378277 -> 407043 +7.60%
  constraint-elimination.NumCondsRemoved 3348710 -> 3420162 +2.13%
  licm.NumMovedCalls 36878 -> 37272 +1.07%
  licm.NumPromotionCandidates 583394 -> 586625 +0.55%
  instcombine.NumDeadStore 25573 -> 25712 +0.54%
  licm.NumLoadStorePromoted 61997 -> 62154 +0.25%
  indvars.NumElimCmp 51423 -> 51551 +0.25%
  loop-instsimplify.NumSimplified 182139 -> 182516 +0.21%
Regressions:
  memory-builtins.ObjectVisitorLoad 23200 -> 23087 -0.49%
  simple-loop-unswitch.NumCostMultiplierSkipped 17222 -> 17169 -0.31%
  instcombine.NumFactor 46660 -> 46542 -0.25%
  instcombine.NumDeadInst 40959699 -> 40882175 -0.19%
  adce.NumRemoved 95719 -> 95542 -0.18%
  correlated-value-propagation.NumSelects 227874 -> 227483 -0.17%
  last-run-tracking.NumSkippedPasses 48567349 -> 48522759 -0.09%
  loop-rotate.NumInstrsHoisted 1158 -> 1157 -0.09%
  correlated-value-propagation.NumSubNUW 37055 -> 37026 -0.08%
  simplifycfg.NumSpeculations 395476 -> 395215 -0.07%

+20 syn/4llvvcm7ykus6q9g.ll
+18 tree-sitter-rs/2xun21ofbsn7p9xn.ll
+16 actix-rs/190uhijawk1lki5o.ll
+14 influxdb-rs/34vmrh0qyn6415sj.ll
+14 wasmtime-rs/enal6epyb0tyurl.ll
+12 qdrant-rs/14hho85eanhsaepf.ll
+10 php/pdo_stmt.ll
+10 ripgrep-rs/24qzgyq9sz17vf3i.ll
+10 velox/SIMDJsonExtractor.ll
+9 pingora-rs/cr8e12xes7vcplgf99utxzbos.ll
+8 boost/cmd_test.ll
+8 hermes/Utils.ll
+8 mini-lsm-rs/2ysi1cyianhw3g5t.ll
+8 regex-rs/4dth5ncaqumdqgby.ll
+8 ruff-rs/42urr4wi9o4ym10wn20vge60c.ll
+8 ruff-rs/7wwgo2qmgv5jda16jk82i54eo.ll
+8 tokenizers-rs/3yaq830kuxi6xpg5.ll
+7 rayon-rs/aeba4nd7ialzggy.ll
+6 abc/cnfPost.ll
+6 abc/llb1Hint.ll
+6 actix-rs/305jwhumkt6l000n.ll
+6 image-rs/2ndzmzcdt55acj4k.ll
+6 image-rs/ptscn4jakoj4p9m.ll
+6 meilisearch-rs/564p8f6yhi59w8h9.ll
+6 mini-lsm-rs/xb52qaqr7dfb8ti.ll
+6 qdrant-rs/4iacc535829shmz2.ll
+6 quinn-rs/97m639ujt231tug2it6j1j2tc.ll
+6 rayon-rs/4k8zt5cv4x2jivhi.ll
+6 syn/4dl8yvgrwkkcv6u.ll
+6 tikv-rs/3zlxqcm5fmm23kyz1ebfkwze6.ll
+6 wasmi-rs/47i5oou8fwwq0e6h8s2c2rc64.ll
+6 wasmtime-rs/4oustitdsdvnhdau.ll
+6 wireshark/packet-agentx.ll
+6 zed-rs/0pbj35jdb0n0bb6blyk493qkr.ll
+5 arrow/value_parsing.ll
+5 darktable/NakedDecoder.ll
+5 faiss/gtest-all.ll
+5 opencv/ts_gtest.ll
+5 pola-rs/4i1zi5w77kchanzzu8mmseop2.ll
+4 darktable/Cr2Decoder.ll
+4 delta-rs/2die4ejnk5ryh9i0.ll
+4 fish-rs/czs708r0zvy58e2j6rsq7a88i.ll
+4 hermes/SemanticValidator.ll
+4 html5ever-rs/6qwbbyxelav3qgo.ll
+4 libquic/string16.ll
+4 mold/cmdline.cc.X86_64.ll
+4 php/node.ll
+4 pola-rs/cil91sqjm14i40hvtn93g3igf.ll
+4 qemu/tcg-op.ll
+4 quinn-rs/f3p3h61s9nwe4ta3vnloaej97.ll
+4 rayon-rs/1ospp3uz7h49thev.ll
+4 regex-rs/4ilpqr23cw58vyva.ll
+4 rust-analyzer-rs/55szrkbrq7kolv5z.ll
+4 serde-rs-json/mlftjs9t2bz2jrv.ll
+4 spike/socketif.ll
+4 tls-rs/526n7g8rwc65lc9b.ll
+4 wasmtime-rs/3tukmgwo6vemwvwz.ll
+4 wireshark/packet-tls-utils.ll
+4 zed-rs/9zapxybzyqo7as5l1oow5wvsl.ll
+3 fish-rs/7ggr7vxi3lrn28dd77bkw6see.ll
+3 pola-rs/1zfqpoyga76fsrjdmdh7m2utw.ll
+3 wasmi-rs/ah35cui21ubzfcdfw75m5m10r.ll
+2 abseil-cpp/cord_test.ll
+2 clap-rs/1zp92zvstj9lufi9.ll
+2 coreutils-rs/335iccg14rff9vbo.ll
+2 darktable/RawImageDataFloat.ll
+2 delta-rs/145iz0hplas008bu.ll
+2 diesel-rs/462o5qgxgzqa9ugn.ll
+2 duckdb/arena.ll
+2 foundations-rs/3mkcuilt3qj76iejlx2uremig.ll
+2 foundations-rs/dn9au2q3g3wlvvn47oahet6lo.ll
+2 glslang/ParseHelper.ll
+2 hermes/MicrosoftDemangle.ll
+2 image-rs/5ez7udly19o3uj1p.ll
+2 just-rs/2sotx4bdu006z307.ll
+2 lief/AArch64PAuth.ll
+2 mini-lsm-rs/3l74wehtlfae5jz1.ll
+2 mitsuba3/codeholder.ll
+2 msgpack/msgpack_variant_mapbased.ll
+2 nix/archive.ll
+2 nix/git.ll
+2 nix/json-to-value.ll
+2 ockam-rs/4r08vyqwrxt6fmz0.ll
+2 opencv/darknet_io.ll
+2 php/attr.ll
+2 pingora-rs/24oggy68gf6cx0i1vzuuyyts4.ll
+2 pingora-rs/9kpxegslu0j3pb3oe28vzbz0s.ll
+2 pingora-rs/a0qicvo6a6vpvfqn6bbsbzkj4.ll
+2 pola-rs/4wcss1mo7ddwq4rmuj4gtjb0b.ll
+2 quiche-rs/2i59h3d4lts0esz5vi8utqlqr.ll
+2 quiche-rs/a2fxvubrv6xxh830kesi8vt5v.ll
+2 redis/arena.ll
+2 rustfmt-rs/4gk399kploc9gcsb.ll
+2 tls-rs/1pt3w3786vo2dyk0.ll
+2 tokenizers-rs/1w676x6x6lprwvn5.ll
+2 tree-sitter-rs/2czk4owdq0ube9pw.ll
+2 turborepo-rs/073xkjbb0bs34qvdns32a3q3u.ll
+2 turborepo-rs/667fw7b0fgqo2a1672jmft41u.ll
+2 turborepo-rs/68uz0ms18epwru7402hblucwm.ll
+2 wireshark/proto.ll
+2 yara-x-rs/8prs9ypeqrggu5mcc8i3onesd.ll
+2 zed-rs/160h40gmjuq6w4py8cgz7ceyb.ll
+2 zxing/ODDataBarReader.ll
+0 rocksdb/xxhash.ll
-2 mini-lsm-rs/56vhdkxtzvzc0a1c.ll
-3 tree-sitter-rs/42mwgpotg9phq80h.ll

@github-actions
Copy link
Contributor

This patch introduces several targeted optimizations and correctness improvements across many LLVM IR files, primarily focused on:

  1. Adding @llvm.assume intrinsics to encode known constraints (e.g., pointer non-nullity, integer bounds, loop trip count limits) — enabling more aggressive optimization (e.g., dead code elimination, loop vectorization, memory access simplification). These appear consistently across abc, actix-rs, arrow, boost, clap-rs, darktable, faiss, hermes, html5ever-rs, image-rs, influxdb-rs, mini-lsm-rs, nix, opencv, php, pingora-rs, pola-rs, qdrant-rs, quiche-rs, and others.

  2. Refining @llvm.assume predicates for precision: replacing coarse checks (e.g., icmp ugt i64 %x, 15) with tighter ones (e.g., icmp ult i64 %x, 16 + assume), or adding sign-aware comparisons (icmp samesign ult, icmp sgt i64 %x, -1) to better model signed/unsigned semantics and enable overflow-safe optimizations.

  3. Updating @llvm.assume call attributes: The declaration of @llvm.assume is updated in multiple files to use precise function attributes (nocallback, nofree, nosync, willreturn, memory(inaccessiblemem: write)), improving optimizer reasoning about side effects and memory behavior.

  4. Fixing pointer arithmetic and indexing bugs: Several instances correct off-by-one or misordered arithmetic (e.g., swapping operand order in add nuw instructions, fixing getelementptr base offsets in hashbrown table deallocation paths), often paired with new @llvm.assume calls to validate the fix (e.g., icmp sgt i64 %val, -1 before arithmetic).

  5. Improving phi node consistency and control flow: Multiple patches adjust phi node incoming value lists to match updated basic block predecessors (e.g., changing %15 to %16 in phi operands), ensuring IR validity after CFG changes induced by new assume-inserted branches or reordered instructions.

These changes collectively enhance both correctness (by encoding and validating invariants) and performance (by providing the optimizer richer, more precise information).

model: qwen-plus-latest
CompletionUsage(completion_tokens=518, prompt_tokens=112387, total_tokens=112905, 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