https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93131
--- Comment #20 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Andrew Pinski <pins...@gcc.gnu.org>: https://gcc.gnu.org/g:6ccc19bd4d12379a0d9fce486ceba3207749424a commit r10-6213-g6ccc19bd4d12379a0d9fce486ceba3207749424a Author: Andrew Pinski <apin...@marvell.com> Date: Sat Jan 11 20:34:24 2020 +0000 Decrease cortexa57_extra_costs's alu.shift_reg Like I mentioned in https://gcc.gnu.org/ml/gcc/2020-01/msg00157.html, The shift by a register should be just COSTS_N_INSNS (1) rather than COSTS_N_INSNS (2). This allows lshift_cheap_p to return true now and converting switches to be using shift and other like structures. I noticed this difference when I was working through PR 93131 and understanding what reassoc could handle. ChangeLog: * config/arm/aarch-cost-tables.h (cortexa57_extra_costs): Change alu.shift_reg to 0.