2 * Copyright (C) 1995-2009 University of Karlsruhe. All right reserved.
4 * This file is part of libFirm.
6 * This file may be distributed and/or modified under the terms of the
7 * GNU General Public License version 2 as published by the Free Software
8 * Foundation and appearing in the file LICENSE.GPL included in the
9 * packaging of this file.
11 * Licensees holding valid libFirm Professional Edition licenses may use
12 * this file in accordance with the libFirm Commercial License.
13 * Agreement provided with the Software.
15 * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
16 * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22 * @brief Analyse the graph with value range propagation
27 #include "firm_types.h"
33 VRP_UNDEFINED, /* No information could be derived so far */
34 VRP_RANGE, /* bottom and top form a range, including both values */
35 VRP_ANTIRANGE, /* range from bottom to top can not be, but borders might
37 VRP_VARYING /* information can not be derived */
41 VRP_NONE, /* range is defined absolute */
42 VRP_ADD, /* range + range_node are the possible values */
43 VRP_SUB /* range - range_node are the possible values */
47 * Set vrp data on the graph irg
48 * @param irg graph on which to set vrp data
50 void set_vrp_data(ir_graph *irg);
53 * Creates an ir_prog_pass for vrp
55 * @param name the name of this pass or NULL
57 ir_graph_pass_t *set_vrp_pass(const char *name);
60 * Test, if the two nodes can be compared with their vrp information
62 * @param left: the left node
63 * @param right: the right node
65 * @return the pn_Cmp, if one can be derived
67 pn_Cmp vrp_cmp(ir_node *left, ir_node *right);