On Fri, Jul 14, 2017 at 8:45 AM, Yuri Gribov <tetra2...@gmail.com> wrote: > FWIW I've done a quick analysis of recent gcc source code using > https://github.com/yugr/sortcheck and found lots of comparison > functions which can return 0 for different objects. > > All these may cause arrays to be sorted differently on different > platforms but it's not immediately clear whether this may cause actual > difference in generated code. > > Here's a list for cc1 (I can analyze other executables e.g. generators > and cc1plus if needed).
Looked at generators, we have three comparison routines which return 0 for different objects but all seem to be safe i.e. can't influence code generated by GCC. alt_state_cmp (genautomata.c) - intentional, duplicates are removed afterwards. optab_rcode_cmp (genopinit.c) - compares objects with rcode == UNKNOWN as equal but that's fine as later codes treats them in the same way (sets their code_to_optab_ table to unknown_optab). subroutine_candidate_cmp (genrecog.c) - this compares function candidates with same number of statements in them as equal. This may cause different split of state recognition code to recog_%d subroutines but should not change semantics of code as a whole. -Y