Hello,
Tadas V wrote:
I am a computer science student and currently I am preparing my master
degree final work on "Compiler optimization on IA64 platforms". So
could you provide some information to me what is the the current
situation with gcc and IA64 platfrom - I mean what are open
optimization issues and so on. After googling a while I found this
document http://gcc.gnu.org/projects/ia64.html and I would like to
know if this information is up-to-date. Looking forward to hearing
from you. Thank you in advance.
As you can see from the above page, it comes from the 2001 mini summit,
so most of the projects mentioned there are already done. Moreover, GCC
infrastructure has been dramatically improved since then. The current
state can be summarized as follows:
o Alias analysis improvements mentioned on the page are done long ago.
There are two unfinished IA-64 inspired patches concerning alias
analysis: improvements of Sanjiv Gupta's patch tracking base+offset
calculations on RTL done by Alexander Monakov, which we didn't manage to
submit (see http://gcc.gnu.org/ml/gcc/2007-03/msg00148.html), and the
patch propagating alias information from Tree SSA to RTL, which produced
too few disambiguations and should be improved by Alexander Monakov
during this year's Google Summer of Code.
o Data prefetching is now reimplemented on trees instead of RTL. There
was a project by Canqun Yang on tuning the old RTL data prefetching for
IA-64, but AFAIK it was never ported to the new implementation.
o DFA scheduler was implemented by Vladimir Makarov and checked in long
ago. Bundling is now performed using DFA too, see bundling () in
config/ia64/ia64.c.
o Profile-directed block ordering and inlining is already supported AFAIK.
o Control and data speculation are supported since GCC 4.2 as a result
of a project of ISP RAS. The implementation was done by Maxim Kuvyrkov.
o Extended basic block scheduling is implemented and works as a second
scheduling pass on IA-64. Superblock formation was also implemented on
RTL and fairly recently moved to Tree SSA by Robert Kidd. There is also
a treegion scheduling patch on the treegion branch, but it was never
committed to mainline.
o Modulo scheduling is implemented by IBM Haifa team. It started
working on IA-64 since GCC 4.3 after some small bugfixes (sorry I didn't
mention that in changes.html). Also, there is a patch that does
propagation of data dependency information to RTL done by Alexander
Monakov. It wasn't committed because there was a stage3 at that time,
and I think it will be unified with the analogous aliasing patch
mentioned above.
o We (ISP RAS) are currently preparing selective scheduling
implementation, also inspired by IA64, for merge with mainline. The
actual code is in sel-sched-branch in the SVN repository.
o Rotating registers are not yet supported.
o Link time optimizations (LTO) is an ongoing work, you can take a look
at LTO branch.
Also, there was a meeting of Gelato GCC group in 2006, and some
information can be found in the minutes at
http://gcc.gelato.org/MeetingNotes. You can also search mailing list
archives for similar discussions happened in the past.
Hope this helps,
Andrey