This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/51244] SH Target: Inefficient conditional branch
- From: "olegendo at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Fri, 09 Mar 2012 00:26:39 +0000
- Subject: [Bug target/51244] SH Target: Inefficient conditional branch
- Auto-submitted: auto-generated
- References: <bug-51244-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51244
Oleg Endo <olegendo at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Attachment #26853|0 |1
is obsolete| |
--- Comment #27 from Oleg Endo <olegendo at gcc dot gnu.org> 2012-03-09 00:26:39 UTC ---
Created attachment 26858
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=26858
Patch for the patch
> Old tests that failed, that have disappeared: (Eeek!)
>
> 22_locale/ctype/is/char/3.cc execution test
> 27_io/basic_filebuf/underflow/wchar_t/9178.cc execution test
> gfortran.dg/widechar_intrinsics_6.f90 -Os execution test
That was a feature ;)
> I've attached .s files against gfortran.dg/associated_4.f90 -O1 with
> patched/unpatched compilers.
I'm sorry, I got the definition of the negc opcode wrong in the movrt_negc
pattern. negc leaves the T bit always at '1' in this particular case, instead
of inverting the T bit. It is funny that in C/C++ code it was never actually
trying to re-use the T bit after the negc, but in Fortran it did. And that's
what went wrong.
I'm now testing the attached patch for C/C++ ...