Skip to content

Commit f8d0fb8

Browse files
committed
Add overview of constant propagator
1 parent dbd6988 commit f8d0fb8

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

src/analyses/README.md

+5-2
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,12 @@ To be documented.
3030

3131
To be documented.
3232

33-
\subsection analyses-constant-propagation Constant propagation (constant_propagator_ait)
33+
\subsection analyses-constant-propagation Constant propagation (\ref constant_propagator_ait)
3434

35-
To be documented.
35+
A simple, unsound constant propagator. Replaces RHS symbol expressions (variable
36+
reads) with their values when they appear to have a unique value at a particular
37+
program point. Unsound with respect to pointer operations on the left-hand side
38+
of assignments.
3639

3740
\subsection analyses-taint Taint analysis (custom_bitvector_analysist)
3841

src/analyses/constant_propagator.h

+10
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,16 @@ Author: Peter Schrammel
88

99
/// \file
1010
/// Constant propagation
11+
///
12+
/// A simple, unsound constant propagator. Assignments to symbols (local and
13+
/// global variables) are tracked, and propagated if a unique value is found
14+
/// at a given use site. Function calls are accounted for (they are assumed to
15+
/// overwrite all address-taken variables; see \ref dirtyt), but assignments
16+
/// through pointers are not (they are assumed to have no effect).
17+
///
18+
/// Can be restricted to operate over only particular symbols by passing a
19+
/// predicate to a \ref constant_propagator_ait constructor, in which case this
20+
/// can be rendered sound by restricting it to non-address-taken variables.
1121

1222
#ifndef CPROVER_ANALYSES_CONSTANT_PROPAGATOR_H
1323
#define CPROVER_ANALYSES_CONSTANT_PROPAGATOR_H

0 commit comments

Comments
 (0)