File: Contributing.html

package info (click to toggle)
llvm-toolchain-13 1%3A13.0.1-6~deb10u4
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 1,418,792 kB
  • sloc: cpp: 5,290,827; ansic: 996,570; asm: 544,593; python: 188,212; objc: 72,027; lisp: 30,291; f90: 25,395; sh: 24,900; javascript: 9,780; pascal: 9,398; perl: 7,484; ml: 5,432; awk: 3,523; makefile: 2,892; xml: 953; cs: 573; fortran: 539
file content (274 lines) | stat: -rw-r--r-- 16,743 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274


<!DOCTYPE html>

<html>
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Contributing to LLVM &#8212; LLVM 13 documentation</title>
    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    <link rel="stylesheet" href="_static/llvm-theme.css" type="text/css" />
    <script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
    <script src="_static/jquery.js"></script>
    <script src="_static/underscore.js"></script>
    <script src="_static/doctools.js"></script>
    <link rel="index" title="Index" href="genindex.html" />
    <link rel="search" title="Search" href="search.html" />
    <link rel="next" title="LLVM Developer Policy" href="DeveloperPolicy.html" />
    <link rel="prev" title="Getting Involved" href="GettingInvolved.html" />
<style type="text/css">
  table.right { float: right; margin-left: 20px; }
  table.right td { border: 1px solid #ccc; }
</style>

  </head><body>
<div class="logo">
  <a href="index.html">
    <img src="_static/logo.png"
         alt="LLVM Logo" width="250" height="88"/></a>
</div>

    <div class="related" role="navigation" aria-label="related navigation">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="genindex.html" title="General Index"
             accesskey="I">index</a></li>
        <li class="right" >
          <a href="DeveloperPolicy.html" title="LLVM Developer Policy"
             accesskey="N">next</a> |</li>
        <li class="right" >
          <a href="GettingInvolved.html" title="Getting Involved"
             accesskey="P">previous</a> |</li>
  <li><a href="https://llvm.org/">LLVM Home</a>&nbsp;|&nbsp;</li>
  <li><a href="index.html">Documentation</a>&raquo;</li>

          <li class="nav-item nav-item-1"><a href="GettingInvolved.html" accesskey="U">Getting Involved</a> &#187;</li>
        <li class="nav-item nav-item-this"><a href="">Contributing to LLVM</a></li> 
      </ul>
    </div>

      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
        <div class="sphinxsidebarwrapper">

<h3>Documentation</h3>

<ul class="want-points">
    <li><a href="https://llvm.org/docs/GettingStartedTutorials.html">Getting Started/Tutorials</a></li>
    <li><a href="https://llvm.org/docs/UserGuides.html">User Guides</a></li>
    <li><a href="https://llvm.org/docs/Reference.html">Reference</a></li>
</ul>

<h3>Getting Involved</h3>

<ul class="want-points">
    <li><a href="https://llvm.org/docs/Contributing.html">Contributing to LLVM</a></li>
    <li><a href="https://llvm.org/docs/HowToSubmitABug.html">Submitting Bug Reports</a></li>
    <li><a href="https://llvm.org/docs/GettingInvolved.html#mailing-lists">Mailing Lists</a></li>
    <li><a href="https://llvm.org/docs/GettingInvolved.html#irc">IRC</a></li>
    <li><a href="https://llvm.org/docs/GettingInvolved.html#meetups-and-social-events">Meetups and Social Events</a></li>
</ul>

<h3>Additional Links</h3>

<ul class="want-points">
    <li><a href="https://llvm.org/docs/FAQ.html">FAQ</a></li>
    <li><a href="https://llvm.org/docs/Lexicon.html">Glossary</a></li>
    <li><a href="https://llvm.org/pubs">Publications</a></li>
    <li><a href="https://github.com/llvm/llvm-project//">Github Repository</a></li>
</ul>
  <div role="note" aria-label="source link">
    <h3>This Page</h3>
    <ul class="this-page-menu">
      <li><a href="_sources/Contributing.rst.txt"
            rel="nofollow">Show Source</a></li>
    </ul>
   </div>
<div id="searchbox" style="display: none" role="search">
  <h3 id="searchlabel">Quick search</h3>
    <div class="searchformwrapper">
    <form class="search" action="search.html" method="get">
      <input type="text" name="q" aria-labelledby="searchlabel" />
      <input type="submit" value="Go" />
    </form>
    </div>
</div>
<script>$('#searchbox').show(0);</script>
        </div>
      </div>

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body" role="main">
            
  <div class="section" id="contributing-to-llvm">
<h1>Contributing to LLVM<a class="headerlink" href="#contributing-to-llvm" title="Permalink to this headline">¶</a></h1>
<p>Thank you for your interest in contributing to LLVM! There are multiple ways to
contribute, and we appreciate all contributions. In case you
have questions, you can either use the <a class="reference external" href="http://lists.llvm.org/mailman/listinfo/llvm-dev">Developer’s List (llvm-dev)</a>
or the #llvm channel on <a class="reference external" href="irc://irc.oftc.net/llvm">irc.oftc.net</a>.</p>
<p>If you want to contribute code, please familiarize yourself with the <a class="reference internal" href="DeveloperPolicy.html"><span class="doc">LLVM Developer Policy</span></a>.</p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><p><a class="reference internal" href="#ways-to-contribute" id="id3">Ways to Contribute</a></p>
<ul>
<li><p><a class="reference internal" href="#bug-reports" id="id4">Bug Reports</a></p></li>
<li><p><a class="reference internal" href="#bug-fixes" id="id5">Bug Fixes</a></p></li>
<li><p><a class="reference internal" href="#reporting-a-security-issue" id="id6">Reporting a Security Issue</a></p></li>
<li><p><a class="reference internal" href="#bigger-pieces-of-work" id="id7">Bigger Pieces of Work</a></p></li>
</ul>
</li>
<li><p><a class="reference internal" href="#how-to-submit-a-patch" id="id8">How to Submit a Patch</a></p></li>
<li><p><a class="reference internal" href="#helpful-information-about-llvm" id="id9">Helpful Information About LLVM</a></p></li>
</ul>
</div>
<div class="section" id="ways-to-contribute">
<h2><a class="toc-backref" href="#id3">Ways to Contribute</a><a class="headerlink" href="#ways-to-contribute" title="Permalink to this headline">¶</a></h2>
<div class="section" id="bug-reports">
<h3><a class="toc-backref" href="#id4">Bug Reports</a><a class="headerlink" href="#bug-reports" title="Permalink to this headline">¶</a></h3>
<p>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
<a class="reference internal" href="HowToSubmitABug.html"><span class="doc">How to submit an LLVM bug report</span></a>  to create a bug report.</p>
</div>
<div class="section" id="bug-fixes">
<h3><a class="toc-backref" href="#id5">Bug Fixes</a><a class="headerlink" href="#bug-fixes" title="Permalink to this headline">¶</a></h3>
<p>If you are interested in contributing code to LLVM, bugs labeled with the
<a class="reference external" href="https://bugs.llvm.org/buglist.cgi?bug_status=NEW&amp;bug_status=REOPENED&amp;keywords=beginner%2C%20&amp;keywords_type=allwords&amp;list_id=130748&amp;query_format=advanced&amp;resolution=---">beginner keyword</a> in the <a class="reference external" href="https://bugs.llvm.org">bug tracker</a> 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 yourself, to let people know you are working on
it.</p>
<p>Then try to reproduce and fix the bug with upstream LLVM. Start by building
LLVM from source as described in <a class="reference internal" href="GettingStarted.html"><span class="doc">Getting Started with the LLVM System</span></a> and
and use the built binaries to reproduce the failure described in the bug. Use
a debug build (<cite>-DCMAKE_BUILD_TYPE=Debug</cite>) or a build with assertions
(<cite>-DLLVM_ENABLE_ASSERTIONS=On</cite>, enabled for Debug builds).</p>
</div>
<div class="section" id="reporting-a-security-issue">
<h3><a class="toc-backref" href="#id6">Reporting a Security Issue</a><a class="headerlink" href="#reporting-a-security-issue" title="Permalink to this headline">¶</a></h3>
<p>There is a separate process to submit security-related bugs, see <a class="reference internal" href="Security.html#report-security-issue"><span class="std std-ref">How to report a security issue?</span></a>.</p>
</div>
<div class="section" id="bigger-pieces-of-work">
<h3><a class="toc-backref" href="#id7">Bigger Pieces of Work</a><a class="headerlink" href="#bigger-pieces-of-work" title="Permalink to this headline">¶</a></h3>
<p>In case you are interested in taking on a bigger piece of work, a list of
interesting projects is maintained at the <a class="reference external" href="https://llvm.org/OpenProjects.html#what">LLVM’s Open Projects page</a>. In case
you are interested in working on any of these projects, please send a mail to
the <a class="reference external" href="http://lists.llvm.org/mailman/listinfo/llvm-dev">LLVM Developer’s mailing list</a>, so that we know the project is being
worked on.</p>
</div>
</div>
<div class="section" id="how-to-submit-a-patch">
<h2><a class="toc-backref" href="#id8">How to Submit a Patch</a><a class="headerlink" href="#how-to-submit-a-patch" title="Permalink to this headline">¶</a></h2>
<p>Once you have a patch ready, it is time to submit it. The patch should:</p>
<ul class="simple">
<li><p>include a small unit test</p></li>
<li><p>conform to the <a class="reference internal" href="CodingStandards.html"><span class="doc">LLVM Coding Standards</span></a>. You can use the <a class="reference external" href="https://reviews.llvm.org/source/llvm-github/browse/main/clang/tools/clang-format/clang-format-diff.py">clang-format-diff.py</a> or <a class="reference external" href="https://reviews.llvm.org/source/llvm-github/browse/main/clang/tools/clang-format/git-clang-format">git-clang-format</a> tools to automatically format your patch properly.</p></li>
<li><p>not contain any unrelated changes</p></li>
<li><p>be an isolated change. Independent changes should be submitted as separate patches as this makes reviewing easier.</p></li>
</ul>
<p id="format-patches">Before sending a patch for review, please also try to ensure it is
formatted properly. We use <code class="docutils literal notranslate"><span class="pre">clang-format</span></code> for this, which has git integration
through the <code class="docutils literal notranslate"><span class="pre">git-clang-format</span></code> script. On some systems, it may already be
installed (or be installable via your package manager). If so, you can simply
run it – the following command will format only the code changed in the most
recent commit:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">%</span> git clang-format HEAD~1
</pre></div>
</div>
<p>Note that this modifies the files, but doesn’t commit them – you’ll likely want
to run</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">%</span> git commit --amend -a
</pre></div>
</div>
<p>in order to update the last commit with all pending changes.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>If you don’t already have <code class="docutils literal notranslate"><span class="pre">clang-format</span></code> or <code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">clang-format</span></code> installed
on your system, the <code class="docutils literal notranslate"><span class="pre">clang-format</span></code> binary will be built alongside clang, and
the git integration can be run from
<code class="docutils literal notranslate"><span class="pre">clang/tools/clang-format/git-clang-format</span></code>.</p>
</div>
<p>To get a patch accepted, it has to be reviewed by the LLVM community. This can
be done using <a class="reference external" href="https://reviews.llvm.org/">LLVM’s Phabricator</a> or the llvm-commits mailing list.
Please  follow <a class="reference internal" href="Phabricator.html#phabricator-reviews"><span class="std std-ref">Phabricator#phabricator-reviews</span></a>
to request a review using Phabricator.</p>
<p>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. If you are using Phabricator, add them to the <cite>Reviewers</cite> field
when creating a review and if you are using <cite>llvm-commits</cite>, add them to the CC of
your email.</p>
<p>A reviewer may request changes or ask questions during the review. If you are
uncertain on how to provide test cases, documentation, etc., feel free to ask
for guidance during the review. Please address the feedback and re-post an
updated version of your patch. This cycle continues until all requests and comments
have been addressed and a reviewer accepts the patch with a <cite>Looks good to me</cite> or <cite>LGTM</cite>.
Once that is done the change can be committed. If you do not have commit
access, please let people know during the review and someone should commit it
on your behalf.</p>
<p>If you have received no comments on your patch for a week, you can request a
review by ‘ping’ing a patch by responding to the email thread containing the
patch, or the Phabricator review with “Ping.” The common courtesy ‘ping’ rate
is once a week. Please remember that you are asking for valuable time from other
professional developers.</p>
<p>For more information on LLVM’s code-review process, please see <a class="reference internal" href="CodeReview.html"><span class="doc">LLVM Code-Review Policy and Practices</span></a>.</p>
</div>
<div class="section" id="helpful-information-about-llvm">
<h2><a class="toc-backref" href="#id9">Helpful Information About LLVM</a><a class="headerlink" href="#helpful-information-about-llvm" title="Permalink to this headline">¶</a></h2>
<p><a class="reference internal" href="index.html"><span class="doc">LLVM’s documentation</span></a> provides a wealth of information about LLVM’s internals as
well as various user guides. The pages listed below should provide a good overview
of LLVM’s high-level design, as well as its internals:</p>
<dl class="simple">
<dt><a class="reference internal" href="GettingStarted.html"><span class="doc">Getting Started with the LLVM System</span></a></dt><dd><p>Discusses how to get up and running quickly with the LLVM infrastructure.
Everything from unpacking and compilation of the distribution to execution
of some tools.</p>
</dd>
<dt><a class="reference internal" href="LangRef.html"><span class="doc">LLVM Language Reference Manual</span></a></dt><dd><p>Defines the LLVM intermediate representation.</p>
</dd>
<dt><a class="reference internal" href="ProgrammersManual.html"><span class="doc">LLVM Programmer’s Manual</span></a></dt><dd><p>Introduction to the general layout of the LLVM sourcebase, important classes
and APIs, and some tips &amp; tricks.</p>
</dd>
<dt><a class="reference external" href="http://www.cs.cornell.edu/~asampson/blog/llvm.html">LLVM for Grad Students</a></dt><dd><p>This is an introduction to the LLVM infrastructure by Adrian Sampson. While it
has been written for grad students, it provides  a good, compact overview of
LLVM’s architecture, LLVM’s IR and how to write a new pass.</p>
</dd>
<dt><a class="reference external" href="http://www.aosabook.org/en/llvm.html">Intro to LLVM</a></dt><dd><p>Book chapter providing a compiler hacker’s introduction to LLVM.</p>
</dd>
</dl>
</div>
</div>


            <div class="clearer"></div>
          </div>
        </div>
      </div>
      <div class="clearer"></div>
    </div>
    <div class="related" role="navigation" aria-label="related navigation">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="genindex.html" title="General Index"
             >index</a></li>
        <li class="right" >
          <a href="DeveloperPolicy.html" title="LLVM Developer Policy"
             >next</a> |</li>
        <li class="right" >
          <a href="GettingInvolved.html" title="Getting Involved"
             >previous</a> |</li>
  <li><a href="https://llvm.org/">LLVM Home</a>&nbsp;|&nbsp;</li>
  <li><a href="index.html">Documentation</a>&raquo;</li>

          <li class="nav-item nav-item-1"><a href="GettingInvolved.html" >Getting Involved</a> &#187;</li>
        <li class="nav-item nav-item-this"><a href="">Contributing to LLVM</a></li> 
      </ul>
    </div>
    <div class="footer" role="contentinfo">
        &#169; Copyright 2003-2021, LLVM Project.
      Last updated on 2021-09-18.
      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.5.4.
    </div>
  </body>
</html>