On 4/10/12 9:32 AM, Jan Hubicka wrote:
Hi,
LTO partitioning logic is one of places that are really symmetric accross most 
types
of symbols; also the implementation is convoluted now by split in between lto.c 
that
computes cgraph/varpool node sets specifying partitions and lto-cgraph.c that
computes a boundaries (i.e. what functions/vars are referenced from given unit).
There is a lot of logic duplication in between the promotion done in lto.c and 
boundary
logic + there are subtle differences causing a lot of pain.

The plan is to reorg the code to new API and unify it, so the partitioning code
produce boundaries on the run and represents every of the partition by the 
encoder,
not by sets.

Excellent.

        * lto.c: Update copyright; remove params.h, ipa-inline.h
        and ipa-utils.h inlines; inline lto-partition.h
        (ltrans_partition_def, ltrans_partition, add_cgraph_node_to_partition,
        add_varpool_node_to_partition, new_partition, free_ltrans_partitions,
        add_references_to_partition, add_cgraph_node_to_partition_1,
        add_cgraph_node_to_partition, add_varpool_node_to_partition,
        undo_partition, partition_cgraph_node_p, partition_varpool_node_p,
        lto_1_to_1_map, node_cmp, varpool_node_cmp, lto_balanced_map,
        promote_var, promote_fn, lto_promote_cross_file_statics): move to...
        * lto-partition.c: ... here; new file.
        * lto-partition.h: New file.
        * Make-lang.in (lto.o): Update dependencies.
        (lto-partition.o): New.

OK, thanks.


Diego.

Reply via email to