This is the mail archive of the gcc@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: DDG - Implementing Swing Modulo Scheduling in GCC (cont.)



So in general the data design looks ok to me of course if it is enough
for your implementation of SMS. I've found some simplifications in data
analysis. You are searching dependencies between iterations with only
the distance equal to 1. It is better to use a general framework
dependence.c (now it is not a part of gcc mainline because it is not
used by any part of gcc) written by Stan Cox. If it is hard to
understand or support this, you could implement at least the same
functionality.

I *strongly* recommend against reviving dependence.c, for the following reasons:
1. As submitted, it didn't work (it required some modifications and hooks into the c front end that were never committed/approved).
2. What did "work" (ie when you put in the right hooks) was buggy and often segfaulted (i tried to use it for something for about a week or two before giving up because it kept segfaulting on trivial code).
3. It constructs it's own def-use chains from trees
4. It tries to do dependence on our arbitrarily complex tree structure



3 and 4 are artifacts of trying to do dependence without tree-ssa.
Most of the code in dependence.c was dealing with these def-use chains, so you'd be better off not using it as a starting point.


If you must have better tree->rtl dependence info passed down (which is what dependence.c did), i'd suggest starting with Sebastian Pop's recently posted work, and having the results passed down to the RTL level somewhat like dependence.c does.

Though starting with some simple RTL dependence and then using more advanced tree dependence info passed down to RTL when tree-ssa arrives sounds like a good option.
--Dan



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