<?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 CoroEarly.cpp</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>735e6c40 - [Coroutines] Convert coroutine.presplit to enum attr</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp#735e6c40</link>
        <description>[Coroutines] Convert coroutine.presplit to enum attrThis is required by @nikic in https://reviews.llvm.org/D127383 todecrease the cost to check whether a function is a coroutine and thisfixes a FIXME too.Reviewed By: rjmccall, ezhulenevDifferential Revision: https://reviews.llvm.org/D127471

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp</description>
        <pubDate>Fri, 10 Jun 2022 03:37:09 +0000</pubDate>
        <dc:creator>Chuanqi Xu &lt;yedeng.yd@linux.alibaba.com&gt;</dc:creator>
    </item>
<item>
        <title>70306542 - [iwyu] Handle regressions in libLLVM header include</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp#70306542</link>
        <description>[iwyu] Handle regressions in libLLVM header includeRunning iwyu-diff on LLVM codebase since fa5a4e1b95c8f37796 detected a fewregressions, fixing them.Differential Revision: https://reviews.llvm.org/D124847

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp</description>
        <pubDate>Tue, 03 May 2022 12:15:24 +0000</pubDate>
        <dc:creator>serge-sans-paille &lt;sguelton@redhat.com&gt;</dc:creator>
    </item>
<item>
        <title>7eaa84ea - [NFC] Code cleanups for coroutine after we remvoed legacy passes</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp#7eaa84ea</link>
        <description>[NFC] Code cleanups for coroutine after we remvoed legacy passes

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp</description>
        <pubDate>Thu, 21 Apr 2022 07:32:39 +0000</pubDate>
        <dc:creator>Chuanqi Xu &lt;yedeng.yd@linux.alibaba.com&gt;</dc:creator>
    </item>
<item>
        <title>483efc9a - [Pipelines] Remove Legacy Passes in Coroutines</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp#483efc9a</link>
        <description>[Pipelines] Remove Legacy Passes in CoroutinesThe legacy passes are deprecated now and would be removed in nearfuture. This patch tries to remove legacy passes in coroutines.Reviewed By: aeubanksDifferential Revision: https://reviews.llvm.org/D123918

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp</description>
        <pubDate>Thu, 21 Apr 2022 02:57:01 +0000</pubDate>
        <dc:creator>Chuanqi Xu &lt;yedeng.yd@linux.alibaba.com&gt;</dc:creator>
    </item>
<item>
        <title>5b6742a6 - [NFC] Return correct PreservedAnalysis for CoroEarly</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp#5b6742a6</link>
        <description>[NFC] Return correct PreservedAnalysis for CoroEarlyThis is a fix for previous typo. It makes no sense to returnPreservedAnalyses::all() if anything is change. This change simplifycodes further.

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp</description>
        <pubDate>Wed, 20 Apr 2022 08:29:52 +0000</pubDate>
        <dc:creator>Chuanqi Xu &lt;yedeng.yd@linux.alibaba.com&gt;</dc:creator>
    </item>
<item>
        <title>f9bee356 - [Pipelines] Hoist CoroEarly as a module pass</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp#f9bee356</link>
        <description>[Pipelines] Hoist CoroEarly as a module passThis change could reduce the time we call `declaresCoroEarlyIntrinsics`.And it is helpful for future changes.Reviewed By: aeubanksDifferential Revision: https://reviews.llvm.org/D123925

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp</description>
        <pubDate>Wed, 13 Apr 2022 09:03:13 +0000</pubDate>
        <dc:creator>Chuanqi Xu &lt;yedeng.yd@linux.alibaba.com&gt;</dc:creator>
    </item>
<item>
        <title>c75cedc2 - [Coroutines] Set presplit attribute in Clang and mlir</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp#c75cedc2</link>
        <description>[Coroutines] Set presplit attribute in Clang and mlirThis fixes bug49264.Simply, coroutine shouldn&apos;t be inlined before CoroSplit. And the markerfor pre-splited coroutine is created in CoroEarly pass, which ran afterAlwaysInliner Pass in O0 pipeline. So that the AlwaysInliner couldn&apos;tdetect it shouldn&apos;t inline a coroutine. So here is the error.This patch set the presplit attribute in clang and mlir. So the inlinerwould always detect the attribute before splitting.Reviewed By: rjmccall, ezhulenevDifferential Revision: https://reviews.llvm.org/D115790

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp</description>
        <pubDate>Wed, 05 Jan 2022 02:19:44 +0000</pubDate>
        <dc:creator>Chuanqi Xu &lt;yedeng.yd@linux.alibaba.com&gt;</dc:creator>
    </item>
<item>
        <title>24c8eaec - [Transforms] Use make_early_inc_range (NFC)</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp#24c8eaec</link>
        <description>[Transforms] Use make_early_inc_range (NFC)

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp</description>
        <pubDate>Thu, 16 Sep 2021 02:55:24 +0000</pubDate>
        <dc:creator>Kazu Hirata &lt;kazu@google.com&gt;</dc:creator>
    </item>
