<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:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* 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:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
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">The GetFirstDebugLocInBasicBlock function in lib/Transforms/Utils/BasicBlockUtils.cpp looks like this:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">/// GetFirstDebugLocInBasicBlock - Return first valid DebugLoc entry in a
<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">/// given basic block.<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">DebugLoc llvm::GetFirstDebugLocInBasicBlock(const BasicBlock *BB) {<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">  if (const Instruction *I = BB->getFirstNonPHI())<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">    return I->getDebugLoc();<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">  // Scanning entire block may be too expensive, if the first instruction<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">  // does not have valid location info.<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">  return DebugLoc();<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in">}<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">As you can see, neither the name of the function, nor the comment describing it correctly reflect what the function is doing. It does not, in fact, return the first debug loc in the block, doing it only if the first (non-PHI) instruction
 has debug loc. Otherwise it returns an empty debug loc. This change was made as an optimization (originally the function did act according to its spec), and the name was not updated.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Since this function is only used in a single place in the code-base (SSAUpdater), the attached patch proposes to just remove it, folding its short implementation into the calling site. Thus the confusion will be avoided.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Eli<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<font face="monospace">---------------------------------------------------------------------<br>
Intel Israel (74) Limited<br>
<br>
This e-mail and any attachments may contain confidential material for<br>
the sole use of the intended recipient(s). Any review or distribution<br>
by others is strictly prohibited. If you are not the intended<br>
recipient, please contact the sender and delete all copies.</font></body>
</html>