This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/42108] [4.4/4.5 Regression] 50% performance regression
- From: "rguenth at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 18 Dec 2009 23:44:07 -0000
- Subject: [Bug tree-optimization/42108] [4.4/4.5 Regression] 50% performance regression
- References: <bug-42108-9410@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #41 from rguenth at gcc dot gnu dot org 2009-12-18 23:44 -------
Indeed. The PRE issue could be fixed by fixing PR38819 not in the way it is
done now but "properly" detect the invalid situations during ANTIC computation
and simply never mark trapping expressions so. At the current point its
hard to tell if the insertion is valid because the original expression is
always executed if the insertion point is - simply because we no longer
know where the original expression was.
Thus, the "proper" place (err, I think at least) is during translating
ANTIC_OUT through the basic-block to ANTIC_IN (thus, in clean()). It
might be a bit expensive, though pre-computing if a basic-block possibly
exits the CFG could speed this up significantly. Another "proper" place
would be to add fake edges to exit for each such point in the CFG
(basically split blocks at each possibly noreturn call and add an edge
to exit). But that might be even more expensive.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42108