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

            Bug ID: 97757
           Summary: [11 Regression] fortran save_6.f90 fails with a segv
                    for -flto -O >= 2
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: iains at gcc dot gnu.org
  Target Milestone: ---

most likely in the range r11-4777 and r11-4781.

It doesn't seem to reproduce on Linux - but it shows on a stage#1 built with
debug - so probably will show on a darwin cross.

gcc/f951 /src-local/gcc-master/gcc/testsuite/gfortran.dg/save_6.f90 -fPIC
-quiet -dumpdir a- -dumpbase save_6.f90 -dumpbase-ext .f90
-mmacosx-version-min=10.12.0 -mtune=core2 -O2 -version -fno-automatic -flto
-fintrinsic-modules-path finclude -o a-save_6.s

looks like a GGC issue....

GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
during IPA pass: modref
/src-local/gcc-master/gcc/testsuite/gfortran.dg/save_6.f90:54:3: internal
compiler error: Segmentation fault: 11
   54 | end
      |   ^
0x1017d33c5 crash_signal
        /src-local/gcc-master/gcc/toplev.c:330
0x1012e52d6 modref_tree<int>::merge(modref_tree<int>*, vec<modref_parm_map,
va_heap, vl_ptr>*)
        /src-local/gcc-master/gcc/ipa-modref-tree.h:420
0x1012e35b9 modref_propagate_in_scc
        /src-local/gcc-master/gcc/ipa-modref.c:2440
0x1012e3ac9 execute
        /src-local/gcc-master/gcc/ipa-modref.c:2549

=====

Process 49712 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS
(code=EXC_I386_GPFLT)
    frame #0: 0x00000001012e52d6
f951`modref_tree<int>::merge(this=0xa5a5a5a5a5a5a5a5, other=0x00000001469008c0,
parm_map=0x00007fff5fbff330) at ipa-modref-tree.h:420
   417       Return true if something has changed.  */
   418    bool merge (modref_tree <T> *other, vec <modref_parm_map> *parm_map)
   419    {
-> 420      if (!other || every_base)
   421        return false;
   422      if (other->every_base)
   423        {
Target 0: (f951) stopped.

Reply via email to