LEGACY DOCS · 12.4Stable is 13.2. This page stays because it still owns historical or unchanged contracts.CURRENT 13.2 →
RELEASE LINE13.2 HISTORICAL13.1 PREDECESSOR13.0 PREVIOUS12.4 NATIVE MIRARCHIVE

LEGACY DOCS · 12.4

PAGE ROLE · MACHINE INSPECTION

MAKE THE COMPILER PRINT WHAT IT DID

v12.4 treats inspection as part of the native compiler, not an emergency ritual. Native MIR dumps, machine statistics, object metadata and disassembly give you several independent views of the same lowering.

00 dump Native MIR

--dump-native-mir emits a deterministic view of the native intermediate representation. It is for diffs, bug isolation and proving that two targets shared the same semantic input before legalization split them.

A useful dump must remain stable enough that a one-line source change does not repaint the whole function. Deterministic block and virtual-register ordering are therefore debugging features as much as build features.

10 machine statistics

The native inspection path reports instruction count, text bytes, frame bytes, virtual registers assigned, spills, reloads, loads, stores, calls and branches. These are not benchmark replacements. They answer a different question: what did the compiler physically emit?

Text bytesHow much executable code the selected sequence occupies.
InstructionsStatic selected instruction count.
Frame bytesStack-frame storage required by the function/corpus.
Spill / reloadWhere register pressure forced memory traffic.
Calls / branchesControl-flow shape after selection.

Wall time tells you that something is slow. Disassembly tells you what stupid thing you made the CPU do.

20 inspect the object, not only the compiler log

ELF, COFF and freestanding objects are independently inspectable artifacts. Section sizes, relocations, symbols and instruction bytes should agree with the compiler's own report. If the compiler says “zero unresolved relocations” and the object says otherwise, the object wins.

This is why v12.4 keeps object, relocation, ABI and disassembly gates mandatory even when optional hardware counters are unavailable.

30 hardware counters are optional evidence

The release machine did not provide perf; the probe result is PERF_NOT_FOUND. That is recorded as unavailable, not forged into zero misses or an invented IPC number. Wall-time and structural machine evidence remain sufficient for the release contract.

NO FAKE TELEMETRY. Missing evidence is a state. A made-up counter is a lie.

40 practical bad-code sequence

  1. Reproduce with one exact source and target.
  2. Compare O0 and O1 output/exit/error behavior.
  3. Dump Native MIR for both.
  4. Inspect allocation counts and frame size.
  5. Inspect object sections and relocations.
  6. Disassemble the hot function.
  7. Only then change the pass that first diverged.

Do not patch the last ugly instruction when the real defect is a bogus value live range three passes earlier. Fix the first broken representation.

50 double-build evidence

The final Windows package was produced from two independent exact-tag exports and the archives were byte-identical. That checks a larger surface than “compiler output looks similar”: source export, compilation, package membership, archive ordering and metadata all have to converge.

60 next wire

Go to performance for the measurement protocol or release proof for package/tag boundaries.