<html>
<head>
<base href="http://bugs.llvm.org/">
</head>
<body><table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Bug ID</th>
<td><a class="bz_bug_link
bz_status_NEW "
title="NEW - SmallPtrSet usage in SROA could introduce non-determinism in Clang"
href="http://bugs.llvm.org/show_bug.cgi?id=32829">32829</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>SmallPtrSet usage in SROA could introduce non-determinism in Clang
</td>
</tr>
<tr>
<th>Product</th>
<td>new-bugs
</td>
</tr>
<tr>
<th>Version</th>
<td>trunk
</td>
</tr>
<tr>
<th>Hardware</th>
<td>PC
</td>
</tr>
<tr>
<th>OS</th>
<td>Linux
</td>
</tr>
<tr>
<th>Status</th>
<td>NEW
</td>
</tr>
<tr>
<th>Severity</th>
<td>enhancement
</td>
</tr>
<tr>
<th>Priority</th>
<td>P
</td>
</tr>
<tr>
<th>Component</th>
<td>new bugs
</td>
</tr>
<tr>
<th>Assignee</th>
<td>unassignedbugs@nondot.org
</td>
</tr>
<tr>
<th>Reporter</th>
<td>gkistanova@gmail.com
</td>
</tr>
<tr>
<th>CC</th>
<td>llvm-bugs@lists.llvm.org
</td>
</tr></table>
<p>
<div>
<pre>SROA uses a SmallPtrSet for holding speculated SelectInst items.
In lib/Transforms/Scalar/SROA.cpp
SmallPtrSet<SelectInst *, 8> SelectUsers;
The result depends on a particular order in which the items get iterated from
that set.
This works fine while that SmallPtrSet object remains small. However, if it
grows, the addresses get changed, and the iteration order gets
nondeterministic.
The issue could be exposed, for example, by nondeterministic
".sroa.speculated<changing-number>" names in IR.
The same might apply to SmallPtrSet<PHINode *, 8> PHIUsers; as well.</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are on the CC list for the bug.</li>
</ul>
</body>
</html>