snarkmaster wrote:

> ... can cover https://github.com/llvm/llvm-project/issues/148380, right?

Above, I mentioned "> `await_suspend` that destroys the coro returns a handle"  
as one of the cases I don't cover.

There's no logical reason this couldn't be supported, but I only needed `void` 
for short-circuiting coros. 

I looked through `folly/coro` and found a destroying suspend that returned a 
handle (see 
[`DetachedBarrierTask`](https://github.com/facebook/folly/blob/main/folly/coro/detail/BarrierTask.h#L147)).
 I then made a [quick-and-dirty 
PoC](https://gist.github.com/snarkmaster/f85ad34dcd0b0f3a810685fc5379948e) of a 
compiler change to support returning handles from `await_suspend_destroy`. 
Unfortunately, it didn't make an obvious difference to the code optimization in 
this case.

So, I don't think the current PR should include the extra code to support 
`await_suspend_destroy` returning handles. We'd need to see some kind of 
use-case where it makes a meaningful difference to perf, and a reason why 
making that optimize the normal way is hard.

https://github.com/llvm/llvm-project/pull/152623
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to