rjmccall added a comment.

That something is an (unlowered) coroutine is an important semantic property of 
the function that should be represented more explicitly in IR than just whether 
it contains a call to an intrinsic in the `llvm.coro.id` family.  Coroutines 
have somewhat different structural rules from ordinary functions, as is natural 
for a somewhat different high-level concept.  `noinline` is an independent 
attribute that should affect whether the ramp function is inlinable after 
coroutine lowering is complete.

In principle, I would prefer that we use a better attribute than this 
`coro.presplit` thing — a few years ago, I proposed adding a directly-supported 
`coroutine` attribute which would take the lowering style as an argument.  So 
if someone's willing to do to the work to jump to that instead of going through 
this intermediate stage, then okay, let's do it.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D100282

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to