http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56559
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> 2013-03-07 09:17:20 UTC --- Created attachment 29608 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=29608 gcc48-pr56559.patch In my limited understanding, it is fine to assume the chain has just single uses if you walk through rhs1s, but when looking at rhs2, it can be arbitrary, so we need to guard it. You can't change __builtin_pow that has multiple uses just because of one of the uses. The patch fixes this and doesn't introduce any dg.exp=reassoc* tree-ssa.exp=reassoc* dg-torture.exp=reassoc* regressions.