> We do not yet seem to have consensus on a long term plan.
> Would it be reasonable to start on short term prepatory work?
> 
> In particular, I was think we could do
> 
>    Add converters and testers.
>    Change callers to use those.
> 
> and maybe
> 
>    Change callers to use type-safe parameters.
> 
> Where those mean what I earlier stated.
> 
> Comments?

Yes, it seems sane.
> 
> CONVERTERS AND TESTERS ###########################################
> 
> add
>     symtab_node_base &symtab_node_def::ref_symbol()
>       { return symbol; }
>     symtab_node_base &cgraph_node::ref_symbol()
>       { return symbol; }
>     symtab_node_base &varpool_node::ref_symbol()
>       { return symbol; }
> 
> change
>     node->symbol.whatever
> to
>     node->ref_symbol().whatever

I still do not gather why simple inheritance can't let me to write
node->whatever again...

If that is GTY limitation, I have no problem having this in short term and
update it later.  symbol_node is really base of functions/variables and new
beasts we are going to get soon.
I implemented it as union only to make GTY happy.
> 
> ----
> 
> should not need to add these
> 
>     cgraph_node &symtab_node_def::ref_cgraph()
>       { gcc_assert (symbol.type == SYMTAB_FUNCTION);

I think checking_assert is enough in these cases. We are getting more
conversions back and forth and we don't really want to have asserts all around
code.

>         return x_function; }
>     varpool_node &symtab_node_def::ref_varpool()
>       { gcc_assert (symbol.type == SYMTAB_VARIABLE);
>         return x_variable; }
> 
> ----
> 
> add
>     symtab_node_base *symtab_node_def::try_symbol()
>       { return &symbol; }
>     cgraph_node *symtab_node_def::try_cgraph()
>       { return symbol.type == SYMTAB_FUNCTION ? &x_function : NULL; }
>     varpool_node *symtab_node_def::try_varpool()
>       { return symbol.type == SYMTAB_VARIABLE ? &x_variable : NULL; }

I think try_function/try_variable reads better than cgraph/varpool especially 
with the
longer term plan to drop these names when cgraph/varpool no longer exists and 
we have
symbol table.

Honza

Reply via email to