powerpc compare_and_swap fails

David Edelsohn dje.gcc@gmail.com
Fri Nov 18 09:27:00 GMT 2011


On Thu, Nov 17, 2011 at 3:25 PM, Richard Henderson <rth@redhat.com> wrote:
> On 11/17/2011 12:37 AM, Alan Modra wrote:
>> -      oldval = convert_modes (SImode, mode, oldval, 1);
>> +      oldval = gen_reg_rtx (SImode);
>> +      convert_move (oldval, orig, 1);
>>        oldval = expand_simple_binop (SImode, ASHIFT, oldval, shift,
>>                                   oldval, 1, OPTAB_LIB_WIDEN);
>
> Gah.  From convert_modes, oldval is a subreg, and modifying that
> subreg gets us into all sorts of trouble.  The fix should be as
> simple as
>
> -                                   oldval, 1, OPTAB_LIB_WIDEN);
> +                                   NULL_RTX, 1, OPTAB_LIB_WIDEN);
>
> so that we don't write back into the subreg.

Richard,

Are you going to test and apply the fix or do you want Alan and I to do it?

Thanks, David



More information about the Gcc mailing list