<item>
        <title>3522167e - [Coroutine] Properly deal with byval and noalias parameters</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp#3522167e</link>
        <description>[Coroutine] Properly deal with byval and noalias parametersThis patch is to address https://bugs.llvm.org/show_bug.cgi?id=48857.Previous attempts can be found in D104007 and D101980.A lot of discussions can be found in those two patches.To summarize the bug:When Clang emits IR for coroutines, the first thing it does is to make a copy of every argument to the local stack, so that uses of the arguments in the function will all refer to the local copies instead of the arguments directly.However, in some cases we find that arguments are still directly used:When Clang emits IR for a function that has pass-by-value arguments, sometimes it emits an argument with byval attribute. A byval attribute is considered to be local to the function (just like alloca) and hence it can be easily determined that it does not alias other values. If in the IR there exists a memcpy from a byval argument to a local alloca, and then from that local alloca to another alloca, MemCpyOpt will optimize out the first memcpy because byval argument&apos;s content will not change. This causes issues because after a coroutine suspension, the byval argument may die outside of the function, and latter uses will lead to memory use-after-free.This is only a problem for arguments with either byval attribute or noalias attribute, because only these two kinds are considered local. Arguments without these two attributes will be considered to alias coro_suspend and hence we won&apos;t have this problem. So we need to be able to deal with these two attributes in coroutines properly.For noalias arguments, since coro_suspend may potentially change the value of any argument outside of the function, we simply shouldn&apos;t mark any argument in a coroutiune as noalias. This can be taken care of in CoroEarly pass.For byval arguments, if such an argument needs to live across suspensions, we will have to copy their value content to the frame, not just the pointer.Differential Revision: https://reviews.llvm.org/D104184

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp</description>
        <pubDate>Fri, 18 Jun 2021 02:06:10 +0000</pubDate>
        <dc:creator>Xun Li &lt;lxfind@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>5faba879 - Revert &quot;[Coroutines] Set presplit attribute in Clang instead of CoroEarly pass&quot;</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp#5faba879</link>
        <description>Revert &quot;[Coroutines] Set presplit attribute in Clang instead of CoroEarly pass&quot;This reverts commit fa6b54c44ab1d5f579304eadb7ac8bd7e72d0e77.The commited patch broke mlir tests. It seems that mlir tests depend on coroutine function properties set in CoroEarly pass.

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp</description>
        <pubDate>Mon, 19 Apr 2021 00:20:02 +0000</pubDate>
        <dc:creator>Xun Li &lt;lxfind@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>fa6b54c4 - [Coroutines] Set presplit attribute in Clang instead of CoroEarly pass</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp#fa6b54c4</link>
        <description>[Coroutines] Set presplit attribute in Clang instead of CoroEarly passPresplit coroutines cannot be inlined. During AlwaysInliner we check if a function is a presplit coroutine, if so we skip inlining.The presplit coroutine attributes are set in CoroEarly pass.However in O0 pipeline, AlwaysInliner runs before CoroEarly, so the attribute isn&apos;t set yet and will still inline the coroutine.This causes Clang to crash: https://bugs.llvm.org/show_bug.cgi?id=49920To fix this, we set the attributes in the Clang front-end instead of in CoroEarly pass.Reviewed By: rjmccall, ChuanqiXuDifferential Revision: https://reviews.llvm.org/D100282

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp</description>
        <pubDate>Sun, 18 Apr 2021 22:41:09 +0000</pubDate>
        <dc:creator>Xun Li &lt;lxfind@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>c0211e8d - Revert &quot;[Coroutines] Move CoroEarly pass to before AlwaysInliner&quot;</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp#c0211e8d</link>
        <description>Revert &quot;[Coroutines] Move CoroEarly pass to before AlwaysInliner&quot;This reverts commit 2b50f5a4343f8fb06acaa5c36355bcf58092c9cd.Forgot to update the description of the commit to sync with phabricator. Going to redo the commit.

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp</description>
        <pubDate>Sun, 18 Apr 2021 22:38:19 +0000</pubDate>
        <dc:creator>Xun Li &lt;lxfind@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>2b50f5a4 - [Coroutines] Move CoroEarly pass to before AlwaysInliner</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp#2b50f5a4</link>
        <description>[Coroutines] Move CoroEarly pass to before AlwaysInlinerPresplit coroutines cannot be inlined. During AlwaysInliner we check if a function is a presplit coroutine, if so we skip inlining.The presplit coroutine attributes are set in CoroEarly pass.However in O0 pipeline, AlwaysInliner runs before CoroEarly, so the attribute isn&apos;t set yet and will still inline the coroutine.This causes Clang to crash: https://bugs.llvm.org/show_bug.cgi?id=49920Differential Revision: https://reviews.llvm.org/D100282

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp</description>
        <pubDate>Mon, 12 Apr 2021 05:01:36 +0000</pubDate>
        <dc:creator>Xun Li &lt;lxfind@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>87b628da - [coro.async] Make sure we process async coroutines</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp#87b628da</link>
        <description>[coro.async] Make sure we process async coroutinesBecause we were not looking for the llvm.coro.id.async intrinsic in theearly coro pass which triggers follow-up passes we relied on thellvm.coro.end intrinsic being present. This might not be the case infunctions that end in unreachable code.Differential Revision: https://reviews.llvm.org/D95144

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp</description>
        <pubDate>Thu, 21 Jan 2021 16:41:37 +0000</pubDate>
        <dc:creator>Arnold Schwaighofer &lt;aschwaighofer@apple.com&gt;</dc:creator>
    </item>
