Test corpus

213 programs with source and recovered C

Each fixture isolates a compiler pattern or language feature. The harness recompiles the recovered C and calls it beside the original with the same seeded inputs.

83.9%

function-lanes behave identically

2,895 of 3,449 function-lanes, baseline.json at b47f6b43

213

fixtures

C, C++, Rust; six lanes each

94

fixtures with a failing lane

listed first below

A lane is one function built with one compiler and optimization level, such as gcc -O0 or clang -O2. A function built four ways counts four times. The denominator is therefore 3,449 and not the number of C functions.

This is an execution test, not a text comparison. Plausible C still fails if it returns a different value or changes a buffer differently.

Groups are ordered by what the decompiler recovers, weakest first, and so are the fixtures inside them. The numbers in the left column are the order fixtures were added, which is not a difficulty curve.

By what it recovers

groupfixturesfunction-lanespass
C++ object model 10 88/201 43.8%
Rust 7 70/136 51.5%
Floating point 5 76/124 61.3%
Scale, linkage, wire formats 15 189/264 71.6%
Runtime and obfuscation 11 149/184 81.0%
C language semantics 51 540/616 87.7%
ABI and codegen edges 35 747/848 88.1%
Numeric and domain code 27 213/228 93.4%
Strings, encoding, hashing 13 123/128 96.1%
Control flow and calls 13 552/568 97.2%
Data structures and algorithms 26 148/152 97.4%

C++ object model 88/201 · 43.8%

Rust 70/136 · 51.5%

Floating point 76/124 · 61.3%

Scale, linkage, wire formats 189/264 · 71.6%

Runtime and obfuscation 149/184 · 81.0%

C language semantics 540/616 · 87.7%

ABI and codegen edges 747/848 · 88.1%

Numeric and domain code 213/228 · 93.4%

Strings, encoding, hashing 123/128 · 96.1%

Control flow and calls 552/568 · 97.2%

Data structures and algorithms 148/152 · 97.4%