This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: More loop optimizer restructuring patches
- To: Michael Hayes <mhayes at cygnus dot com>
- Subject: Re: More loop optimizer restructuring patches
- From: Jeffrey A Law <law at cygnus dot com>
- Date: Mon, 11 Sep 2000 10:26:00 -0600
- cc: gcc-patches at gcc dot gnu dot org
- Reply-To: law at cygnus dot com
In message <14780.33775.725924.462367@paradise.net.nz>you write:
> Here are three more patches to tidy up the loop optimizer to soften
> the blow for more substantial changes in the pipeline.
>
> The first subsumes iteration_info into loop_iterations and saves the
> iteration induction variable for later processing.
>
> The second removes the global register arrays and stores this
> information in a structure.
>
> The third removes the global indction variable array and also stores
> this information in a structure.
>
> All the patches have been individually tested by bootstrapping gcc for
> i686-pc-linux.
2000-09-11 Michael Hayes <mhayes@cygnus.com>
* unroll.c (iteration_info): Subsume into loop_iterations.
* loop.h (loop_info): New field iv.
Approved.
2000-09-11 Michael Hayes <mhayes@cygnus.com>
* loop.h (LOOP_REGS): New macro.
(struct loop_regs): New.
(struct loop_info): Add regs field.
* loop.c (set_in_loop): Remove global array and store
in loop_regs structure as part of loop_info structure.
(n_times_set, may_not_optimize): Likewise.
(reg_single_usage, moved_once): Likewise.
(count_one_set): Add regs argument.
(combine_movables, rtx_equal_for_loop_p, combine_givs): Likewise.
(set_pseudo_multiple_uses): Pass regs pointer.
Approved.
2000-09-11 Michael Hayes <mhayes@cygnus.com>
* loop.h (LOOP_IVS): New macro.
(REG_IV_TYPE, REG_IV_INFO): Add ivs argument.
(struct loop_ivs): New.
(struct loop_info): Add ivs field.
(reg_iv_type, reg_iv_info): Delete prototype.
(reg_biv_class, loop_iv_list): Likewise.
* loop.c (record_biv, find_life_end): Pass loop argument.
(reg_iv_type): Remove global array and use
field in loop_regs structure within loop_ivs structure.
(reg_iv_info, reg_biv_class, loop_iv_list): Likewise.
(first_increment_giv, last_increment_giv): Use entry in
loop_ivs structure.
(record_initial): Pass ivs pointer.
* unroll.c (copy_loop_body, remap_split_bivs): Add loop argument.
Approved.
Thanks,
jeff