[PATCH] D69868: Allow "callbr" to return non-void values

Bill Wendling via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Jan 29 17:54:27 PST 2020


void added a comment.

In D69868#1848327 <https://reviews.llvm.org/D69868#1848327>, @MaskRay wrote:

> @rnk Thoughts on passing live-in formation (a bit similar to WinEH catchpad) to `callbr` at the SelectionDAG stage?


To help with the review, here are some of the assumptions I'm making about the `INLINEASM_BR` and the copy block this patch creates:

1. The two blocks (CallBrBB and CopyBB) are "tightly coupled". I.e., you can't split the edge between them (not that you should want to).
2. The CopyBB block will *always* be the fall-through block. This implies that `INLINEASM_BR` is the only terminator in CallBrBB.
3. If one block moves, then both must move.

I would be happy to add code in the machine instruction verifier to ensure that these assumptions are met if you think it's necessary.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D69868





More information about the cfe-commits mailing list