[PATCH] D26270: Avoid tail recursion elimination across calls with operand bundles
David Majnemer via llvm-commits
llvm-commits at lists.llvm.org
Mon Nov 7 12:12:31 PST 2016
majnemer added a comment.
In https://reviews.llvm.org/D26270#586668, @JosephTremoulet wrote:
> In https://reviews.llvm.org/D26270#586489, @majnemer wrote:
>
> > I don't think funclets need to worry about this.
>
>
> I would have thought they did. If an exception is caught (so we enter the funclet) and then there's a recursive call to the main method (which has the funclet bundle), I think we want a new frame for the main method; if we rewrite that recursive call as a jump, but then an exception is raised in the recursive invocation, is the unwinder going to do the right thing? The IP will be telling it that we're in the main function, not the funclet. If that catch handler enters a try region before it makes the recursive call, then the main function and funclet would have different handlers, so we should be able to see empirically whether the right thing happens.
This makes sense. OK, so we should treat funclet bundles like deopt bundles here.
https://reviews.llvm.org/D26270
More information about the llvm-commits
mailing list