<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in asm-goto.cpp</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>50cac248 - Support output constraints on &quot;asm goto&quot;</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/clang/test/Sema/asm-goto.cpp#50cac248</link>
        <description>Support output constraints on &quot;asm goto&quot;Summary:Clang&apos;s &quot;asm goto&quot; feature didn&apos;t initially support outputs constraints. Thatwas the same behavior as gcc&apos;s implementation. The decision by gcc not tosupport outputs was based on a restriction in their IR regarding terminators.LLVM doesn&apos;t restrict terminators from returning values (e.g. &apos;invoke&apos;), soit made sense to support this feature.Output values are valid only on the &apos;fallthrough&apos; path. If an output value&apos;s usedon an indirect branch, then it&apos;s &apos;poisoned&apos;.In theory, outputs *could* be valid on the &apos;indirect&apos; paths, but it&apos;s verydifficult to guarantee that the original semantics would be retained. E.g.because indirect labels could be used as data, we wouldn&apos;t be able to splitcritical edges in situations where two &apos;callbr&apos; instructions have the sameindirect label, because the indirect branch&apos;s destination would no longer bethe same.Reviewers: jyknight, nickdesaulniers, hfinkelReviewed By: jyknight, nickdesaulniersSubscribers: MaskRay, rsmith, hiraditya, llvm-commits, cfe-commits, craig.topper, rnkTags: #clang, #llvmDifferential Revision: https://reviews.llvm.org/D69876

            List of files:
            /llvm-project-15.0.7/clang/test/Sema/asm-goto.cpp</description>
        <pubDate>Tue, 25 Feb 2020 02:32:50 +0000</pubDate>
        <dc:creator>Bill Wendling &lt;isanbard@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>b8fee677 - Re-check in clang support gun asm goto after fixing tests.</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/clang/test/Sema/asm-goto.cpp#b8fee677</link>
        <description>Re-check in clang support gun asm goto after fixing tests.llvm-svn: 362410

            List of files:
            /llvm-project-15.0.7/clang/test/Sema/asm-goto.cpp</description>
        <pubDate>Mon, 03 Jun 2019 15:57:25 +0000</pubDate>
        <dc:creator>Jennifer Yu &lt;jennifer.yu@intel.com&gt;</dc:creator>
    </item>
<item>
        <title>954ec09a - clang support gnu asm goto.</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/clang/test/Sema/asm-goto.cpp#954ec09a</link>
        <description>clang support gnu asm goto.Syntax:  asm [volatile] goto ( AssemblerTemplate                      :                      : InputOperands                      : Clobbers                      : GotoLabels)https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.htmlNew llvm IR is &quot;callbr&quot; for inline asm goto instead &quot;call&quot; for inline asmFor:asm goto(&quot;testl %0, %0; jne %l1;&quot; :: &quot;r&quot;(cond)::label_true, loop);IR:callbr void asm sideeffect &quot;testl $0, $0; jne ${1:l};&quot;, &quot;r,X,X,~{dirflag},~{fpsr},~{flags}&quot;(i32 %0, i8* blockaddress(@foo, %label_true), i8* blockaddress(@foo, %loop)) #1          to label %asm.fallthrough [label %label_true, label %loop], !srcloc !3asm.fallthrough:                                Compiler need to generate:1&gt; a dummy constarint &apos;X&apos; for each label.2&gt; an unique fallthrough label for each asm goto stmt &quot; asm.fallthrough%number&quot;.Diagnostic 1&gt;	duplicate asm operand name are used in output, input and label.2&gt;	goto out of scope.llvm-svn: 362045

            List of files:
            /llvm-project-15.0.7/clang/test/Sema/asm-goto.cpp</description>
        <pubDate>Thu, 30 May 2019 01:05:46 +0000</pubDate>
        <dc:creator>Jennifer Yu &lt;jennifer.yu@intel.com&gt;</dc:creator>
    </item>
</channel>
</rss>
