libFirm 1.20
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