[LLVMdev] Possible memory leak in LLVM 2.5

Rob Grapes
Tue, 18 May 2010 01:27:39 -0000

Hi,

I'm current using LLVM 2.5 to JIT code in a event driven language running on
a game engine.  Haven't updated to 2.7 yet, but I do intend to.

When checking for memory leaks I found that each time I was calling
EE->runFunction after creating a stub function to execute an event, all the
pass information was being repeatedly added to PMDataManager.

I have changed addAnalysisImplsPair to the following, which seems to have no
side effects with what I am doing.  Prior to that, AnalysisImpls contained
thousands of entries and each time the vector gets realloced to accommodate more
entries we lose a bigger chunk of memory.

  void addAnalysisImplsPair(const PassInfo *PI, Pass *P) {
     for (std::vector<std::pair<const PassInfo*, Pass*> >::iterator
I         AnalysisImpls.begin(); (I!=AnalysisImpls.end()); ++I)
     {
        if (I->first==PI && I->second==P)
        {
           // Return, if PassInfo and Pass are already in AnalysisImpls.
           return;
        }
     }
    std::pair<const PassInfo*, Pass*> pir = std::make_pair(PI,P);
    AnalysisImpls.push_back(pir);
  }

I'm probably doing something funny, or not as intended, but your comments
would be appreciated.

Rob.
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20100518/c02cf9b3/attachment.html>