C-Breeze
C Compiler Infrastructure

[ Project home page]

pointerOptions Class Reference

Pointer options. More...

#include <pointeroptions.h>

List of all members.

Static Public Attributes

static bool Context_insensitive
 Context-sensitivity control.
static bool Recursion_Context_sensitive
 Allow recursive functions to be context-sensitivity.
static bool Use_multiplicity
 Use multiplicity analysis.
static bool Verbose
 Verbose output.
static bool Show_memoryblocks
 Show memory blocks.
static bool Show_procedures
 Show procedures.
static bool Pointer_statistics
 Pointer statistics.
static bool Ignore_fields
 Ignore struct/union fields.
static bool One_struct_per_type
 One struct per type.
static bool Show_stack
 Show the stack state.
static bool Flow_insensitive
 Flow-insensitive analysis.
static bool Unification
 Unification-based analysis.
static bool Unification_use_annotation
 Allow unification to use annotation.
static bool Show_Unification
 Show result of unification-based analysis.
static bool Conditional_analysis
 Conditional analysis.
static bool Bidirectional_assignment
 Bi-directional assignment.
static bool Aggressive_multiplicity
 Aggressive multiplicity.
static bool One_string_constant
 One string constant.
static bool Context_insensitive_memory
 Context-insensitive memory model.
static bool Use_escape_analysis
 Use escape analysis.
static bool Verbose_unification
 Verbose unification.
static bool Verbose_constants
 Verbose constants.
static bool Verbose_liveness
 Verbose liveness.
static bool Show_unknown_procedures
 Show unknown procedures.
static bool Show_memory_leaks
 Show memory leaks.
static bool Monitor_precision
 Monitor precision.
static str_set Context_sensitive_procedures
 Context sensitive procedures.
static flow_sensitive_set Flow_sensitive_objects
 Flow-sensitive objects.
static flow_sensitive_set Flow_sensitive_allocation_objects
 Flow-sensitive allocation objects.
static UnifyTypes Non_unify_types
 Flow-sensitive allocation objects.
static int Unify_objects
 Count the number of objects unified.
static basicblock_set Path_sensitive_branches
 Path-sensitive branches.
static str_set Verbose_procedures
 Verbose procedures.
static int_list Verbose_call_id
 Verbose procedures.
static bool Slice_analysis
 Perform sliced analysis.
static set< procNode * > Skip_procs
 Procedures that are skipped.
static set< procedureInfo * > No_Skip_procs
 Procedures that are never skipped.
static bool Path_sensitive
 Path-sensitivity control.
static int Threshold
 Context-sensitivity control.


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 131 of file pointeroptions.h.


Member Data Documentation

