fold_truthop patch causes sparcv9 testsuite regressions
David S. Miller
davem@redhat.com
Sat Jun 22 05:11:00 GMT 2002
From: Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
Date: Fri, 21 Jun 2002 15:28:54 +0200 (MEST)
this patch
http://gcc.gnu.org/ml/gcc-patches/2002-05/msg01465.html
2002-06-01 Roger Sayle <roger@eyesopen.com>
* fold-const.c (fold_truthop): Transform "a || b" into "(a|b) != 0"
and "!p && !q" into "(p|q) == 0" under suitable conditions.
causes the sparc-sun-solaris2.8 -m64 (i.e. sparcv9) testsuite regressions
described in
http://gcc.gnu.org/ml/gcc-bugs/2002-06/msg00602.html
Thanks for tracking this down Rainer. I don't think Roger's patch can
be blamed for the failure though.
Rather, I think for some reason the backend (when sparcv9/-m64) is
illegally generating libcalls for remainder operations. It should
never do this, it should always use the hardware instructions.
It could be due to bad instruction matching tests in sparc.md, which
results in the compiler thinking that certain kinds of remainder
operations cannot be done in hardware need a libcall. I haven't
looked deeply into this, but since there is a bugzilla entry open it
can get tracked.
More information about the Gcc-bugs
mailing list