mirror of
https://github.com/compiler-explorer/compiler-explorer.git
synced 2026-05-16 12:33:04 -04:00
Parsimony: - lib/instructionsets.ts: drop subset-redundant table entries (powerpc dropped `'ppc64'` since `'ppc'` covers it; sparc dropped `'sparc64'` since `'sparc'` covers it). Replace `as const satisfies …` + runtime cast with a direct `Partial<Record<…>>` annotation. - lib/instructionsets.ts: add `armv8`/`armv9` to the aarch64 substring list — caught by the new consistency test below; without these, `-march=armv8.8-a+sve2` was matching the bare `'arm'` substring and resolving to arm32. Documented inline. - lib/properties-validator.ts: `expandCompilersList` now reuses `parseCompilersList` instead of re-implementing colon-splitting. - etc/config/*.amazon.properties (11 files): drop the "added when removing the inference heuristic" banner — that is git-history information, not what a future editor needs. - test/instructionsets-tests.ts: drop the redundant bare `-march=` case (substring matching makes it equivalent to the triple test). New drift-detection tests: - test/properties-validation-tests.ts gains an `instructionSet matches any -target/-march in default options` test that walks every compiler's resolved options and flags any case where the parsed target/arch resolves to a different InstructionSet than the compiler's declared one. Catches the case where someone bumps a clang-target group's `-target` flag without updating its `instructionSet`. Already caught a real mistag — the swift `arm-swift` group had `-target aarch64-...` but inherited amd64; tagged explicitly. - New synthetic-input tests for `findCompilersWithoutInstructionSet` cover happy path, empty-string-as-missing, and nested `&group` inheritance. Previous tests only ran against real config; if the resolution logic regressed the real-config test would still pass. - New unit tests for `extractTargetTokens`. Refactor: `findCompilersWithoutInstructionSet` now uses a new `enumerateCompilers` generator that exposes a `resolve(property)` callback, so the consistency test can reuse the same inheritance walk. Docs: `docs/Configuration.md` and `docs/AddingACompiler.md` mark `instructionSet` as required and point at `npm run test:props`. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>