<div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Wed, Mar 29, 2017 at 9:38 AM Yatsina, Marina via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div lang="EN-US" link="#0563C1" vlink="#954F72" class="gmail_msg">
<div class="m_-5326986908822180281WordSection1 gmail_msg">
<p class="MsoNormal gmail_msg">Hi,<u class="gmail_msg"></u><u class="gmail_msg"></u></p>
<p class="MsoNormal gmail_msg"><u class="gmail_msg"></u> <u class="gmail_msg"></u></p>
<p class="MsoNormal gmail_msg">I wanted to revive this issue of supporting asm goto (<a href="https://bugs.llvm.org/show_bug.cgi?id=9295" class="gmail_msg" target="_blank"><b class="gmail_msg">Bug 9295</b></a>).</p></div></div></blockquote><div><br></div><div>FWIW, my opinion is that the use cases don't really justify the complexity this adds to the compiler. I feel like embedding inline assembly into normal C control flow constructs and writing the entire thing directly give pretty reasonable options.</div><div><br></div><div>But maybe others really see high-value reasons to add support for this... If they do...</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="EN-US" link="#0563C1" vlink="#954F72" class="gmail_msg"><div class="m_-5326986908822180281WordSection1 gmail_msg"><p class="MsoNormal gmail_msg"><u class="gmail_msg"></u><u class="gmail_msg"></u></p>
<p class="MsoNormal gmail_msg">As was already proposed, the best way seems to be introducing new IR.<u class="gmail_msg"></u><u class="gmail_msg"></u></p>
<p class="MsoNormal gmail_msg">If we’re changing the IR, we should probably provide an infrastructure that solves or at least enables future support for things like:<u class="gmail_msg"></u><u class="gmail_msg"></u></p>
<p class="m_-5326986908822180281MsoListParagraph gmail_msg"><u class="gmail_msg"></u><span class="gmail_msg">1.<span style="font:7.0pt "Times New Roman"" class="gmail_msg">     
</span></span><u class="gmail_msg"></u><span dir="LTR" class="gmail_msg"></span>MS-style inline asm jmps and goto (<a href="https://bugs.llvm.org/show_bug.cgi?id=24529" class="gmail_msg" target="_blank"><b class="gmail_msg">Bug 24529</b></a>)</p></div></div></blockquote><div>I *strongly* agree with the 'WONTFIX' resolution here. More than GCC's "asm goto", this feature seems much more harmful to the compiler and much less well motivated.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="EN-US" link="#0563C1" vlink="#954F72" class="gmail_msg"><div class="m_-5326986908822180281WordSection1 gmail_msg"><p class="m_-5326986908822180281MsoListParagraph gmail_msg"><u class="gmail_msg"></u><u class="gmail_msg"></u></p>
<p class="m_-5326986908822180281MsoListParagraph gmail_msg"><u class="gmail_msg"></u><span class="gmail_msg">2.<span style="font:7.0pt "Times New Roman"" class="gmail_msg">     
</span></span><u class="gmail_msg"></u><span dir="LTR" class="gmail_msg"></span>Analyzing symbols defined/references in the inline assembly (<a href="https://bugs.llvm.org/show_bug.cgi?id=28970" class="gmail_msg" target="_blank"><b class="gmail_msg">Bug 28970</b></a>), taking into account module/file-scope inline assembly.</p></div></div></blockquote><div>Unless we decide to address #1 in some way, this seems completely orthogonal to "asm goto". While I'd love to see a good resolution to PR28970, I don't think it makes sense to couple the two together. Among other things, none of my concerns about "asm goto" apply to simply exposing the symbols defined.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="EN-US" link="#0563C1" vlink="#954F72" class="gmail_msg"><div class="m_-5326986908822180281WordSection1 gmail_msg"><p class="m_-5326986908822180281MsoListParagraph gmail_msg"><u class="gmail_msg"></u><u class="gmail_msg"></u></p>
<p class="m_-5326986908822180281MsoListParagraph gmail_msg"><u class="gmail_msg"></u><span class="gmail_msg">3.<span style="font:7.0pt "Times New Roman"" class="gmail_msg">     
</span></span><u class="gmail_msg"></u><span dir="LTR" class="gmail_msg"></span>Provide some information about the cost of the inline assembly? (I’m not sure if we want to couple it with this issue and if the cost should be represented in this new IR or some other way)</p></div></div></blockquote><div>I suspect this too should be an orthogonal discussion.</div><div><br></div><div>I think we should expose a TTI-cost-analysis API and allow passing inline assembly to it. Then targets can, if they choose, actually analyze the assembly to compute a cost. But I don't think we need IR changes here and even if we do, likely orthogonal ones to "asm goto".</div></div></div>