<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 r334261, Assertion failed: ((VT.getVectorNumElements() + N2C->getZExtValue() <= N1.getValueType().getVectorNumElements()) && "Extract subvector overflow!"), function getNode, file lib/CodeGen/SelectionDAG/SelectionDAG.cpp, line 4682."
   href="https://bugs.llvm.org/show_bug.cgi?id=40181">40181</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>After r334261, Assertion failed: ((VT.getVectorNumElements() + N2C->getZExtValue() <= N1.getValueType().getVectorNumElements()) && "Extract subvector overflow!"), function getNode, file lib/CodeGen/SelectionDAG/SelectionDAG.cpp, line 4682.
          </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>All
          </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>See also: <a href="https://bugs.freebsd.org/234480">https://bugs.freebsd.org/234480</a>
and:  <a href="https://aomedia.googlesource.com/aom/+/aa7195d608e0%5E%21/">https://aomedia.googlesource.com/aom/+/aa7195d608e0%5E%21/</a>

After rL334261, which introduced the __builtin_ia32_vextractf128_si256
intrinsic, clang asserts on its use in Google's aomedia/aom:

Assertion failed: ((VT.getVectorNumElements() + N2C->getZExtValue() <=
N1.getValueType().getVectorNumElements()) && "Extract subvector overflow!"),
function getNode, file
/usr/src/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp, line 4708.

Program received signal SIGABRT, Aborted.
thr_kill () at thr_kill.S:3
3       thr_kill.S: No such file or directory.
(gdb) bt
#0  thr_kill () at thr_kill.S:3
#1  0x000000080467a304 in __raise (s=6) at /usr/src/lib/libc/gen/raise.c:52
#2  0x00000008045ebb19 in abort () at /usr/src/lib/libc/stdlib/abort.c:67
#3  0x00000008046683b1 in __assert (func=<optimized out>, file=<optimized out>,
line=<optimized out>, failedexpr=<optimized out>) at
/usr/src/lib/libc/gen/assert.c:51
#4  0x0000000003e30ad9 in getNode () at
/usr/src/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:4706
#5  0x0000000003d20e0d in MergeStoresOfConstantsOrVecElts () at
/usr/src/contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:13740
#6  0x0000000003d1e74a in MergeConsecutiveStores () at
/usr/src/contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:14272
#7  0x0000000003cf1bff in visitSTORE () at
/usr/src/contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:14779
#8  0x0000000003cb6c5f in visit () at
/usr/src/contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:1584
#9  0x0000000003cb03ea in combine () at
/usr/src/contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:1604
#10 0x0000000003caf2fc in Run () at
/usr/src/contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:1453
#11 Combine () at
/usr/src/contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:18683
#12 0x0000000003c7959a in CodeGenAndEmitDAG () at
/usr/src/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:750
#13 0x0000000003c77df7 in SelectAllBasicBlocks () at
/usr/src/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1733
#14 0x0000000003c746fb in runOnMachineFunction () at
/usr/src/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:469
#15 0x0000000002a7bda4 in runOnMachineFunction () at
/usr/src/contrib/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:176
#16 0x0000000003edb256 in runOnFunction () at
/usr/src/contrib/llvm/lib/CodeGen/MachineFunctionPass.cpp:61
#17 0x00000000039371ed in runOnFunction () at
/usr/src/contrib/llvm/lib/IR/LegacyPassManager.cpp:1586
#18 0x00000000039374c8 in runOnModule () at
/usr/src/contrib/llvm/lib/IR/LegacyPassManager.cpp:1609
#19 0x000000000393797b in runOnModule () at
/usr/src/contrib/llvm/lib/IR/LegacyPassManager.cpp:1669
#20 run () at /usr/src/contrib/llvm/lib/IR/LegacyPassManager.cpp:1774
#21 0x0000000001516185 in EmitAssembly () at
/usr/src/contrib/llvm/tools/clang/lib/CodeGen/BackendUtil.cpp:843
#22 EmitBackendOutput () at
/usr/src/contrib/llvm/tools/clang/lib/CodeGen/BackendUtil.cpp:1265
#23 0x00000000015108a0 in HandleTranslationUnit () at
/usr/src/contrib/llvm/tools/clang/lib/CodeGen/CodeGenAction.cpp:293
#24 0x0000000001fd9743 in ParseAST () at
/usr/src/contrib/llvm/tools/clang/lib/Parse/ParseAST.cpp:170
#25 0x000000000197414e in Execute () at
/usr/src/contrib/llvm/tools/clang/lib/Frontend/FrontendAction.cpp:910
#26 0x000000000286e441 in ExecuteAction () at
/usr/src/contrib/llvm/tools/clang/lib/Frontend/CompilerInstance.cpp:961
#27 0x00000000014ee67c in ExecuteCompilerInvocation () at
/usr/src/contrib/llvm/tools/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:257
#28 0x00000000014df896 in cc1_main () at
/usr/src/contrib/llvm/tools/clang/tools/driver/cc1_main.cpp:218
#29 0x00000000014ebeb2 in ExecuteCC1Tool () at
/usr/src/contrib/llvm/tools/clang/tools/driver/driver.cpp:310
#30 main () at /usr/src/contrib/llvm/tools/clang/tools/driver/driver.cpp:382

Minimized test case:

/* clang -cc1 -triple x86_64-- -S -target-feature +avx -O1
av1_fwd_txfm2d_avx2-min.c */
typedef long a __attribute__((__vector_size__(16)));
typedef long b __attribute__((__vector_size__(32)));
b c();
void d(a *e) {
  a f;
  b g = c();
  f = __builtin_shufflevector(g, g, 0, 1);
  e[2] = f;
  e[1] = __builtin_ia32_vextractf128_si256(g, 1);
}</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>