[cfe-dev] GSoc Proposal
Bianca-Cristina Cristescu via cfe-dev
cfe-dev at lists.llvm.org
Tue Mar 22 01:58:58 PDT 2016
Enabling llvm’s self-hosted modules builds using libstdc++
Bianca-Cristina Cristescu, MSc Computer Science, ETH Zurich
Nowadays, the software projects are growing in size and functionality, and
in order to avoid reinventing the wheel they use many software libraries.
Including libraries adds complexity and can cause fragility, problems with
compile-time scalability and tool confusion .
Clang  is a C, C++, Objective C and Objective C++ front-end for the LLVM
 compiler. To solve the above mentioned issues LLVM and Clang propose
to use Modules  as an alternative to include libraries. Modules give a
access to the API of the software libraries using a more efficient semantic
A buildbot  for building llvm with modules exists when using libc++
(usually available by default on MacOS), but there is no support to using
modules when having libstdc++. Given that a large amount of software
projects are developed on Unix operating systems, the necessity of modules
to support libstdc++ emerges. The problem is that there is a different
merging model for the modules when using libstdc++ compared to libc++ given
by the fact that libc++ has a module aware implementation whereas libstdc++
The project aims to enable the building of llvm’s self-hosted modules using
libstdc++ by reporting issues, submitting bug reports, proposing fixes and
creating a buildbot.
A buildbot to build llvm using libstdc++.
Bug reports submitted to the LLVM Bug Tracking System  for the
Minimalistic reproducers for the bugs in the order of priority.
Fixes of the bugs which I can fix with my experience.
22nd April - 22nd May (Before the official coding time)
Background literature on modules;
Familiarization with the architecture of the modules;
Update on the current state of the modules.
23rd May - 29th May (Official coding time starts)
Set up the working environment and check synchronisation with the
30th May - 12th June
Attempt to build llvm with modules.
Create a report of the existing issues at the time of the build with the
current version of clang and llvm.
13th June - 26th June
In the order of the priority list previously created reduce the issues
to minimalistic examples.
Possibly use tools such as C-reduce  to help and accelerate the
minimization of the reproducers.
File bug reports for the minimised issues to clang.
Provide fixes for the trivial issues (such as missing includes)
encountered in the process.
27th June - 17th July (Midterm evaluation)
Prioritise the existing issues in close contact with the clang/llvm
Propose fixes for a feasible amount of the reported issues.
Provide the fixes in patches on Phabricator for review by the clang/llvm
18th July - 7th of August
Implement a buildbot in which clang builds llvm using modules.
8th August - 23rd of August Week 12
Review and evaluate results.
Buffer time for unpredictable delay.
Bachelors in Computer Science from The University of Manchester
Improved my C++ knowledge by working on ROOT’s  interpreter, Cling
which is built on top of Clang and LLVM.
Isolated and submitted minimal issue reproducers for Clang Modules in
2014. For instance: https://llvm.org/bugs/show_bug.cgi?id=20475
Enrolled in a Computer Science MSc at ETH Zurich.
 Modules, http://clang.llvm.org/docs/Modules.html
 Clang, http://clang.llvm.org/
 LLVM, http://llvm.org/
 LLVM Bug Tracking System, http://llvm.org/bugs/enter_bug.cgi
 C-reduce, https://embed.cs.utah.edu/creduce/
 ROOT, https://root.cern.ch/
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the cfe-dev