irverify: remove load/store from entity verification
[libfirm] / include / libfirm / vrp.h
index 9a58bae..ef5234b 100644 (file)
@@ -21,8 +21,6 @@
  * @file
  * @brief   Analyse the graph with value range propagation
  * @author  Jonas Fietz
- * @version $Id$
- *
  */
 #ifndef VRP_H
 #define VRP_H
 #include "firm_types.h"
 #include "begin.h"
 
+/**
+ * @ingroup irana
+ * @defgroup vrp  Value Information
+ * Information about SSA-values (ranges, known bits, ...)
+ * @{
+ */
+
+/** Type of a value range */
 enum range_types {
        VRP_UNDEFINED, /**< No information could be derived so far */
        VRP_RANGE,     /**< bottom and top form a range, including both values */
@@ -38,24 +44,30 @@ enum range_types {
        VRP_VARYING    /**< information cannot be derived */
 };
 
-/** VRP information */
+/** VRP information for a single node */
 typedef struct {
-       int valid;                   /**< This node has valid vrp information */
-       ir_tarval *bits_set;         /**< The bits which, by analysis, are  definitely set.
-                                         0: may be not set, 1: definitely set*/
+       ir_tarval *bits_set;         /**< The bits which, by analysis, are
+                                         definitely set:
+                                         0: may be not set, 1: definitely set */
        ir_tarval *bits_not_set;     /**< The bits which by analysis are definitely
-                                         not set, 1 for may be set, 0: definitely not set  */
+                                         not set:
+                                         1 for may be set, 0: definitely not set */
        enum range_types range_type; /**< The range represented by range_top, range_bottom */
-       ir_tarval *range_bottom;
-       ir_tarval *range_top;
+       ir_tarval *range_bottom;     /**< lower end of the value range */
+       ir_tarval *range_top;        /**< upper end of the value range */
 } vrp_attr;
 
 /**
- * Set vrp data on the graph irg
+ * Sets vrp data on the graph irg
  * @param irg graph on which to set vrp data
  */
 FIRM_API void set_vrp_data(ir_graph *irg);
 
+/**
+ * free vrp infos in an irg
+ */
+FIRM_API void free_vrp_data(ir_graph *irg);
+
 /**
  * Test, if the two nodes can be compared with their vrp information
  *
@@ -65,15 +77,17 @@ FIRM_API void set_vrp_data(ir_graph *irg);
  */
 FIRM_API ir_relation vrp_cmp(const ir_node *left, const ir_node *right);
 
-/*
- * Return the vrp data for this node
+/**
+ * Returns the vrp data for this node
+ * Note: only allowed for nodes with an integer mode!
  *
  * @param n: the node for which to return the vrp information
- *
  * @return a pointer to the vrp data or NULL if there is none
  */
 FIRM_API vrp_attr *vrp_get_info(const ir_node *n);
 
+/** @} */
+
 #include "end.h"
 
 #endif