This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/20070] 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: 17 Nov 2006 18:58:25 -0000
- Subject: [Bug rtl-optimization/20070] If-conversion can't match equivalent code, and cross-jumping only works for literal matches
- References: <bug-20070-5394@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #27 from amylaar at gcc dot gnu dot org 2006-11-17 18:58 -------
We've been using this patch:
http://gcc.gnu.org/ml/gcc-patches/2006-02/msg01488.html
successfully in a 4.1.1 based compiler.
It is not optimal, though: the check for equality of the regsets in
struct_equiv_init is unnecessary, and it can also lead skipping possible
optimizations. The frequent live updates are also not necessary.
This optimization can work with register life info that is inexact, as long
as it is conservative, i.e. it may flag registers as live that are not, but
it most not pretend that live registers are dead.
Note also that re-integration of the if-conversion improvements was not
within the scope of this patch, i.e. this is still an outstanding issue.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20070