FRE has all the information available, it's simply not used because eliminate() does not consider copy statements (and does not run elimination on PHI arguments for the same reason). Also for full const/copy propagation COND_EXPRs need to be value-numbered.
This would let us get rid of a copyprop and a ccp pass. I have a prototype patch (still lacks COND_EXPR VN). -- Summary: FRE does not do const or copy propagation while it could Product: gcc Version: 4.3.0 Status: UNCONFIRMED Keywords: missed-optimization Severity: enhancement Priority: P3 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: rguenth at gcc dot gnu dot org BugsThisDependsOn: 30997 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31914