diff options
Diffstat (limited to 'lld/lib/Passes/LayoutPass.cpp')
-rw-r--r-- | lld/lib/Passes/LayoutPass.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/lld/lib/Passes/LayoutPass.cpp b/lld/lib/Passes/LayoutPass.cpp index b116496e036..c4c8fb9c33e 100644 --- a/lld/lib/Passes/LayoutPass.cpp +++ b/lld/lib/Passes/LayoutPass.cpp @@ -56,10 +56,12 @@ bool LayoutPass::CompareAtoms::operator()(const DefinedAtom *left, // Sort atoms by their ordinal overrides only if they fall in the same // chain. - const DefinedAtom *leftAtom = _layout._followOnRoots.find(left)->second; - const DefinedAtom *rightAtom = _layout._followOnRoots.find(right)->second; + auto leftAtom = _layout._followOnRoots.find(left); + auto rightAtom = _layout._followOnRoots.find(right); - if (leftAtom == rightAtom) { + if (leftAtom != _layout._followOnRoots.end() && + rightAtom != _layout._followOnRoots.end() && + leftAtom->second == rightAtom->second) { if ((lPos != end) && (rPos != end)) { return lPos->second < rPos->second; } |