This was reported originally by dhowells at #c7 of PR62111. void foo (unsigned long long x) { bar (x << -1); } causes an error: unrecognizable insn: (insn 7 6 8 2 (set (reg:DI 160 [ D.1442 ]) (ashift:DI (reg:DI 161) (const_int -1 [0xffffffffffffffff]))) xx.c:3 -1 (nil)) A possible patch is proposed at #c14 of PR62111.
Author: kkojima Date: Wed Aug 27 23:25:14 2014 New Revision: 214612 URL: https://gcc.gnu.org/viewcvs?rev=214612&root=gcc&view=rev Log: PR target/62261 * config/sh/sh.md (ashlsi3): Handle negative shift count for TARGET_SHMEDIA. (ashldi3, ashrsi3, ashrdi3, lshrsi3, lshrdi3): Likewise. Modified: trunk/gcc/ChangeLog trunk/gcc/config/sh/sh.md
Author: kkojima Date: Tue Sep 2 22:32:29 2014 New Revision: 214833 URL: https://gcc.gnu.org/viewcvs?rev=214833&root=gcc&view=rev Log: PR target/62261 * config/sh/sh.md (ashlsi3): Handle negative shift count for TARGET_SHMEDIA. (ashldi3, ashrsi3, ashrdi3, lshrsi3, lshrdi3): Likewise. Modified: branches/gcc-4_9-branch/gcc/ChangeLog branches/gcc-4_9-branch/gcc/config/sh/sh.md
Fixed.