[llvm] 4de74a7 - [MachineVerifier] Make INSERT_SUBREG diagnostic respect operand 2 subregs

Jon Roelofs via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 21 08:47:27 PDT 2021


Author: Jon Roelofs
Date: 2021-07-21T08:47:17-07:00
New Revision: 4de74a7c4da3516d0d9119452cc073b061716b5d

URL: https://github.com/llvm/llvm-project/commit/4de74a7c4da3516d0d9119452cc073b061716b5d
DIFF: https://github.com/llvm/llvm-project/commit/4de74a7c4da3516d0d9119452cc073b061716b5d.diff

LOG: [MachineVerifier] Make INSERT_SUBREG diagnostic respect operand 2 subregs

This came out of post-commit review: https://reviews.llvm.org/D105953#inline-1012919

Thanks uabelho!

Added: 
    

Modified: 
    llvm/lib/CodeGen/MachineVerifier.cpp
    llvm/test/MachineVerifier/test_insert_subreg.mir

Removed: 
    


################################################################################
diff  --git a/llvm/lib/CodeGen/MachineVerifier.cpp b/llvm/lib/CodeGen/MachineVerifier.cpp
index dde0a24d90ac..7e3198af02cd 100644
--- a/llvm/lib/CodeGen/MachineVerifier.cpp
+++ b/llvm/lib/CodeGen/MachineVerifier.cpp
@@ -1783,8 +1783,11 @@ void MachineVerifier::visitMachineInstrBefore(const MachineInstr *MI) {
     // TODO: verify we have properly encoded deopt arguments
   } break;
   case TargetOpcode::INSERT_SUBREG: {
-    unsigned InsertedSize =
-        TRI->getRegSizeInBits(MI->getOperand(2).getReg(), *MRI);
+    unsigned InsertedSize;
+    if (unsigned SubIdx = MI->getOperand(2).getSubReg())
+      InsertedSize = TRI->getSubRegIdxSize(SubIdx);
+    else
+      InsertedSize = TRI->getRegSizeInBits(MI->getOperand(2).getReg(), *MRI);
     unsigned SubRegSize = TRI->getSubRegIdxSize(MI->getOperand(3).getImm());
     if (SubRegSize < InsertedSize) {
       report("INSERT_SUBREG expected inserted value to have equal or lesser "

diff  --git a/llvm/test/MachineVerifier/test_insert_subreg.mir b/llvm/test/MachineVerifier/test_insert_subreg.mir
index f68c29edd3f1..593786c73dd4 100644
--- a/llvm/test/MachineVerifier/test_insert_subreg.mir
+++ b/llvm/test/MachineVerifier/test_insert_subreg.mir
@@ -10,7 +10,7 @@ tracksRegLiveness: true
 liveins:
 body:             |
   bb.0:
-    liveins: $s0, $h1
+    liveins: $s0, $h1, $q2
 
     %0:fpr32 = COPY $s0
 
@@ -28,4 +28,9 @@ body:             |
     %7:fpr128 = IMPLICIT_DEF
     %8:fpr128 = INSERT_SUBREG %7:fpr128, %0:fpr32, %subreg.ssub
 
+    ; CHECK-NOT: *** Bad machine code:
+    %9:fpr128 = COPY $q2
+    %10:fpr128 = IMPLICIT_DEF
+    %11:fpr128 = INSERT_SUBREG %10:fpr128, %9.ssub, %subreg.ssub
+
 ...


        


More information about the llvm-commits mailing list