libFirm
irconsconfirm.h File Reference

Construction of Confirm nodes. More...

#include "firm_types.h"
#include "begin.h"
#include "end.h"

Go to the source code of this file.

Functions

void construct_confirms (ir_graph *irg)
 Inject Confirm nodes into a graph.
ir_graph_pass_tconstruct_confirms_pass (const char *name)
 Creates an ir_graph pass for construct_confirms().
void remove_confirms (ir_graph *irg)
 Remove all Confirm nodes from a graph.
ir_graph_pass_tremove_confirms_pass (const char *name)
 Creates an ir_graph pass for remove_confirms().

Detailed Description

Construction of Confirm nodes.

Author
Michael Beck
Date
6.2005

Definition in file irconsconfirm.h.

Function Documentation

void construct_confirms ( ir_graph irg)

Inject Confirm nodes into a graph.

Parameters
irgthe graph

Confirm nodes carry confirmation information, such as a relation between a value a and another value (or a constant) b.

These allows to do some range dependent optimizations for Cmp, Abs, Min, Max nodes as well as bounds checking deletion.

The heap analysis might profit also. On the other side, Confirm nodes disturb local optimizations, because patterns are destroyed.

It is possible to avoid this by skipping Confirm nodes, but this is not implemented and is not cheap. The same happens with Casts nodes too. The current solution is to remove Confirms at a later pass.

ir_graph_pass_t* construct_confirms_pass ( const char *  name)

Creates an ir_graph pass for construct_confirms().

Parameters
namethe name of this pass or NULL
Returns
the newly created ir_graph pass
void remove_confirms ( ir_graph irg)

Remove all Confirm nodes from a graph.

Note that local_optimize() can handle this if the remove Confirm node setting is on (set_opt_remove_Confirm(1)).

ir_graph_pass_t* remove_confirms_pass ( const char *  name)

Creates an ir_graph pass for remove_confirms().

Parameters
namethe name of this pass or NULL
Returns
the newly created ir_graph pass