]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
dis_neon_data_3same: don't silently accept invalid instructions. Instead,
authorJulian Seward <jseward@acm.org>
Mon, 16 Jan 2017 05:14:24 +0000 (05:14 +0000)
committerJulian Seward <jseward@acm.org>
Mon, 16 Jan 2017 05:14:24 +0000 (05:14 +0000)
"return False" for any instruction not accepted by this function.  Also,
add a few switch default backstops.

git-svn-id: svn://svn.valgrind.org/vex/trunk@3295

VEX/priv/guest_arm_toIR.c

index 06bdc67bbd12a9e975ee888f549a535b45ca09d1..9a14bda8a723693ebc824f6376d187a7f32da68e 100644 (file)
@@ -3392,6 +3392,8 @@ Bool dis_neon_data_3same ( UInt theInstr, IRTemp condT )
                          reg_t, dreg, reg_t, nreg, reg_t, mreg);
                      break;
                   }
+                  default:
+                     vassert(0);
                }
             } else {
                switch(C) {
@@ -3489,6 +3491,8 @@ Bool dis_neon_data_3same ( UInt theInstr, IRTemp condT )
                          Q ? 'q' : 'd', dreg,
                          Q ? 'q' : 'd', nreg, Q ? 'q' : 'd', mreg);
                      break;
+                  default:
+                     vassert(0);
                }
             }
          }
@@ -4611,6 +4615,8 @@ Bool dis_neon_data_3same ( UInt theInstr, IRTemp condT )
                DIP("vpadd.i%d %c%u, %c%u, %c%u\n",
                    8 << size, Q ? 'q' : 'd',
                    dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd', mreg);
+            } else {
+               return False;
             }
          }
          break;
@@ -4768,6 +4774,8 @@ Bool dis_neon_data_3same ( UInt theInstr, IRTemp condT )
                DIP("vacg%c.f32 %c%u, %c%u, %c%u\n", op_bit ? 't' : 'e',
                    Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', nreg,
                    Q ? 'q' : 'd', mreg);
+            } else {
+               return False;
             }
          }
          break;
@@ -4827,6 +4835,8 @@ Bool dis_neon_data_3same ( UInt theInstr, IRTemp condT )
                   DIP("vrsqrts.f32 %c%u, %c%u, %c%u\n", Q ? 'q' : 'd', dreg,
                       Q ? 'q' : 'd', nreg, Q ? 'q' : 'd', mreg);
                }
+            } else {
+               return False;
             }
          }
          break;