Skip to content

Conversation

@zyw-bot
Copy link
Collaborator

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

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

zyw-bot commented Dec 15, 2025

Diff mode

runner: ariselab-64c-docker
baseline: llvm/llvm-project@3645cef
patch: llvm/llvm-project#172342
sha256: 1d3caeaa741cc2e22540114a2483b376f846375838a1732131eb7d73853c02c3
commit: 79f94c1

4933 files changed, 7811789 insertions(+), 7915085 deletions(-)

Improvements:
  simplifycfg.NumSinkCommonInstrs 828610 -> 863741 +4.24%
  simplifycfg.NumSinkCommonCode 378256 -> 386978 +2.31%
  local.NumPHICSEs 185800 -> 189063 +1.76%
  sroa.NumStoresPredicated 3634 -> 3644 +0.28%
  dse.NumCFGChecks 635323 -> 636243 +0.14%
  gvn.IsValueFullyAvailableInBlockNumSpeculationsMax 601908 -> 602363 +0.08%
  instcombine.NumExpand 2675 -> 2677 +0.07%
  simplifycfg.NumHoistCommonInstrs 2507840 -> 2508710 +0.03%
  instcombine.NegatorMaxDepthVisited 20053 -> 20059 +0.03%
  correlated-value-propagation.NumDeadCases 66009 -> 66027 +0.03%
Regressions:
  dse.NumCFGSuccess 8310 -> 8253 -0.69%
  dse.NumCFGTries 54927 -> 54866 -0.11%
  vector-combine.NumShufOfBitcast 12110 -> 12098 -0.10%
  instcombine.NumFactor 45550 -> 45524 -0.06%
  licm.NumPromotionCandidates 586481 -> 586196 -0.05%
  correlated-value-propagation.NumNSW 565385 -> 565142 -0.04%
  correlated-value-propagation.NumSDivs 16933 -> 16927 -0.04%
  capture-tracking.NumCapturedBefore 16175738 -> 16170606 -0.03%
  deadargelim.NumRetValsEliminated 15209 -> 15205 -0.03%
  instsimplify.NumSimplified 2467387 -> 2466749 -0.03%

