<html 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=utf-8">
<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:"Apple Color Emoji";
        panose-1:0 0 0 0 0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
span.gmail-m-8969999653160052970apple-converted-space
        {mso-style-name:gmail-m_-8969999653160052970apple-converted-space;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style>
</head>
<body lang="EN-US" link="blue" vlink="purple" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">Hi Craig,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks for your speedy response! What about line 3080 where we check if Lo == Memory, and then do the post-merge providing both?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><a href="https://github.com/llvm/llvm-project/blob/f68939d3d91c3e1b57fba5450fa9146c3dcf5fdc/clang/lib/CodeGen/TargetInfo.cpp#L3080">https://github.com/llvm/llvm-project/blob/f68939d3d91c3e1b57fba5450fa9146c3dcf5fdc/clang/lib/CodeGen/TargetInfo.cpp#L3080</a><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I’m new to this code base so I don’t have a case in mind that would lead to an error (and hopefully if there was an issue it would have been caught by now) but the fact that the spec (and the function docstring) make the statement and then
 it’s missing in the implementation makes me uneasy at best. I was hoping that whomever wrote this might add a comment to explain (without a doubt) why it was okay to not follow the spec, or if that’s not possible, to update the implementation to match the
 spec. What are your thoughts?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Best,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Vanessa<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:12.0pt;color:black">From: </span></b><span style="font-size:12.0pt;color:black">Craig Topper <craig.topper@gmail.com><br>
<b>Date: </b>Wednesday, September 15, 2021 at 11:30 AM<br>
<b>To: </b>"Sochat, Vanessa" <sochat1@llnl.gov><br>
<b>Cc: </b>"llvm-dev@lists.llvm.org" <llvm-dev@lists.llvm.org><br>
<b>Subject: </b>Re: [llvm-dev] LLVM and System V ABI Inconsistency Question<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<div>
<p class="MsoNormal">Hi Vanessa,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal">I think the two users of the final classification, X86_64ABIInfo::classifyReturnType and X86_64ABIInfo::classifyArgumentType, don't look at Hi if Lo == Memory. They both return from their respective "switch (Lo)". So I guess the code took
 a shortcut and didn't bother updating Hi.<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<div>
<div>
<p class="MsoNormal">~Craig<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">On Tue, Sep 14, 2021 at 5:15 PM Sochat, Vanessa via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:black">Hi LLVM Community,</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;font-variant-caps:normal;text-align:start;word-spacing:0px">
<span style="color:black"> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;font-variant-caps:normal;text-align:start;word-spacing:0px">
<span style="color:black">I’m hoping for some insight to a question I stumbled on – I’ve been trying various social networks and contacts to no avail! I was recently looking at the System V ABI Document for X86 and comparing to the LLVM source code, and I had
 a few questions about register allocation. Basically, when we are doing the post merge step in classifying, say, a struct, the first rule says that we check for either lo<span class="gmail-m-8969999653160052970apple-converted-space"> </span><i>or</i><span class="gmail-m-8969999653160052970apple-converted-space"> </span>hi
 to be in memory, and then set the whole thing to memory. But in the implementation, it only checks hi (and then changes lo). I thought if it’s not an oversight, it might be the case that lo can never be set to memory, or something like that? I’m hoping that
 you have some insight because I’m not sure if this is an oversight on my part! I shared some screenshots here:</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:black"> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;font-variant-caps:normal;text-align:start;word-spacing:0px">
<span style="color:black"><a href="https://urldefense.us/v3/__https:/twitter.com/vsoch/status/1435687187979268099__;!!G2kpM7uM-TzIFchu!jX7Sxg4AdoIDrVhfucwFpzhEgRpuPH3JPVnrs2Gr38gB5DI8OLQWZtLR-kn9Pnh1$" target="_blank"><span style="color:#0563C1">https://twitter.com/vsoch/status/1435687187979268099</span></a></span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;font-variant-caps:normal;text-align:start;word-spacing:0px">
<span style="color:black"> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;font-variant-caps:normal;text-align:start;word-spacing:0px">
<span style="color:black">And the link to the code in question is here:</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;font-variant-caps:normal;text-align:start;word-spacing:0px">
<span style="color:black"> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;font-variant-caps:normal;text-align:start;word-spacing:0px">
<span style="color:black"><a href="https://urldefense.us/v3/__https:/github.com/llvm/llvm-project/blob/main/clang/lib/CodeGen/TargetInfo.cpp*L2726__;Iw!!G2kpM7uM-TzIFchu!jX7Sxg4AdoIDrVhfucwFpzhEgRpuPH3JPVnrs2Gr38gB5DI8OLQWZtLR-ifhErHW$" target="_blank"><span style="color:#0563C1">https://github.com/llvm/llvm-project/blob/main/clang/lib/CodeGen/TargetInfo.cpp#L2726</span></a></span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;font-variant-caps:normal;text-align:start;word-spacing:0px">
<span style="color:black">Thank you so much for your help!<span class="gmail-m-8969999653160052970apple-converted-space"> </span></span><span style="font-family:"Apple Color Emoji";color:black">😊</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;font-variant-caps:normal;text-align:start;word-spacing:0px">
<span style="color:black"> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;font-variant-caps:normal;text-align:start;word-spacing:0px">
<span style="color:black">Best,</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;font-variant-caps:normal;text-align:start;word-spacing:0px">
<span style="color:black"> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;font-variant-caps:normal;text-align:start;word-spacing:0px">
<span style="color:black">Vanessa</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
</div>
<p class="MsoNormal">_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="https://urldefense.us/v3/__https:/lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev__;!!G2kpM7uM-TzIFchu!jX7Sxg4AdoIDrVhfucwFpzhEgRpuPH3JPVnrs2Gr38gB5DI8OLQWZtLR-se8Ofdn$" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><o:p></o:p></p>
</blockquote>
</div>
</div>
</body>
</html>