Hi Andrew,
> well, there isnt a tree_statement_list_node right... DOM simply has an
> expression, and we end up calling create_stmt_ann. I guess you would
> have to create a completely detached stmt_list node for this case. what
> are you planning to have create_stmt_ann do?
I am thinking about leaving create_stmt_ann as is just for
create_ssa_artficial_load_stmt. Other than that, I don't want to call
create_stmt_ann. I am planning to allocate stmt_ann as a part of
tree_statement_list_node. That is, if I have this
struct tree_statement_list_node
GTY ((chain_next ("%h.next"), chain_prev ("%h.prev")))
{
struct tree_statement_list_node *prev;
struct tree_statement_list_node *next;
tree stmt;
struct stmt_ann_d ann;
};
then tsi_link_after and tsi_link_before would allocate the right
amount of memory because they have
head = ggc_alloc (sizeof (*head));
where head is a a pointer to tree_statement_list_node. I still have
to initialize members of stmt_ann_d. I believe all I have to do is
memset (ann, 0, sizeof (ann));
ann.common.type = STMT_ANN;
ann.modified = true;
> I eventually want to see this entire routine go away. The only reason
> DOM wants it is so that it can scan the operands like it does for a real
> stmt. noone else needs to do such a thing.. Presumably the overhead of
> actually inserting these loads immediately after the store and deleting
> them later is too high... Ive never looked at the details of what DOM
> does with the info. if it only needs the operands for a short time, a
> different interface could be provided which returns the operands in a
> VEC or something. I just never felt like looking at DOM too heavily.
I guess we can come back to this once stmt_ann is merged into
tree_statement_list_node. I don't feel like mixing infrastructure
work and optimizer work.
By the way, I just realized you were planning to do "New SSA Operand
Cache Implementation" in stage 2, which is starting tomorrow. Would I
be stepping on your toes? I am not planning to change the members of
stmt_ann, so hopefully my work won't interfere with yours, but if it
does, please let me know.
Kazu Hirata