This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/20070] New: If-conversion can't match equivalent code, and cross-jumping only works for literal matches
- From: "amylaar at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 19 Feb 2005 03:29:04 -0000
- Subject: [Bug rtl-optimization/20070] New: If-conversion can't match equivalent code, and cross-jumping only works for literal matches
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
If-conversion currently lacks the ability to merge two
basic blocks that are identical except for an input register
that can be set up using a conditional move, and possibly some
different local registers.
Cross-jumping lacks the ability to recognize that two blocks are
equivalent when there are different local registers, and (for -Os)
to find opportunities where setting up input registers will allow
to do cross jumping.
The problem has been discussed here:
http://gcc.gnu.org/ml/gcc-patches/2004-01/msg03281.html
http://gcc.gnu.org/ml/gcc-patches/2005-01/msg00672.html
A patch against 4.0 20050218 has been posted here:
http://gcc.gnu.org/ml/gcc-patches/2005-02/msg01066.html
--
Summary: If-conversion can't match equivalent code, and cross-
jumping only works for literal matches
Product: gcc
Version: 3.3
Status: UNCONFIRMED
Keywords: missed-optimization, patch
Severity: enhancement
Priority: P2
Component: rtl-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: amylaar at gcc dot gnu dot org
CC: gcc-bugs at gcc dot gnu dot org
OtherBugsDependingO 17652
nThis:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20070