diff options
author | Jan Hubicka <jh@suse.cz> | 2018-04-30 16:40:10 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2018-04-30 14:40:10 +0000 |
commit | b6e33d73d8aa1b7965d6b2bf08b5bbd673e63284 (patch) | |
tree | c0fe97d393dbf048a5c52b48b8a109e50d80dc35 /gcc/lto/lto-partition.c | |
parent | fee69672c29005d68d5cddff587c535b6a8c4982 (diff) | |
download | gcc-b6e33d73d8aa1b7965d6b2bf08b5bbd673e63284.zip gcc-b6e33d73d8aa1b7965d6b2bf08b5bbd673e63284.tar.gz gcc-b6e33d73d8aa1b7965d6b2bf08b5bbd673e63284.tar.bz2 |
lto-wrapper.c (ltrans_priorities): New static var.
* lto-wrapper.c (ltrans_priorities): New static var.
(cmp_priority): New.
(run_gcc): Read priorities and if doing parallel build order
the Makefile by them.
* lto.c (cmp_partitions_size): Remove.
(lto_wpa_write_files): Also output priorities; do not sort partitions.
(cmp_partition_order): Move to ...
* lto-partition.c (cmp_partition_order): ...
(lto_1_to_1_map): Sort partitions.
From-SVN: r259767
Diffstat (limited to 'gcc/lto/lto-partition.c')
-rw-r--r-- | gcc/lto/lto-partition.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/gcc/lto/lto-partition.c b/gcc/lto/lto-partition.c index 3efebe7..637e5e2 100644 --- a/gcc/lto/lto-partition.c +++ b/gcc/lto/lto-partition.c @@ -42,6 +42,24 @@ vec<ltrans_partition> ltrans_partitions; static void add_symbol_to_partition (ltrans_partition part, symtab_node *node); +/* Helper for qsort; compare partitions and return one with smaller order. */ + +static int +cmp_partitions_order (const void *a, const void *b) +{ + const struct ltrans_partition_def *pa + = *(struct ltrans_partition_def *const *)a; + const struct ltrans_partition_def *pb + = *(struct ltrans_partition_def *const *)b; + int ordera = -1, orderb = -1; + + if (lto_symtab_encoder_size (pa->encoder)) + ordera = lto_symtab_encoder_deref (pa->encoder, 0)->order; + if (lto_symtab_encoder_size (pb->encoder)) + orderb = lto_symtab_encoder_deref (pb->encoder, 0)->order; + return orderb - ordera; +} + /* Create new partition with name NAME. */ static ltrans_partition @@ -334,6 +352,9 @@ lto_1_to_1_map (void) if (!npartitions) new_partition ("empty"); + /* Order partitions by order of symbols because they are linked into binary + that way. */ + ltrans_partitions.qsort (cmp_partitions_order); } /* Maximal partitioning. Put every new symbol into new partition if possible. */ |