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

--- Comment #12 from Jan Hubicka <hubicka at gcc dot gnu.org> ---
Aha, the code in question is:
  # USE = nonlocal null { D.8330 D.22051 D.22054 D.22059 D.22060 } (nonlocal,
escaped, interposable)
  # CLB = nonlocal null { D.8330 D.22051 D.22054 D.22059 D.22060 } (nonlocal,
escaped, interposable)
  find_placeholder_in_expr (size_8(D), &self_refs);                             
  # PT = nonlocal escaped null                                                  
  _30 = self_refs.m_vec;                                                        
  if (_30 != 0B)                                                                
    goto <bb 10>; [100.00%]                                                     
  else                                                                          
    goto <bb 11>; [0.00%]                                                       

  <bb 10> [count: 7690]:                                                        
  _31 = MEM[(const struct vec *)_30].m_vecpfx.m_num;                            
  if (_31 == 0)                                                                 
    goto <bb 11>; [0.00%]                                                       
  else                                                                          
    goto <bb 12>; [100.00%]                                                     

What we seem to optimize out is the to m_vec, here alias set 12 makes more
sense.
and indeed it seems that this is missing in the summary. Smells like a bug in
ipa_merge_modref_summary_after_inlining since the function is split and
re-merged by inliner.

Reply via email to