\r
<h2>Open Projects</h2>\r
\r
-<p>Here are a few tasks that are available for newcomers to work on. This list\r
-is provided to generate ideas, it is not intended to be comprehensive. Please\r
-ask on cfe-dev for more specifics or to verify that one of these isn't already\r
-completed. :)</p>\r
-\r
-<p>Please note that the information provided here is not completely thorough.\r
-This is intentional. If you plan to work on Clang, we would like you to get\r
-involved with the other developers. This will allow us to work together better\r
-and will give you a better feel for how things are done.</p>\r
-\r
+<p>Here are a few tasks that are available for newcomers to work on, depending\r
+on what your interests are. This list is provided to generate ideas, it is not\r
+intended to be comprehensive. Please ask on cfe-dev for more specifics or to\r
+verify that one of these isn't already completed. :)</p>\r
\r
<ul>\r
<li><b>Compile your favorite C/ObjC project with "clang -fsyntax-only"</b>:\r
rejected by the front-end, and if you notice invalid code that is not rejected\r
by clang, that is also very important to us.</li>\r
\r
-<li>\r
+<li><b>Compile your favorite C project with "clang -emit-llvm"</b>:\r
+The clang to LLVM converter is getting more mature, so you may be able to\r
+compile it. If not, please let us know. Once it compiles it should run. If\r
+not, that's a bug :)</li>\r
+\r
+<li><b>Working on code generation for Objective C</b>: -emit-llvm support for\r
+Objective C is basically non-existant at the time of this writing, this is a\r
+nice open project that can be tackled incrementally (one language feature at a\r
+time).</li>\r
+\r
+<li><b>Continue work on C++ support</b>: Implementing all of C++ is a very big\r
+job, but there are lots of little things that can be done. Right now we support\r
+some small things like references and bool. We also support parsing of\r
+namespace's, but don't build ASTs for it. It would be straight-forward to\r
+implement support for representing namespaces, then add support for things like\r
+foo::bar::baz. Likewise, lots of other little pieces can be picked off and\r
+implemented.</li>\r
+\r
+<li><b>Improve target support</b>: The current target interfaces are heavily\r
+stubbed out and need to be implemented fully. See the FIXME's in TargetInfo.\r
+Additionally, the actual target implementations (instances of TargetInfoImpl)\r
+also need to be completed. This includes defining builtin macros for linux\r
+targets and other stuff like that.</li>\r
+\r
+<li><b>Implement 'builtin' headers</b>: GCC provides a bunch of builtin headers,\r
+such as stdbool.h, iso646.h, float.h, limits.h, etc. It also provides a bunch\r
+of target-specific headers like altivec.h and xmmintrin.h. clang will\r
+eventually need to provide its own copies of these (and there is a <a href=\r
+"http://lists.cs.uiuc.edu/pipermail/cfe-dev/2007-December/000560.html">lot of \r
+improvement</a> that can be made to the GCC ones!) that are clean-room\r
+implemented to avoid GPL taint.</li>\r
+\r
+<li><b>Implement a clang 'libgcc'</b>: As with the headers, clang (or a another\r
+related subproject of llvm) will need to implement the features that libgcc\r
+provides. libgcc provides a bunch of routines the code generator uses for\r
+"fallback" when the chip doesn't support some operation (e.g. 64-bit divide on\r
+a 32-bit chip). It also provides software floating point support and many other\r
+things. I don't think that there is a specific licensing reason to reimplement\r
+libgcc, but there is a lot of room for improvement in it in many \r
+dimensions.</li>\r
\r
- </li>\r
</ul>\r
\r
+<p>If you hit a bug with clang, it is very useful for us if you reduce the code\r
+that demonstrates the problem down to something small. There are many ways to\r
+do this, ask on cfe-dev for advise.</p>\r
+\r
</div>\r
</body>\r
</html>\r