Skip to content

Commit b1dae76

Browse files
committed
Briefly document flow-insensitive analysis
1 parent dbd6988 commit b1dae76

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

src/analyses/README.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,16 @@ This is obsolete.
1818

1919
\subsection analyses-flow-insensitive-analysis Flow-insensitive analysis (flow_insensitive_analysist)
2020

21-
To be documented.
21+
Framework for flow-insensitive analyses. Maintains a single global domain which
22+
instructions are invited to transform in turn. Unsound (terminates too early) if
23+
(a) there are two or more instructions that incrementally reach a fixed point,
24+
for example by walking a chain of pointers and updating a points-to set, but
25+
(b) those instructions are separated by instructions that don't update the
26+
domain (for example, SKIP instructions) unless the domain carefully avoids this
27+
fate. Therefore, not recommended for new code.
28+
29+
Only current user in-tree is \ref value_set_analysis_fit and its close
30+
relatives, \ref value_set_analysis_fivrt and \ref value_set_analysis_fivrnst
2231

2332
\section analyses-specific-analyses Specific analyses:
2433

src/analyses/flow_insensitive_analysis.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,16 @@ Author: Daniel Kroening, [email protected]
99

1010
/// \file
1111
/// Flow Insensitive Static Analysis
12+
///
13+
/// A framework for flow-insensitive analyses. Maintains a single global domain
14+
/// which instructions are invited to transform in turn.
15+
///
16+
/// Note this is unsound if used naively, because it follows the control-flow
17+
/// graph and terminates when an instruction makes no change to the domain and
18+
/// that instruction's successors have already been visited. Therefore a domain
19+
/// that relies upon every reachable instruction being re-visited upon the
20+
/// domain being updated must ensure that itself, for example by maintaining
21+
/// a map from locations to the latest version of the domain witnessed.
1222

1323
#ifndef CPROVER_ANALYSES_FLOW_INSENSITIVE_ANALYSIS_H
1424
#define CPROVER_ANALYSES_FLOW_INSENSITIVE_ANALYSIS_H

0 commit comments

Comments
 (0)