MCPcopy Create free account
hub / github.com/beefytech/Beef / MergeLiveRegs

Method MergeLiveRegs

IDEHelper/Backend/BeMCContext.cpp:4323–4419  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4321}
4322
4323BeVTrackingList* BeMCContext::MergeLiveRegs(BeVTrackingList* prevDestEntry, BeVTrackingList* mergeFrom)
4324{
4325 int vregIdx = -1;
4326
4327 SizedArray<int, 16> newNodes;
4328 SizedArray<int, 16> prevExclusiveNodes;
4329
4330 // Take nodes that were exclusive to the new set and add edges to nodes that were exclusive the old set
4331 /*while (true)
4332 {
4333 vregIdx = mLivenessContext.GetNextDiffSetIdx(prevDestEntry.mBits, mergeFrom, vregIdx);
4334 if (vregIdx == -1)
4335 break;
4336
4337 newNodes.push_back(vregIdx);
4338
4339 if (!mColorizer.mNodes.empty())
4340 {
4341 int checkReg = -1;
4342 while (true)
4343 {
4344 checkReg = mLivenessContext.GetNextDiffSetIdx(mergeFrom, prevDestEntry.mBits, checkReg);
4345 if (checkReg == -1)
4346 break;
4347 mColorizer.AddEdge(checkReg, vregIdx);
4348 }
4349 }
4350 }*/
4351
4352 auto prevItr = prevDestEntry->begin();
4353 auto prevEnd = prevDestEntry->end();
4354 auto mergeFromItr = mergeFrom->begin();
4355 auto mergeFromEnd = mergeFrom->end();
4356 while ((prevItr != prevEnd) && (mergeFromItr != mergeFromEnd))
4357 {
4358 int prevIdx = *prevItr;
4359 int mergeIdx = *mergeFromItr;
4360 bool done = false;
4361
4362 while (mergeIdx < prevIdx)
4363 {
4364 newNodes.push_back(mergeIdx);
4365 ++mergeFromItr;
4366 if (mergeFromItr == mergeFromEnd)
4367 {
4368 done = true;
4369 break;
4370 }
4371 mergeIdx = *mergeFromItr;
4372 }
4373 if (done)
4374 break;
4375
4376 while (prevIdx < mergeIdx)
4377 {
4378 prevExclusiveNodes.push_back(prevIdx);
4379 ++prevItr;
4380 if (prevItr == prevEnd)

Callers

nothing calls this directly

Calls 6

AddEdgeMethod · 0.80
beginMethod · 0.45
endMethod · 0.45
push_backMethod · 0.45
emptyMethod · 0.45
AddMethod · 0.45

Tested by

no test coverage detected