This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug ipa/64801] [5 Regression] kernel build failure due to ICF


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

--- Comment #3 from Jan Hubicka <hubicka at gcc dot gnu.org> ---
OK, the testcase is buggy: fsp_detect should be static inline.  GCC is valid to
not inline it and not produce offline copy because that should be produced by
other unit.

What happens is that icf merge elantech_detect and fsp_detect:

Parsed function:fsp_detect                                                      
fsp_detect ()                                                                   
{                                                                               
  <bb 2>:                                                                       
  return -38;                                                                   

}                                                                               


Parsed function:elantech_detect                                                 
elantech_detect ()                                                              
{                                                                               
  <bb 2>:                                                                       
  return -38;                                                                   

}                                                                               

and turns elantech_detect into a thunk calling fsp_detect (not much of point in
doing that but all right).  Eventually we fail inline:

  not inlinable: elantech_detect/1 -> fsp_detect/2, mismatched arguments        
   Estimating body: fsp_detect/2                                                
   Known to be false: not inlined                                               
   size:0 time:0                                                                

So the question is why we consider the call as having mismatch?


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]