This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [tuples] gimple-tuples-branch created
Hi aldy,
I tracked down what appears to be your most significant GC issue.
You claim, in tree_node_structure, that a tcc_gimple_stmt has a tag of TS_EXPR.
This causes gc to mark it as if it contained the struct tree_exp field
of the tree union.
This is wrong.
You can't have these be both trees and not trees.
Anywhere else that is currently pointing to gimple_modify_expr's
through type "tree" will cause you a similar issue.
In this case, it is the STATEMENT_LIST node (struct
tree_statement_list) that is pointing to a gimple_stmt through a tree.
*This* GC issue can be fixed by making statement_list have struct
gimple_stmt * type.
It appears GENERIC uses this as well.
There are a couple options here
You can unionize the "tree stmt" field in "struct tree_statement_list"
and tag it for GC purposes, and make all the gimple users of
statement_list access the "struct gimple_stmt *" member of the union,
and all the other members use the "tree" member of the union.
You can make a GIMPLE_STATEMENT_LIST tree with only the struct
gimple_stmt * member, and make the gimplifier create those, and change
the small amount of code that knows about them to use it.
Anyway, this should fix the most massive GC issue i see.
On 9/6/06, Aldy Hernandez <aldyh@redhat.com> wrote:
Hey, if you're bored, there's plenty of fun bugs, especially any GC related
things... :).
Aldy