------- Comment #7 from rguenth at gcc dot gnu dot org 2007-03-09 23:00 ------- The obvoious difference is more precise alias information:
-bar: Maximum number of VOPS needed per statement: 80 +bar: Maximum number of VOPS needed per statement: 71 (and the resulting different partitioning). What may cause performance problems are changes like - # VUSE <MPT.120_683> + # VUSE <SMT.109_703, MPT.120_704> D.1662_631 = (*D.1657_625)[D.1661_630]; - # MPT.120_690 = VDEF <MPT.120_683> + # SMT.109_711 = VDEF <SMT.109_703> + # MPT.120_712 = VDEF <MPT.120_704> (*D.1634_608)[D.1644_621] = D.1666_635; as our tree memory optimizers don't like statements with multiple virtual operands (at least store_ccp and store_copyprop don't, maybe PRE doesn't care, I'm also not sure about LIM). Other than that, more precise alias information can cause more register pressure, too. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31090