RULE-25-21
, others: Consider something like a library TracesToExplicit<T>
#848
Labels
Difficulty-Low
A false positive or false negative report which is expected to take <1 day effort to address
enhancement
New feature or request
Impact-Low
Affected rules
RULE-25-21
Description
Rule
25-21
requires that theatomic_*_explicit
operations use the memory ordermemory_order_seq_cst
.It would probably be overly restrictive to require an explicit inline written
memory_order_seq_cst
at the call site. However, it's probably too accepting to merely allow any dynamically computed value. Ideally, we can support basic indirection like variable assignment, parameter values, function calls/returns, and report cases that don't trace back to an acceptable root.Doing this as a typical flow analysis is backwards. We can easily track flow from
memory_order_seq_cst
exprs toatomic_*_explicit
calls, but the existence of such a flow doesn't preclude that invalid values also flow to the call. Alternatively, there are potential performance issues if we consider all exprs which are notmemory_order_seq_cst
to be sources in the flow analysis.Wouldn't be terribly hard to write a library such as
TracesToExplicit<T>
that is a very simple global flow analysis made for this purpose, starting from sinks and doing only very obvious backwards tracking of values through function calls and variable assignments. If that doesn't track back to an acceptable value, we can report it. Ideally we can report it as apath-problem
though this makes such a library more complex to implement.The text was updated successfully, but these errors were encountered: