From 09c92f1c27eb8f5028ef5f0164774b6088a493d0 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 22 Feb 2016 15:22:07 +0100 Subject: [PATCH] re PR bootstrap/69885 (ICE in maybe_legitimize_operand, at optabs.c:6903 on m68k-linux-gnu) PR target/69885 * config/m68k/m68k.md (ashldi3, ashrdi3, lshrdi3): Use SImode for last match_operand. * gcc.dg/pr69885.c: New test. From-SVN: r233603 --- gcc/ChangeLog | 6 ++++++ gcc/config/m68k/m68k.md | 6 +++--- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/pr69885.c | 13 +++++++++++++ 4 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/pr69885.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 32304003630..6d1a557579d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2016-02-22 Jakub Jelinek + + PR target/69885 + * config/m68k/m68k.md (ashldi3, ashrdi3, lshrdi3): Use + SImode for last match_operand. + 2016-02-22 Martin Liska * hsa-gen.c (gen_hsa_clrsb): In case of zero value, diff --git a/gcc/config/m68k/m68k.md b/gcc/config/m68k/m68k.md index 5731780631f..ec37bd76f55 100644 --- a/gcc/config/m68k/m68k.md +++ b/gcc/config/m68k/m68k.md @@ -4544,7 +4544,7 @@ (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_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_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 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 927af63cde2..0b82dae0a03 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-02-22 Jakub Jelinek + + PR target/69885 + * gcc.dg/pr69885.c: New test. + 2016-02-22 Oleg Endo PR target/69806 diff --git a/gcc/testsuite/gcc.dg/pr69885.c b/gcc/testsuite/gcc.dg/pr69885.c new file mode 100644 index 00000000000..e3a218b8153 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr69885.c @@ -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 (); +}