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


Reply via email to