------- Comment #4 from bonzini at gnu dot org  2009-02-05 08:26 -------
We miss that out1_5+2 could be hoisted out of the loop and used as a base
object

use 0
  address
  in statement *D.1259_6 = in_7(D);

  at position *D.1259_6
  type short unsigned int *
  base out1_5(D) + 2
  step 2
  base object (void *) out1_5(D)
  related candidates


I also tried disabling DOM and PRE/FRE so that we get code that is supposedly
easier to optimize, but then IVopts produces

  D.1281_16 = out1_5(D) + ivtmp.17_13;
  MEM[base: D.1281_16, offset: 2]{*D.1259} = in_7(D);

and again does not recognize that it can be reassociated and moved out of the
loop.


-- 

bonzini at gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |bonzini at gnu dot org


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

Reply via email to