/*
- * 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.
* 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"
/** 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.
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.
*/
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
*/
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
*/
void do_node_verification(firm_verification_t mode);
-#endif /* _IRFLAG_H_ */
+#endif