removed stdint.h again -- mallon soll die typen halt ausschreiben, die ganze libfirm...
[libfirm] / ir / opt / ifconv.h
index ee80c14..0fea7bf 100644 (file)
@@ -1,3 +1,22 @@
+/*
+ * Copyright (C) 1995-2007 University of Karlsruhe.  All right reserved.
+ *
+ * This file is part of libFirm.
+ *
+ * This file may be distributed and/or modified under the terms of the
+ * GNU General Public License version 2 as published by the Free Software
+ * Foundation and appearing in the file LICENSE.GPL included in the
+ * packaging of this file.
+ *
+ * Licensees holding valid libFirm Professional Edition licenses may use
+ * this file in accordance with the libFirm Commercial License.
+ * Agreement provided with the Software.
+ *
+ * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+ * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ */
+
 /*
  * Project:     libFIRM
  * File name:   ir/opt/ifconv.h
@@ -6,7 +25,6 @@
  * Created:
  * CVS-ID:      $Id$
  * Copyright:   (c) 1998-2005 Universität Karlsruhe
- * Licence:     This file protected by GPL -  GNU GENERAL PUBLIC LICENSE.
  */
 #ifndef _FIRM_IF_CONV_H
 #define _FIRM_IF_CONV_H
  * of the current architecture.
  * If it returns non-zero, a mux is created, else the code
  * is not modified.
+ * @param sel        A selector of a Cond.
+ * @param phi_list   List of Phi nodes about to be converted (linked via link field)
+ * @param i          First data predecessor involved in if conversion
+ * @param j          Second data predecessor involved in if conversion
  */
-typedef int (*arch_allow_mux_func)(ir_node *sel, ir_node *false_res, ir_node *true_res);
+typedef int (*arch_allow_ifconv_func)(ir_node *sel, ir_node* phi_list, int i, int j);
 
 /**
  * The parameters structure.
@@ -35,15 +57,19 @@ typedef struct _opt_if_conv_info_t {
   int                 max_depth;    /**< The maximum depth up to which expressions
                                          are examined when it has to be decided if they
                                          can be placed into another block. */
-  arch_allow_mux_func allow_mux;    /**< Evaluator function, if not set all possible Mux
+  arch_allow_ifconv_func allow_ifconv; /**< Evaluator function, if not set all possible Psi
                                          nodes will be created. */
 } opt_if_conv_info_t;
 
 /**
  * Perform If conversion on a graph.
+ *
  * @param irg The graph.
  * @param params The parameters for the if conversion.
+ *
+ * Cannot handle blocks with Bad control predecessors, so call it after control
+ * flow optimization.
  */
 void opt_if_conv(ir_graph *irg, const opt_if_conv_info_t *params);
 
-#endif
+#endif /* _FIRM_IF_CONV_H */