This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [lno] [patch] vectorization with unknown loop bound



On May 18, 2004, at 3:12 AM, Olga Golovanevsky wrote:



On May 17, 2004, at 18:01 PM, Devang Patel wrote:


On May 17, 2004, at 7:10 AM, Olga Golovanevsky wrote:

I used some static functions from tree-ssa-loop-manip.c and
cfgloopmanip.c, as well the function force_gimple_operand() from
tree-ssa-loop-ivopts.c, so I changed these functions to non-static.
Alternatively it was possible to make this loop transformation
generic, that is a question whether it is worth doing.

If tree_ssa_loop_version () is used then some of the code
duplication can be avoided. But it can be done later.

How would you suggest to use tree_ssa_loop_version () function?


I looked at it before starting implementation also as at
tree-duplicate-loop-to-header-edge () and
duplicate-loop-to-header-edge ().

In my understanding, later two function in general
do the following:
      - sequentially concatenate basic blocks of loop
a given number of times
      - straiten loop latch edges in order to generate one loop
      - update ssa info (phis, names,...) of loop copies

tree_ssa_loop_version () uses loopify ()
loopify () uses tree_duplicate_loop_to_header_edge ()
tree_duplicate_loop_to_header_edge () uses duplicate_loop_to_header_edge ()


tree_duplicate_loop_to_header_edge () handles copying basic blocks
and fixing phis. If you can use it directly and write generic
transformation, as Zdenek suggested, then lot of code duplication can
be avoided.

--
Devang


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]