Add is_Conv().
[libfirm] / ir / ir / irflag.h
index 5e21bad..1489253 100644 (file)
@@ -1,22 +1,30 @@
 /*
- * Project:     libFIRM
- * File name:   ir/ir/irflag.h
- * Purpose:     Flags to control optimizations.
- * Author:      Christian Schaefer, Goetz Lindenmaier
- * Modified by: Michael Beck
- * Created:
- * CVS-ID:      $Id$
- * Copyright:   (c) 1999-2003 Universität Karlsruhe
- * Licence:     This file protected by GPL -  GNU GENERAL PUBLIC LICENSE.
+ * 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.
  */
 
 /**
- * @file irflag.h
- *
+ * @file
+ * @brief   Flags to control optimizations.
+ * @author  Christian Schaefer, Goetz Lindenmaier, Michael Beck
+ * @version $Id$
+ * @summary
  * Flags to customize the behavior of libfirm.
  *
- * @author Christian Schaefer
- *
  * There are the following groups of flags:
  * 1. Optimization flags.
  *    a)  There is a flag, 'optimize' to turn on/off all optimizations.
@@ -31,8 +39,8 @@
  * 4. Verification flag
  *    This one controls the behavior of node and type verifications
  */
-#ifndef _IRFLAG_H_
-#define _IRFLAG_H_
+#ifndef FIRM_IR_IRFLAG_H
+#define FIRM_IR_IRFLAG_H
 
 #include "firm_types.h"
 
@@ -155,9 +163,6 @@ void set_opt_control_flow_weak_simplification(int value);
 /** Enables/Disables strong if and loop simplification (in optimize_cf). */
 void set_opt_control_flow_strong_simplification(int value);
 
-/** Enables/Disables removal of critical control flow edges. */
-void set_opt_critical_edges(int value);
-
 /** Enables/Disables reassociation.
  *
  * If opt_reassociation == 1 reassociation is performed.
@@ -238,14 +243,14 @@ void set_opt_fragile_ops(int value);
 void set_opt_if_conversion(int value);
 
 /**
- * Enable/Disable real function call optimization.
+ * Enable/Disable function call optimization.
  *
- * Real function call optimization detects "real functions" and
- * allows the floating of Call nodes. A "real function" is one that
+ * Function call optimization detects const and pure functions and
+ * allows the CSE of Call nodes. A const function is one that
  * do only evaluate it's parameters and did not read or write memory
- * to compute its results.
+ * to compute its results. Pure functions are allowed to read global memory.
  */
-void set_opt_real_function_call(int value);
+void set_opt_function_call(int value);
 
 /**
  * Enable/Disable Confirm node removal during local optimization.
@@ -289,6 +294,17 @@ void set_opt_ldst_only_null_ptr_exceptions(int value);
  */
 void set_opt_sel_based_null_check_elim(int value);
 
+/**
+ * Enable/Disable Automatic construction of Sync nodes during
+ * Firm construction.
+ *
+ * If this flags is set, sequential non-volatile Loads are automatically
+ * rearranged so that they can be executed in parallel by creating Sync nodes.
+ *
+ * This flags should be set for Java style languages.
+ */
+void set_opt_auto_create_sync(int value);
+
 /** Enable/Disable normalizations of the firm representation.
  *
  *  This flag guards transformations that normalize the Firm representation
@@ -321,6 +337,12 @@ void set_opt_normalize (int value);
  */
 void set_opt_precise_exc_context(int value);
 
+/** Enable/Disable Alias analysis.
+ *
+ * If enabled, memory disambiguation by alias analysis is used.
+ */
+void set_opt_alias_analysis(int value);
+
 /** Enable/Disable closed world assumption.
  *
  * If enabled, optimizations expect to know the "whole world", i.e. no
@@ -361,4 +383,4 @@ typedef enum _firm_verification_t {
  */
 void do_node_verification(firm_verification_t mode);
 
-#endif /* _IRFLAG_H_ */
+#endif