#include "firm_cmdline.h"
#include "firm_timing.h"
+#ifdef _WIN32
+#define snprintf _snprintf
+#endif
+
#if defined(_DEBUG) || defined(FIRM_DEBUG)
#define DBG(x) dbg_printf x
#else
set_opt_auto_create_sync(firm_opt.auto_sync);
set_opt_alias_analysis(firm_opt.alias_analysis);
+ /* Overflow unsafe transformation can be enabled here if OSR is disabled, else
+ must be disabled until OSR finished. */
+ set_opt_overflow_unsafe_transform(firm_opt.strength_red == FALSE);
+
aa_opt = aa_opt_no_opt;
if (firm_opt.strict_alias)
aa_opt |= aa_opt_type_based | aa_opt_byte_type_may_alias;
CHECK_ALL(firm_opt.check_all);
}
+ /* do lowering on the const code irg */
lower_const_code();
for (i = 0; i < get_irp_n_irgs(); i++) {
#ifdef FIRM_EXT_GRS
- /* If SIMD optimization is on, make sure we have only 1 return */
- if (firm_ext_grs.create_pattern || firm_ext_grs.simd_opt)
- normalize_one_return(irg);
+ /* If SIMD optimization is on, make sure we have only 1 return */
+ if (firm_ext_grs.create_pattern || firm_ext_grs.simd_opt)
+ normalize_one_return(irg);
#endif
}
timer_push(TV_OSR);
- opt_osr(current_ir_graph, osr_flag_default /*| osr_flag_ignore_x86_shift*/);
+ opt_osr(current_ir_graph, osr_flag_default | osr_flag_keep_reg_pressure | osr_flag_ignore_x86_shift);
+ /* now it is safe to enable overflow unsafe transformations */
+ set_opt_overflow_unsafe_transform(1);
timer_pop();
DUMP_ONE_C(firm_dump.ir_graph && firm_dump.all_phases, irg, "stred");
CHECK_ONE(firm_opt.check_all, irg);