Changeset 3947 in CLRX


Ignore:
Timestamp:
Mar 28, 2018, 4:41:17 PM (6 months ago)
Author:
matszpk
Message:

CLRadeonExtender: AsmRegAlloc?: Yet another update 3.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • CLRadeonExtender/trunk/amdasm/AsmRegAlloc.cpp

    r3946 r3947  
    23152315                recurStateMap.insert({ routineBlock, { curSSAIdMap, retSSAIdMap } });
    23162316            }
    2317             else if (!isRoutineGen[routineBlock])
     2317           
     2318            if (!isRoutineGen[routineBlock] && !flowStackBlocks[routineBlock])
    23182319            {
    23192320                createRoutineData(codeBlocks, curSSAIdMap, loopBlocks, recurseBlocks,
     
    23212322                        retRecurStateMapMap, prevRdata, routineBlock);
    23222323                //prevRdata.compare(myRoutineData);
     2324               
     2325                auto rsit = recurStateMap.find(routineBlock);
     2326                if (rsit != recurStateMap.end())
     2327                {
     2328                    // second pass through recursion
     2329                    passSecondRecurPass(codeBlocks, rsit->second.curSSAIdMap,
     2330                            cblocksToCache, loopBlocks, recurseBlocks, routineMap,
     2331                            rsit->second.retSSAIdMap, ssaReplacesMap,
     2332                            retRecurStateMapMap, routineBlock);
     2333                    recurseBlocks.erase(routineBlock);
     2334                    // join retRecurStates
     2335                    for (const auto& entry: retRecurStateMapMap[routineBlock])
     2336                        std::cout << "join retrecState: " << entry.first << std::endl;
     2337                }
     2338               
    23232339                isRoutineGen[routineBlock] = true;
    23242340            }
     
    23912407        else // back
    23922408        {
    2393             {
    2394                 auto rsit = recurStateMap.find(entry.blockIndex);
    2395                 if (rsit != recurStateMap.end())
    2396                 {
    2397                     // second pass through recursion
    2398                     passSecondRecurPass(codeBlocks, rsit->second.curSSAIdMap,
    2399                             cblocksToCache, loopBlocks, recurseBlocks, routineMap,
    2400                             rsit->second.retSSAIdMap, ssaReplacesMap,
    2401                             retRecurStateMapMap, entry.blockIndex);
    2402                     recurseBlocks.erase(entry.blockIndex);
    2403                     // join retRecurStates
    2404                     for (const auto& entry: retRecurStateMapMap[entry.blockIndex])
    2405                         std::cout << "join retrecState: " << entry.first << std::endl;
    2406                 }
    2407             }
    2408            
    24092409            RoutineData* rdata = nullptr;
    24102410            if (!callStack.empty())
Note: See TracChangeset for help on using the changeset viewer.