mirror of
https://github.com/RPCSX/llvm.git
synced 2025-02-01 10:02:42 +00:00
[WinEH] Avoid holding references to BlockColor (DenseMap) entries while inserting new elements
Differential Revision: https://reviews.llvm.org/D27693 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@289694 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
1f177f4a3f
commit
577bb06589
@ -1202,8 +1202,12 @@ void WinEHPrepare::replaceUseWithLoad(Value *V, Use &U, AllocaInst *&SpillSlot,
|
||||
Goto->setSuccessor(0, PHIBlock);
|
||||
CatchRet->setSuccessor(NewBlock);
|
||||
// Update the color mapping for the newly split edge.
|
||||
// Grab a reference to the ColorVector to be inserted before getting the
|
||||
// reference to the vector we are copying because inserting the new
|
||||
// element in BlockColors might cause the map to be reallocated.
|
||||
ColorVector &ColorsForNewBlock = BlockColors[NewBlock];
|
||||
ColorVector &ColorsForPHIBlock = BlockColors[PHIBlock];
|
||||
BlockColors[NewBlock] = ColorsForPHIBlock;
|
||||
ColorsForNewBlock = ColorsForPHIBlock;
|
||||
for (BasicBlock *FuncletPad : ColorsForPHIBlock)
|
||||
FuncletBlocks[FuncletPad].push_back(NewBlock);
|
||||
// Treat the new block as incoming for load insertion.
|
||||
|
Loading…
x
Reference in New Issue
Block a user