<item>
        <title>333108e8 - Add a llvm.coro.end.async intrinsic</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp#333108e8</link>
        <description>Add a llvm.coro.end.async intrinsicThe llvm.coro.end.async intrinsic allows to specify a function that isto be called as the last action before returning. This function will beinlined after coroutine splitting.This function can contain a &apos;musttail&apos; call to allow for guaranteed tailcalling as the last action.Differential Revision: https://reviews.llvm.org/D93568

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp</description>
        <pubDate>Tue, 15 Dec 2020 21:28:52 +0000</pubDate>
        <dc:creator>Arnold Schwaighofer &lt;aschwaighofer@apple.com&gt;</dc:creator>
    </item>
<item>
        <title>ea5989b4 - Start of an llvm.coro.async implementation</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp#ea5989b4</link>
        <description>Start of an llvm.coro.async implementationThis patch adds the `async` lowering of coroutines.This will be used by the Swift frontend to lower async functions. Incontrast to the `retcon` lowering the frontend needs to be in controlover control-flow at suspend points as execution might be suspended atthese points.This is very much work in progress and the implementation will change asit evolves with the frontend. As such the documentation is lackingdetail as some of it might change.rdar://70097093Reapply with fix for memory sanitizer failure and sphinx failure.Differential Revision: https://reviews.llvm.org/D90612

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp</description>
        <pubDate>Wed, 21 Oct 2020 21:41:47 +0000</pubDate>
        <dc:creator>Arnold Schwaighofer &lt;aschwaighofer@apple.com&gt;</dc:creator>
    </item>
<item>
        <title>42f19166 - Revert &quot;Start of an llvm.coro.async implementation&quot;</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp#42f19166</link>
        <description>Revert &quot;Start of an llvm.coro.async implementation&quot;This reverts commit ea606cced0583d1dbd4c44680601d1d4e9a56e58.This patch causes memory sanitizer failures sanitizer-x86_64-linux-fast.

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp</description>
        <pubDate>Wed, 04 Nov 2020 16:25:24 +0000</pubDate>
        <dc:creator>Arnold Schwaighofer &lt;aschwaighofer@apple.com&gt;</dc:creator>
    </item>
<item>
        <title>ea606cce - Start of an llvm.coro.async implementation</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp#ea606cce</link>
        <description>Start of an llvm.coro.async implementationThis patch adds the `async` lowering of coroutines.This will be used by the Swift frontend to lower async functions. Incontrast to the `retcon` lowering the frontend needs to be in controlover control-flow at suspend points as execution might be suspended atthese points.This is very much work in progress and the implementation will change asit evolves with the frontend. As such the documentation is lackingdetail as some of it might change.rdar://70097093Differential Revision: https://reviews.llvm.org/D90612

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp</description>
        <pubDate>Wed, 21 Oct 2020 21:41:47 +0000</pubDate>
        <dc:creator>Arnold Schwaighofer &lt;aschwaighofer@apple.com&gt;</dc:creator>
    </item>
<item>
        <title>15cd1e36 - [llvm][NFC][CallSite] Remove CallSite from CoroEarly</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp#15cd1e36</link>
        <description>[llvm][NFC][CallSite] Remove CallSite from CoroEarlyReviewers: dblaikie, craig.topperSubscribers: hiraditya, llvm-commitsTags: #llvmDifferential Revision: https://reviews.llvm.org/D78523

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp</description>
        <pubDate>Mon, 20 Apr 2020 19:56:36 +0000</pubDate>
        <dc:creator>Mircea Trofin &lt;mtrofin@google.com&gt;</dc:creator>
    </item>
<item>
        <title>9514c048 - Use optimal layout and preserve alloca alignment in coroutine frames.</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp#9514c048</link>
        <description>Use optimal layout and preserve alloca alignment in coroutine frames.Previously, we would ignore alloca alignment when building the frameand just use the natural alignment of the allocated type.  If an allocais over-aligned for its IR type, this could lead to a frame entry withinadequate alignment for the downstream uses of the alloca.Since highly-aligned fields also tend to produce poor layouts under anaive layout algorithm, I&apos;ve also switched coroutine frames to use thenew optimal struct layout algorithm.In order to communicate the frame size and alignment to later passes,I needed to set align+dereferenceable attributes on the frame-pointerparameter of the resume function.  This is clearly the right thing todo, but the align attribute currently seems to result in assumptionsbeing added during inlining that the optimizer cannot easily remove.

            List of files:
            /llvm-project-15.0.7/llvm/lib/Transforms/Coroutines/CoroEarly.cpp</description>
        <pubDate>Wed, 25 Mar 2020 20:58:09 +0000</pubDate>
        <dc:creator>John McCall &lt;rjmccall@apple.com&gt;</dc:creator>
    </item>
</channel>
</rss>
