This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: fold_truthop patch causes sparcv9 testsuite regressions


   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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]