https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114859
Jakub Jelinek 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 ---
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.40711
-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.