<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 - After r359095, Assertion failed: ((HOp.getValueType() == MVT::v2f64 || HOp.getValueType() == MVT::v4f64) && HOp.getValueType() == VT && "Unexpected type for h-op"), function foldShuffleOfHorizOp"
href="https://bugs.llvm.org/show_bug.cgi?id=43402">43402</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>After r359095, Assertion failed: ((HOp.getValueType() == MVT::v2f64 || HOp.getValueType() == MVT::v4f64) && HOp.getValueType() == VT && "Unexpected type for h-op"), function foldShuffleOfHorizOp
</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>Windows NT
</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>dimitry@andric.com
</td>
</tr>
<tr>
<th>CC</th>
<td>htmldeveloper@gmail.com, llvm-bugs@lists.llvm.org
</td>
</tr></table>
<p>
<div>
<pre>As reported in <a href="https://bugs.freebsd.org/240759">https://bugs.freebsd.org/240759</a>, after
<a href="https://reviews.llvm.org/rL359095">https://reviews.llvm.org/rL359095</a> ("[x86] make sure horizontal op and broadcast
types match to simplify (<a class="bz_bug_link
bz_status_RESOLVED bz_closed"
title="RESOLVED FIXED - Cannot emit physreg copy instruction after r357703"
href="show_bug.cgi?id=41414">bug 41414</a>)"), self-hosting llvm 9.0.0 for i386 results
in:
Assertion failed: ((HOp.getValueType() == MVT::v2f64 || HOp.getValueType() ==
MVT::v4f64) && HOp.getValueType() == VT && "Unexpected type for h-op"),
function foldShuffleOfHorizOp, file
/home/dim/src/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp, line 32854.
Stack dump:
0. Program arguments: /home/dim/ins/llvm-trunk-r359095/bin/clang -cc1
-triple i386-- -S -target-cpu haswell -O1 -vectorize-slp xray-account-min.cpp
1. <eof> parser at end of file
2. Code generation
3. Running pass 'Function Pass Manager' on module 'xray-account-min.cpp'.
4. Running pass 'X86 DAG->DAG Instruction Selection' on function
'@"_ZNK1c1fIZNKS_1dERK1aE3$_0EEvS3_T_"'
0 clang 0x00000000028bfce8
llvm::sys::PrintStackTrace(llvm::raw_ostream&) + 40
1 clang 0x00000000028bdbf8 llvm::sys::RunSignalHandlers() + 248
2 clang 0x00000000028c0578
llvm::sys::PrintStackTraceOnErrorSignal(llvm::StringRef, bool) + 1256
3 libthr.so.3 0x00000008044dc430 _pthread_sigmask + 1328
Abort trap
Before this change, the assertion was different, and corresponds to what
appears to have been fixed for <a class="bz_bug_link
bz_status_RESOLVED bz_closed"
title="RESOLVED FIXED - Cannot emit physreg copy instruction after r357703"
href="show_bug.cgi?id=41414">bug 41414</a>:
Assertion failed: ((!From->hasAnyUseOfValue(i) || From->getValueType(i) ==
To->getValueType(i)) && "Cannot use this version of ReplaceAllUsesWith!"),
function ReplaceAllUsesWith, file
/home/dim/src/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp, line 8144.
Stack dump:
0. Program arguments: /home/dim/ins/llvm-trunk-r359094/bin/clang -cc1
-triple i386-- -S -target-cpu haswell -O1 -vectorize-slp xray-account-min.cpp
1. <eof> parser at end of file
2. Code generation
3. Running pass 'Function Pass Manager' on module 'xray-account-min.cpp'.
4. Running pass 'X86 DAG->DAG Instruction Selection' on function
'@"_ZNK1c1fIZNKS_1dERK1aE3$_0EEvS3_T_"'
0 clang 0x00000000028bfbd8
llvm::sys::PrintStackTrace(llvm::raw_ostream&) + 40
1 clang 0x00000000028bdae8 llvm::sys::RunSignalHandlers() + 248
2 clang 0x00000000028c0468
llvm::sys::PrintStackTraceOnErrorSignal(llvm::StringRef, bool) + 1256
3 libthr.so.3 0x00000008044db430 _pthread_sigmask + 1328
Abort trap
Minimized test case:
// clang -cc1 -triple i386-- -S -target-cpu haswell -O1 -vectorize-slp
xray-account-min.cpp
struct a {
unsigned long long b;
};
struct c {
void d(const a &) const;
template <class e> void f(const a &, e) const;
double g;
double h;
double i;
double j;
} k;
template <class e> void c::f(const a &l, e) const {
auto &m = k;
m.g /= l.b;
m.h /= l.b;
m.i /= l.b;
m.j /= l.b;
}
void c::d(const a &l) const {
f(l, [] {});
}</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>