On 02/07/2018 09:58 AM, Franz Sirl wrote:
Hi,
this is the result of an attempt to minimize the differences between the
compile results of a Linux-based and a Cygwin64-based powerpc-eabi cross
toolchain.
The method used was:
- find the -fverbose-asm assembler files that differ
- compile that file again on both platforms with
-O2 -g3 -fdump-tree-all-all -fdump-rtl-all -fdump-noaddr
- look for the first dump file with differences and check that pass
for qsort's
- stabilize the compare functions
With some help on IRC to better understand the passes and some serious
debugging of GCC I came up with this patch. On the tested codebase the
differences in the assembler sources are now down to 0.
If the various pass maintainers have better ideas on how to stabilize
the compare functions, I'll be happy to verify them on the codebase.
For the SRA patch I already have an alternate version with an additional
ID member.
Comments?
Bootstrapped on linux-x86_64, no testsuite regressions.
Franz Sirl
2018-02-07 Franz Sirl <franz.sirl-kernel@lauterbach.com>
* ira-build.c (object_range_compare_func): Stabilize sort.
* tree-sra.c (compare_access_positions): Likewise.
* varasm.c (output_object_block_compare): Likewise.
* tree-ssa-loop-ivopts.c (group_compare_offset): Likewise.
(struct iv_common_cand): New member.
(record_common_cand): Initialize new member.
(common_cand_cmp): Use new member to stabilize sort.
* tree-vrp.c (struct assert_locus): New member.
(register_new_assert_for): Initialize new member.
(compare_assert_loc): Use new member to stabilize sort.
This looks pretty reasonable. I don't think you've contributed much
recently, do you still have write access to the repository?