libFirm
Flags

Flags to customize the behavior of libfirm. More...

Typedefs

typedef unsigned optimization_state_t
 A container type to load/restore all optimizations.

Functions

void set_optimize (int value)
 This function enables/disables optimizations globally.
int get_optimize (void)
 Returns global optimizations flag.
void set_opt_constant_folding (int value)
 Enables/Disables constant folding optimization.
int get_opt_constant_folding (void)
 returns 0 if constant_folding is disabled, !=0 otherwise
void set_opt_algebraic_simplification (int value)
 Enables/Disables algebraic simplifications.
void set_opt_cse (int value)
 Enables/Disables common subexpression elimination.
int get_opt_cse (void)
 Returns constant folding optimization setting.
void set_opt_global_cse (int value)
 Enables/Disables global constant subexpression elimination.
void set_opt_suppress_downcast_optimization (int value)
 Restricts the behavior of cast optimization.
int get_opt_suppress_downcast_optimization (void)
 Returns suppred_downcast flag.
void set_opt_global_null_ptr_elimination (int value)
 Enable/Disable Global Null Pointer Test Elimination.
void set_opt_auto_create_sync (int value)
 Enable/Disable Automatic construction of Sync nodes during Firm construction.
void set_opt_alias_analysis (int value)
 Enable/Disable Alias analysis.
void set_opt_closed_world (int value)
 Enable/Disable closed world assumption.
void save_optimization_state (optimization_state_t *state)
 Save the current optimization state.
void restore_optimization_state (const optimization_state_t *state)
 Restore the current optimization state.
void all_optimizations_off (void)
 Switches ALL optimizations off.

Detailed Description

Flags to customize the behavior of libfirm.

There are the following groups of flags:

  1. Optimization flags.
    1. There is a flag, 'optimize' to turn on/off all optimizations.
    2. There are flags for each individual optimization. Some flags turns transformations in several algorithms on/off.
  2. Normalization flags. These flags steer transformations of the ir that improve it, as removing dump Phi nodes (one predecessor, all predecessors are equal ...), Ids, Tuples ...
  3. Verbosity flags.
    1. Flags to steer the level of the information.
    2. Flags to steer in which phase information should be dumped.

Typedef Documentation

typedef unsigned optimization_state_t

A container type to load/restore all optimizations.

Definition at line 53 of file irflag.h.

Function Documentation

void all_optimizations_off ( void  )

Switches ALL optimizations off.

int get_opt_constant_folding ( void  )

returns 0 if constant_folding is disabled, !=0 otherwise

int get_opt_cse ( void  )

Returns constant folding optimization setting.

int get_opt_suppress_downcast_optimization ( void  )

Returns suppred_downcast flag.

See Also
set_opt_suppress_downcast_optimization()
int get_optimize ( void  )

Returns global optimizations flag.

See Also
set_optimize()
void restore_optimization_state ( const optimization_state_t state)

Restore the current optimization state.

void save_optimization_state ( optimization_state_t state)

Save the current optimization state.

void set_opt_algebraic_simplification ( int  value)

Enables/Disables algebraic simplifications.

If opt_algebraic_simplification == 1 perform

  • algebraic simplification (a * 0 ==> 0, a or a ==> a)
  • simplification of tests ( !(a < b) ==> (a >= b)) Default: opt_algebraic_simplification == 1.
void set_opt_alias_analysis ( int  value)

Enable/Disable Alias analysis.

If enabled, memory disambiguation by alias analysis is used.

void set_opt_auto_create_sync ( int  value)

Enable/Disable Automatic construction of Sync nodes during Firm construction.

If this flags is set, sequential non-volatile Loads are automatically rearranged so that they can be executed in parallel by creating Sync nodes.

This flag should be set for Java style languages.

void set_opt_closed_world ( int  value)

Enable/Disable closed world assumption.

If enabled, optimizations expect to know the "whole world", i.e. no external types or callers exist. This enables some powerful optimizations.

void set_opt_constant_folding ( int  value)

Enables/Disables constant folding optimization.

If opt_constant_folding == 1 perform constant expression evaluation (2 + 5 ==> 7, 3 < 2 ==> false) Default: opt_constant_folding == 1.

void set_opt_cse ( int  value)

Enables/Disables common subexpression elimination.

If opt_cse == 1 perform common subexpression elimination. Default: opt_cse == 1.

void set_opt_global_cse ( int  value)

Enables/Disables global constant subexpression elimination.

If opt_global_cse == 1 and opt_cse == 1 perform intra procedure constant subexpression elimination for floating nodes. Intra procedure cse gets the graph into state "floating". It is necessary to run pre/code motion to get the graph back into state "op_pin_state_pinned". right after a call to local_optimize with global cse turned on. Default: opt_global_cse == 0.

void set_opt_global_null_ptr_elimination ( int  value)

Enable/Disable Global Null Pointer Test Elimination.

In languages where it is illegal to dereference NULL pointer, doing so makes the pointer "valid non-null", else the program will stop anyway by a fault.

This flag should be set for C style languages.

void set_opt_suppress_downcast_optimization ( int  value)

Restricts the behavior of cast optimization.

If set, downcast are not optimized if they might be illegal as in (Super)(Sub) (new Super()). Default: 0 == not suppressed.

void set_optimize ( int  value)

This function enables/disables optimizations globally.

If optimize == 0 no optimizations are performed at all. Default: optimize == 1.