On Jan 19, 2015, at 10:14 AM, Maxim Kuvyrkov <maxim.kuvyr...@linaro.org> wrote:
> On Jan 19, 2015, at 6:48 PM, Mike Stump <mikest...@comcast.net> wrote:
>> On Jan 19, 2015, at 5:41 AM, Maxim Kuvyrkov <maxim.kuvyr...@linaro.org> 
>> wrote:
>>> In A < B < C < A case all A, B and C are normal instructions.  It is a 
>>> pre-existing condition.  When compiling without debug information we have 
>>> ready list "A, B, C".  When compiling with debug information, we have ready 
>>> list "A, B, C, D" where "D" is DEBUG_INSN.  Because we now have 4 elements 
>>> to sort instead of 3, qsort can choose a different order of comparison 
>>> _among_ A, B and C.
>> 
>> Not when the uid is mixed in it cannot.  :-)
> 
> I think you are misunderstanding the issue.

If all the required elements are mixed into the comparison operator, then only 
1 ordering is possible, it is stable and reliable across machines, and that 
ordering is the same as the ordering that you would get of those instructions 
if other instructions were present or not, including by not limited to debug 
instructions.  In such a stable sort, it is not possible that the comparison 
order can ever matter, by definition.

I think you’re saying the ordering relation is screwed.  The solution I like, 
is to fix it.  Trying to hide a broken ordering relation with obscure code 
without fixing the underlying problem, strikes me as not the path forward.

Perplexed.

Reply via email to