On 09 August 2007 13:25, Rask Ingemann Lambertsen wrote:

> On Fri, Aug 03, 2007 at 03:49:32PM +0100, Dave Korn wrote:
>> 
>>   Yes, absolutely so, we already know that there are problems there.  For
>> references, see the threads "Deep CSE bug!"[*] and "Bogus REG_EQUIV note
>> generation"[**] (subject line was wrong, should have been REG_EQUAL all
>> along) from June last year, where we got some way into analysing the
>> problem.  I /think/ that the presence of REG_RETVAL in this particular
>> case is only tangential to the problem; from what I remember of the
>> discussion, this is just about Gcc incorrectly handling reg notes when it
>> decomposes multi-word-size-mode moves into individual word-sized moves.
> 
>    All examples so far have had CONST_DOUBLE in the REG_EQUAL note.

  Yes, and?  I don't see what you're getting at here.

>>   Pranav, although there is indeed a bug in the mid-end here, from your
>> point of view the simple and effective workaround should be to implement a
>> movdi pattern (and movsf and movdf if you don't have them yet: it's an
>> absolute requirement to implement movMM for any modes you expect your
>> machine to handle) in the backend.
> 
>    If you look at the ia16 back end I posted, you'll notice that it only
> implements movXX for modes of 16 bits or less and AFAIK does not suffer from
> the CSE bug.

  It maybe latent for other reasons, or you may not have triggered it yet, but
I wonder what kind of REG_EQUAL notes do you get when you start passing 32-
(or even 64-) bit values around in 16-bit registers?



    cheers,
      DaveK
-- 
Can't think of a witty .sigline today....

Reply via email to