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: "law at redhat dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 28 Dec 2004 23:31:58 -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 law at redhat dot com 2004-12-28 23:31 -------
Yea, the code I've got lying around here to undo unprofitable const/copy
propagations definitely helps this code. And better yet, we don't need
the full-blown version (which is queued for 4.1). We can get by with the
very simplistic version. For the testcase in comment #8 we generate the
following .optimized dump:
# BLOCK 0
# PRED: ENTRY [100.0%] (fallthru,exec)
<L4>:;
# SUCC: 1 [100.0%] (fallthru,exec)
# BLOCK 1
# PRED: 0 [100.0%] (fallthru,exec) 1 [89.0%] (dfs_back,false,exec)
<L0>:;
temp1 = temp2 * xlvj_ - temp3 * zlvj_;
temp3 = temp2 * zlvj_ + temp3 * xlvj_;
temp2 = temp1;
if (temp3 != 0) goto <L2>; else goto <L0>;
# SUCC: 2 [11.0%] (loop_exit,true,exec) 1 [89.0%] (dfs_back,false,exec)
# BLOCK 2
# PRED: 1 [11.0%] (loop_exit,true,exec)
<L2>:;
return yv1j_ * yv2j_;
# SUCC: EXIT [100.0%]
}
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19038