<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 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"Segoe UI";
        panose-1:2 11 5 2 4 2 4 2 2 3;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
span.EmailStyle19
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:56.7pt 42.5pt 56.7pt 85.05pt;}
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="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal">Hello,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I am currently working on optimization remarks enhancement (e.g. in loop-vectorize pass). There are 3 options to enable such diagnostics: -Rpass, -Rpass-missed and -Rpass-analysis.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">From help:<o:p></o:p></p>
<p class="MsoNormal">-Rpass-analysis=<value> Report transformation analysis from optimization passes whose name matches the given POSIX regular expression<o:p></o:p></p>
<p class="MsoNormal">-Rpass-missed=<value>   Report missed transformations by optimization passes whose name matches the given POSIX regular expression<o:p></o:p></p>
<p class="MsoNormal">-Rpass=<value>          Report transformations performed by optimization passes whose name matches the given POSIX regular expression<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The question is when to generate “missed” remark and when an “analysis” one? In my opinion we should generate “missed” remarks with a short explanation why optimization did not succeed and “analysis” with additional data on optimization
 process (e.g. “cost of vector instructions here is X, cost of scalar version is Y” and so on).<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Also, this is taken from https://reviews.llvm.org/D3683:<br>
<span style="font-size:10.0pt;font-family:"Segoe UI",sans-serif;color:black">-Rpass-missed is used by optimizers to inform the user when they tried<br>
to apply an optimization but couldn't (or wouldn't).<br>
-Rpass-analysis is used by optimizers to report analysis results back<br>
to the user (e.g., why the transformation could not be applied).</span><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Now consider loop vectorization pass. We can’t vectorize a loop with a switching statement, so it will be informative to give a message like “loop not vectorized: loop contains switching statement”. But should this message refer to -Rpass-missed
 or -Rpass-analysis? In current version it goes to “analysis”, and if user is using -Rpass-missed instead it gives only “loop not vectorized”. What’s the point of doing it in that way? “Missed” remark becomes nearly useless for users.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">In the end, should we consider replacing -Rpass-missed and -Rpass-analysis (and maybe -Rpass also) with a single option?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">BR,<o:p></o:p></p>
<p class="MsoNormal">- Vladimir Miloserdov<o:p></o:p></p>
</div>
</body>
</html>