There was an interesting aproach to this, in an experimental language some time ago
fn f1 (x, y) #-> // Use C calling conventions
fn f2 (x, y) -> // use fast calling conventions
The first one was mostly for interacting with C code, and the compiler knew how to
call each function.