[PATCH] vect: Remove vec_outside/inside_cost fields

Jan Hubicka hubicka@kam.mff.cuni.cz
Thu Nov 11 09:44:51 GMT 2021


> > > 
> > > I think the patch causes the following on x86_64-linux-gnu:
> > > FAIL: gfortran.dg/inline_matmul_17.f90   -O   scan-tree-dump-times optimized "matmul_r4" 2
> > 
> > I get that failure even with d70ef65692f (from before the patches
> > I committed today).
> 
> Sorry, you are right, it's one revision before:
> d70ef65692fced7ab72e0aceeff7407e5a34d96d
> 
> Honza, can you please take a look?
The test looks for matmul_r4 calls which we now optimize out in fre1.
This is because alias info is better now

  afunc (&__var_5_mma);                                                         
  _188 = __var_5_mma.dim[0].ubound;                                             
  _189 = __var_5_mma.dim[0].lbound;                                             
  _190 = _188 - _189;                                                           
  _191 = _190 + 1;                                                              
  _192 = MAX_EXPR <_191, 0>;                                                    
  _193 = (real(kind=4)) _192;                                                   
  _194 = __var_5_mma.dim[1].ubound;                                             
  _195 = __var_5_mma.dim[1].lbound;                                             
  _196 = _194 - _195;                                                           
  _197 = _196 + 1;                                                              
  _198 = MAX_EXPR <_197, 0>;                                                    
  _199 = (real(kind=4)) _198;                                                   
  _200 = _193 * _199;                                                           
  _201 = _200 * 3.0e+0;                                                         
  if (_201 <= 1.0e+9)                                                           
    goto <bb 76>; [INV]                                                         
  else                                                                          
    goto <bb 87>; [INV]                                                         
  <bb 76> :                                                                     
  c = {};                                                                       


  afunc (&__var_5_mma);                                                         
  c = {};                                                                       

Now afunc writes to __var_5_mma only indirectly so I think it is correct that
we optimize the conditional out.

Easy fix would be to add -fno-ipa-modref, but perhaps someone with
better understanding of Fortran would help me to improve the testcase so
the calls to matmul_r4 remains reachable?

Honza


More information about the Gcc-patches mailing list