Daniel Berlin wrote on 12/21/06 12:21:
for (i = 0; i < num_ssa_names; i++)
{
tree name = ssa_name (i);
if (name && !SSA_NAME_IN_FREELIST (name)
DFS (name)
>
I see that you are not checking for IS_EMPTY_STMT. Does DFS need to
access things like bb_for_stmt?
In any case, that is not important. I agree that every SSA name in the
SSA table needs to have a DEF_STMT that is either (a) an empty
statement, or, (b) a valid statement still present in the IL.
Note that this is orthogonal to the problem of whether we free up unused
names from this list. Every time a statement S disappears, we should
make sure that the names defined by S get their SSA_NAME_DEF_STMT set to
NOP.
Frankly, I'm a bit surprised that we are running into this. I'd like to
see a test case, if you have one.