/* Loop optimizer initialization routines and RTL loop optimization passes.
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008
+ Free Software Foundation, Inc.
This file is part of GCC.
/* Create pre-headers. */
if (flags & LOOPS_HAVE_PREHEADERS)
- create_preheaders (CP_SIMPLE_PREHEADERS);
+ {
+ int cp_flags = CP_SIMPLE_PREHEADERS;
+
+ if (flags & LOOPS_HAVE_FALLTHRU_PREHEADERS)
+ cp_flags |= CP_FALLTHRU_PREHEADERS;
+
+ create_preheaders (cp_flags);
+ }
/* Force all latches to have only single successor. */
if (flags & LOOPS_HAVE_SIMPLE_LATCHES)
/* Checking. */
#ifdef ENABLE_CHECKING
- verify_flow_info ();
+ /* FIXME: no point to verify flow info after bundling on ia64. Use this
+ hack for achieving this. */
+ if (!reload_completed)
+ verify_flow_info ();
#endif
}
rtl_loop_init (void)
{
gcc_assert (current_ir_type () == IR_RTL_CFGLAYOUT);
-
+
if (dump_file)
dump_flow_info (dump_file, dump_flags);
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- TV_LOOP, /* tv_id */
+ TV_LOOP_MOVE_INVARIANTS, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
- 0, /* todo_flags_start */
+ 0, /* todo_flags_start */
TODO_df_verify |
TODO_df_finish | TODO_verify_rtl_sharing |
TODO_dump_func /* todo_flags_finish */
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- TV_LOOP, /* tv_id */
+ TV_LOOP_UNSWITCH, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- TV_LOOP, /* tv_id */
+ TV_LOOP_UNROLL, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
- TV_LOOP, /* tv_id */
+ TV_LOOP_DOLOOP, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */