http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47757

Tobias Burnus <burnus at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |burnus at gcc dot gnu.org

--- Comment #1 from Tobias Burnus <burnus at gcc dot gnu.org> 2011-02-15 
21:58:33 UTC ---
The {m,s}i{all,any,parity}_i{1,2,4,8,16} is seemingly an my omission; they were
added as part of PR 38282. They are called via gcc/fortran/iresolve.c. For
instance: gfc_resolve_iall calls
  resolve_transformational ("iall", f, array, dim, mask);
which in turn adds an "m" or a "s" as prefix if the intrinsic is called with a
's'calar or array 'm'ask -- without a mask, the pure "_i*" symbol is used. (And
without "dim=" everything is handled in the front end.)

A failing example is, e.g.,
            INTEGER(1) :: a(2,2)
            logical  :: mask(2,2)
            mask = reshape([.true.,.true.,.false.,.true.],[2,2])
            PRINT *, IANY(a, dim=1,mask=mask)
test.f90:(.text+0x1a6): undefined reference to `_gfortran_miany_i1'

 * * *

Regarding _gfortran_cshift0_16_char4 and friends: Those are used for wide-char
operations, where the shifts are given by large-sized integers; example:
    character(kind=4):: str(3,3)
    str(1,:) = [4_'A', 4_'b', 4_'C']
    str(2,:) = [4_'A', 4_'b', 4_'C']
    str(3,:) = [4_'A', 4_'b', 4_'C']
    print *, cshift(str, shift=2_16, dim=1_16)
    end
which fails with undefined reference to `_gfortran_cshift0_16_char4'.

Ignoring issues like whether one should not cast the "2_16" to an integer(8) in
the front end, which should be also sufficient giving 64bit address space, one
should also export those symbols.

Reply via email to