Commit 0f0027d1 by Kyrylo Tkachov Committed by Kyrylo Tkachov

[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
parent 7dbe3736
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> 2017-09-13 Richard Biener <rguenther@suse.de>
* dwarf2out.c (output_die_symbol): Remove. * dwarf2out.c (output_die_symbol): Remove.
......
...@@ -521,7 +521,9 @@ sort_by_bitpos (const void *x, const void *y) ...@@ -521,7 +521,9 @@ sort_by_bitpos (const void *x, const void *y)
else if ((*tmp)->bitpos > (*tmp2)->bitpos) else if ((*tmp)->bitpos > (*tmp2)->bitpos)
return 1; return 1;
else 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. /* Sorting function for store_immediate_info objects.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment