[PATCH] D64010: GlobalISel: Verify G_MERGE_VALUES operand sizes

Matt Arsenault via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Jul 1 07:52:48 PDT 2019


arsenm created this revision.
arsenm added reviewers: aemerson, aditya_nandakumar, paquette.
Herald added subscribers: Petar.Avramovic, kristof.beyls, rovka, wdng.

https://reviews.llvm.org/D64010

Files:
  lib/CodeGen/MachineVerifier.cpp
  test/MachineVerifier/test_g_merge_values.mir


Index: test/MachineVerifier/test_g_merge_values.mir
===================================================================
--- /dev/null
+++ test/MachineVerifier/test_g_merge_values.mir
@@ -0,0 +1,23 @@
+# RUN: not llc -o - -march=arm64 -run-pass=none -verify-machineinstrs %s 2>&1 | FileCheck %s
+# REQUIRES: aarch64-registered-target
+---
+name:            g_merge_values
+tracksRegLiveness: true
+liveins:
+body:             |
+  bb.0:
+    %0:_(s32) = IMPLICIT_DEF
+    %1:_(s32) = IMPLICIT_DEF
+    %2:_(<2 x s32>) = IMPLICIT_DEF
+    %3:_(<2 x s32>) = IMPLICIT_DEF
+
+    ; CHECK: Bad machine code: G_MERGE_VALUES cannot operate on vectors
+    %4:_(<4 x s32>) = G_MERGE_VALUES %2, %3
+
+    ; CHECK: Bad machine code: G_MERGE_VALUES result size is inconsistent
+    %5:_(s64) = G_MERGE_VALUES %0
+
+    ; CHECK: Bad machine code: G_MERGE_VALUES result size is inconsistent
+    %6:_(s64) = G_MERGE_VALUES %0, %1, %1
+
+...
Index: lib/CodeGen/MachineVerifier.cpp
===================================================================
--- lib/CodeGen/MachineVerifier.cpp
+++ lib/CodeGen/MachineVerifier.cpp
@@ -1176,6 +1176,10 @@
     LLT SrcTy = MRI->getType(MI->getOperand(1).getReg());
     if (DstTy.isVector() || SrcTy.isVector())
       report("G_MERGE_VALUES cannot operate on vectors", MI);
+
+    if (DstTy.getSizeInBits() !=
+        SrcTy.getSizeInBits() * (MI->getNumOperands() - 1))
+      report("G_MERGE_VALUES result size is inconsistent", MI);
     break;
   }
   case TargetOpcode::G_UNMERGE_VALUES: {


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D64010.207307.patch
Type: text/x-patch
Size: 1519 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190701/e1f7d78c/attachment.bin>


More information about the llvm-commits mailing list