+
+/* Enable/Disable normalizations of the firm representation. */
+void set_opt_normalize(int value)
+{
+ if (value)
+ libFIRM_opt |= OPT_NORMALIZE;
+ else
+ libFIRM_opt &= ~OPT_NORMALIZE;
+}
+
+/* Enable/Disable optimization of tail-recursion calls. */
+void set_opt_tail_recursion(int value)
+{
+ if (value)
+ libFIRM_opt |= OPT_TAIL_RECURSION;
+ else
+ libFIRM_opt &= ~OPT_TAIL_RECURSION;
+}
+
+/* Enable/Disable optimization of tail-recursion calls. */
+void set_opt_tail_recursion_verbose(int value)
+{
+ if (value)
+ libFIRM_verb |= OPT_TAIL_RECURSION;
+ else
+ libFIRM_verb &= ~OPT_TAIL_RECURSION;
+}
+
+/* Enable/Disable precise exception context. */
+void set_opt_precise_exc_context(int value)
+{
+#if PRECISE_EXC_CONTEXT
+ if (value)
+ libFIRM_opt |= OPT_PRECISE_EXC_CONTEXT;
+ else
+ libFIRM_opt &= ~OPT_PRECISE_EXC_CONTEXT;
+#endif
+}
+
+void set_opt_fragile_ops(int value)
+{
+ if (value)
+ libFIRM_opt |= OPT_FRAGILE_OPS;
+ else
+ libFIRM_opt &= ~OPT_FRAGILE_OPS;
+}
+
+/* Enable/Disable if conversion. */
+void set_opt_if_conversion(int value)
+{
+ if (value)
+ libFIRM_opt |= OPT_IF_CONVERSION;
+ else
+ libFIRM_opt &= ~OPT_IF_CONVERSION;
+}
+
+/* Enable/Disable real function call optimization. */
+void set_opt_real_function_call(int value)
+{
+ if (value)
+ libFIRM_opt |= OPT_REAL_FUNC_CALL;
+ else
+ libFIRM_opt &= ~OPT_REAL_FUNC_CALL;
+}
+
+/* Enable/Disable Confirm node removal. */
+void set_opt_remove_Confirm(int value)
+{
+ if (value)
+ libFIRM_opt |= OPT_REMOVE_CONFIRM;
+ else
+ libFIRM_opt &= ~OPT_REMOVE_CONFIRM;
+}
+
+/* Enable/Disable scalar replacement optimization. */
+void set_opt_scalar_replacement(int value)
+{
+ if (value)
+ libFIRM_opt |= OPT_SCALAR_REPLACEMENT;
+ else
+ libFIRM_opt &= ~OPT_SCALAR_REPLACEMENT;
+}
+
+/* Set verbosity for scalar relacement */
+void set_opt_scalar_replacement_verbose(int value)
+{
+ if (value)
+ libFIRM_verb |= OPT_SCALAR_REPLACEMENT;
+ else
+ libFIRM_verb &= ~OPT_SCALAR_REPLACEMENT;
+}
+
+/* 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;