[llvm] [GISel] Fix ShuffleVector assert (PR #139769)

Shilei Tian via llvm-commits llvm-commits at lists.llvm.org
Tue May 20 16:24:42 PDT 2025


================
@@ -420,8 +420,12 @@ void CombinerHelper::applyCombineShuffleToBuildVector(MachineInstr &MI) const {
     else
       Extracts.push_back(Unmerge2.getReg(Val - Width));
   }
-
-  Builder.buildBuildVector(MI.getOperand(0).getReg(), Extracts);
+  assert(Extracts.size() > 0 && "Expected at least one element in the shuffle");
+  if (Extracts.size() == 1) {
+    Builder.buildCopy(MI.getOperand(0).getReg(), Extracts[0]);
+  } else {
+    Builder.buildBuildVector(MI.getOperand(0).getReg(), Extracts);
+  }
----------------
shiltian wrote:

```suggestion
  if (Extracts.size() == 1)
    Builder.buildCopy(MI.getOperand(0).getReg(), Extracts[0]);
  else
    Builder.buildBuildVector(MI.getOperand(0).getReg(), Extracts);
```

https://github.com/llvm/llvm-project/pull/139769


More information about the llvm-commits mailing list