| M. J. Harrold and G. Rothermel. Separate computation of alias information for reuse. IEEE Transactions on Software Engineering, 22(7):442--460, July 1996. |
....3.1. Our techniques trivially apply to other flow and context insensitive points to analyses (e.g. 60, 56, 17] and to mod analyses based on them. 3.3. 1 Summary Construction Previous work on context sensitive points to analysis uses summary information computed for each program procedure [35, 54, 68, 31, 10, 12]. In these approaches, the e#ects of a 36 procedure P are represented by a summary function that encodes the cumulative e#ects of the transfer functions of all statements from P and from all procedures transitively called by P . Some analyses construct partial functions that are defined only for ....
....that encodes the cumulative e#ects of the transfer functions of all statements from P and from all procedures transitively called by P . Some analyses construct partial functions that are defined only for some input values [35, 54, 68] others use complete functions defined for all possible inputs [31, 10, 12]. The latter approach can be used to produce summary information for a library module, by computing and storing the complete summary functions for all exported procedures [31] The above approaches have one major disadvantage: the implicit assumption that a called procedure can be analyzed either ....
[Article contains additional citation context not shown here]
M. J. Harrold and G. Rothermel. Separate computation of alias information for reuse. IEEE Transactions on Software Engineering, 22(7):442--460, July 1996.
.... # P(V ) 1] foreach s#Stmt do [2] if SynMod(s) v, D) then [3] Mod(s) v [4] if v is global or static local then [5] add v to ProcMod(EnclosingProc(s) 6] if SynMod(s) v, I) then [7] Mod(s) x x#Pt(v) # active(s, x) 8] add Mod(s) to ProcMod(EnclosingProc(s) [9] while changes occur in Mod or ProcMod do [10] foreach call statement s#Stmt do [11] foreach P #Called(s) do [12] Mod(s) Mod(s) # x x#ProcMod(P ) # accessible(s, x) 13] add Mod(s) to ProcMod(EnclosingProc(s) Fig. 2. Whole program mod analysis. P(X) denotes the power set of ....
....Construction and Summary based Analysis In this section we present our approach for constructing summary information for a library module, and show how to use the library summaries for separate summary based analysis of client modules. Some previous work on context sensitive points to analysis [9, 2, 3] uses complete summary functions to encode the cumulative e#ects of all statements in a procedure P and in all procedures transitively called by P . This approach can be used to produce summary information for a library module, by computing and storing the summary functions for all exported ....
[Article contains additional citation context not shown here]
M. J. Harrold and G. Rothermel. Separate computation of alias information for reuse. IEEE Trans. Software Engineering, 22(7):442--460, July 1996.
.... , x#L; initially empty [1] H[#,#] #; W : #,#) 2] while W #= # do [3] remove (n,x) from W ; y: H[n,x] 4] if n is not a call node or an exit node then [5] foreach m#Succ(n) do propagate(m,x,fm (y) 6] if n is a call node then [7] e : called entry(n) propagate(e,y,fe(y) [8] if n is an exit node then [9] foreach r#Succ(n) and l #L do [10] if H[call node(r) l] x then propagate(r,l,fr (y) 11] foreach n#N do [12] S[n] V l#L H[n,l] 13] procedure propagate(n,x,y) 14] H[n,x] H[n,x] # y; if H[n,x] changed then add (n,x) to W ; Fig. 1. Worklist ....
.... or an exit node then [5] foreach m#Succ(n) do propagate(m,x,f # m (y) 6a ] if n is a call node and n #BoundaryCalls then [7a] e : called entry(n) propagate(e,y,f # e (y) 6b ] if n is a call node and n#BoundaryCalls then [7b ] r : ret node(n) propagate(r,x,f # r (#c(n) y) [8] if n is an exit node then [9] foreach r#Succ(n) and l # #L # do [10] if H[call node(r) l # ] x then propagate(r,l # ,f # r (y) 11] foreach n#N # do [12] S[n] V l # #L # H[n,l # ] Fig. 3. Worklist implementation of context sensitive fragment analysis analysis is performed ....
[Article contains additional citation context not shown here]
M. J. Harrold and G. Rothermel. Separate computation of alias information for reuse. IEEE Transactions on Software Engineering, 22(7):442--460, July 1996.
.... [4] if s is an indirect call through pointer q then [5] Called(s) P procedure P #Pt(q) 6] foreach s#Stmt do [7] if SynMod(s) v, D) then [8] Mod(s) v [9] if v is global or static local then [10] add v to ProcMod(EnclosingProc(s) 11] if SynMod(s) v, I) then [12] Mod(s) x x#Pt(v) # active(s, x) 13] add Mod(s) to ProcMod(EnclosingProc(s) 14] while changes occur in Mod or ProcMod do [15] foreach call statement s#Stmt do [16] foreach P #Called(s) do [17] Mod(s) Mod(s) # x x#ProcMod(P ) # [18] active(s, x) # accessible(s, ....
....for constructing summary information for a library module, and show how to use the library summaries for separate summary based analysis of client modules. 4. 1 Summary Construction Previous work on context sensitive points to analysis uses summary information computed for each program procedure [15, 27, 12, 3, 4]) Conceptually, these techniques can be considered instances of the functional approach to context sensitivity [23] in which the e#ects of a procedure P are represented by a summary function that encodes the cumulative e#ects of the transfer functions for all statements in P and in all ....
[Article contains additional citation context not shown here]
M. J. Harrold and G. Rothermel. Separate computation of alias information for reuse. IEEE Trans. Software Engineering, 22(7):442--460, July 1996.
....incomplete programs such as libraries. Moreover, some reaching aliases not relevant for analyzing a procedure may also be passed to a procedure. Unknown initial values are similar to non visible variables used in [LR92] for summarizing the values of pointers that point to out of scope variables. HR96] presents an alias analysis algorithm based on the algorithm in [LR92] for alias 189 analysis of modules written in C. Intuitively, the idea is to analyze a module for all possible reaching aliases. In contrast, RCI analyzes a library by inferring only the relevant potential aliases and concrete ....
Mary Jean Harrold and Greg Rothermel. Separate computation of alias information for reuse. IEEE Transactions on Software Engineering, 22(7), July 1996.
....existing implementation of a whole program analysis can be used without any modification. The idea of using a single summary function to represent the e#ects of a procedure is used by some contextsensitive interprocedural analyses [20, 10, 14, 25, 3] and is generalized to program components in [8]. In all such analyses, the summary function is computed through function composition and meet. 8 This approach allows a single function to represent the e#ects of all execution paths that are possible during the lifetime of the procedure. However, function composition and meet are expensive ....
....been employed to make this approach more e# cient, analyses based on this idea tend to be complex 8 h = f # g i# h(x) f(x) # g(x) for all x. and expensive. Our technique for summarizing the effects of a library is a simple and practical alternative to this approach. Harrold and Rothermel [8] present a separate flowand context sensitive pointer analysis in which a software module is analyzed separately and later linked with other modules. They compute and store the module solution for all possible calling contexts; this solution is essentially a tabular representation of a summary ....
[Article contains additional citation context not shown here]
M. J. Harrold and G. Rothermel. Separate computation of alias information for reuse. IEEE Trans. Software Engineering, 22(7):442--460, July 1996.
....graph can be regarded as an instantiation of context sensitive call graph [GDDC97] Tagging the calling contexts to data flow facts, such as Landi s formulation of interprocedural may alias problem [LR92] has also been used in separate computation for information reuse. Harrold and Rothermel [HR96] used the technique for separate analysis of modules for the interprocedural may alias problem. By module, they meant a group of interacting procedures that has a single entry point, and does not contain any holes (i.e. calls to a non library function not in the group) Their module analysis ....
....(which is similar to the idea of representative problems in Marlowe and Ryder s hybrid algorithm [MR90] and then analyzes the e#ect of the module on those contexts by propagating them throughout the module. The set of possible calling contexts (referred to as the potential alias set (PASet) in [HR96] for a module M is obtained by considering all the possible aliases that can happen among global variables accessed in M , parameters to M , and variables that do not appear in M but can be accessed through their aliases (which are similar to non visibles in [LRZ93] After a module is analyzed, ....
Mary Jean Harrold and Greg Rothermel. Separate computation of alias information for reuse. IEEE Transactions on Software Engineering, 22(7), July 1996. 98
.... ,L] of L; initial values # W : list of (n,x) n#N , x#L; initially empty [1] H[#,#] #; W : #,#) 2] while W #= # do [3] remove (n,x) from W ; y: H[n,x] 4] if n is not a call node or an exit node then [5] foreach m#Succ(n) do propagate(m,x,fm (y) 6] if n is a call node then [7] e : called entry(n) propagate(e,y,fe(y) 8] if n is an exit node then [9] foreach r#Succ(n) and l #L do [10] if H[call node(r) l] x then propagate(r,l,fr (y) 11] foreach n#N do [12] S[n] V l#L H[n,l] 13] procedure propagate(n,x,y) 14] H[n,x] H[n,x] # y; if H[n,x] ....
.... 3680 6556 espresso.1 0:07 0:52 1:58 5504 17400 espresso.2 0:07 0:56 3:07 5504 26904 tsl.1 0:08 0:33 0:43 5776 8672 tsl.2 0:08 1:15 1:25 12480 18648 moria.1 0:09 1:22 1:29 9504 10464 moria.2 0:09 1:39 1:37 7608 17440 7 Related Work In Harrold and Rothermel s separate pointer alias analysis [7], a software module is analyzed separately and later linked with other modules. The analysis is based on the whole program analysis from [8] it simulates the aliasing e#ects that are possible under all calling contexts for the module. Placeholder variables are used to represent sets of variables ....
[Article contains additional citation context not shown here]
M. J. Harrold and G. Rothermel. Separate computation of alias information for reuse. IEEE Transactions on Software Engineering, 22(7), July 1996.
....the called routines, but marks them as unexpanded; thus, routines that use the call graph can distinguish functions for which further information is available from those for which it is not. An interprocedural control flow graph is useful for analyses such as interprocedural data flow analysis [10] and program slicing [2] To provide support for these techniques, we incorporated an interprocedural control flow graph builder into Aristotle. This builder uses access routines to retrieve control flow graphs 3 Other useful types of data dependence are anti dependence and output dependence; we ....
M.J. Harrold and G. Rothermel. Separate computation of alias information for reuse. IEEE Transactions on Software Engineering, 22(7):442--460, July 1996.
....and testing that is desired by the component users. For example, to support alias analysis of the user application, a component can store alias pairs that hold in all contexts of the component; this information can subsequently be used to generate context sensitive alias pairs for that component [3, 12]. As another example, to support program slicing of the user application, the component can store summary information about data dependences of the parameters of the component s operations [13] and control dependence side effects caused by operations of the component [8, 25] As a final example, ....
M.J. Harrold and G. Rothermel. Separate computation of alias information for reuse. IEEE Transactions on Software Engineering, 22(7):442--460, July 1996.
....the size of the graph generated by the demand driven approach in order to complete the same task. 2.4 Experiment 3. Reuse Driven Approaches to Large Scale Program Analysis Another possible approach for scaling analysis processes is to reuse the results of previous analyses. Harrold and Rothermel [3] showed one way to exploit reuse in an algorithm for resolving aliases. We hypothesize that, in practice, there are enough opportunities to reuse previous analyses that storing and retrieving the extra information needed during the integration phase is justified. We also hypothesize that these ....
M.J. Harrold and G. Rothermel. Separate computation of alias information for reuse. In ACM SIGSOFT International Symposium on Software Testing and Analysis, pages 107--120, January 1996.
....to FICS, this method computes smaller equivalence classes, and provides a smaller points to set for each pointer variable, than Steensgaard s algorithm. FICS differs from this method, however, in that it uses an independent set of equivalence 10 Harrold and Rothermel used a similar approach in [8]. classes for each procedure. Thus, FICS can benefit from the fact that a procedure references only a small set of program variables. FICS also differs from this method in that FICS is context sensitive (information is not propagated through invalid call return sequences) Finally, FICS differs ....
M. J. Harrold and G Rothermel. Separate computation of alias information for reuse. IEEE Transactions on Software Engineering, 22(7):107--120, June 1996.
....can save space by reducing the amount of memory required to perform the analysis. To provide such savings, a separate analysis technique must compute as much 1 A preliminary version of this paper appeared in ACM International Symposium on Software Testing and Analysis, January 1996, pp. 107 120 [7]. 2 An alias occurs at some program point when two or more names exist for the same object. information as possible about a software component, and store it for later use. The technique must provide a link algorithm, that reuses previously computed results when a piece of software that ....
.... conditional may alias introductions [3] if N is a call statement or an assignment to a pointer then [4] add conditional may aliases introduced by N to W orklist and CondMayAlias [5] while W orklist is not empty do compute conditional may aliases [6] remove [ N; AA) PA] from W orklist [7] propagate through successors of N ; update W orklist and CondMayAlias [8] foreach [ N; AA) PA] in CondMayAlias do compute may aliases [9] add [N; PA] to MayAlias end Figure 1: Landi and Ryder s algorithm for computing may alias information. same memory location after the execution of N . ....
[Article contains additional citation context not shown here]
M. J. Harrold and G. Rothermel. Separate computation of alias information for reuse. In Proceedings of the ACM International Symposium on Software Testing and Analysis, pages 107--120, January 1996.
Online articles have much greater impact More about CiteSeer.IST Add search form to your site Submit documents Feedback
CiteSeer.IST - Copyright Penn State and NEC