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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever confirmed|0                           |1
                 CC|                            |pault at gcc dot gnu.org
           Priority|P3                          |P2
   Last reconfirmed|                            |2024-04-26
   Target Milestone|---                         |14.0
            Summary|Seeing new segmentation     |[14 Regression] Seeing new
                   |fault in same_type_as       |segmentation fault in
                   |                            |same_type_as since r14-9752

--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Bisection shows the only change on that CU in that range is
r14-9752-g35408b3669fac104cd380582b32e32c64a603d8b
and the changes are mostly in the save_smoothers subroutine.
diff -upb on the original dump between r14-9751 and r14-9752 is:
--- amg_d_hierarchy_bld.f90.005t.original_      2024-04-26 12:41:01.409999711
-0400
+++ amg_d_hierarchy_bld.f90.005t.original       2024-04-26 12:42:21.511060046
-0400
@@ -211,9 +211,6 @@ void restore_smoothers (struct amg_d_one
 __attribute__((fn spec (". . w w w ")))
 void save_smoothers (struct amg_d_onelev_type & restrict level, struct
__class_amg_d_base_smoother_mod_Amg_d_base_smoother_type_a & restrict save1,
struct __class_amg_d_base_smoother_mod_Amg_d_base_smoother_type_a & restrict
save2, integer(kind=4) & restrict info)
 {
-  {
-    integer(kind=4) stat.18;
-
     *info = 0;
     if (save1->_data != 0B)
       {
@@ -328,7 +325,6 @@ void save_smoothers (struct amg_d_onelev
       }
     if (__builtin_expect ((integer(kind=8)) (stat.18 != 0), 0, 44)) goto L.34;
     (struct __vtype_amg_d_base_smoother_mod_Amg_d_base_smoother_type *)
save1->_vptr = (struct __vtype_amg_d_base_smoother_mod_Amg_d_base_smoother_type
*) level->sm._vptr;
-    (void) __builtin_memcpy ((void *) save1->_data, (void *)
save1->_vptr->_def_init, (unsigned long) save1->_vptr->_size);
     L.34:;
     *info = stat.18;
     if (*info == 0)
@@ -344,11 +340,11 @@ void save_smoothers (struct amg_d_onelev
         }
       }
     L.36:;
-    if (*info == 0 && level->sm2a._data != 0B)
-      {
         {
           integer(kind=4) stat.21;

+    if (*info == 0 && level->sm2a._data != 0B)
+      {
           if (__builtin_expect ((integer(kind=8)) (save2->_data != 0B), 0,
45))
             {
               stat.21 = 5014;
@@ -364,7 +360,6 @@ void save_smoothers (struct amg_d_onelev
             }
           if (__builtin_expect ((integer(kind=8)) (stat.21 != 0), 0, 44)) goto
L.38;
           (struct __vtype_amg_d_base_smoother_mod_Amg_d_base_smoother_type *)
save2->_vptr = (struct __vtype_amg_d_base_smoother_mod_Amg_d_base_smoother_type
*) level->sm2a._vptr;
-          (void) __builtin_memcpy ((void *) save2->_data, (void *)
save2->_vptr->_def_init, (unsigned long) save2->_vptr->_size);
           L.38:;
           *info = stat.21;
           if (*info == 0)
@@ -384,15 +379,13 @@ void save_smoothers (struct amg_d_onelev
       }
     L.37:;
     return;
-  }
 }


 __attribute__((fn spec (". . . . w ")))
 void amg_d_hierarchy_bld (struct psb_dspmat_type & a, struct psb_desc_type &
desc_a, struct __class_amg_d_prec_type_Amg_dprec_type_t & prec, integer(kind=4)
& restrict info)
 {
-  static void restore_smoothers (struct amg_d_onelev_type &, struct
__class_amg_d_base_smoother_mod_Amg_d_base_smoother_type_a & restrict, struct
__class_amg_d_base_smoother_mod_Amg_d_base_smoother_type_a & restrict,
integer(kind=4) & restrict);
-  static void save_smoothers (struct amg_d_onelev_type & restrict, struct
__class_amg_d_base_smoother_mod_Amg_d_base_smoother_type_a & restrict, struct
__class_amg_d_base_smoother_mod_Amg_d_base_smoother_type_a & restrict,
integer(kind=4) & restrict);
+  integer(kind=4) stat.18;
   integer(kind=8) D.9689;
   integer(kind=8) D.9690;
   integer(kind=8) D.9691;

so guess the only significant change is the removal of the two __builtin_memcpy
calls.

Reply via email to