Fuse tight composer

That’s probably overkill since you’d be repeating code a lot. Just explicitly checking for union vs intersection (an enum would make this more readable) will be enough.

Greg Bronevetsky
Lawrence Livermore National Lab
(925) 424-5756
bronevetsky@llnl.gov<mailto:bronevetsky@llnl.gov>
http://greg.bronevetsky.com

From: Sriram Aananthakrishnan [mailto:notifications@github.com]
Sent: Wednesday, June 11, 2014 10:42 AM
To: sriram87/edg4x-rose
Cc: bronevet
Subject: Re: [edg4x-rose] Fuse tight composer (#4)


In projects/fuse/src/analysis/abstract_object.C:

> +bool MappedMemLocObject<Key, mostAccurate>::mayEqualMLWithKey(Key key,

> +                                                              const map<Key, MemLocObjectPtr>& thatMLMap,

> +                                                              PartEdgePtr pedge) {

> +  typename map<Key, MemLocObjectPtr>::const_iterator s_it;

> +  s_it = thatMLMap.find(key);

> +  if(s_it == thatMLMap.end()) return true;

> +  return memLocsMap[key]->mayEqualML(s_it->second, pedge);

> +}

> +

> +//! Two ML objects are may equals if there is atleast one execution or sub-exectuion

> +//! in which they represent the same memory location.

> +//! Analyses are conservative as they start with full set of executions.

> +//! Dataflow facts (predicates) shrink the set of sub-executions.

> +//! We do not explicity store set of sub-executions and they are described

> +//! by the abstract objects computed from dataflow fact exported by the analysis.

> +//! Unless the analyses discover otherwise conservative answer for mayEqualML is true.

Instead of template we can write two separate classes for union and intersection. This may improve readability. What do you think?

—
Reply to this email directly or view it on GitHub<https://github.com/sriram87/edg4x-rose/pull/4/files#r13662868>.