On Tue, 2003-06-10 at 19:08, Daniel Berlin wrote:
Updates for PRE make it do the right thing in more cases, and faster.
Also added a bit more dump info.
Eventually, we should be able to get the temporary without ever
needing to
call get_reaching_def.
It'll mean i have to look more at open64's injury/repair stuff for
strength reduction, in order to get the temporary right for those
cases.
I now get stopped in the bootstrap here:
c-parse.c: In function `yyparse':
c-parse.c:5421: internal compiler error: in coalesce_ssa_name, at
tree-ssa.c:1350
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
Andrew, this is *with* your phi updating patch. Without it, we get
the phi
node abort we discussed before the weekend. I'll note that this
file/function is the first file that requires splitting an edge to do
an
insertion where it has to update the phi's, and the location of the
abort
gives me the feeling something else needs to be updated (maybe
dominator
children or something? I haven't looked).
SO when you split an edge, the current routines will take care of
adjusting existing PHI's. What they dont do is take care of any new
PHI's you are adding.
The failure here is because you inserted a stmt on the edge from the
IF
to the next stmt. There was no else caluse, so the insert routines
placed your stmt in the else clause of the IF stmt:
else
{
# BLOCK 1730. PRED: 748. SUCC: 754.
pretmp.1473_8344 = yyvsp_27 + -4B <<--
Inserted stmt
};
# BLOCK 754 (pre.i:18276). PRED: 1730 753 749. SUCC: 1681.
# pretmp.1473_8320 = PHI <pretmp.1473_8344(748),
pretmp.1473_8360(749), pretmp.1473_8360(753)>;
But the PHI you created still uses the original basic block of the IF
(Ie, the PRED of the else block.).