OpenACC, the Open Accelerators parallel computing specification backed by NVIDIA, PGI, and others, has offered "routines" as a directive to enable true procedural calls and separate compilation in Open Accelerator programs. OpenACC routines are described in more detail via this PGI article.
With patches published Friday by Code Sourcery, OpenACC routines are ready for GCC and one of its developers is seeking to mainline the code to GCC trunk. The code adds the middle-end components for being able to support OpenACC routines plus adds the front-end support to C, C++, and Fortran.
For the past few years there's been a lot of effort to bring OpenACC 2.0 to GCC with GPU offloading support, thanks to NVIDIA, Code Sourcery, and others.
Assuming these latest OpenACC improvements get committed soon, they'll be found in next year's GCC 7.1 stable release.