Fix Trac #3403: interaction of CPR and pattern-match failure
A fine bug report (#3403) demonstrated that we were losing the tail call property when a complicated pattern match was involved. After a bit of investigation I discovered that the culprit was the failure join-point introduced by the pattern matcher. It was a zero-argument thunk, which is not very CPR-friendly, and that interacted badly with CPR worker/wrapper. It's easy to fix, the same way that we fix other join points, by supplying a dummy argument (that is not really passed at runtime.
Showing with 25 additions and 12 deletions