Hi! Supposedly my recent invalid shift count expansion changes broke m68k bootstrap, we now really require that the shift expanders have some non-VOIDmode, so that we can convert_mode it to that mode. But m68k didn't specify mode. For valid shift counts the patch makes no difference beyond fixing the ICE, those are all CONST_INTs which when converted to CONST_INTs valid for SImode give the same values.
Fixed thusly, Matthias has kindly tested it on m68k-linux, ok for trunk? 2016-02-22 Jakub Jelinek <ja...@redhat.com> PR target/69885 * config/m68k/m68k.md (ashldi3, ashrdi3, lshrdi3): Use SImode for last match_operand. * gcc.dg/pr69885.c: New test. --- gcc/config/m68k/m68k.md.jj 2016-01-20 10:55:16.000000000 +0100 +++ gcc/config/m68k/m68k.md 2016-02-22 11:14:01.789697673 +0100 @@ -4544,7 +4544,7 @@ (define_insn "*ashldi3" (define_expand "ashldi3" [(set (match_operand:DI 0 "register_operand" "") (ashift:DI (match_operand:DI 1 "register_operand" "") - (match_operand 2 "const_int_operand" "")))] + (match_operand:SI 2 "const_int_operand" "")))] "!TARGET_COLDFIRE" { /* ??? This is a named pattern like this is not allowed to FAIL based @@ -4813,7 +4813,7 @@ (define_insn "ashrdi_const" (define_expand "ashrdi3" [(set (match_operand:DI 0 "register_operand" "") (ashiftrt:DI (match_operand:DI 1 "register_operand" "") - (match_operand 2 "const_int_operand" "")))] + (match_operand:SI 2 "const_int_operand" "")))] "!TARGET_COLDFIRE" { /* ??? This is a named pattern like this is not allowed to FAIL based @@ -5082,7 +5082,7 @@ (define_insn "*lshrdi3_const" (define_expand "lshrdi3" [(set (match_operand:DI 0 "register_operand" "") (lshiftrt:DI (match_operand:DI 1 "register_operand" "") - (match_operand 2 "const_int_operand" "")))] + (match_operand:SI 2 "const_int_operand" "")))] "!TARGET_COLDFIRE" { /* ??? This is a named pattern like this is not allowed to FAIL based --- gcc/testsuite/gcc.dg/pr69885.c.jj 2016-02-22 11:14:50.981023120 +0100 +++ gcc/testsuite/gcc.dg/pr69885.c 2016-02-22 11:13:45.000000000 +0100 @@ -0,0 +1,13 @@ +/* PR target/69885 */ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ +/* { dg-additional-options "-m68000" { target m68k*-*-* } } */ + +void bar (void); + +void +foo (long long x) +{ + if (x >> 1) + bar (); +} Jakub