Liu Yang wrote:
Hello,Everyone!Could
you find some info about the following problems I meet?
1 When I read the source code of Pro64,the
comment said that:
Loop unrolling is performed by: BB
*CG_LOOP_Unroll(LOOP_DESCR *loop), which
returns a new unrolled body if the
loop is unrolled. It may also create a
"remainder loop" in the prolog or
epilog.
But I do not found this function in
Pro64.And another function
unroll_multi_BB never been called
in Pro64.I want to know whether this is
true.
2 In Single_BB_Do_Loop_SWP,is unrolling
also done?
3 Before unroll,the whole loop converted
to a single BB,is that true?
Thanks!
With my best regards,Liu
Yang Advanced Compiler
Lab
Institute of Computing Technology
Chinese Academy of Science
E-Mail : ly@xxxxxxxxx
CG_LOOP_Unroll has been replaced by CG_LOOP_Optimize. Most
of your questions can be answered by examining CG_LOOP_Otpimize.
It controls the interaction between unrolling and other optimizations.
It invokes Unroll_Do_Loop and Unroll_Dowhile_Loop to do the actual unrolling.
Unrolling of multibb loop has not been supported/finished. Unrolling
of single BB loop (swp, no swp, do-loop, dowhile-loop) are supported.
See Unroll_Do_Loop and Unroll_Dowhile_Loop. Inexpensive if-conversion
is performed before entering CG_LOOP_Optimize. CG_LOOP_Optimize,
before performing unrolling, invokes Force_If_Convert to carry out more
expensive if-conversions if the cost can be justified by the benefit of
SWP or unrolling.
-Raymond
|