I really thought we had these figured out...
$ cat shift-variations.f90
program main
integer(kind=1) :: d1
integer(kind=2) :: d2
integer(kind=4) :: d4
integer(kind=8) :: d8
integer(kind=1), dimension(2) :: s1
integer(kind=2), dimension(2) :: s2
integer(kind=4), dimension(2) :: s4
integer(kind=8), dimension(2) :: s8
real, dimension(2,2) :: r
data r /1.0, 2.0, 3.0, 4.0/
s1 = (/1, 1/)
s2 = (/1, 1/)
s4 = (/1, 1/)
s8 = (/1, 1/)
d1 = 1
d2 = 1
d4 = 1
d8 = 1
print *,eoshift(r,shift=s1,dim=d1)
print *,eoshift(r,shift=s2,dim=d2)
print *,eoshift(r,shift=s4,dim=d4)
print *,eoshift(r,shift=s8,dim=d8)
print *,cshift(r,shift=s1,dim=d1)
print *,cshift(r,shift=s2,dim=d2)
print *,cshift(r,shift=s4,dim=d4)
print *,cshift(r,shift=s8,dim=d8)
end program main
$ gfortran shift-variations.f90
$ ./a.out
0.0000000 3.98764005E-34 1.26116862E-44 0.0000000
-2.73992191E-05 -2.85282731E-05 0.0000000 4.08616923E-38
2.0000000 0.0000000 4.0000000 0.0000000
2.0000000 0.0000000 4.0000000 0.0000000
Fortran runtime error: Argument 'DIM' is out of range in call to 'CSHIFT'
$ gfortran -v
Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: ../../gcc/trunk/configure --prefix=/home/ig25
--enable-languages=c,fortran
Thread model: posix
gcc version 4.3.0 20071216 (experimental) (GCC)
--
Summary: cshift, eoshift, kind=1 and kind=2 arguments...
Product: gcc
Version: 4.3.0
Status: UNCONFIRMED
Keywords: wrong-code
Severity: normal
Priority: P3
Component: libfortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: tkoenig at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34540