> > I used this variant which passes tests. It assumes that there are no > > wrapped calls with this flag, but I assume that's ok. > > musttail10.C should also check the case where the function called with > [[musttail]] returns a non-trivially-copyable class (e.g. that has a > destructor).
It fails as expected, however the resulting tree code confuses tree-tailcall, so the end result is a not very helpful "cannot tail-call: other reasons" error when only expand catches it. I may fix that later, but I don't think it's critical for the initial feature. There are some other cases where this happens too. I also improved the test case by running it in "torture" to cover more cases -Andi