Handle Iop_Neg{8,16,32}.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3601 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/memcheck/mc_translate.c b/memcheck/mc_translate.c
index ff00ce9..e8508cf 100644
--- a/memcheck/mc_translate.c
+++ b/memcheck/mc_translate.c
@@ -1884,6 +1884,17 @@
case Iop_Not1:
return vatom;
+ /* Neg* really fall under the Add/Sub banner, and as such you
+ might think would qualify for the 'expensive add/sub'
+ treatment. However, in this case since the implied literal
+ is zero (0 - arg), we just do the cheap thing anyway. */
+ case Iop_Neg8:
+ return mkLeft8(mce, vatom);
+ case Iop_Neg16:
+ return mkLeft16(mce, vatom);
+ case Iop_Neg32:
+ return mkLeft32(mce, vatom);
+
default:
ppIROp(op);
VG_(tool_panic)("memcheck:expr2vbits_Unop");