llvm / llvm/llvm-project

Meta bug to track passes that do not update liveness

Open
#168,202 1 comment 0 reactions 0 assignees View on GitHub
llvm:analysis metaissue
Dominant language
LLVM
Stars
40.5k
Forks
18.7k
PR merge metrics
PR metrics pending

Description

Based on the [live variable analysis](https://github.com/llvm/llvm-project/pull/167454) pass I wrote for RISCV, it detects inconsistencies in liveness information.

- #168199
- #168201

The following tests fail when the pass is enabled by default but triaging each will take a while. So far I found the above two passes that do not update liveness.

LLVM :: CodeGen/RISCV/GlobalISel/alu-roundtrip-rv64.ll
LLVM :: CodeGen/RISCV/GlobalISel/alu-roundtrip.ll
LLVM :: CodeGen/RISCV/GlobalISel/constbarrier-rv64.ll
LLVM :: CodeGen/RISCV/GlobalISel/double-arith.ll
LLVM :: CodeGen/RISCV/GlobalISel/double-convert.ll
LLVM :: CodeGen/RISCV/GlobalISel/double-fcmp.ll
LLVM :: CodeGen/RISCV/GlobalISel/float-arith.ll
LLVM :: CodeGen/RISCV/GlobalISel/float-convert.ll
LLVM :: CodeGen/RISCV/GlobalISel/float-fcmp.ll
LLVM :: CodeGen/RISCV/GlobalISel/fp128.ll
LLVM :: CodeGen/RISCV/GlobalISel/rvv/vse.ll
LLVM :: CodeGen/RISCV/GlobalISel/rvv/vsse.ll
LLVM :: CodeGen/RISCV/GlobalISel/rvv/vsuxei-rv64.ll
LLVM :: CodeGen/RISCV/GlobalISel/shifts.ll
LLVM :: CodeGen/RISCV/GlobalISel/vararg.ll
LLVM :: CodeGen/RISCV/constpool-known-bits.ll
LLVM :: CodeGen/RISCV/dwarf-eh.ll
LLVM :: CodeGen/RISCV/exception-pointer-register.ll
LLVM :: CodeGen/RISCV/half-convert.ll
LLVM :: CodeGen/RISCV/half-select-fcmp.ll
LLVM :: CodeGen/RISCV/lpad.ll
LLVM :: CodeGen/RISCV/machine-live-variables.mir
LLVM :: CodeGen/RISCV/misched-mem-clustering.mir
LLVM :: CodeGen/RISCV/rvv/copyprop.mir
LLVM :: CodeGen/RISCV/rvv/extract-subvector.ll
LLVM :: CodeGen/RISCV/rvv/extractelt-fp.ll
LLVM :: CodeGen/RISCV/rvv/extractelt-int-rv64.ll
LLVM :: CodeGen/RISCV/rvv/fixed-vectors-deinterleave-load.ll
LLVM :: CodeGen/RISCV/rvv/fixed-vectors-extract-subvector.ll
LLVM :: CodeGen/RISCV/rvv/fixed-vectors-extract.ll
LLVM :: CodeGen/RISCV/rvv/fixed-vectors-insert-subvector-shuffle.ll
LLVM :: CodeGen/RISCV/rvv/fixed-vectors-int-explodevector.ll
LLVM :: CodeGen/RISCV/rvv/fixed-vectors-interleaved-access.ll
LLVM :: CodeGen/RISCV/rvv/fixed-vectors-masked-gather.ll
LLVM :: CodeGen/RISCV/rvv/fixed-vectors-masked-scatter.ll
LLVM :: CodeGen/RISCV/rvv/fixed-vectors-shuffle-deinterleave2.ll
LLVM :: CodeGen/RISCV/rvv/fixed-vectors-shuffle-exact-vlen.ll
LLVM :: CodeGen/RISCV/rvv/fixed-vectors-shuffle-int.ll
LLVM :: CodeGen/RISCV/rvv/fixed-vectors-shuffle-reverse.ll
LLVM :: CodeGen/RISCV/rvv/fixed-vectors-shuffle-rotate.ll
LLVM :: CodeGen/RISCV/rvv/fixed-vectors-strided-vpload.ll
LLVM :: CodeGen/RISCV/rvv/fixed-vectors-vpload.ll
LLVM :: CodeGen/RISCV/rvv/fmaximumnum-sdnode.ll
LLVM :: CodeGen/RISCV/rvv/fminimumnum-sdnode.ll
LLVM :: CodeGen/RISCV/rvv/llrint-sdnode.ll
LLVM :: CodeGen/RISCV/rvv/llrint-vp.ll
LLVM :: CodeGen/RISCV/rvv/llround-sdnode.ll
LLVM :: CodeGen/RISCV/rvv/lrint-sdnode.ll
LLVM :: CodeGen/RISCV/rvv/lrint-vp.ll
LLVM :: CodeGen/RISCV/rvv/lround-sdnode.ll
LLVM :: CodeGen/RISCV/rvv/mgather-sdnode.ll
LLVM :: CodeGen/RISCV/rvv/named-vector-shuffle-reverse.ll
LLVM :: CodeGen/RISCV/rvv/nontemporal-vp-scalable.ll
LLVM :: CodeGen/RISCV/rvv/partial-reduction-add.ll
LLVM :: CodeGen/RISCV/rvv/riscv-codegenprepare-asm.ll
LLVM :: CodeGen/RISCV/rvv/sink-splat-operands-i1.ll
LLVM :: CodeGen/RISCV/rvv/splat-vectors.ll
LLVM :: CodeGen/RISCV/rvv/vector-deinterleave-fixed.ll
LLVM :: CodeGen/RISCV/rvv/vector-deinterleave.ll
LLVM :: CodeGen/RISCV/rvv/vector-interleave.ll
LLVM :: CodeGen/RISCV/rvv/vfadd-constrained-sdnode.ll
LLVM :: CodeGen/RISCV/rvv/vfadd-sdnode.ll
LLVM :: CodeGen/RISCV/rvv/vfdiv-constrained-sdnode.ll
LLVM :: CodeGen/RISCV/rvv/vfdiv-sdnode.ll
LLVM :: CodeGen/RISCV/rvv/vfma-vp.ll
LLVM :: CodeGen/RISCV/rvv/vfmadd-constrained-sdnode.ll
LLVM :: CodeGen/RISCV/rvv/vfmax-sdnode.ll
LLVM :: CodeGen/RISCV/rvv/vfmin-sdnode.ll
LLVM :: CodeGen/RISCV/rvv/vfmul-constrained-sdnode.ll
LLVM :: CodeGen/RISCV/rvv/vfmul-sdnode.ll
LLVM :: CodeGen/RISCV/rvv/vfmv-bf-s.ll
LLVM :: CodeGen/RISCV/rvv/vfmv.f.s.ll
LLVM :: CodeGen/RISCV/rvv/vfpext-vp.ll
LLVM :: CodeGen/RISCV/rvv/vfptoi-sdnode.ll
LLVM :: CodeGen/RISCV/rvv/vfsub-constrained-sdnode.ll
LLVM :: CodeGen/RISCV/rvv/vfsub-sdnode.ll
LLVM :: CodeGen/RISCV/rvv/vleff.ll
LLVM :: CodeGen/RISCV/rvv/vlsegff-rv64-dead.ll
LLVM :: CodeGen/RISCV/rvv/vmv.x.s.ll
LLVM :: CodeGen/RISCV/rvv/vp-vector-interleaved-access.ll
LLVM :: CodeGen/RISCV/rvv/vpgather-sdnode.ll
LLVM :: CodeGen/RISCV/rvv/vpload.ll
LLVM :: CodeGen/RISCV/rvv/vpscatter-sdnode.ll
LLVM :: CodeGen/RISCV/rvv/vsetvli-insert.ll
LLVM :: CodeGen/RISCV/rvv/vsext-vp.ll
LLVM :: CodeGen/RISCV/rvv/vxrm-insert-out-of-loop.ll
LLVM :: CodeGen/RISCV/rvv/vzext-vp.ll
LLVM :: CodeGen/RISCV/rvv/zvqdotq-sdnode.ll

Contributor guide

Open the contributing guide

Research direction

Start by reading issues #168199 and #168201, then reproduce the failures in the listed LLVM :: CodeGen/RISCV tests. Triage one pass at a time to identify which pass leaves liveness information stale; done means each investigated failure has a responsible pass and a tracked fix.

Written by the indexing model from the issue text.

Assessment

Domain
compilers
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.