SLAA534A June 2013 – June 2020
The MSP430 follows the ARM EABI, under which the C1 and C2 constructors return the this pointer. Doing so allows tail-call optimization of calls to these functions.
Similarly, non-virtual calls to D1 and D2 destructors return 'this'. Calls to virtual destructors use thunk functions, which do not return 'this'.
Section 3.3 of the GC++ABI specifies several library helper functions for array new and delete, which take pointers to constructors or destructors as parameters. In the GC++ABI these parameters are declared as pointers to functions returning void, but in the MSP430 ABI they are declared as pointers to functions that return void *, corresponding to 'this'.