Commit 13991abb by Paolo Bonzini Committed by Paolo Bonzini

re PR rtl-optimization/25578 (gfortran version 4.2.0 20051227 - 144 new…

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
parent 31905f34
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.
......
/* 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);
......
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
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;
}
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