Files
mattgodbolt-molty 3a7e43de71 Tighten PR per second review pass + add drift-detection tests
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>
2026-05-09 18:18:58 -05:00
..
2023-07-30 18:06:09 -05:00
2026-05-06 10:38:05 -04:00
2020-05-20 12:55:12 +02:00
2026-03-21 21:21:40 +01:00
2018-02-23 09:19:04 -06:00
2026-02-20 12:54:12 +01:00
2025-08-02 16:20:20 -05:00
2022-05-09 23:13:50 -05:00
2022-12-27 18:46:15 -06:00
2022-05-09 23:13:50 -05:00
2023-02-02 20:44:45 +01:00
2024-03-08 22:25:09 -06:00
2025-10-04 16:37:04 +02:00
2020-10-01 23:40:14 +02:00

How do I ?

This is a how-to guide for the user-interface presented by Compiler Explorer. This doesn't cover the details of how to set up or modify Compiler Explorer for your own needs. For that, please check the documents which already cover topics like:

Fast links:

Change the assembly syntax from Intel

Output, intel and at&t

The option to switch assembly from Intel to AT&T syntax is present in the Output option of each compiler. If enough space is not present, the option also presents itself as the gear symbol (⚙)

Compare the time taken by compilation and networking

Brief overview of UI

This is the symbol that looks like a bar graph (📊). If your compilations are taking long, you can use this to check the time taken by:

  • Networking, JavaScript, waiting for events, etc.
  • Checking the cache and retrieving from it on a cache-hit
  • Compilation (on force compilation or cache-miss)
  • Parsing the generated assembly before presenting it

View intermediate information provided by the compilers

Options for GCC Options for Clang

Though both GCC and Clang create supplementary outputs along with assembly (shown by default), and an executable (created if an executor has been added), the exact nature of the outputs and their formats differ between the compilers.

GCC allows the Tree, IPA, RTL and graph outputs, while Clang allows optimization, AST, IR and graph outputs. Some outputs (e.g. RTL or graph) also have a rich set of options in the UI to enable focussing on a particular function or compiler stage.