Project for CSC 255/455, Spring 2008

Introduction

In the project, we add our own passes in Gcc at gimple level. Because Gcc is a real compiler, it looks a little more difficult than previous semesters. You have to know the basic framework of Gcc and how to manipulate gimple tree to do the analyses and transformations. The following resources will help you through the problems. Remember to read the useful tips carefully, especially for them about how to build the working environment. Wish you have a happy journey with Gcc.

Browsing Gcc code and debugging

Gcc Resources

Useful tips

  • Check out code and install: see Gcc-4.2.2 notes on installation
  • Use qsub -I at node64 to get a node to accelerate the make and install: see ClusterJobs
  • To prevent the problem of hardware incompatibility, you'd better build your compiler and use it and run the compiled executables on the same kind of machines.
  • Output gimple tree in c-like form: use option -fdump-tree-gimple
  • Invoke your pass: use -O2 -fcs255

Part 1: Trivial

In this part, we count and output the number of executed statements of a run of a program. So you need to maintain a global counter which is initialized to 0 and increased after each gimple statement and reported when the program exits. Following are the three parts of the intrumented code:
  • Initialization: added at the entry of main function
  • Increasing: added after each statements
  • Report: added at all possible exits of the program

This part is very easy. Its purpose is to make you get familiar with Gcc and concentrate on real stuffs of the class after it.

-- XiaomingGu - 16 Jan 2008

Edit | Attach | Watch | Print version | History: r43 | r14 < r13 < r12 < r11 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r12 - 2008-01-25 - ChenDing
 
  • Edit
  • Attach
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2020 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding URCS? Send feedback