[Bug fortran/54633] New: Issues with MINLOC/MINVAL (MAXLOC/MAXVAL)

burnus at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Sep 20 08:30:00 GMT 2012


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

             Bug #: 54633
           Summary: Issues with MINLOC/MINVAL (MAXLOC/MAXVAL)
    Classification: Unclassified
           Product: gcc
           Version: 4.8.0
            Status: UNCONFIRMED
          Keywords: diagnostic, ice-on-valid-code, wrong-code
          Severity: normal
          Priority: P3
         Component: fortran
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: burnus@gcc.gnu.org


Related to 54613, reported by James in the thread "Implicit" use of
assignment(=)"
at
https://groups.google.com/forum/?fromgroups=#!topic/comp.lang.fortran/5eAz5ns6AG0

Namely:
https://groups.google.com/d/msg/comp.lang.fortran/5eAz5ns6AG0/G1uydcaGivkJ


ISSUES:

a) Wrong-code for minval4.f90?

With gfortran 4.3, it gets rejected with:

         integer x(minval((/1/)))
                                1
  Error: automatic object 'x' at (1) cannot have the SAVE attribute

interestingly, NAG f95 accepts it unless I use explicitly "save :: x", then it
rejects it with:
  Error: minval4.f90, line 7: Static array X cannot have variable bounds

Thus, I am bit lost whether it is valid or not.


b) ICE with minloc/minval (minval2.f90, minloc2.f90):

   integer x(sum(minloc((/1/))))
respectively:
   integer x(minval((/1/),mask=(/.TRUE./)))

in gfc_trans_auto_array_allocation, at fortran/trans-array.c:5621

That's  gcc_assert (!TREE_STATIC (decl));  and decl is the var_decl "x".

The problem is that minloc/minval is not simplified to a constant. Other
compilers do compile-time evaluate this.

(Or they don't? Cf. (a).)


c) minval3.f90: This program compiles in gfortran with -std=f95 but other
compilers reject it with:
   MINVAL function is not permitted in an initialization expression

   integer, parameter :: m = minval((/1/))

I don't see ad hoc why the other compilers do accept in in (b) but not in (c).



More information about the Gcc-bugs mailing list