Hello! > This patch aims to fix all stability issues related to using the first > scheduler in gcc > for x86 target (there several reported issues related to this problem). > > Main idea of this activity is mostly to provide user a possibility to > safely turn on first scheduler for his codes. In some cases this could > positively affect performance, especially for in-order Atom. > > Below is short description of proposed changes.
> 2012-09-18 Yuri Rumyantsev <ysrum...@gmail.com> > > * config/i386/i386.c (ix86_dep_by_shift_count_body) : Add > check on reload_completed since it can be invoked before > register allocation phase in 1st scheduler. > (ia32_multipass_dfa_lookahead) : Do not use dfa_lookahead for 1st > Scheduler to save compile time. > (ix86_sched_reorder) : Do not perform ready list reordering for 1st > Scheduler to save compile time. > (insn_is_function_arg) : New function. Returns true if lhs of insn is > HW function argument register. > (add_parameter_dependencies) : New function. Add output dependencies > for chain of function adjacent arguments if only there is a move to > likely spilled HW registers. Return first argument if at least one > dependence was added or NULL otherwise. > (avoid_func_arg_motion) : New function. Add output or anti dependency > from insn to first_arg to restrict code motion. > (add_dependee_for_func_arg) : New function. Avoid cross block motion > of > function argument through adding dependency from the first non-jump > insn in bb. > (ix86_dependencies_evaluation_hook) : New function. Hook for > schedule1: > avoid motion of function arguments passed in passed in likely spilled > HW registers. > (ix86_adjust_priority) : New function. Hook for schedule1: set > priority > of moves from likely spilled HW registers to maximum to schedule them > as soon as possible. > (ix86_sched_init_global): Do not perform multipass scheduling for 1st > Scheduler to save compile time. I would kindly ask scheduler expert to review the patch from the scheduler functionality POV. Thanks, Uros.