Main Page Modules Namespace List Class Hierarchy Alphabetical List Compound List File List Namespace Members Compound Members File Members Related Pages
pointerOptions Class ReferencePointer options.
More...
#include <pointeroptions.h>
List of all members.
Detailed Description
Pointer options.
This class contains static flags that control the behavior of the pointer analyzer. The actual definitions (and default values) reside in pointers.cc.
Definition at line 129 of file pointeroptions.h.
Member Data Documentation
bool pointerOptions::Aggressive_multiplicity = false [static]
|
|
|
Aggressive multiplicity.
With this option turned on, we use a trick that could be unsafe in some cases, but it's very unlikely. The observation is that if a memoryBlock is allocated and then a subsequent if-then-else frees it on one branch, but not the other, then it is probably the case that either way it is unallocated. For example:
f = fopen(...); if (f) { ... fclose(f); }
At the end of this code, the file is always closed because in the case that f is null, the file was never opened in the first place.
Definition at line 161 of file pointers.cc. |
bool pointerOptions::Bidirectional_assignment = false [static]
|
|
|
Bi-directional assignment.
This options is intended to emulate equality-based type analysis. It causes all assignments (including parameter passing) to include all of the right-hand-side objects on the left hand side.
For example, "y = x" becomes "{y,x} = x".
Definition at line 142 of file pointers.cc. |
bool pointerOptions::Conditional_analysis = false [static]
|
|
|
Conditional analysis.
When set to true this flag causes the analyzer to skip branches when it can ascertain the value of the condition.
Definition at line 133 of file pointers.cc. |
bool pointerOptions::Context_insensitive = false [static]
|
|
bool pointerOptions::Context_insensitive_memory = false [static]
|
|
|
Context-insensitive memory model.
When true, all objects, including variables and heap objects, are only instantiated once for each calling context regardless of the analysis mode.
Definition at line 177 of file pointers.cc. |
str_set pointerOptions::Context_sensitive_procedures [static]
|
|
bool pointerOptions::Flow_insensitive = false [static]
|
|
|
Flow-insensitive analysis.
This is implemented in the following way: (1) every object has only one def that occurs at the main function (and therefore dominates everything), (2) all assignments are additive, (3) we don't perform any control-flow merges (phi functions), and (4) all heap allocations are immediately Unbounded in size.
Definition at line 99 of file pointers_common.h. |
|
Flow-sensitive allocation objects.
Populate this list with allocation objects that need to be flow sensitive in order to improve the4 multiplicity analysis.
Definition at line 242 of file pointers.cc. |
|
Flow-sensitive objects.
Populate this list with variables that are to be treated flow sensitive.
Definition at line 235 of file pointers.cc. |
bool pointerOptions::Ignore_fields = false [static]
|
|
|
Ignore struct/union fields.
The "dot" operator becomes a no-op. This also forces all updates to the structure to be weak (as if the multiplicity were high).
Definition at line 85 of file pointers_common.h. |
bool pointerOptions::Monitor_precision = false [static]
|
|
|
Monitor precision.
When true, the analysis engine monitors precision and builds a graph of the causes and effects of precision loss.
Definition at line 221 of file pointers.cc. |
UnifyTypes pointerOptions::Non_unify_types [static]
|
|
|
Flow-sensitive allocation objects.
Populate this list with allocation objects that need to be flow sensitive in order to improve the4 multiplicity analysis.
Definition at line 250 of file pointers.cc. |
bool pointerOptions::One_string_constant = true [static]
|
|
|
One string constant.
When set true, we only create a single object to represent all string constants. Since we never look at the value, and we don't allow them to be changed, this should not affect our results.
Definition at line 169 of file pointers.cc. |
bool pointerOptions::One_struct_per_type = false [static]
|
|
|
One struct per type.
With this flag on, there is only one set of memory blocks for each structure type. This emulates the situation in the type-system world.
Definition at line 96 of file pointers.cc. |
|
Path-sensitive branches.
Record the basic block that controls path sensitive information -- that is, the branch at the end of the basic block needs to be path sensitive.
Definition at line 261 of file pointers.cc. |
bool pointerOptions::Pointer_statistics = false [static]
|
|
bool pointerOptions::Recursion_Context_sensitive = true [static]
|
|
bool pointerOptions::Show_memory_leaks = false [static]
|
|
|
Show memory leaks.
With escape analysis and aggressive multiplicity on, report possible memory leaks.
Definition at line 214 of file pointers.cc. |
bool pointerOptions::Show_memoryblocks = false [static]
|
|
|
Show memory blocks.
At the end of pointer analysis print out a list of all the memoryblocks along with information about their properties, including numbers of defs and uses.
Definition at line 70 of file pointers.cc. |
bool pointerOptions::Show_procedures = false [static]
|
|
|
Show procedures.
At the end of pointer analysis print out a list of all the procedures and information about them.
Definition at line 77 of file pointers.cc. |
bool pointerOptions::Show_stack = false [static]
|
|
bool pointerOptions::Show_Unification = false [static]
|
|
bool pointerOptions::Show_unknown_procedures = false [static]
|
|
int pointerOptions::Threshold [static]
|
|
bool pointerOptions::Unification = false [static]
|
|
|
Unification-based analysis.
This is implemented based on Steensgaard algorithm.
Definition at line 117 of file pointers.cc.
Referenced by Pointers::assignment_operator(), memoryModel::create_memory_object(), Pointers::determine_call_targets(), Pointers::dot_operator(), memoryModel::generate_array_elements_for(), memoryModel::generate_su_field(), memoryModel::initialize_struct(), memoryModel::lookup_heap_object(), memoryModel::lookup_variable(), memoryBlock::set_unification(), Pointers::star_operator(), and memoryBlock::top_most_container(). |
bool pointerOptions::Unification_use_annotation = true [static]
|
|
|
Allow unification to use annotation.
Definition at line 122 of file pointers.cc. |
int pointerOptions::Unify_objects = 0 [static]
|
|
bool pointerOptions::Use_escape_analysis = false [static]
|
|
bool pointerOptions::Use_multiplicity = true [static]
|
|
bool pointerOptions::Verbose = false [static]
|
|
bool pointerOptions::Verbose_constants = false [static]
|
|
|
Verbose constants.
During constant propagation, show constant values being computed.
Definition at line 196 of file pointers.cc. |
bool pointerOptions::Verbose_liveness = false [static]
|
|
|
Verbose liveness.
During liveness analysis, show liveness computations.
Definition at line 202 of file pointers.cc. |
str_set pointerOptions::Verbose_procedures [static]
|
|
bool pointerOptions::Verbose_unification = false [static]
|
|
|
Verbose unification.
During unification, show constant values being computed.
Definition at line 190 of file pointers.cc. |
The documentation for this class was generated from the following files:
|