This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: fold_truthop patch causes sparcv9 testsuite regressions
- From: "David S. Miller" <davem at redhat dot com>
- To: ro at TechFak dot Uni-Bielefeld dot DE
- Cc: roger at eyesopen dot com, gcc-bugs at gcc dot gnu dot org
- Date: Fri, 21 Jun 2002 22:11:51 -0700 (PDT)
- Subject: Re: fold_truthop patch causes sparcv9 testsuite regressions
- References: <15635.10774.656638.870969@xayide.TechFak.Uni-Bielefeld.DE>
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.