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. > 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. -- Rask Ingemann Lambertsen