It is highly probable that the second CPROP pass is doing a lot of the work already done in the first pass. PRE undoes a bunch of the CPROPs, and CPROP just does them again. This is most likely a bug in PRE, it should not insert a new expression on an edge if an occurence is already available on that edge.
[gccbug:16967]