http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54717



--- Comment #13 from Jan Hubicka <hubicka at ucw dot cz> 2012-11-14 19:43:00 
UTC ---

> So for the loop that starting at bb 28 you can see the xxtrt_46 access was not

> put into pretemp. Possible reason is exactly as it was mentioned by Richard -

> there were extra candidates collected and this one become less anticipatable

> 

> Skipping partial partial redundancy for expression                    

> {array_ref<pretmp_8,0,4>,mem_ref<0B>,xxtrt_46(D)}@.MEM_30(D) (0165)   

>    not partially anticipated on any to be optimized for speed edges    

>   -----------------------------------------------------------------------

> Found partial partial redundancy for expression

>  {array_ref<pretmp_8,0,4>,mem_ref<0B>,xxtrt_46(D)}@.MEM_30(D) (0165)

> Created phi prephitmp_237 = PHI <_88(90), _85(29)>

>  in block 30



Hmm, interesting, what is the edge resonsible?

I would expect it to be the loopback edge and its frequency is:

;;   basic block 28, loop depth 0, count 0, freq 1998, maybe hot

;;    prev block 92, next block 94, flags: (NEW, REACHABLE)

;;    pred:       92 [100.0%, 180]  (FALLTHRU)

;;                96 [100.0%, 1818]  (FALLTHRU,DFS_BACK)

  # ival2_136 = PHI <ival2_62(92), ival2_144(96)>

  # ival2_140 = PHI <ival2_80(92), ival2_146(96)>

  _137 = (integer(kind=8)) ival2_136;

  _138 = _137 + -1;

  _139 = *xxtrt_25(D)[_138];

  _141 = (integer(kind=8)) ival2_140;

  _142 = _141 + -1;

  _143 = *xxtrt_25(D)[_142];

  if (_139 < _143)

    goto <bb 29>; 

  else            

    goto <bb 94>;



1818 that should be still hot.  Or isn't the heuristic backwards? I.e. I would

expect

the partial anticipance to sit on edge 92->28 (with freq 180) where we need to

insert

the computation to get the other path hot.



Honza

Reply via email to