We used integer overflow to implement 64-bit arithmetic on 32-bit CPUs (in C and C++, way back in the 1980s). Off the top of my head, I think it was coded something like this:
// Add two-word integers
void add64(unsigned a[2], unsigned b[2])
{
unsigned t;
// Add two-word integer b to a
t = a[1];
a[1] += b[1]; // Lower word
if (a[1] < t) // True if a[1]+b[1] overflows
a[0]++; // Upper word
}
Now, granted, this is not using signed integer overflow, but I think we did in fact have signed integer forms of these routines as well, based on the same principle of detecting overflow to adjust the final result. (I just can't recall the details at the moment.) Most of the routines were actually coded as C preprocessor macros, as I recall.