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....