As pointed out by Richard in PR63155. It speeds up the testcase a few %. Tested on aarch64-linux-gnu. OK to install?
Richard 2018-10-08 Richard Sandiford <richard.sandif...@arm.com> gcc/ PR middle-end/63155 * gimple-ssa-backprop.c (backprop::intersect_uses): Use FOR_EACH_IMM_USE_FAST instead of FOR_EACH_IMM_USE_STMT. Index: gcc/gimple-ssa-backprop.c =================================================================== --- gcc/gimple-ssa-backprop.c 2018-06-18 15:22:36.918297134 +0100 +++ gcc/gimple-ssa-backprop.c 2018-10-08 18:27:00.874770262 +0100 @@ -496,10 +496,11 @@ backprop::process_use (gimple *stmt, tre backprop::intersect_uses (tree var, usage_info *info) { imm_use_iterator iter; - gimple *stmt; + use_operand_p use_p; *info = usage_info::intersection_identity (); - FOR_EACH_IMM_USE_STMT (stmt, iter, var) + FOR_EACH_IMM_USE_FAST (use_p, iter, var) { + gimple *stmt = USE_STMT (use_p); if (is_gimple_debug (stmt)) continue; gphi *phi = dyn_cast <gphi *> (stmt); @@ -523,10 +524,7 @@ backprop::intersect_uses (tree var, usag process_use (stmt, var, &subinfo); *info &= subinfo; if (!info->is_useful ()) - { - BREAK_FROM_IMM_USE_STMT (iter); - return false; - } + return false; } } return true;