Contributing to LLVM

Thank you for your interest in contributing to LLVM! There are multiple ways to contribute, and we appreciate all of them. In case you have questions, you can either use the Developer’s List (llvm-dev) or the #llvm channel on irc.oftc.net.

If you want to contribute code, please familiarize yourself with the LLVM Developer Policy.

Bug reports

If you are working with LLVM and run into a bug, we definitely want to know about it. Please let us know and follow the instructions in How to submit an LLVM bug report to create a bug report.

Bug fixes

If you are interested in contributing code to LLVM, bugs labeled with the beginner keyword in the bug tracker are a good way to get familiar with the code base. If you are interested in fixing a bug, please create an account for the bug tracker and assign it to you, to let people know you are working on it.

Then try to reproduce and fix the bug with upstream LLVM. Start by building LLVM from source as described in Getting Started with the LLVM System and and use the built binaries to reproduce the failure described in the bug. Use a debug build (-DCMAKE_BUILD_TYPE=Debug) or a build with assertions (-DLLVM_ENABLE_ASSERTIONS=On, enabled for Debug builds).

Once you reproduced and fixed the bug, it is time to submit a patch. The patch should

  • include a small unit test
  • conform to the LLVM Coding Standards. You can use the clang-format-diff.py or git-clang-format tools to automatically format your patch properly.
  • not contain any unrelated changes
  • be an isolated change. Independent changes should be submitted as separate patches as this makes reviewing easier.

To get a patch accepted, it has to be reviewed by the LLVM community. This can be done using LLVM’s Phabricator or the llvm-commits mailing list. Please follow Phabricator#requesting-a-review-via-the-web-interface to request a review using Phabricator.

To make sure the right people see your patch, please select suitable reviewers and add them to your patch when requesting a review. Suitable reviewers are the code owner (see CODE_OWNERS.txt) and other people doing work in the area your patch touches.

A reviewer usually accepts the patch with a Looks good to me. Once that is done the change can be committed. In case you do not yet have commit access, please let people know during the review and someone should commit it on your behalf.

Sometimes it can take a while until someone has time to review the patch. In that case you can ping the patch. The common courtesy ping rate is one week. Remember that you are asking for valuable time from other professional developers.

Bigger pieces of work

In case you are interested in taking on a bigger piece of work, a list of interesting projects is maintained at then LLVM’s Open Projects page. In case you are interested in working on any of these projects, please send a mail to the LLVM Developer’s mailing list, so that we know the project is being worked on.