bool pointerOptions::Aggressive_multiplicity [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 254 of file pointeroptions.h.

bool pointerOptions::Bidirectional_assignment [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 235 of file pointeroptions.h.

bool pointerOptions::Conditional_analysis [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 225 of file pointeroptions.h.

bool pointerOptions::Context_insensitive [static]
 

Context-sensitivity control.

Definition at line 137 of file pointeroptions.h.

bool pointerOptions::Context_insensitive_memory [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 270 of file pointeroptions.h.

str_set pointerOptions::Context_sensitive_procedures [static]
 

Context sensitive procedures.

Populate this list with procedures that are to be treated context sensitive.

Definition at line 321 of file pointeroptions.h.

static bool pointerOptions::Flow_insensitive [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_set pointerOptions::Flow_sensitive_allocation_objects [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 335 of file pointeroptions.h.

flow_sensitive_set pointerOptions::Flow_sensitive_objects [static]
 

Flow-sensitive objects.

Populate this list with variables that are to be treated flow sensitive.

Definition at line 328 of file pointeroptions.h.

static bool pointerOptions::Ignore_fields [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 [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 314 of file pointeroptions.h.

set<procedureInfo*> pointerOptions::No_Skip_procs [static]
 

Procedures that are never skipped.

This prevent procedures from being skipped during sliced analysis.

Definition at line 382 of file pointeroptions.h.

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 343 of file pointeroptions.h.

bool pointerOptions::One_string_constant [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 262 of file pointeroptions.h.

bool pointerOptions::One_struct_per_type [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 187 of file pointeroptions.h.

bool pointerOptions::Path_sensitive [static]
 

Path-sensitivity control.

Definition at line 386 of file pointeroptions.h.

basicblock_set pointerOptions::Path_sensitive_branches [static]
 

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 354 of file pointeroptions.h.

static bool pointerOptions::Pointer_statistics [static]
 

Pointer statistics.

Definition at line 81 of file pointers_common.h.

bool pointerOptions::Recursion_Context_sensitive [static]
 

Allow recursive functions to be context-sensitivity.

Definition at line 141 of file pointeroptions.h.

bool pointerOptions::Show_memory_leaks [static]
 

Show memory leaks.

With escape analysis and aggressive multiplicity on, report possible memory leaks.

Definition at line 307 of file pointeroptions.h.

bool pointerOptions::Show_memoryblocks [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 161 of file pointeroptions.h.

bool pointerOptions::Show_procedures [static]
 

Show procedures.

At the end of pointer analysis print out a list of all the procedures and information about them.

Definition at line 168 of file pointeroptions.h.

static bool pointerOptions::Show_stack [static]
 

Show the stack state.

Definition at line 89 of file pointers_common.h.

bool pointerOptions::Show_Unification [static]
 

Show result of unification-based analysis.

Definition at line 218 of file pointeroptions.h.

bool pointerOptions::Show_unknown_procedures [static]
 

Show unknown procedures.

Definition at line 300 of file pointeroptions.h.

set<procNode*> pointerOptions::Skip_procs [static]
 

Procedures that are skipped.

Procedures in this set are skipped during sliced analysis. Procedures are that in No_Skip_procs are never put into this set.

Definition at line 377 of file pointeroptions.h.

bool pointerOptions::Slice_analysis [static]
 

Perform sliced analysis.

Currently, when true, procedures in Slip_procs are skipped.

Definition at line 371 of file pointeroptions.h.

int pointerOptions::Threshold [static]
 

Context-sensitivity control.

Definition at line 69 of file pointers_common.h.

bool pointerOptions::Unification [static]
 

Unification-based analysis.

This is implemented based on Steensgaard algorithm.

Definition at line 208 of file pointeroptions.h.

bool pointerOptions::Unification_use_annotation [static]
 

Allow unification to use annotation.

Definition at line 213 of file pointeroptions.h.

int pointerOptions::Unify_objects [static]
 

Count the number of objects unified.

Definition at line 346 of file pointeroptions.h.

bool pointerOptions::Use_escape_analysis [static]
 

Use escape analysis.

In Pointers::record_external_inputs_and_outputs, use escape analysis to prune out unreachable heap objects.

Definition at line 277 of file pointeroptions.h.

static bool pointerOptions::Use_multiplicity [static]
 

Use multiplicity analysis.

Definition at line 73 of file pointers_common.h.

static bool pointerOptions::Verbose [static]
 

Verbose output.

During program analysis, show every statement processed along with the corresponding verbose output for either the pointer analyzer or whatever other analysis is being run.

Definition at line 77 of file pointers_common.h.

int_list pointerOptions::Verbose_call_id [static]
 

Verbose procedures.

Turn on verbose output when we're analyzing these calls.

Definition at line 366 of file pointeroptions.h.

bool pointerOptions::Verbose_constants [static]
 

Verbose constants.

During constant propagation, show constant values being computed.

Definition at line 289 of file pointeroptions.h.

bool pointerOptions::Verbose_liveness [static]
 

Verbose liveness.

During liveness analysis, show liveness computations.

Definition at line 295 of file pointeroptions.h.

str_set pointerOptions::Verbose_procedures [static]
 

Verbose procedures.

Turn on verbose output when we're analyzing these procedures.

Definition at line 360 of file pointeroptions.h.

bool pointerOptions::Verbose_unification [static]
 

Verbose unification.

During unification, show constant values being computed.

Definition at line 283 of file pointeroptions.h.


The documentation for this class was generated from the following files:

Generated on February 1, 2006
Back to the C-Breeze home page