<p class="MsoNormal">hello everybody,</p><p class="MsoNormal">I'm planning to compile a large codebase (Ubuntu) with LLVM compiler as my GSoc project 2008. I've given the my proposal below. I'll be really great full  if you can provide  your feedback on improving this proposal.</p>
<p class="MsoNormal"><br></p><p class="MsoNormal">1. Project title</p>

<p class="MsoNormal">Compile programs with LLVM compiler </p>

<p class="MsoNormal">2. Abstract </p>

<p class="MsoNormal">LLVM[1] is a Low Level Virtual Machine. It basically
consists of two modules. They are the LLVM suite which consists of all the
tools, libraries and header files needed to use the low level virtual machine
and the GCC front end. The GCC front end contains a version of GCC that
compiles C and C++ code in to LLVM bitcode. There is a third, optional piece
called llvm-test. It is a suite of programs with a testing harness that can be
used to further test LLVM's functionality and performance.</p>

<p class="MsoNormal">The main objective of this project is to improve the LLVM
testsuite[2].<span style="">  </span>The basic approach
followed in achieving this objective is compiling a large code base that has
not yet been compiled with LLVM and converts the build system to be compatible
with build system of the LLVM testsuite.<span style=""> 
</span></p>

<p class="MsoNormal">In this project Ubuntu is used as the code base and
initially it will be built using LLVM. Then the build system is tested and
files bug reports for any issues that might hit and help track down problems. </p>

<p class="MsoNormal">The development progress can be tracked from here [3].</p>

<p class="MsoNormal">The complete project proposal is available here [4].</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">3. Deliverables</p>

<p class="MsoListParagraphCxSpFirst" style="text-indent: -0.25in;"><span style="font-family: Symbol;"><span style="">·<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">        
</span></span></span>Updated build system</p>

<p class="MsoListParagraphCxSpMiddle" style="text-indent: -0.25in;"><span style="font-family: Symbol;"><span style="">·<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">        
</span></span></span>Bugs reported to the bug tracker</p>

<p class="MsoListParagraphCxSpMiddle" style="text-indent: -0.25in;"><span style="font-family: Symbol;"><span style="">·<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">        
</span></span></span>Document (associated work)</p>

<p class="MsoListParagraphCxSpMiddle" style="text-indent: -0.25in;"><span style="font-family: Symbol;"><span style="">·<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">        
</span></span></span>Improved test programs</p>

<p class="MsoListParagraphCxSpMiddle" style="text-indent: -0.25in;"><span style="font-family: Symbol;"><span style="">·<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">        
</span></span></span>A guide for future continuation of this project or
similar projects </p>

<p class="MsoListParagraphCxSpLast"> </p>

<p class="MsoNormal">4. Benefits to the LLVM community </p>

<p class="MsoNormal">The following will be available to the LLVM community on
successful completion of the project.</p>

<p class="MsoListParagraphCxSpFirst" style="text-indent: -0.25in;"><span style="font-family: Symbol;"><span style="">·<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">        
</span></span></span>An improved testsuite</p>

<p class="MsoListParagraphCxSpLast" style="text-indent: -0.25in;"><span style="font-family: Symbol;"><span style="">·<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">        
</span></span></span>A guide (document) to follow similar projects in
future</p>











<p class="MsoNormal"> 5. Overview</p>

<p class="MsoNormal">This section contains my work in this project. </p>

<p class="MsoNormal">The main task is to build the entire Ubuntu distribution in LLVM.
This will add new testcases and benchmarks for the use of LLVM. <span style=""> </span>A large testsuite is very important since it
provides a lot of coverage of programs and enables us to spot and improve any
problematic areas in the compiler.</p>

<p class="MsoNormal">The procedure followed in this project is discussed below. </p>

<p class="MsoNormal">Initially the entire Ubuntu distribution will be compiled
with the LLVM. If the compilation fails then the set of projects that
successfully build with LLVM will be selected.<span style=""> 
</span>Bugs are filed for the projects that fail with reduced testcases. <span style=""> </span>If the compilation succeeds the build system will
be converted to be compatible with the LLVM Programs testsuite. This can be
checked in to SVN and the automated tester can use it to track progress of the
compiler.</p>

<p class="MsoNormal">The next step is to build an image from projects that are
successfully built with LLVM and merge projects built with gcc for those who
failed in LLVM.<span style="">  </span>Then this image is
booted and the problems that encounter during this process will be tracked
down.<span style="">  </span>This process will be repeated
until the entire system is successfully built with LLVM and booted as expected.
</p>

<p class="MsoNormal">When testing the code, it can be run with a variety of
optimizations, and with all the back-ends: CBE, llc, and lli.</p>

<p class="MsoNormal">6. Project plan</p>

<p class="MsoNormal">The basic steps in this project are listed below. </p>

<p class="MsoListParagraphCxSpFirst" style="text-indent: -0.25in;"><span style=""><span style="">1.<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">      
</span></span></span>Compile the Ubuntu distribution in gcc and LLVM</p>

<p class="MsoListParagraphCxSpMiddle" style="text-indent: -0.25in;"><span style=""><span style="">2.<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">      
</span></span></span>If the compilation succeeds convert the build
system to LLVM Program testsuite compatible mode</p>

