Skip to content

Conversation

@artemagvanian
Copy link
Member

When re-running the standard library benchmark from Scrutinizer, I noticed that certain calls in leakage-free functions, e.g., test_crate::collections::hashmap::get_key_value, are skipped, while they shouldn't have been.

This issue comes from the fact that compute_dependent_locals only deems the destination local in the terminator important. It assumes that all arguments have previously been marked important if they are indeed so. However, this is not always the case, so the taint was not propagated to some arguments.

This fix conservatively marks all arguments as important. Even if coarse-grained, it doesn't seem like the specificity on the benchmark has been affected much. Ideally, one would want to implement per-argument tracking, which is what PEAR-based Scrutinizer does.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants