immunant / c2rust

Migrate C code to Rust
https://c2rust.com/
Other
3.95k stars 234 forks source link

analyze: track reasons why functions are not rewritten #1072

Closed spernsteiner closed 5 months ago

spernsteiner commented 6 months ago

This branch replaces most of the existing fns_failed/fns_fixed machinery with a new strategy for marking items with a "don't rewrite" flag. This makes it easier to integrate new, stricter checks for unsupported code patterns, with the goal of reducing compile errors in the rewritten code. Some of these checks are also implemented in this branch, such as a check for complex (and currently unsupported) Cell rewrites.

When an item is marked as don't-rewrite, we also record a reason flag. This is helpful for debugging, and will also make it easy in the future to disable specific checks (by ignoring the corresponding reason flag) for debugging/testing purposes or by user request.

spernsteiner commented 5 months ago

@fw-immunant @ahomescu Can one of you take a look at this? #1073 is approved but can't be merged yet because it's based on this PR (and would be nontrivial to rebase off of it)

fw-immunant commented 5 months ago

I'll review today, I was sick most of the week.