| 2775 | } |
| 2776 | |
| 2777 | void BeMCContext::RemoveInst(BeMCBlock* block, int instIdx, bool needChangesMerged, bool removeFromList) |
| 2778 | { |
| 2779 | // If neither the instruction before or after this one shares the vregsInitialized flags, then we need to |
| 2780 | // merge down our Changes to the next instruction |
| 2781 | auto inst = block->mInstructions[instIdx]; |
| 2782 | if (instIdx > 0) |
| 2783 | { |
| 2784 | auto prevInst = block->mInstructions[instIdx - 1]; |
| 2785 | if (prevInst->mVRegsInitialized == inst->mVRegsInitialized) |
| 2786 | needChangesMerged = false; |
| 2787 | } |
| 2788 | |
| 2789 | if (needChangesMerged) |
| 2790 | { |
| 2791 | if (instIdx < (int)block->mInstructions.size() - 1) |
| 2792 | { |
| 2793 | auto nextInst = block->mInstructions[instIdx + 1]; |
| 2794 | if ((inst->mVRegsInitialized != NULL) && (nextInst->mVRegsInitialized != NULL)) |
| 2795 | { |
| 2796 | nextInst->mVRegsInitialized = mVRegInitializedContext.MergeChanges(nextInst->mVRegsInitialized, inst->mVRegsInitialized); |
| 2797 | } |
| 2798 | } |
| 2799 | } |
| 2800 | |
| 2801 | if (removeFromList) |
| 2802 | block->mInstructions.RemoveAt(instIdx); |
| 2803 | } |
| 2804 | |
| 2805 | BeMCOperand BeMCContext::GetCallArgVReg(int argIdx, BeTypeCode typeCode) |
| 2806 | { |
nothing calls this directly
no test coverage detected