<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/55283>55283</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
SCEV behaves differently between clang-hosted and gcc-hosted
</td>
</tr>
<tr>
<th>Labels</th>
<td>
SCEV
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
chapuni
</td>
</tr>
</table>
<pre>
Due to evaluation order in function args.
For example to fix my issue. see; https://github.com/llvm/llvm-project/blob/1f9140064dfbfb0bbda8e51306ea51080b2f7aac/llvm/lib/Analysis/ScalarEvolution.cpp#L14283
Most of differences would not be observable without debug messages, but I have seen difference of object emission in x86-64 regalloc, LoopStrengthReduce.
I will try to make minimal testcase, if required.
Besides of the expression above, I saw bunch of implementation-dependent evaluation order around SCEV.
I will check up and report them when I have time.
They should be serialized not to affected by evaluation order, at least in C++14.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyVU8tunTAQ_RrYWEHmecmCRZ5SpHTTVN2P7QHcGEz9uDe3X98xSdtEWRUhzNjMzDlnDsKq83AbkQXL8AgmQtB2ZdYpdEyvbIyr3HfATb7I-G3Gr16f99YxfIFlM3vyqF_Ycmba-4gF84hZfc3mEDaf1VdZdU_3pMMcRSHtQoExxz_LxebsD5SBQmGsoKUcL8uG865RoxgFF0JBj21Z8w6hLXnPRTUeAOS7OjrlXa1gzl57en2SYMDdHa2JCX8hty2r6seyqfr6PY0v1gdmR6b0OKLDVaJnJxuNYqsNTCCzwqM7giCaJyJgY2AKRZzYgt7DhNTshgnafWAzHDFRX99VS7WtSPQYLqRO0pJ0fem7i65hDicwxspU49Ha7SlQ0hTmr6iixDe9H6ixMSy4cxJ6gWdki171ArSHPkjwmPL1SOV-Ru1QfRjUNXqtiBUBCTPSzDaHrzhA2OOe-sA8nIjEKuf0mU5DXXANuxkuFG64Kgo_OwScjatiTzd33z-ClTPKZxY3BnTscLMupO4LO80kz5tUQS_4Aeq3Gc_Mz7v8IknpNBj9C1-HQeSBZJWBYnH-BCYRgcAMAk2UJL7Jqmu6y6bI1VCry_oS8qCDwSHBpfoJg_87qmDOtBdOaXzSwDpdzGQNapUYTFK-hXl0ZvhvX--_RbJl25L_8nkAVR4OWJc9jh3UPYxwaMqm61RLzuZS5AYEGj9kLXGoEmBasvY210PFq4q3vCUr01W0UhxQYt93_CA48qzhuIA2RYJQWDflbtjRkGc9HRrtg_93CGSFaUXcO1F9iORxN8gZtrjqfAc-7Kh_A2ALZKA">