re PR target/46088 (ICE: SIGSEGV in ix86_binary_operator_ok (i386.c:15025) with -Os -fnon-call-exceptions -fpeel-loops)

PR target/46088
	* config/i386/i386.md (*ashl<mode>3_cconly,
	*<shiftrt_insn><mode>3_cconly): Don't use ix86_binary_operator_ok,
	change nonimmediate_operand predicate to register_operand.

	* gcc.dg/pr46088.c: New test.

From-SVN: r166635
This commit is contained in:
Jakub Jelinek 2010-11-12 00:51:18 +01:00
parent 8fb1546627
commit 94252ac254
4 changed files with 97 additions and 75 deletions

View file

@ -1,3 +1,10 @@
2010-11-12 Jakub Jelinek <jakub@redhat.com>
PR target/46088
* config/i386/i386.md (*ashl<mode>3_cconly,
*<shiftrt_insn><mode>3_cconly): Don't use ix86_binary_operator_ok,
change nonimmediate_operand predicate to register_operand.
2010-11-11 Paolo Bonzini <bonzini@gnu.org>
* Makefile.in (gengtype-lex.c): Include bconfig.h first.

View file

@ -9714,7 +9714,7 @@
(define_insn "*ashl<mode>3_cconly"
[(set (reg FLAGS_REG)
(compare
(ashift:SWI (match_operand:SWI 1 "nonimmediate_operand" "0")
(ashift:SWI (match_operand:SWI 1 "register_operand" "0")
(match_operand:QI 2 "<shift_immediate_operand>" "<S>"))
(const_int 0)))
(clobber (match_scratch:SWI 0 "=<r>"))]
@ -9723,8 +9723,7 @@
|| (operands[2] == const1_rtx
&& (TARGET_SHIFT1
|| TARGET_DOUBLE_WITH_ADD)))
&& ix86_match_ccmode (insn, CCGOCmode)
&& ix86_binary_operator_ok (ASHIFT, <MODE>mode, operands)"
&& ix86_match_ccmode (insn, CCGOCmode)"
{
switch (get_attr_type (insn))
{
@ -10081,7 +10080,7 @@
[(set (reg FLAGS_REG)
(compare
(any_shiftrt:SWI
(match_operand:SWI 1 "nonimmediate_operand" "0")
(match_operand:SWI 1 "register_operand" "0")
(match_operand:QI 2 "<shift_immediate_operand>" "<S>"))
(const_int 0)))
(clobber (match_scratch:SWI 0 "=<r>"))]
@ -10089,8 +10088,7 @@
|| !TARGET_PARTIAL_FLAG_REG_STALL
|| (operands[2] == const1_rtx
&& TARGET_SHIFT1))
&& ix86_match_ccmode (insn, CCGOCmode)
&& ix86_binary_operator_ok (<CODE>, <MODE>mode, operands)"
&& ix86_match_ccmode (insn, CCGOCmode)"
{
if (operands[2] == const1_rtx
&& (TARGET_SHIFT1 || optimize_function_for_size_p (cfun)))

View file

@ -1,3 +1,8 @@
2010-11-12 Jakub Jelinek <jakub@redhat.com>
PR target/46088
* gcc.dg/pr46088.c: New test.
2010-11-11 Steven G. Kargl <kargl@gcc.gnu.org>
* gfortran.dg/empty_derived_type.f90: New test.
@ -1016,7 +1021,7 @@
PR target/46253
* gcc.target/i386/pr46253.c: New.
2010-11-02 Steven G. Kargl < kargl@gcc.gnu.org>
2010-11-02 Steven G. Kargl <kargl@gcc.gnu.org>
Tobias Burnus <burnus@net-b.de>
PR fortran/45170
@ -3107,7 +3112,7 @@
* gfortran.dg/io_constraints_7.f03: New test.
* gfortran.dg/newunit_2.f90: New test.
2010-09-24 Steven G. Kargl < kargl@gcc.gnu.org>
2010-09-24 Steven G. Kargl <kargl@gcc.gnu.org>
* gfortran.dg/operator_c1202.f90: New test.

View file

@ -0,0 +1,12 @@
/* PR target/46088 */
/* { dg-do compile } */
/* { dg-options "-Os -fnon-call-exceptions -fpeel-loops" } */
extern void bar (void);
void
foo (int i)
{
if (i >> 3)
bar ();
}