From 2016034718e8074a6c222c71fd528846a32cfcd6 Mon Sep 17 00:00:00 2001 From: Maxim Kuvyrkov Date: Tue, 27 Jul 2010 19:29:48 +0000 Subject: gcse.c (struct expr:max_distance): New field. * 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. From-SVN: r162589 --- gcc/doc/invoke.texi | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'gcc/doc/invoke.texi') diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 73051de..0db0f59 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -8243,6 +8243,23 @@ when @option{-ftree-vectorize} is used. The number of iterations after vectorization needs to be greater than the value specified by this option to allow vectorization. The default value is 0. +@item gcse-cost-distance-ratio +Scaling factor in calculation of maximum distance an expression +can be moved by GCSE optimizations. This is currently supported only in +code hoisting pass. The bigger the ratio, the more agressive code hoisting +will be with simple expressions, i.e., the expressions which have cost +less than @option{gcse-unrestricted-cost}. Specifying 0 will disable +hoisting of simple expressions. The default value is 10. + +@item gcse-unrestricted-cost +Cost, roughly measured as the cost of a single typical machine +instruction, at which GCSE optimizations will not constrain +the distance an expression can travel. This is currently +supported only in code hoisting pass. The lesser the cost, +the more aggressive code hoisting will be. Specifying 0 will +allow all expressions to travel unrestricted distances. +The default value is 3. + @item max-unrolled-insns The maximum number of instructions that a loop should have if that loop is unrolled, and if the loop is unrolled, it determines how many times -- cgit v1.1