Changeset 3983 in CLRX


Ignore:
Timestamp:
Apr 10, 2018, 5:06:50 PM (8 months ago)
Author:
matszpk
Message:

CLRadeonExtender: AsmRegAlloc?: Small fix in collecting changedRegVars.

File:
1 edited

Legend:

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

    r3982 r3983  
    696696    bool isCall;
    697697    bool haveReturn;
     698    std::vector<size_t> recurChangedVarBlocks;
    698699    RetSSAIdMap prevRetSSAIdSets;
    699700};
     
    24322433                    entry.haveReturn = true;
    24332434                    haveReturnBlocks[entry.blockIndex] = true;
    2434                     prevChangedVars = entry.changedVars;
    2435                 }
     2435                }
     2436                prevChangedVars = entry.changedVars;
    24362437                const bool curHaveReturn = entry.haveReturn;
    24372438                std::cout << "   collect regvars: " << entry.blockIndex << ": " <<
     
    26522653               
    26532654                if (!nextRecursion)
     2655                {
     2656                    entry.recurChangedVarBlocks.push_back(nextBlock.index);
    26542657                    continue;
     2658                }
    26552659               
    26562660                std::cout << " call: " << entry.blockIndex << std::endl;
     
    27052709                    }
    27062710            }
     2711           
     2712            if (!entry.recurChangedVarBlocks.empty())
     2713            {
     2714                // apply to all changed regvars in curSSAIdMap
     2715                std::cout << "apply recurChangedVarBlocks in " <<
     2716                            entry.blockIndex << std::endl;
     2717                std::unordered_set<AsmSingleVReg> changedRegVars;
     2718                for (size_t chrblk: entry.recurChangedVarBlocks)
     2719                {
     2720                    auto chrbit = recurChangedVarMap.find(chrblk);
     2721                    if (chrbit != recurChangedVarMap.end())
     2722                        changedRegVars.insert(chrbit->second.begin(),
     2723                                    chrbit->second.end());
     2724                }
     2725               
     2726                /*for (const AsmSingleVReg& chvreg: changedRegVars)
     2727                    curSSAIdMap[chvreg] += 1;*/
     2728            }
     2729           
    27072730            flowStack.push_back({ entry.blockIndex+1, 0, false });
    27082731            if (flowStackBlocks[entry.blockIndex+1])
Note: See TracChangeset for help on using the changeset viewer.