It turns out that the acc routine parallelism isn't being recorded in fortran .mod files. This is a problem because then the ME can't validate if a routine has compatible parallelism with the call site. This patch does two things: 1. Encode gang, worker, vector and seq level parallelism in module files. This introduces a new oacc_function enum, which I ended up using to record the parallelism of standalone acc routines too. 2. Extends gfc_match_oacc_routine to add acc routine directive support for intrinsic procedures such as abort. Is this patch OK for trunk? I included support for intrinsic procedures because it was necessary with my previous patch which treated all calls to non-acc routines from within an OpenACC offloaded region as errors. Now that it has been determined that those patches should be link time errors, we technically don't need to add acc routine support for intrinsic procedures. So I can drop that part of the patch if necessary. Cesar