Adam Nemet wrote:
Now if I am correct and this last thing is really a bug then the
obvious question is whether it has anything to do with the more
restrictive form for conditional branches on MIPS64? And of course if
I fix it then whether it would be OK to lift the mode restrictions in
the conditional branch patterns.
Yes, the last bit looks like it could be a bug; a missing use of
TRULY_NOOP_TRUNCATION somewhere.
This isn't directly related to the current situation though. The MIPS
port was converted from using CC0 to using a register for condition
codes on April 27, 1992. The mistaken use of modes in branch tests
occured at that time. This happened between the gcc-2.1 and gcc-2.2
releases. This was long before the 64-bit support was added. When the
64-bit support was added later, the mistaken branch modes were expanded
to include SImode and DImode variants. Since this occured long ago, it
would be difficult to determine exactly why it was done this way. It
was perhaps just done that way because it looked obviously correct.
Yes, it looks like fixing the combiner problem would make it possible to
remove the mistaken mode checks.
--
Jim Wilson, GNU Tools Support, http://www.specifix.com