* gcse.c (struct expr:max_distance): New field.
authormkuvyrkov <mkuvyrkov@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 27 Jul 2010 19:29:48 +0000 (19:29 +0000)
committermkuvyrkov <mkuvyrkov@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 27 Jul 2010 19:29:48 +0000 (19:29 +0000)
commit8b38b1505adace259e8fd33c80ac4d104cd8b965
tree5230a8924f60a6f3b8ae64ec9b7f69f6d703a3db
parentf151d0c60af393e59d7bb29bba6e78bdfcd203a1
* gcse.c (struct expr:max_distance): New field.
(doing_code_hoisting_p): New static variable.
(want_to_gcse_p): Change signature.  Allow constrained hoisting of
simple expressions, don't change behavior for PRE.  Set max_distance.
(insert_expr_in_table): Set new max_distance field.
(hash_scan_set): Update.
(hoist_expr_reaches_here_p): Stop search after max_distance
instructions.
(find_occr_in_bb): New static function.  Use it in ...
(hoist_code): Calculate sizes of basic block before any changes are
done.  Pass max_distance to hoist_expr_reaches_here_p.
(one_code_hoisting_pass): Set doing_code_hoisting_p.

* params.def (PARAM_GCSE_COST_DISTANCE_RATIO,)
(PARAM_GCSE_UNRESTRICTED_COST): New parameters.
* params.h (GCSE_COST_DISTANCE_RATIO, GCSE_UNRESTRICTED_COST): New
macros.
* doc/invoke.texi (gcse-cost-distance-ratio, gcse-unrestricted-cost):
Document.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@162589 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/doc/invoke.texi
gcc/gcse.c
gcc/params.def
gcc/params.h