Commit 94252ac2 by Jakub Jelinek

re PR target/46088 (ICE: SIGSEGV in ix86_binary_operator_ok (i386.c:15025) with…

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
parent 8fb15466
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.
......@@ -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)))
......
/* 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 ();
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment