[PATCH] D82314: [RFC][Coroutines] Optimize the lifespan of temporary co_await object

JunMa via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Jun 23 19:27:07 PDT 2020


junparser added a comment.

In D82314#2109893 <https://reviews.llvm.org/D82314#2109893>, @rsmith wrote:

> In D82314#2109728 <https://reviews.llvm.org/D82314#2109728>, @lxfind wrote:
>
> > @rsmith Thanks. That's a good point. Do you know if there already exists optimization passes in LLVM that attempts to shrink the range of lifetime intrinsics? If so, I am curious why that does not help in this case. Or is it generally unsafe to move the lifetime intrinsics, and we could only do it here with specific context knowledge about coroutines.
>
>
> I don't know for sure, but I would expect someone to have implemented such a pass already. Moving a lifetime start intrinsic later, past instructions that can't possibly reference the object in question, seems like it should always be safe and (presumably) should always be a good thing to do, and similarly for moving lifetime end markers earlier. It could be that such a pass exists but it is run too late in the pass pipeline, so the coroutine split pass doesn't get to take advantage of it.


@lxfind,  Also lifetime marker of variable are much complex because of the existing of exceptional path(multiple lifetime start & multiple lifetime end) , so it is hard to optimize such cases.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D82314/new/

https://reviews.llvm.org/D82314





More information about the cfe-commits mailing list