diff --git a/SMPInstr.cpp b/SMPInstr.cpp index c296f81d66c1ee0fa96d945e311c2ffeac378a7c..a783f1029b70af6668418094525ef628260eb898 100644 --- a/SMPInstr.cpp +++ b/SMPInstr.cpp @@ -30,7 +30,7 @@ #define SMP_DEBUG2 0 // verbose #define SMP_DEBUG_XOR 0 #define SMP_DEBUG_BUILD_RTL 1 // should be left on, serious errors! -#define SMP_VERBOSE_DEBUG_BUILD_RTL 1 +#define SMP_VERBOSE_DEBUG_BUILD_RTL 0 #define SMP_VERBOSE_DEBUG_BUILD_RTL_DEF_USE 0 #define SMP_VERBOSE_DEBUG_INFER_TYPES 0 #define SMP_VERBOSE_DUMP 0 @@ -736,7 +736,10 @@ void SMPInstr::MDFixupDefUseLists(void) { IndexOpnd.reg = IndexReg; IndexOpnd.hasSIB = 0; IndexOpnd.set_showed(); - this->Uses.SetRef(IndexOpnd); + if (0 == sib_scale(Opnd)) + this->Uses.SetRef(IndexOpnd); + else // scaling == shift ==> NUMERIC + this->Uses.SetRef(IndexOpnd, NUMERIC); } } else { // no SIB byte; can have base reg but no index reg