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: [RFC] [autovect patch] Implement vectorization hints



On Mar 2, 2005, at 11:38 AM, Zdenek Dvorak wrote:


Hello,
Just FYI, xlc associates the info with the loop in a loop table (the
frontend creates the initial loop table), and keeps the loop table up
to
date forever onwards :)
But GCC does not keep up to date loop tables ;).
This won't change if everyone just keeps on doing other things instead
of doing the work necessary to start this.
I will start working on that; as a first step, I will try to get
loop-aware cfg cleanup merged, rest of the tree loop optimization passes
should not be too problematic hopefully.

With your patch to make cfg cleanup loop aware, http://gcc.gnu.org/ml/gcc-patches/2005-03/msg00244.html

I tried to initialize loop structure as early as possible, so I put it
immediately after build_ssa. Jump threading immediately ran into problems
when loop header block is threaded. For example,


                     + ----> [3] ---> Exit
                     |
Entry ---> [0] ---> [2] <---+
                     |      |
                     v      |
                    [1] ----+

Here [2] is loop header and [1] is loop latch.

After jump threading

Entry ---> [0] ---> [4] ---> [1] <---+
                              |      |
                              v      |
                             [2] ----+
                              |
                              + ----> [3] ---> Exit


This means thread_blocks() need to update loop structure in this case. But resulting cfg does not match loop criteria. latch does not have exactly one successor.

Any thoughts how to handle this?

Thanks,
-
Devang


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