This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: question about the ddg construction
On Thu, Jul 3, 2008 at 3:26 PM, Steven Bosscher <stevenb.gcc@gmail.com> wrote:
> On Fri, Jul 4, 2008 at 12:05 AM, Tianwei <tianwei.sheng@gmail.com> wrote:
>> Hi, all,
>> My current project wants to reuse DDG's infrastructure to get some
>> loop carried dependency information, I debug these code for a while,
>> but have some questions, Hope you can
>> give me some suggestions.
>>
>> 1. my platform is X86, and gcc version is 4.3.1, when i use -fsms,
>> and debug the code, found that for the following code, if always
>> return NULL_RTX:
>>
>> /* Make sure this is a doloop. */
>> if ( !(count_reg = doloop_register_get (head, tail)))
>> {
>> if (dump_file)
>> fprintf (dump_file, "SMS doloop_register_get failed\n");
>> continue;
>> }
>>
>> when I check the doloop_register_get, and found that it's guarded by a
>> ifdef "HAVE_doloop_end", even i make clobber the whole compiler,
>> rebuild the compiler by "CFLAGS='-DHAVE_doloop_end'", it still will
>> complain error, can't find the gen_doloop_end.
>>
>> so the first question is: does SMS is support on X86?
>
> No. the x86 backend has no doloop insn pattern. To see what that
> means, see loop-doloop.c, and look for doloop in
> http://gcc.gnu.org/onlinedocs/gccint/Standard-Names.html.
>
> Gr.
> Steven
>
Steven, thanks very much. I will look at it.
BTW, now the ddg construction seems to do the following step:
1. compuate the intra-dependency accoring to scheduler dependency analysis
2. during the intra-dependency function, it will also perform inter-loop-mem-dep
3. then it will use another pass to perform inter-loop-reg-dep.
i will debug some testcase to understand why it did in this
way(especially why inter-loop-mem is embedded in intra-dependency
phase), how it can guarantee we won't miss any dependency.
Tianwei