wavefnd / wavefnd/Wave

Support unfiltered codegen regressions with each individual LLVM backend

Open
#490 0 comments 0 reactions 0 assignees View on GitHub
build help wanted needs testing
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.