fixed code style
This commit is contained in:
@@ -39,25 +39,17 @@ void Collapse(Region* region)
|
||||
}
|
||||
ArrayAccessingIndexes useUnion;
|
||||
for (auto& byBlock : region->getBasickBlocks())
|
||||
{
|
||||
for (auto& [arrayName, arrayRanges] : byBlock->array_use)
|
||||
{
|
||||
useUnion[arrayName] = useUnion[arrayName].Union(byBlock->array_use[arrayName]);
|
||||
}
|
||||
}
|
||||
for (auto& [arrayName, arrayRanges] : useUnion)
|
||||
{
|
||||
region->array_priv[arrayName] = useUnion[arrayName].Diff(region->array_use[arrayName]);
|
||||
}
|
||||
|
||||
for (auto& [arrayName, arrayRanges] : useUnion)
|
||||
region->array_priv[arrayName] = useUnion[arrayName].Diff(region->array_use[arrayName]);
|
||||
|
||||
for (Region* prevBlock : region->getHeader()->getPrevRegions())
|
||||
{
|
||||
prevBlock->replaceInNextRegions(region, region->getHeader());
|
||||
}
|
||||
|
||||
for (Region* nextBlock : region->getHeader()->getNextRegions())
|
||||
{
|
||||
nextBlock->replaceInPrevRegions(region, region->getHeader());
|
||||
}
|
||||
}
|
||||
|
||||
static void SolveDataFlowIteratively(Region* DFG)
|
||||
@@ -85,49 +77,35 @@ static void SolveDataFlowIteratively(Region* DFG)
|
||||
for (const auto& [arrayName, accessSet] : prevBlock->array_out)
|
||||
{
|
||||
if (newIn.find(arrayName) != newIn.end())
|
||||
{
|
||||
newIn[arrayName] = newIn[arrayName].Intersect(accessSet);
|
||||
}
|
||||
newIn[arrayName] = newIn[arrayName].Intersect(accessSet);
|
||||
else
|
||||
{
|
||||
newIn[arrayName] = AccessingSet();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
b->array_in = move(newIn);
|
||||
ArrayAccessingIndexes newOut;
|
||||
if (b->array_def.empty())
|
||||
{
|
||||
if (b->array_def.empty())
|
||||
newOut = b->array_in;
|
||||
}
|
||||
else if (b->array_in.empty())
|
||||
{
|
||||
newOut = b->array_def;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (auto& [arrayName, accessSet] : b->array_def)
|
||||
{
|
||||
if (newOut.find(arrayName) != newOut.end())
|
||||
{
|
||||
newOut[arrayName] = b->array_def[arrayName].Union(b->array_in[arrayName]);
|
||||
}
|
||||
else
|
||||
{
|
||||
newOut[arrayName] = accessSet;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* can not differ */
|
||||
if (newOut != b->array_out)
|
||||
{
|
||||
b->array_out = newOut;
|
||||
}
|
||||
else
|
||||
{
|
||||
worklist.erase(b);
|
||||
}
|
||||
}
|
||||
while (!worklist.empty());
|
||||
}
|
||||
@@ -136,11 +114,10 @@ static void SolveDataFlow(Region* DFG)
|
||||
{
|
||||
if (!DFG)
|
||||
return;
|
||||
|
||||
SolveDataFlowIteratively(DFG);
|
||||
for (Region* subRegion : DFG->getSubRegions())
|
||||
{
|
||||
SolveDataFlow(subRegion);
|
||||
}
|
||||
Collapse(DFG);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user