This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/19038] [4.0 Regression] out-of ssa causing loops to have more than one BB
- From: "dberlin at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 26 Dec 2004 01:09:46 -0000
- Subject: [Bug tree-optimization/19038] [4.0 Regression] out-of ssa causing loops to have more than one BB
- References: <20041216155140.19038.dje@gcc.gnu.org>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From dberlin at gcc dot gnu dot org 2004-12-26 01:09 -------
Just to followup on irc discussions.
Being able to coalesce this may require moving to a different out-of-ssa
algorithm that is better at coalescing.
All of the below take different approaches to the coalescing problem, however,
they may provide some insight as to whether/how these two variables can be
coalesced.
The briggs one (which is what morgan is based on, which is what the comments
claim is used) is known not to coalesce a significant number of variables.
A comparison of the two major algorithms for out-of-ssa (briggs and sreedhar's)
can be found at
http://www.is.titech.ac.jp/~sassa/papers-written/sassa-kohama-ito-ipsi04.pdf
Sreedhar's removes roughly 80% more copies than brigg's algorithm.
Note that the authors propose their own algorithm, even though it does
significantly worse than sreedhars, so i don't consider it a serious contender here.
Sreedhar's can be found at http://tinyurl.com/5axtl
i have a copy of the paper if you have no access.
In addition, yet another different approach to out-of-ssa coalescing was
presented at cgo 2004.
http://www.cgo.org/cgo2004/papers/21_14_rastello_f_revised.pdf
I mention it because it supposedly can coalesce even more than sreedhar's
algorithm is able to.
I point these out only as references to hopefully be able coalesce these variables.
I don't believe totally rewriting out-of-ssa would be apropos for 4.0 unless the
new algorithm is significantly simpler, etc (maybe one of the above would be, i
don't know).
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19038