<p class="MsoListParagraphCxSpMiddle" style="text-indent: -0.25in;"><span style=""><span style="">3.<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">      
</span></span></span>If fails,</p>

<p class="MsoListParagraphCxSpMiddle" style="margin-left: 1in; text-indent: -0.25in;"><span style=""><span style="">a.<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">      
</span></span></span>File bugs</p>

<p class="MsoListParagraphCxSpMiddle" style="margin-left: 1in; text-indent: -0.25in;"><span style=""><span style="">b.<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">     
</span></span></span><span style=""> </span>Compile
project by project in LLVM and select the projects that successfully compiles
in LLVM.</p>

<p class="MsoListParagraphCxSpMiddle" style="margin-left: 1in; text-indent: -0.25in;"><span style=""><span style="">c.<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">      
</span></span></span>For the projects that fail in LLVM compile them
in gcc</p>

<p class="MsoListParagraphCxSpMiddle" style="text-indent: -0.25in;"><span style=""><span style="">4.<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">      
</span></span></span>Build an image from projects successfully built
with LLVM and merge in projects built with gcc in 3.c</p>

<p class="MsoListParagraphCxSpMiddle" style="text-indent: -0.25in;"><span style=""><span style="">5.<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">      
</span></span></span>Try to boot the image from step 4 and track the
problems.</p>

<p class="MsoListParagraphCxSpLast" style="text-indent: -0.25in;"><span style=""><span style="">6.<span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">      
</span></span></span>Continue the process until step 2 works.</p>

<p class="MsoNormal">According to these steps I can break down this project in to
three major phases</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">1<sup>st</sup> Phase</p>

<p class="MsoNormal">Compile Ubuntu distribution in gcc and LLVM. This is the
first most steps and it will require about 3 weeks. </p>

<p class="MsoNormal">Estimated completion: 20th May 2008</p>

<p class="MsoNormal">2<sup>nd</sup> Phase </p>

<p class="MsoNormal">If compilation fails follow steps 2,3,4,5. These steps are
followed iteratively depending on the output. When following these steps for
the first time it requires a lot of time. Therefore this part of the project
will consume a lot of time provided that the 1<sup>st</sup> step fails. </p>

<p class="MsoNormal">Deliverables: A report of bugs</p>

<p class="MsoNormal">Estimated completion: 14<sup>th</sup> July 2008</p>

<p class="MsoNormal">3<sup>rd</sup> Phase </p>

<p class="MsoNormal">This is the final phase. This involves converting the build
system to be compatible with the LLVM Programs testsuite.</p>

<p class="MsoNormal">Deliverables: A report of bugs, document (associated work), and
improved test programs, updated build system, document (if anyone needs to
continue this project this document will be supportive)</p>

<p class="MsoNormal">Estimated completion: 20<sup>th</sup> August 2008</p>

<p class="MsoNormal">7 Biography </p>

<p class="MsoNormal" style="text-align: justify;"><span style="color: black;">I am a final year student of the Department of Computer Science
and Engineering, University of Moratuwa, Sri Lanka[5]. This is the first time I'm
getting involved in an open source project. But I'm highly impressed in open
source project model and planning to get involved in more projects in future. </span></p>

<p class="MsoNormal" style="text-align: justify;"><span style="color: black;">I have special interests in compiler technology and I have experience
in C, C++ and Java programming languages. I have developed a lexical analyzer
in C for Javascript language [6] and a Javascript pretty printer is also
developed in python [7]. I find this project to be interesting since it requires
knowledge regarding compiler technology and I will continue to work on this
area to make further contributions to the LLVM community in future. </span></p>

<p class="MsoNormal"><span style="color: black;">For further information you can refer
my resume [8]. </span></p>

<p class="MsoNormal">References </p>

<p class="MsoNormal" style="text-align: justify;">[1] - <a href="http://llvm.org/">http://llvm.org/</a></p>

<p class="MsoNormal" style="text-align: justify;">[2] - <a href="http://llvm.org/docs/TestingGuide.html">http://llvm.org/docs/TestingGuide.html</a><span class="MsoHyperlink"></span></p>

<p class="MsoNormal">[3]- <a href="http://llvmcompiler.blogspot.com/">http://llvmcompiler.blogspot.com/</a></p>

<p class="MsoNormal">[4] -<a href="http://llvmcompiler.blogspot.com/2008/03/proposal-for-summer-of-code-2008.html">http://llvmcompiler.blogspot.com/2008/03/proposal-for-summer-of-code-2008.html</a></p>

<p class="MsoNormal" style="text-align: justify;">[5]- <a href="http://www.cse.mrt.ac.lk/">http://www.cse.mrt.ac.lk/</a></p>

<p class="MsoNormal"><span style=""></span>[6]- <a href="http://paba50.googlepages.com/LexicalAnalizer.zip">http://paba50.googlepages.com/LexicalAnalizer.zip</a></p>

<p class="MsoNormal">[7]- <a href="http://paba50.googlepages.com/PrettyPrinter.zip">http://paba50.googlepages.com/PrettyPrinter.zip</a></p>

<p class="MsoNormal">[8]- <a href="http://paba50.googlepages.com/Paba-resume.pdf">http://paba50.googlepages.com/Paba-resume.pdf</a></p>