<html>
<head>
<base href="https://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 - [Vplan] Wrong vec.phi generation"
href="https://bugs.llvm.org/show_bug.cgi?id=45958">45958</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>[Vplan] Wrong vec.phi generation
</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>normal
</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>jaykang10@gmail.com
</td>
</tr>
<tr>
<th>CC</th>
<td>htmldeveloper@gmail.com, llvm-bugs@lists.llvm.org
</td>
</tr></table>
<p>
<div>
<pre>Created <span class=""><a href="attachment.cgi?id=23497" name="attach_23497" title="Example">attachment 23497</a> <a href="attachment.cgi?id=23497&action=edit" title="Example">[details]</a></span>
Example
Let's see simple IR snippet after loop vectorization with VPlanNatviePath.
vector.body:
...
br label %for.body10.preheader67
for.body10.preheader67: ; preds =
%for.cond.cleanup972, %vector.body
%vec.phi = phi <4 x i64> [ zeroinitializer, %for.cond.cleanup972 ],
[ %8, %vector.body ]
...
for.cond.cleanup972: ; preds = %for.body1068
%8 = add nuw nsw <4 x i64> %vec.phi, <i64 1, i64 1, i64 1, i64 1>
...
br i1 %10, label %for.cond.cleanup373, label %for.body10.preheader67
As you can see, %vec.phi has wrong incoming basic blocks.
The problem comes from "InnerLoopVectorizer::fixNonInductionPHIs()".
This function has assumption about the order of predecessors as below.
// The predecessor order is preserved and we can rely on mapping between
// scalar and vector block predecessors.
for (unsigned i = 0; i < NumIncomingValues; ++i) {
The original phi's order of predecessors can be different with the new phi's
one.
I have attached the bitcode file. You can reproduce the error with below
command.
opt -enable-vplan-native-path -jump-threading -loop-vectorize ./input.jt.ll -S
-o -</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>