[cfe-dev] A question on data flow analysis in clang

Ted Kremenek kremenek at apple.com
Fri Feb 14 22:35:23 PST 2014


Thanks Sean.  That’s exactly right.

On Feb 11, 2014, at 8:21 AM, Sean Silva <chisophugis at gmail.com> wrote:

> Clang's AST is immutable so there isn't a need for this kind of incremental computation.
> 
> On Feb 11, 2014 3:11 AM, "Mahesha S" <mahesha.llvm at gmail.com> wrote:
> Missed to cc my below reply (to Ted) into clang-dev list.
> 
> 
> --
> mahesha
> 
> 
> ---------- Forwarded message ----------
> From: Mahesha S <mahesha.llvm at gmail.com>
> Date: Tue, Feb 11, 2014 at 9:45 AM
> Subject: Re: [cfe-dev] A question on data flow analysis in clang
> To: Ted Kremenek <kremenek at apple.com>
> 
> 
> Hi Ted,
> 
> I am sorry for my late reply. When I said "incremental", I meant it as follows.
> 
> ========================================
> When a program undergoes change during development or compilation (i.e. during the is optimisation phase), the data flow information can be updated either by repeating the original exhaustive analysis, or by using incremental techniques that attempt to reuse the old infor­mation and recompute only the information affected by the change. Presuming that a change  typically has a localised effect, or at least does not affect all of the program's data flow.
> 
> In one sentence I meant:  incremental computation of data flow values by considering the old computed data flow values (on old program) and new additional changes to program. 
> 
> Mathematically I meant:   DFA(current_program)  = DFA(old_program) + DFA(new_additional_changes_to_old_program)
> ========================================
> 
> 
> --
> mahesha 
> 
> 
> On Wed, Jan 22, 2014 at 5:10 AM, Ted Kremenek <kremenek at apple.com> wrote:
> Hi Mahesha,
> 
> To answer your question, I need to understand what you mean by "incremental".  That term implies that there can be changes in the analysis results, somehow, when running the analysis multiple times.  If you provided a bit of context, I could more precisely answer your question.
> 
> Operationally, analyses are typically implemented using a work list algorithm, which computes data flow values until a fix point is reached.  This is a kind of incremental analysis, but I'm not certain if this is what you meant by "incremental."
> 
> Ted
> 
> > On Jan 12, 2014, at 9:56 PM, Mahesha S <mahesha.llvm at gmail.com> wrote:
> >
> > Hello all,
> >
> > I wanted to know that - the data flow analysis which is implemented in Clang (include/clang/Analysis) - is incremental analysis or it re-solves the equations at every CFG node?
> >
> > I will look into the source code, but, meanwhile, I thought of quickly getting "yes/no" answer before I spend time with source code.
> >
> >
> > --
> > mahesha
> > _______________________________________________
> > cfe-dev mailing list
> > cfe-dev at cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
> 
> 
> 
> -- 
> mahesha
> 
> 
> 
> -- 
> mahesha
> 
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20140214/93f1e429/attachment.html>


More information about the cfe-dev mailing list