We've got new tree codes, the following makes Loop IM cost consider those expensive that make sense.
Bootstrapped and tested on x86_64-unknown-linux-gnu, applied. Richard. 2011-10-19 Richard Guenther <rguent...@suse.de> * tree-ssa-loop-im.c (stmt_cost): Add WIDEN_*, FMA_EXPR and rotates to the set of expensive operations. Index: gcc/tree-ssa-loop-im.c =================================================================== *** gcc/tree-ssa-loop-im.c (revision 180191) --- gcc/tree-ssa-loop-im.c (working copy) *************** stmt_cost (gimple stmt) *** 549,554 **** --- 549,559 ---- switch (gimple_assign_rhs_code (stmt)) { case MULT_EXPR: + case WIDEN_MULT_EXPR: + case WIDEN_MULT_PLUS_EXPR: + case WIDEN_MULT_MINUS_EXPR: + case DOT_PROD_EXPR: + case FMA_EXPR: case TRUNC_DIV_EXPR: case CEIL_DIV_EXPR: case FLOOR_DIV_EXPR: *************** stmt_cost (gimple stmt) *** 565,570 **** --- 570,578 ---- case LSHIFT_EXPR: case RSHIFT_EXPR: + case WIDEN_LSHIFT_EXPR: + case LROTATE_EXPR: + case RROTATE_EXPR: cost += 20; break;