Chris, This is incorrect (it will crash in some cases). We need the std::pair<> object to stay persistent in memory after the call to EvalEagerlyAssume. I can make this a field in the GRExprEngine object.
On Feb 28, 2009, at 11:37 AM, Chris Lattner wrote: > Author: lattner > Date: Sat Feb 28 13:37:06 2009 > New Revision: 65707 > > URL: http://llvm.org/viewvc/llvm-project?rev=65707&view=rev > Log: > remove static ctor. > > Modified: > cfe/trunk/lib/Analysis/GRExprEngine.cpp > > Modified: cfe/trunk/lib/Analysis/GRExprEngine.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Analysis/GRExprEngine.cpp?rev=65707&r1=65706&r2=65707&view=diff > > = > = > = > = > = > = > = > = > ====================================================================== > --- cfe/trunk/lib/Analysis/GRExprEngine.cpp (original) > +++ cfe/trunk/lib/Analysis/GRExprEngine.cpp Sat Feb 28 13:37:06 2009 > @@ -1357,10 +1357,10 @@ > // Transfer function: Objective-C ivar references. > // > = > = > = > ----------------------------------------------------------------------= > ==// > > -static std::pair<const void*,const void*> EagerlyAssumeTag > - = std::pair<const void*,const void*>(&EagerlyAssumeTag,0); > - > void GRExprEngine::EvalEagerlyAssume(NodeSet &Dst, NodeSet &Src, > Expr *Ex) { > + std::pair<const void*,const void*> > + EagerlyAssumeTag((const void*)&EagerlyAssumeTag, 0); > + > for (NodeSet::iterator I=Src.begin(), E=Src.end(); I!=E; ++I) { > NodeTy *Pred = *I; > > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
