This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Fix wrong-code bug caused by combine_simplify_rtx()
- From: Richard Sandiford <rsandifo at redhat dot com>
- To: Paul Schlie <schlie at comcast dot net>
- Cc: <gcc-patches at gcc dot gnu dot org>
- Date: Fri, 08 Apr 2005 17:38:16 +0100
- Subject: Re: Fix wrong-code bug caused by combine_simplify_rtx()
- References: <BE7C25AF.9BF4%schlie@comcast.net>
Paul Schlie <schlie@comcast.net> writes:
>> Anyway, combine misoptimises:
>>
>> int s;
>> ...
>> (signed char) (s - 100) - 5
>>
>> rewriting it into:
>>
>> (plus:SI (sign_extend:SI (subreg:QI (reg:SI s) 0))
>> (const_int -105))
>
> The following would have been optimally correct:
>
> (sign_ext:QI (plus:QI (subreg:QI (reg:SI s) 0)
> (const_int -105)))
No, it's not correct. Consider s == -28:
(signed char) (s - 100) - 5 == (signed char) -128 - 5 == -133
Your version would give 123.
Richard