In Fortran one can specify the intent of variables thus if all arguments have INTENT(IN) then GCC should be able to detect that alist in the call to cshift is uninitialized.
This depends on the middle end support of intents (PR31094) plus using these in gfortran. Example (using an intrinsic function): program testcshft integer :: alist(4) alist =cshift(alist,-1) write(*,*) alist end program testcshft -- Summary: Uninitialized warning for call-by-reference arguments with known intent(in) Product: gcc Version: 4.3.0 Status: UNCONFIRMED Keywords: diagnostic Severity: normal Priority: P3 Component: middle-end AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: burnus at gcc dot gnu dot org BugsThisDependsOn: 31094 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31279