A floating point value is implicitly converted to a wider floating point type.
This is not necessarily wrong but make sure that it is really what was supposed to be implemented. If so, add an explicit cast.
function automatic f(shortreal s); real r = s; endfunction
function automatic f(shortreal s); real r = real'(s); endfunction