[Bug fortran/90608] New: Inline masked minlo/maxloc calls

ktkachov at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri May 24 08:25:00 GMT 2019


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90608

            Bug ID: 90608
           Summary: Inline masked minlo/maxloc calls
           Product: gcc
           Version: 9.0
            Status: UNCONFIRMED
          Keywords: missed-optimization
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ktkachov at gcc dot gnu.org
  Target Milestone: ---

Created attachment 46402
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=46402&action=edit
minloc example

One of the benchmarks we care about performs much better when compiled with
ifort than with gfortran. One of the differences seems to be due to ifort
inlining calls to some minloc/maxloc intrinsics whereas gfortran emits calls to
libgfortran, for example _gfortran_mminloc0_4_i4 to perform various
minloc/maxloc operations combined with a mask over array sections.

Inlining these intrinsics seems to enable further optimisations in the pipeline
like vectorisation

Attached is a small-but-representable standalone example of the kind of calls
it would be good to inline.

I'm not too familiar with Fortran and the frontend but it seems to inline some
minloc/maxloc intrinsics already in trans-intrinsic.c. Would it be possible to
beef it up?


More information about the Gcc-bugs mailing list