* @file
* @brief Flags to control optimizations.
* @author Michael Beck, Sebastian Hack
- * @version $Id$
*/
#include "config.h"
/* DISABLE - don't do this optimization
ENABLE - lets see, if there is a better graph */
-#define ON (-1)
-#define OFF (0)
+#define ON -1
+#define OFF 0
#define FLAG(name, value, def) (irf_##name & def) |
#define E_FLAG(name, value, def) FLAG(name, value, def)
#undef I_FLAG
#undef R_FLAG
-/** The bitset of currently running phases. */
optimization_state_t libFIRM_running = 0;
-/* verbose is always off on default */
optimization_state_t libFIRM_verb = 0;
+void set_opt_optimize(int value);
+
/* an external flag can be set and get from outside */
#define E_FLAG(name, value, def) \
void set_opt_##name(int flag) { \
if (flag) libFIRM_opt |= irf_##name; \
else libFIRM_opt &= ~irf_##name; \
} \
-void set_opt_##name##_verbose(int flag) { \
- if (flag) libFIRM_verb |= irf_##name; \
- else libFIRM_verb &= ~irf_##name; \
-} \
int (get_opt_##name)(void) { \
- return _get_opt_##name(); \
+ return get_opt_##name##_(); \
}
/* an internal flag can only be set from outside */
if (flag) libFIRM_opt |= irf_##name; \
else libFIRM_opt &= ~irf_##name; \
} \
-void set_opt_##name##_verbose(int flag) { \
- if (flag) libFIRM_verb |= irf_##name; \
- else libFIRM_verb &= ~irf_##name; \
-}
#define R_FLAG(name, value)
#undef E_FLAG
#undef R_FLAG
-/* for compatibility reasons */
void set_optimize(int value)
{
- if (value) libFIRM_opt |= irf_optimize;
- else libFIRM_opt &= ~irf_optimize;
+ set_opt_optimize(value);
}
int (get_optimize)(void)
return get_opt_optimize();
}
-void set_opt_control_flow(int value)
-{
- set_opt_control_flow_straightening(value);
- set_opt_control_flow_weak_simplification(value);
- set_opt_control_flow_strong_simplification(value);
-}
-
-/* Save the current optimization state. */
void save_optimization_state(optimization_state_t *state)
{
*state = libFIRM_opt;
}
-/* Restore the current optimization state. */
void restore_optimization_state(const optimization_state_t *state)
{
libFIRM_opt = *state;
}
-/* Switches ALL optimizations off */
void all_optimizations_off(void)
{
libFIRM_opt = 0;
}
#ifdef _DEBUG
-/* only for debugging */
void firm_show_flags(FILE *f)
{
if (! f)