diff --git a/src/mapleall/maple_be/src/cg/peep.cpp b/src/mapleall/maple_be/src/cg/peep.cpp index 687f07a7608527ec8da1c5a4d8e459c15b989064..4f5c37ad69c02f8b53f9cab6d87cfa9249694240 100644 --- a/src/mapleall/maple_be/src/cg/peep.cpp +++ b/src/mapleall/maple_be/src/cg/peep.cpp @@ -146,6 +146,11 @@ bool CGPeepPattern::IfOperandIsLiveAfterInsn(const RegOperand ®Opnd, Insn &in return true; } } + } else if (opnd.IsList()) { + auto &opndList = static_cast(opnd).GetOperands(); + if (find(opndList.begin(), opndList.end(), ®Opnd) != opndList.end()) { + return true; + } } if (!opnd.IsRegister()) { @@ -371,6 +376,11 @@ bool PeepPattern::IfOperandIsLiveAfterInsn(const RegOperand ®Opnd, Insn &insn return true; } } + } else if (opnd.IsList()) { + auto &opndList = static_cast(opnd).GetOperands(); + if (find(opndList.begin(), opndList.end(), ®Opnd) != opndList.end()) { + return true; + } } if (!opnd.IsRegister()) {