[store-merging] Use store order as tie-breaker in sort_by_bitpos
As Alexander pointed out in the thread starting at [1] the sort_by_bitpos sorting function was behaving badly when we had multiple stores at the same position. He fixed that (thanks!) but we can do better by not returning zero when the bitpositions are equal but by falling back to comparing the order the stores appear in, which is guaranteed to be unique (barring other bugs elsewhere). This patch does that. Bootstrapped and tested on aarch64-none-linux-gnu. [1] https://gcc.gnu.org/ml/gcc-patches/2017-07/msg00895.html * gimple-ssa-store-merging.c (sort_by_bitpos): Compare store order when bitposition is the same. From-SVN: r252084
This commit is contained in:
parent
7dbe3736d5
commit
0f0027d163
2 changed files with 8 additions and 1 deletions
|
@ -1,3 +1,8 @@
|
|||
2017-09-13 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
|
||||
|
||||
* gimple-ssa-store-merging.c (sort_by_bitpos): Compare store order
|
||||
when bitposition is the same.
|
||||
|
||||
2017-09-13 Richard Biener <rguenther@suse.de>
|
||||
|
||||
* dwarf2out.c (output_die_symbol): Remove.
|
||||
|
|
|
@ -521,7 +521,9 @@ sort_by_bitpos (const void *x, const void *y)
|
|||
else if ((*tmp)->bitpos > (*tmp2)->bitpos)
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
/* If they are the same let's use the order which is guaranteed to
|
||||
be different. */
|
||||
return (*tmp)->order - (*tmp2)->order;
|
||||
}
|
||||
|
||||
/* Sorting function for store_immediate_info objects.
|
||||
|
|
Loading…
Add table
Reference in a new issue