+10 recastnavigation/fastlz.ll
+9 eastl/TestRingBuffer.ll
+8 boost/instantiate_re2c_lexer.ll
+6 z3/tactical.ll
+5 abc/wlnRetime.ll
+5 linux/rtnetlink.ll
+5 llvm/ParseCXXInlineMethods.ll
+5 yara-x-rs/0o2i9mo9xpv8yp3ynxnp03ew2.ll
+4 ffmpeg/h264_parse.ll
+4 ffmpeg/rtmppkt.ll
+4 openusd/mapExpression.ll
+4 turborepo-rs/073xkjbb0bs34qvdns32a3q3u.ll
+3 llvm/BranchFolding.ll
+3 luau/AstJsonEncoder.ll
+3 nix/app.ll
+3 nix/built-path.ll
+3 pola-rs/2zzsdlmtuqz1lzylvupupdnd9.ll
+3 slurm/slurm_protocol_pack.ll
+3 wireshark/netscaler.ll
+2 c3c/sema_expr.ll
+2 clamav/unpack.ll
+2 nix/context.ll
+2 vcpkg/vcpkg.ll
+1 clamav/cvd.ll
+1 clamav/explode.ll
+1 duckdb/dfa.ll
+1 libjpeg-turbo/jdmarker.ll
+1 opencv/aruco_dictionary.ll
+1 openjdk/mlib_ImageConv_16ext.ll
-1 cmake/archive_acl.ll
-1 cmake/cmInstallProgramsCommand.ll
-1 influxdb-rs/xf9idvr5og46ibq.ll
-1 lean4/util.ll
-1 libpng/pngrutil.ll
-1 nori/tabwidget.ll
-1 ocio/FileFormatDiscreet1DL.ll
-1 ripgrep-rs/wnx0txtc665thu4.ll
-1 rust-analyzer-rs/lvm5mow7j40zynh.ll
-1 uv-rs/a6ilto48eiq73sc4zhyd8fwow.ll
-2 abc/extraBddThresh.ll
-2 eastl/TestHash.ll
-2 just-rs/2sblcsgax6v4zfcc.ll
-2 libcxx/ios.instantiations.ll
-2 luau/IrValueLocationTracking.ll
-2 lvgl/lv_dropdown.ll
-2 meshlab/ml_rendering_actions.ll
-2 openssl/p_lib.ll
-3 coreutils-rs/1efo3swtygw8gpnj.ll
-3 darktable/VC5Decompressor.ll
-3 git/files-backend.ll
-3 gromacs/muParserTokenReader.ll
-3 libevent/evdns.ll
-3 libigl/decimate.ll
-3 lief/dwarf_inspect.ll
-3 luau/TypePack.ll
-3 openusd/spline_KeyFrames.ll
-3 openvdb/AttributeGroup.ll
-3 pola-rs/0qbeb52i2e81o7of4uqvbqn1y.ll
-3 taskflow/async.ll
-4 faiss/NSG.ll
-4 hdf5/H5Tbit.ll
-4 hyperscan/rose_build_program.ll
-4 ncnn/selu.ll
-4 ockam-rs/11bh5irimcsbm5u.ll
-4 openmpi/session_dir.ll
-4 php/zend_interfaces.ll
-4 postgres/statscmds.ll
-4 quinn-rs/84rnbr96yhzbltos9z3i1157v.ll
-4 redis/dict.ll
-4 typst-rs/5z4no3nnr5v1s13.ll
-4 yalantinglibs/file_server.ll
-5 box2d/imgui_demo.ll
-5 casadi/dple.ll
-5 g2o/command_args.ll
-5 git/submodule-config.ll
-5 hermes/JSRegExp.ll
-5 libquic/quic_protocol.ll
-5 llvm/X86LoadValueInjectionLoadHardening.ll
-5 lvgl/lv_scale.ll
-5 meshlab/arap.ll
-5 rocksdb/cache_dump_load_impl.ll
-6 c3c/types.ll
-6 casadi/rootfinder.ll
-6 cpython/sysmodule.ll
-6 darktable/introspection_borders.ll
-6 graphviz/arrows.ll
-6 grpc/client_auth_filter.ll
-6 hermes/DateUtil.ll
-6 hermes/hvm.ll
-6 icu/dtptngen.ll
-6 icu/uniset.ll
-6 lean4/NotationExtra.ll
-6 node/libnode.node_blob.ll
-6 openspiel/TransTableS.ll
-6 proxygen/PersistentQuicPskCache.ll
-6 quantlib/fdmhestonvariancemesher.ll
-6 typst-rs/3dimj4rf5dyrieyi.ll
-6 wasmedge/loader.ll
-6 zed-rs/d9zbxounqkt24vk3xyo3kqpk8.ll
-7 abc/solver_api.ll
-7 abseil-cpp/algorithm_test.ll
-7 flatbuffers/python_generator.ll
-7 nlohmann_json/diag_on.ll
-7 oiio/psdinput.ll
-7 pbrt-v4/imgtool.ll
-7 pbrt-v4/pbrt.ll
-7 pingora-rs/779tv43mhnvnf5hh9yme6v2ro.ll
-7 wasmi-rs/ah35cui21ubzfcdfw75m5m10r.ll
-7 yosys/aiger.ll
-7 z3/udoc_relation.ll
-8 coreutils-rs/jzu2v52gceikjdv.ll
-8 ockam-rs/2zjnzspjsaor29as.ll
-8 proxygen/HTTPBinaryCodec.ll
-8 quiche-rs/0zwrld9ur1byyx5h06ub9j1b0.ll
-9 actix-rs/4o2yfh8ffx12tqj0.ll
-9 bullet3/btDbvt.ll
-9 glslang/SpirvIntrinsics.ll
-9 hdf5/H5B2hdr.ll
-9 pingora-rs/9gp11sotjmzatfpbhdvcvhux3.ll
-9 postgres/formatting.ll
-9 proxygen/RequestHandlerAdaptor.ll
-9 wasmedge/argument_parser.ll
-10 assimp/LWOAnimation.ll
-10 hermes/PrimitiveBox.ll
-10 lean4/LanguageFeatures.ll
-10 lightgbm/linkers_socket.ll
-10 open3d/PhongShader.ll
-10 regex-rs/32jw1oy2yofrhudk.ll
-11 cmake/archive_write_set_format_mtree.ll
-12 coreutils-rs/95am6mm2qmrbtl3.ll
-12 rocksdb/io_tracer.ll
-12 spike/mmu.ll
-13 clap-rs/1zp92zvstj9lufi9.ll
-13 cvc5/context.ll
-14 nanobind/nb_type.ll
-15 lvgl/lv_indev.ll
-17 nuttx/fs_epoll.ll
-17 vcpkg/system.deviceid.ll
-27 pugixml/pugixml.ll

@github-actions
Copy link
Contributor

This patch implements several key optimizations across multiple benchmarks, primarily focused on improving control flow and memory access patterns in LLVM IR. The major changes are:

  1. Store Hoisting and PHI Node Consolidation: Multiple functions now hoist redundant stores (e.g., store i64 0, store i8 0, store ptr null) out of conditional branches into a single unified store at a merge point, using PHI nodes to select the correct pointer operand. This reduces code duplication and improves cache behavior.

  2. Conditional Branch Simplification: Several switch instructions have been restructured to reduce the number of cases or redirect fallthrough targets, often by merging branches or adjusting default labels. This simplifies CFG structure and enables further optimization.

  3. Exception Handling Cleanup: In multiple functions (e.g., clap-rs, coreutils-rs, influxdb-rs), landing pads and exception resumes have been refactored: duplicated cleanup blocks are eliminated, PHI nodes for exception operands are consolidated, and stores to local variables (e.g., store ptr null) are moved into common resume paths.

  4. TBAA Metadata Updates: Several load and store instructions have updated TBAA metadata tags (e.g., !tbaa !65!tbaa !66, !tbaa !66!tbaa !67) to reflect more precise type information or layout changes, improving alias analysis accuracy.

  5. Dead Code Elimination and Instruction Reordering: Redundant stores (e.g., duplicate store i8 0, store i64 0) and unreachable basic blocks (e.g., .split24.i, .split.i, ._crit_edge.i.i.i) have been removed. Some br instructions were redirected to skip unnecessary intermediate blocks, tightening control flow.

These changes collectively improve IR quality by reducing redundancy, simplifying control flow, enhancing memory safety via precise TBAA, and enabling downstream optimizations like vectorization and register allocation.

model: qwen-plus-latest
CompletionUsage(completion_tokens=430, prompt_tokens=105786, total_tokens=106216, 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