> On Sun, 5 Jun 2016, Jan Hubicka wrote: > > > Hi, > > both loop-ch and loop-ivcanon want to trottle down the heuristics on paths > > containing call. Testing for presence of GIMPLE_CALL is wrong for internal > > call and cheap builtins that are expanded inline. > > > > Bootstrapped/regtested x86_64-linux, OK? > > First of all the name is bad - I'd say gimple_inexpensive_call_p () > is better. More comments below.
OK, the motivation for name is that I am really testing if the GIMPLE_CALL will end up call instruction in the final assembly. No matter whetehr expensive or not. > > gimple_code (stmt) == GIMPLE_CALL is redundant then. I'd prefer to > make gimple_inexpensive_call_p take a gcall * argument and do the > test at the callers though. OK, i will update patch. I had mostly copied those tests from original code which I think had them as short cirucuits. This most probalby does not matter in practice and LTO may be eventually to do that for us. So it seemed bit like premature optimization. I will update the patch. Honza > > > { > > int flags = gimple_call_flags (stmt); > > - tree decl = gimple_call_fndecl (stmt); > > - > > - if (decl && DECL_IS_BUILTIN (decl) > > - && is_inexpensive_builtin (decl)) > > - ; > > - else if (flags & (ECF_PURE | ECF_CONST)) > > + if (flags & (ECF_PURE | ECF_CONST)) > > size->num_pure_calls_on_hot_path++; > > else > > size->num_non_pure_calls_on_hot_path++; > > > >