<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:"\@SimSun";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:SimSun;
        mso-fareast-language:ZH-CN;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:SimSun;
        mso-fareast-language:ZH-CN;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Hi Chris,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">"Debug info should have no effect on codegen" would be a fine project for you; nobody is working on it that I know of.  Another way to contribute would be to
 go to our Bugzilla (bugs.llvm.org) and search for open bugs with the "beginner" keyword.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Regarding the "debug info has no effect on codegen" project, unfortunately I am having IT issues that keep me from providing much in the way of specific suggestions,
 so what follows is fairly generic.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">In principle, you compile some piece of code with and without –g, and see if there is any difference in the generated instructions. My experience is that you
 want to compile to a .o file, and then use a disassembler to dump the text sections. This will give you a cleaner diff than using –S to generate assembler files.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">I also recommend compiling with `-ffunction-sections` and probably `-fexceptions`.  The former will put each compiled function into its own object-file section,
 so that differences in one function won't affect the disassembly of a later function.  The latter option should work around one fairly intractable known difference: -g will cause the compiler to emit directives to produce call-frame information, and these
 tend to act as instruction-scheduling barriers. Using –fexceptions (I am 95% sure that is the correct option) should cause the non-dash-g compilation to use the same directives, and avoid that known difference.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">You can repeat this experiment with different optimization levels, as differences are far more likely to show up with optimization.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Once you find a difference, you can begin experimenting with ways to identify specific compiler passes that are contributing to the difference. A very useful
 tool here is the backend option `-opt-bisect-limit=N` where N is the number of passes to execute. Because it is a backend option, you would use it this way:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">    clang –c –O2
</span><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:red">–mllvm –opt-bisect-limit=100
</span><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">foo.c –o foo.o<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">    clang –c –O2 –mllvm –opt-bisect-limit=100 foo.c –g –o foo-g.o<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Then disassemble and diff as usual.  After you have identified a problematic pass, you can try your hand at fixing it yourself, or you can file a bug (with
 a reduced reproducer if at all possible) and move on to another sample.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Of course you will need some sample source code to run experiments on.  This can be anything convenient. You could try it on any personal projects you have,
 or you could find a random code generator, or whatever you like.  Some people have recommended LLVM's own 'test-suite' project although I have not looked at it in any detail.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Good luck, and feel free to post additional questions on llvm-dev if you run into any problems.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">--paulr<o:p></o:p></span></p>
<p class="MsoNormal"><a name="_MailEndCompose"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></a></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> llvm-dev [mailto:llvm-dev-bounces@lists.llvm.org]
<b>On Behalf Of </b>Chris Ye via llvm-dev<br>
<b>Sent:</b> Sunday, July 14, 2019 11:59 PM<br>
<b>To:</b> llvm-dev@lists.llvm.org<br>
<b>Subject:</b> [llvm-dev] How to contribute on LLVM project as beginner<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial","sans-serif";color:black">Hi LLVM project Leaders,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial","sans-serif";color:black">I am a software engineer working on several other open source projects, recently I am very interested in LLVM technology, espically on backend part. I have taken
 two months studying the documents from llvm.org in my spare time. As a beginner, I would like to contribute some code to LLVM project, from the "<a name="gsoc19">Google Summer of Code 2019</a>", I found one project "Debug Info should have no effect on codegen"
 that I may able to contribute, not sure if the project has already been completed? If there are still tasks exist, how can I join in? Or is that any other project I can work on? I would spend 10~20 hours on LLVM development every week as I want to gather experience
 to find a job as LLVM developer in the furture.  I am a quickly learning, I would be very appricate if you could help me and give me some guides, so that I would run faster on my way to LLVM field. Many thanks. <o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial","sans-serif";color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial","sans-serif";color:black">-----------------------------------------------------------------<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial","sans-serif";color:black">LLVM
<o:p></o:p></span></p>
<div>
<p class="MsoNormal"><a name="debuginfo_codegen_mismatch"><span style="font-size:10.5pt;font-family:"Arial","sans-serif";color:black">Debug Info should have no effect on codegen</span></a><span style="font-size:10.5pt;font-family:"Arial","sans-serif";color:black">
<o:p></o:p></span></p>
</div>
<div>
<p><b><span style="font-size:10.5pt;font-family:"Arial","sans-serif";color:black">Description of the project:</span></b><span style="font-size:10.5pt;font-family:"Arial","sans-serif";color:black"> Adding Debug Info (compiling with `clang -g`) shouldn't change
 the generated code at all. Unfortunately we have bugs. These are usually not too hard to fix and a good way to discover new part of the codebase! We suggest building object files both ways and disassembling the text sections, which will give cleaner diffs
 than comparing .s files. <o:p></o:p></span></p>
<p><b><span style="font-size:10.5pt;font-family:"Arial","sans-serif";color:black">Expected results:</span></b><span style="font-size:10.5pt;font-family:"Arial","sans-serif";color:black"> Reduced test cases, bug reports with analysis (e.g., which pass is responsible),
 possibly patches.<o:p></o:p></span></p>
<p><b><span style="font-size:10.5pt;font-family:"Arial","sans-serif";color:black">Confirmed Mentor:</span></b><span style="font-size:10.5pt;font-family:"Arial","sans-serif";color:black"> Paul Robinson<o:p></o:p></span></p>
<p><b><span style="font-size:10.5pt;font-family:"Arial","sans-serif";color:black">Desirable skills:</span></b><span style="font-size:10.5pt;font-family:"Arial","sans-serif";color:black"> Intermediate knowledge of C++, some familiarity with x86 or ARM instruction
 set.<o:p></o:p></span></p>
<p><span style="font-size:10.5pt;font-family:"Arial","sans-serif";color:black"><o:p> </o:p></span></p>
<p><span style="font-size:10.5pt;font-family:"Arial","sans-serif";color:black">Best Regards,<o:p></o:p></span></p>
<p><span style="font-size:10.5pt;font-family:"Arial","sans-serif";color:black">Chris Ye<o:p></o:p></span></p>
</div>
</div>
</div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><o:p> </o:p></p>
<p> <o:p></o:p></p>
</div>
</div>
</body>
</html>