Support unfiltered codegen regressions with each individual LLVM backend
- Dominant language
- Rust
- Stars
- 53
- Forks
- 16
- Avg merge
- 4h 22m
- Merged PRs (30d)
- 46
Description
## Remaining regression-harness limitation
#484/#486 repair the complete **core64** suite and the LoongArch-specific tests. The broader unfiltered single-backend codegen harness still contains tests that select disabled targets or implicitly use the host target.
On #486 head `6fb6ed7`, this command reproduces the remaining limitation:
```bash
cargo test --locked --no-default-features --features llvm-target-loongarch --test codegen_regressions --jobs 2
```
The local audit reported **13 passed / 44 failed**. For example, `std_net_compiles_for_every_supported_socket_abi` still includes X86/AArch64/RISCV entries, and host-oriented semantic/driver tests default to the host triple. The LoongArch compiler correctly rejects those unavailable targets. The existing isolated CI lane intentionally runs only `loongarch64_`; that scoped command passes all four regressions, including opt-in Clang/LLD/QEMU interoperability.
## Contribution scope
Make the harness usable with every advertised individual LLVM target feature (`x86`, `aarch64`, `riscv`, `loongarch`, `wasm`) without relying on ad hoc name filters. This is broader than the original core64/LoongArch separation fix in #484 and should be reviewed as its own refactor.
- Classify architecture-specific versus backend-independent tests.
- Gate architecture-specific tests and helper imports by the matching feature.
- Build mixed target lists from enabled backends, retaining all currently enabled assertions.
- Give backend-independent driver checks an available explicit target instead of the host default.
- Keep external C/ABI execution requirements explicit; running no tests is not a success criterion.
## Acceptance
- [ ] An unfiltered codegen test invocation works with each single-backend feature on an appropriate host/toolchain, or execution-only cases are explicitly gated for that environment.
- [ ] The full default and core64 suites keep their coverage and pass.
- [ ] Clippy with warnings denied passes for the isolated configurations; disabled helpers/imports do not introduce warnings.
- [ ] At least one CI lane runs the unfiltered isolated suite and exposes test counts.
Start in `tests/codegen_regressions.rs`, `Cargo.toml` and `.github/workflows/rust.yml`. `tests/frontend_regressions.rs::frontend_target` and `projected_deref_preserves_pointer_storage_types` demonstrate selecting an enabled target. This touches many target/ABI assumptions and is deliberately not labeled a good first issue.
Contributor guide
Research direction
Start in tests/codegen_regressions.rs, then inspect Cargo.toml and .github/workflows/rust.yml. Reproduce the isolated LoongArch command and compare it with tests/frontend_regressions.rs::frontend_target and projected_deref_preserves_pointer_storage_types. Done means each advertised single-backend feature runs unfiltered with valid target gating, existing suites pass, clippy is clean, and CI reports test counts.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- ci-cd, compilers, testing-qa
- Issue type
- Refactor
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 38/100