diff --git a/src/dataflow.cpp b/src/dataflow.cpp index 269d3c3..3c6a420 100644 --- a/src/dataflow.cpp +++ b/src/dataflow.cpp @@ -885,6 +885,7 @@ void BB::findBBExps(LOCAL_ID &locals,Function *fnc) auto valid_and_highlevel = instructions | filtered(ICODE::TypeAndValidFilter()); for (auto picode = valid_and_highlevel.begin(); picode != valid_and_highlevel.end(); picode++) { + ICODE &_ic(*picode); HLTYPE &_icHl(*picode->hlU()); numHlIcodes++; if (picode->du1.getNumRegsDef() == 1) /* uint8_t/uint16_t regs */ @@ -1115,6 +1116,10 @@ void BB::findBBExps(LOCAL_ID &locals,Function *fnc) } /* eos */ } } + + if( not _ic.valid()) + continue; // instruction was invalidated, try the next one + /* HLI_PUSH doesn't define any registers, only uses registers. * Push the associated expression to the register on the local * expression stack */