alpha failure on 920810-1

Richard Henderson rth@cygnus.com
Wed Apr 29 02:20:00 GMT 1998


On Tue, Apr 28, 1998 at 09:30:43PM -0700, Jim Wilson wrote:
> I suspect that there are no currently supported machines for which your
> get_condition change is wrong, but there may be future architectures for
> which is it wrong.

Actually, part of the comment was _defining_ FPmode+VOIDmode to act a 
that way.  That future architecture might use FPmode+FPmode for that.

Sigh.  It wasn't such a good idea, I guess.

> Adding a strategic unspec operation could fix the problem, at the expense
> of uglifying the alpha.md file a bit, and perhaps losing some optimizations.
> It is likely a simpler solution though.

Hum.  I suppose 

	(set (reg:DF 1)
	  (eq:DF (reg:DF 2) (reg:DF 3)))
	(set (reg:DF 4)
	  (if_then_else:DF (eq (unspec [(reg:DF 1)] 9)
			       (const_double 0))
			   (reg:DF 5)
			   (reg:DF 4)))

would work.  It would still allow the sense of the comparisons to be
switched while disallowing their combination.  It doesn't strike me
as particularly nice, though.

As for combine, I think it needs fixing for other reasons -- Sparc v9
is failing the same test because of the same type of problem, that is,
the entire function being optimized away.  But it is doing it in a way
different from what was happening on Alpha -- I havn't examined it in
detail yet.

So you think changing get_condition and possibly combine is the wrong
approach, eh?  Well, I guess I'll figure something out...


r~



More information about the Gcc mailing list