re PR rtl-optimization/25578 (gfortran version 4.2.0 20051227 - 144 new testsuite failures since 2005121)

gcc:
2006-01-03  Paolo Bonzini  <bonzini@gnu.org>

	PR rtl-optimization/25578
	* combine.c (combine_simplify_rtx, force_to_mode): Don't
	pass a parameter to simplify_shift_const if changing ASHIFTRT
	to LSHIFTRT.

gcc/testsuite:
2006-01-03  Paolo Bonzini  <bonzini@gnu.org>

	PR rtl-optimization/25578
	* gcc.c-torture/execute/20060102-1.c: New testcase.

From-SVN: r109281
This commit is contained in:
Paolo Bonzini 2006-01-03 14:58:05 +00:00 committed by Paolo Bonzini
parent 31905f3498
commit 13991abbfc
4 changed files with 31 additions and 3 deletions

View File

@ -1,3 +1,10 @@
2006-01-03 Paolo Bonzini <bonzini@gnu.org>
PR rtl-optimization/25578
* combine.c (combine_simplify_rtx, force_to_mode): Don't
pass a parameter to simplify_shift_const if changing ASHIFTRT
to LSHIFTRT.
2006-01-03 Adrian Straetling <straetling@de.ibm.com>
* gcc/builtins.c (get_builtin_sync_mem): New function.

View File

@ -1,6 +1,6 @@
/* Optimize by combining instructions for GNU compiler.
Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
This file is part of GCC.
@ -4321,7 +4321,7 @@ combine_simplify_rtx (rtx x, enum machine_mode op0_mode, int in_dest)
if (GET_CODE (temp) == ASHIFTRT
&& GET_CODE (XEXP (temp, 1)) == CONST_INT
&& INTVAL (XEXP (temp, 1)) == GET_MODE_BITSIZE (mode) - 1)
return simplify_shift_const (temp, LSHIFTRT, mode, XEXP (temp, 0),
return simplify_shift_const (NULL_RTX, LSHIFTRT, mode, XEXP (temp, 0),
INTVAL (XEXP (temp, 1)));
/* If X has only a single bit that might be nonzero, say, bit I, convert
@ -7103,7 +7103,7 @@ force_to_mode (rtx x, enum machine_mode mode, unsigned HOST_WIDE_INT mask,
if ((mask & ~nonzero) == 0)
{
x = simplify_shift_const (x, LSHIFTRT, GET_MODE (x),
x = simplify_shift_const (NULL_RTX, LSHIFTRT, GET_MODE (x),
XEXP (x, 0), INTVAL (XEXP (x, 1)));
if (GET_CODE (x) != ASHIFTRT)
return force_to_mode (x, mode, mask, next_select);

View File

@ -1,3 +1,8 @@
2006-01-03 Paolo Bonzini <bonzini@gnu.org>
PR rtl-optimization/25578
* gcc.c-torture/execute/20060102-1.c: New testcase.
2006-01-03 Richard Guenther <rguenther@suse.de>
PR c/25183

View File

@ -0,0 +1,16 @@
extern void abort ();
int f(int x)
{
return (x >> 31) ? -1 : 1;
}
int main (int argc)
{
/* Test that the function above returns different values for
different signs. */
if (f(argc) == f(-argc))
abort ();
return 0;
}