Commit 8f8d8d6e by Alexandre Oliva Committed by Alexandre Oliva

combine.c (simplify_shift_const): Even if we're sign-extracting...

* combine.c (simplify_shift_const): Even if we're sign-extracting,
don't discard an ASHIFTRT if we're shifting in a wider mode.

From-SVN: r38648
parent 232a132f
2001-01-03 Alexandre Oliva <aoliva@redhat.com>
* combine.c (simplify_shift_const): Even if we're sign-extracting,
don't discard an ASHIFTRT if we're shifting in a wider mode.
2000-01-02 John David Anglin <dave@hiauly1.hia.nrc.ca> 2000-01-02 John David Anglin <dave@hiauly1.hia.nrc.ca>
* toplev.c (rest_of_compilation): Don't print basic block information * toplev.c (rest_of_compilation): Don't print basic block information
......
/* Optimize by combining instructions for GNU compiler. /* Optimize by combining instructions for GNU compiler.
Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998, Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000 Free Software Foundation, Inc. 1999, 2000, 2001 Free Software Foundation, Inc.
This file is part of GNU CC. This file is part of GNU CC.
...@@ -9130,9 +9130,14 @@ simplify_shift_const (x, code, result_mode, varop, input_count) ...@@ -9130,9 +9130,14 @@ simplify_shift_const (x, code, result_mode, varop, input_count)
break; break;
case ASHIFTRT: case ASHIFTRT:
/* If we are extracting just the sign bit of an arithmetic right /* If we are extracting just the sign bit of an arithmetic
shift, that shift is not needed. */ right shift, that shift is not needed. However, the sign
if (code == LSHIFTRT && count == GET_MODE_BITSIZE (result_mode) - 1) bit of a wider mode may be different from what would be
interpreted as the sign bit in a narrower mode, so, if
the result is narrower, don't discard the shift. */
if (code == LSHIFTRT && count == GET_MODE_BITSIZE (result_mode) - 1
&& (GET_MODE_BITSIZE (result_mode)
>= GET_MODE_BITSIZE (GET_MODE (varop))))
{ {
varop = XEXP (varop, 0); varop = XEXP (varop, 0);
continue; continue;
......
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