Added prototype for phi_ops_interfere
[libfirm] / ir / be / bephicongr_t.h
index 4f84a7a..4aca0d8 100644 (file)
@@ -1,4 +1,5 @@
 /**
+ * Analysis to conmpute phi congruence classes.
  * @author Daniel Grund
  * @date 09.12.2004
  */
@@ -6,28 +7,37 @@
 #ifndef _BEPHICONGR_T_H
 #define _BEPHICONGR_T_H
 
-#include "pset.h"
-#include "irnode.h"
+#include "bephicongr.h"
 
 typedef struct _phi_info_t {
-       ir_node *phi;                              /* only set in args of phi nodes (which could be a phi itslef). Points to a phi node or NULL */
-       pset *phi_class;               /* only set in phi nodes. A set containing the members of the phi congruence class this phi node belongs to */
+       ir_node *phi;           /**< For all nodes of a phi class points to a phi node
+                                                        representing the phi class and holding the ptr to
+                                                        the pset phi_class      or NULL */
+       pset *phi_class;        /**< Only set in phi nodes. A set containing the members
+                                                        of the phi congruence class this phi node represents */
 } phi_info_t;
 
 extern size_t phi_irn_data_offset;
 
+#define get_irn_phi_info(irn)   get_irn_data(irn, phi_info_t, phi_irn_data_offset)
+
 /**
  * Setting this to 0 will treat const nodes like
  * all other nodes when computing phi congruence classes.
  * A non zero value results in splitting phi congruence
  * classes at all const nodes (except they do share
  * some non-const nodes too)
+ *
+ * If constants are localized this is irrelevant. Set to 0 in this case.
  */
 #define CONSTS_SPLIT_PHI_CLASSES 0
-#define get_irn_phi_info(irn)   get_irn_data(irn, phi_info_t, phi_irn_data_offset)
-#define get_phi_class(irn)      get_irn_phi_info(irn)->phi_class /* Only for phi nodes */
 
-void be_phi_congr_class_init(void);
+/**
+ * Computes all phi classes of an irg. All phi nodes of this irg must be
+ * contained in @p all_phi_nodes. Otherwise the results will be incorrect.
+ * @param all_phi_nodes All phi nodes of an irg.
+ * @return A set containing all phi classes as psets
+ */
 pset *be_phi_congr_classes(pset *all_phi_nodes);