add sret + noalias to the out pointer parameter

This brings Rust in line with how `clang` handles return pointers.

Closes #9072
Closes #7298