From 9498e5dcbb89189feb81d25ebc7aa78bfad88ec8 Mon Sep 17 00:00:00 2001 From: Christian Bruel Date: Mon, 29 Apr 2013 14:12:55 +0200 Subject: [PATCH] re PR target/57108 ([4.7/4.8/4.9] SH internal compiler error: in int_mode_for_mode, at stor-layout.c:395) 2013-04-29 Christian Bruel PR target/57108 * sh.md (tstsi_t_zero_extract_eq): Set mode for operand 0. From-SVN: r198411 --- gcc/ChangeLog | 5 +++++ gcc/config/sh/sh.md | 2 +- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.target/sh/pr57108.c | 19 +++++++++++++++++++ 4 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.target/sh/pr57108.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 64004031244..45530a79acc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2013-04-29 Christian Bruel + + PR target/57108 + * sh.md (tstsi_t_zero_extract_eq): Set mode for operand 0. + 2013-04-29 Richard Biener PR middle-end/57089 diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md index 44a6c08c73e..8984d98a4b6 100644 --- a/gcc/config/sh/sh.md +++ b/gcc/config/sh/sh.md @@ -689,7 +689,7 @@ ;; Extract contiguous bits and compare them against zero. (define_insn "tstsi_t_zero_extract_eq" [(set (reg:SI T_REG) - (eq:SI (zero_extract:SI (match_operand 0 "logical_operand" "z") + (eq:SI (zero_extract:SI (match_operand:SI 0 "logical_operand" "z") (match_operand:SI 1 "const_int_operand") (match_operand:SI 2 "const_int_operand")) (const_int 0)))] diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 25c01416e77..ae1c36d8c1b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-04-29 Christian Bruel + + PR target/57108 + * gcc.target/sh/pr57108.c: New test. + 2013-04-29 Richard Biener PR middle-end/57089 diff --git a/gcc/testsuite/gcc.target/sh/pr57108.c b/gcc/testsuite/gcc.target/sh/pr57108.c new file mode 100644 index 00000000000..3d39637b68f --- /dev/null +++ b/gcc/testsuite/gcc.target/sh/pr57108.c @@ -0,0 +1,19 @@ +/* { dg-do compile { target "sh*-*-*" } } */ +/* { dg-options "-O1" } */ + +void __assert_func (void) __attribute__ ((__noreturn__)) ; + +void ATATransfer (int num, int buffer) +{ + int wordCount; + + while (num > 0) + { + wordCount = num * 512 / sizeof (int); + + ((0 == (buffer & 63)) ? (void)0 : __assert_func () ); + ((0 == (wordCount & 31)) ? (void)0 : __assert_func ()); + } + + + } -- 2.30.2