This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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 <> wrote:
Hey, if you're bored, there's plenty of fun bugs, especially any GC related
things... :).


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]