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