------- 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