------- Comment #3 from jakub at gcc dot gnu dot org 2008-12-16 16:57 ------- In particular, the problem is in linearize_expr_tree. The |s are already perfectly linearized (in all but the innermost recursive linearize_expr_tree binlhsisreassoc is 1 and binrhsisreassoc is 0, in the innermost both are 0), yet: 1645 gsinow = gsi_for_stmt (stmt); 1646 gsilhs = gsi_for_stmt (SSA_NAME_DEF_STMT (binlhs)); 1647 gsi_move_before (&gsilhs, &gsinow); moves all of them to one spot. Couldn't that moving be deferred till we actually know it is worthwhile to reassociate something, not blindly just in case something will be needed?
-- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38533