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

Jan Hubicka <hubicka at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |mjambor at suse dot cz

--- Comment #1 from Jan Hubicka <hubicka at gcc dot gnu.org> ---
It seems to me that we miss some ipa-cp propagation here.  In particular there
are array descriptors:

  parm.326.span = 8;                                                            
  MEM <c_char[8]> [(struct dtype_type *)&parm.326 + 24B] = {};                  
  parm.326.dtype.elem_len = 8;                                                  
  parm.326.dtype.rank = 2;                                                      
  parm.326.dtype.type = 3;                                                      
  parm.326.dim[0].lbound = 1;                                                   
  parm.326.dim[0].ubound = 3;                                                   
  parm.326.dim[0].stride = 1;                                                   
  parm.326.dim[1].lbound = 1;                                                   
  parm.326.dim[1].ubound = 3;                                                   
  parm.326.dim[1].stride = 3;                                                   
  _245 = _243 * 9;                                                              
  _246 = &MEM <real(kind=8)[0:]> [(real(kind=8)[0:] *)_44][_245];               
  parm.326.data = _246;                                                         
  parm.326.offset = -4;                                                         

and the resulting jump function

        ref offset 64: -4 [loc_time: 0, loc_size: 703, prop_time: 0, prop_size:
703]
        ref offset 128: 8 [loc_time: 0, loc_size: 703, prop_time: 0, prop_size:
703]
        ref offset 224: 2 [loc_time: 0, loc_size: 703, prop_time: 0, prop_size:
703]
        ref offset 232: 3 [loc_time: 0, loc_size: 703, prop_time: 0, prop_size:
703]
        ref offset 256: 8 [loc_time: 0, loc_size: 703, prop_time: 0, prop_size:
703]
        ref offset 320: 1 [loc_time: 248, loc_size: 697, prop_time: 248,
prop_size: 697]
        ref offset 384: 1 [loc_time: 1, loc_size: 702, prop_time: 1, prop_size:
702]
        ref offset 448: 3 [loc_time: 1, loc_size: 702, prop_time: 1, prop_size:
702]
        ref offset 512: 3 [loc_time: 245, loc_size: 700, prop_time: 245,
prop_size: 700]
        ref offset 576: 1 [loc_time: 1, loc_size: 702, prop_time: 1, prop_size:
702]
        ref offset 640: 3 [loc_time: 1, loc_size: 702, prop_time: 1, prop_size:
702]

here are 11 constants while there are 12 constant stores above.  
I guess the MEM one is missing.

Call is:
                 call perdida (dt, lambda, mu, yield_stress, R_infinity, b,
X_infinity,     &
                               gamma, eta, plastic_strain_threshold,
stress_tensor(:,:,n),  &
                               strain_tensor(:,:,n),
plastic_strain_tensor(:,:,n),          &
                               strain_rate_tensor(:,:,n),
accumulated_plastic_strain(n),    &
                               back_stress_tensor(:,:,n),
isotropic_hardening_stress(n),    &
                               damage(n), failure_threshold,
crack_closure_parameter)

Similar situation repats iself multiple times.

Reply via email to