From 455c82c016b5af59e7bd642035853ac1b87d9814 Mon Sep 17 00:00:00 2001 From: Nemanja Ivanovic Date: Wed, 15 Apr 2020 15:40:51 -0500 Subject: [PATCH] [PowerPC] Clear the set of symbols that need to be updated in MCTargetStreamer We have added code to correct the .localentry values on assignments. However, we never clear the set so presumably it will still contain the (now dangling) MCSymbol pointers across a call to finish() and reset() in the streamer. This is based on my speculation that it is the reason we are getting segmentation faults mentioned in https://bugs.llvm.org/show_bug.cgi?id=45366 Fixes: https://bugs.llvm.org/show_bug.cgi?id=45366 Differential revision: https://reviews.llvm.org/D78196 --- lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp b/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp index c85b08ad77e..d8e1dd31b84 100644 --- a/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp +++ b/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp @@ -210,6 +210,10 @@ public: for (auto *Sym : UpdateOther) if (Sym->isVariable()) copyLocalEntry(Sym, Sym->getVariableValue()); + + // Clear the set of symbols that needs to be updated so the streamer can + // be reused without issues. + UpdateOther.clear(); } private: