William Landi

dblp:92/1701 · DBLP profile ↗
← Back
16ranked-venue papers
4as first author
0since 2021 · last 2003
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 15 · 3 first-authorApplied, interdisciplinary, general and emerging computing · 1 · 1 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
13 papers
Program analysis · 92% Programming languages and type systems · 3% Software maintenance and evolution · 2%
Theoretical computer science
2 papers
Computational complexity · 100%

Topics — the 17 heaviest of 21, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Program analysis › static analysis
pointer analysis
0.2102001
Complexity of Points-To Analysis of Java in the Presence of Exceptions · IEEE Trans. Software Eng. 2001
A schema for interprocedural modification side-effect analysis with pointer aliasing · ACM Trans. Program. Lang. Syst. 2001
Relevant Context Inference · POPL 1999
Program analysis › effect analysis
side-effect analysis
0.142001
A schema for interprocedural modification side-effect analysis with pointer aliasing · ACM Trans. Program. Lang. Syst. 2001
Comparing Flow and Context Sensitivity on the Modification-Side-Effects Problem · ISSTA 1998
Incremental Analysis of Side Effects for C Software System · ICSE 1997
Program analysis
data flow analysis
0.141999
Relevant Context Inference · POPL 1999
Comparing Flow and Context Sensitivity on the Modification-Side-Effects Problem · ISSTA 1998
Interprocedural Def-Use Associations for C Systems with Single Level Pointers · IEEE Trans. Software Eng. 1994
Program analysis › static analysis
interprocedural analysis
0.152001
A schema for interprocedural modification side-effect analysis with pointer aliasing · ACM Trans. Program. Lang. Syst. 2001
Interprocedural Side Effect Analysis With Pointer Aliasing · PLDI 1993
A Safe Approximate Algorithm for Interprocedural Pointer Aliasing · PLDI 1992
Program analysis
static analysis
0.022001
Complexity of Points-To Analysis of Java in the Presence of Exceptions · IEEE Trans. Software Eng. 2001
Program Decomposition for Pointer Aliasing: A Step Toward Practical Analyses · SIGSOFT FSE 1996
Program analysis › static analysis
incremental analysis
0.021999
An Incremental Flow- and Context-Sensitive Pointer Aliasing Analysis · ICSE 1999
Incremental Analysis of Side Effects for C Software System · ICSE 1997
Computational complexity › complexity of reasoning
complexity of program analysis
0.012001
Complexity of Points-To Analysis of Java in the Presence of Exceptions · IEEE Trans. Software Eng. 2001
Program analysis › data flow analysis
context-sensitive dataflow analysis
0.011999
Relevant Context Inference · POPL 1999
Program analysis › data flow analysis
flow-sensitive analysis
0.021999
Program Decomposition for Pointer Aliasing: A Step Toward Practical Analyses · SIGSOFT FSE 1996
An Incremental Flow- and Context-Sensitive Pointer Aliasing Analysis · ICSE 1999
Program analysis › flow analysis
flow-insensitive analysis
0.011996
Program Decomposition for Pointer Aliasing: A Step Toward Practical Analyses · SIGSOFT FSE 1996
Programming languages and type systems › control structures
exception handling
0.012001
Complexity of Points-To Analysis of Java in the Presence of Exceptions · IEEE Trans. Software Eng. 2001
Program analysis › static analysis › pointer analysis
aliasing analysis
0.011991
Pointer-Induced Aliasing: A Problem Classification · POPL 1991
Program analysis › static analysis
modular analysis
0.011999
Relevant Context Inference · POPL 1999
Programming languages and type systems › object-oriented programming
object-oriented languages
0.011999
Relevant Context Inference · POPL 1999
Program analysis › data flow analysis
incremental data flow analysis
0.011990
Profiling an Incremental Data Flow Analysis Algorithm · IEEE Trans. Software Eng. 1990
Compilers and program optimization
compiler analysis
0.011996
Program Decomposition for Pointer Aliasing: A Step Toward Practical Analyses · SIGSOFT FSE 1996
Software maintenance and evolution › software evolution
evolving systems
0.011990
Profiling an Incremental Data Flow Analysis Algorithm · IEEE Trans. Software Eng. 1990

Methods — techniques the papers use, named apart from their topics

side-effect propagation · 0.0alias analysis · 0.0incremental algorithm · 0.0flow-sensitive analysis · 0.0context-sensitive analysis · 0.0empirical comparison · 0.0hybrid method · 0.0side-effect analysis · 0.0program decomposition · 0.0def-use analysis · 0.0interprocedural analysis · 0.0complexity classification · 0.0
YearPublicationVenuePosition
2003 Secure De-identification and Re-identification
William Landi, R. Bharat Rao
AMIA1
2001 A schema for interprocedural modification side-effect analysis with pointer aliasing
abstract
The first interprocedural modification side-effects analysis for C (MOD C ) that obtains better than worst-case precision on programs with general-purpose pointer usage is presented with empirical results. The analysis consists of an algorithm schema corresponding to a family of MOD C algorithms with two independent phases: one for determining pointer-induced aliases and a subsequent one for propagating interprocedural side effects. These MOD C algorithms are parameterized by the aliasing method used. The empirical results compare the performance of two dissimilar MOD C algorithms: MOD C ( FSAlias ) uses a flow-sensitive, calling-context-sensitive interprocedural alias analysis; MOD C ( FIAlias uses a flow-insensitive, calling-context-insensitive alias analysis which is much faster, but less accurate. These two algorithms were profiled on 45 programs ranging in size from 250 to 30,000 lines of C code, and the results demonstrate dramatically the possible cost-precision trade-offs. This first comparative implementation of MOD C analyses offers insight into the differences between flow-/context-sensitive and flow-/context-insensitive analyses. The analysis cost versus precision trade-offs in side-effect information obtained are reported. The results show surprisingly that the precision of flow-sensitive side-effect analysis is not always prohibitive in cost, and that the precision of flow-insensitive analysis is substantially better than worst-case estimates and seems sufficient for certain applications. On average MOD C ( FSAlias ) for procedures and calls is in the range of 20% more precise than MOD C ( FIAlias ); however, the performance was found to be at least an order of magnitude slower than MOD C ( FIAlias ).
Barbara G. Ryder, William Landi, Phil Stocks, Sean Zhang, Rita Z. Altucher
ACM Trans. Program. Lang. Syst.2
2001 Complexity of Points-To Analysis of Java in the Presence of Exceptions
abstract
At each program point, points-to analysis for statically typed object oriented programming languages (e.g., Java, C++) determines those objects to which a reference may refer (or a pointer may point) during execution. Points-to analysis is necessary for any semantics based software tools for object oriented systems. Our new complexity results for points-to analysis distinguish the difficulty of intraprocedural and interprocedural points-to analyses for languages with combinations of single-level types (i.e., types with data members only of primitive type), exceptions with or without subtyping, and dynamic dispatch. Our results include: 1) the first polynomial-time algorithm for points-to analysis in the presence of exceptions that handles a robust subset of Java without threads and can be applied to C++; 2) proof that the above algorithm is safe, in general, and provably precise on programs with single-level types and exceptions without subtyping, but not dynamic dispatch, thus, this case is in P; 3) proof that an interprocedural points-to analysis problem with single-level types and exceptions with subtyping, but without dynamic dispatch, is PSPACE-hard, while the intraprocedural problem is PSPACE-complete. Other complexity characterizations of points-to analysis in programs without exceptions are presented, including an algorithm with worst-case bound of O(n/sup 5/), which improves over the O(n/sup 7/) worst-case bound achievable from previous approaches of T. Reps et al. (1995) and W.A. Landi and B.G. Ryder (1991).
Ramkrishna Chatterjee, Barbara G. Ryder, William Landi
IEEE Trans. Software Eng.3
1999 An Incremental Flow- and Context-Sensitive Pointer Aliasing Analysis
abstract
Pointer aliasing analysis is used to determine if two object names containing dereferences and/or field selectors, (e.g., *p,q->t), may refer to the same location during execution.Such information is necessary for applications such as dataflow-based testers, program understanding tools, and debuggers, but is expensive to calculate with acceptable precision.Incremental algorithms update data flow information after a program change rather than recomputing it from scratch, under the assumption that the change impact will be limited.Two versions of a practical incremental pointer aliaaing algorithm have been developed, based on Land&Ryder flow-and context-sensitive alias analysis.Empirical results attest to the time savings over exhaustive analysis (a six-fold speedup on average), and the precision of the approximate solution obtained (on average same solution as exhaustive algorithm for 75% of the tests.)
Jyh-Shiarn Yur, Barbara G. Ryder, William Landi
ICSE3
1999 Relevant Context Inference
abstract
Relevant context inference (RCI) is a modular technique for flow- and context-sensitive data-flow analysis of statically typed object-oriented programming languages such as C++ and Java. RCI can be used to analyze complete programs as well as incomplete programs such as libraries; this approach does not require that the entire program be memory-resident during the analysis. RCI is presented in the context of points-to analysis for a realistic subset of C++. The empirical evidence obtained from a prototype implementation argues the effectiveness of RCI.
Ramkrishna Chatterjee, Barbara G. Ryder, William Landi
POPL3
1998 Complexity of Concrete Type-Inference in the Presence of Exceptions
Ramkrishna Chatterjee, Barbara G. Ryder, William Landi
ESOP3
1998 Comparing Flow and Context Sensitivity on the Modification-Side-Effects Problem
abstract
Precision and scalability are two desirable, yet often conflicting, features of data-flow analyses. This paper reports on a case study of the modification---ide-effects problem for C in the presence of pointers from the perspective of contrasting the flow and context sensitivity of the solution procedure with respect to precision and scalability. The results show that the cost of precision of flow- and context-sensitive analysis is not always prohibitive, and that the precision of flow- and context-insensitive analysis is substantially better than worst-case estimates and can be sufficient for certain applications. Program characteristics that affect the performance of data-flow analysis are identified.
Phil Stocks, Barbara G. Ryder, William Landi, Sean Zhang
ISSTA3
1998 Experiments with Combined Analysis for Pointer Aliasing
abstract
We present initial empirical experiments with combined analysis, a scalabk analysis technique that uses a program decomposition to apply different aliasing algorithms to independent program segments. The effectiveness of the solution strategy is validated through application to side-effect and reference analysis of C programs.
Sean Zhang, Barbara G. Ryder, William Landi
PASTE3
1997 Incremental Analysis of Side Effects for C Software System
abstract
Incremental static analysis seeks to efficiently update semantic information about an evolving software system, without recomputing “from scratch.” Interprocedural modification side effect analysis (MOD) calculates the set of variables possibly modified by execution of a procedure or a statement. We introduce a partial incrementalization of MOD for C systems using the hybrid method and present results of a study of 27 C programs, that predicts that our incremental MOD analysis will be substantially cheaper than exhaustive analysis for many program changes.
Jyh-Shiarn Yur, Barbara G. Ryder, William Landi, Phil Stocks
ICSE3
1996 Program Decomposition for Pointer Aliasing: A Step Toward Practical Analyses
abstract
Pointer aliasing analysis is crucial to compile-time analyses for languages with general-purpose pointer usage (such as C), but many aliasing methods have proven quite costly. We present a technique that partitions the statements of a program to allow separate, and therefore possibly different, pointer aliasing analysis methods to be used on independent parts of the program. This decomposition enables exploration of tradeoff between algorithm efficiency and precision. We also present a new, efficient flow-insensitive pointer aliasing algorithm, which is used together with an existing flow-sensitive aliasing algorithm in our experiments. We demonstrate our technique in the context of determining side effects and variable fetches through names containing pointer dereferences (Thru-deref MOD/REF). Initial empirical results using a combination of a flow-sensitive and a flow-insensitive aliasing analysis on the same program, demonstrate that the resulting analysis is much faster than solely using the flow-sensitive method, and obtains similar precision for the Thru-deref MOD/REF problems.
Sean Zhang, Barbara G. Ryder, William Landi
SIGSOFT FSE3
1995 An Extended Form of Must Alias Analysis for Dynamic Allocation
abstract
The paper presents methods that we have implemented to improve the quality of the def-uses reported for dynamically allocated locations. The methods presented are based on the Ruggieri/Murtagh naming scheme for dynamically created locations. We expand upon this scheme to name dynamically allocated locations for some user written allocation routines. Using this expanded naming scheme, we introduce an inexpensive, non-iterative, and localized calculation of extended must alias analysis to handle dynamically allocated locations, and show how this information can be used to improve def-use information. This is the first attempt to specify must alias information for names which represent a set of dynamically allocated locations. Empirical results are presented to illustrate the usefulness of our method. We consider this work a step towards developing practical re-engineering tools for C.
Rita Z. Altucher, William Landi
POPL2
1994 Interprocedural Def-Use Associations for C Systems with Single Level Pointers
abstract
Def-use analysis links possible value-setting statements for a variable (i.e. definitions) to potential value-fetches (i.e. uses) of that value. This paper describes the first algorithm that calculates accurate interprocedural def-use associations in C software systems. Our algorithm accounts for program-point-specific pointer-induced aliases, though it is currently limited to programs using a single level of indirection. We prove the NP-hardness of the interprocedural reaching definitions problem and describe the approximations made by our polynomial-time algorithm. Initial empirical results are also presented.>
Hemant D. Pande, William Landi, Barbara G. Ryder
IEEE Trans. Software Eng.2
1993 Interprocedural Side Effect Analysis With Pointer Aliasing
abstract
We present a new interprocedural modification side effects algorithm for C programs, that can discern side effects through general-purpose pointer usage. Ours is the first complete design and implementation of such an algorithm. Preliminary performance findings support the practicality of the technique, which is based on our previous approximation algorithm for pointer aliases [LR92]. Each indirect store through a pointer variable is found, on average, to correspond to a store into 1.2 locations. This indicates that our program-point-specific pointer aliasing information is quite precise when used to determine the effects of these stores.
William Landi, Barbara G. Ryder, Sean Zhang
PLDI1
1992 A Safe Approximate Algorithm for Interprocedural Pointer Aliasing
abstract
During execution, when two or more names exist for the same location at some program point, we call them aliases. In a language which allows arbitrary pointers, the problem of determining aliases at a program point is ρ-space-hard [Lan92]. We present an algorithm for the Conditional May Alias problem, which can be used to safely approximate Interprocedural May Alias in the presence of pointers. This algorithm is as precise as possible in the worst case and has been implemented in a prototype analysis tool for C programs. Preliminary speed and precision results are presented.
William Landi, Barbara G. Ryder
PLDI1
1991 Pointer-Induced Aliasing: A Problem Classification
abstract
A?iasing occurs at some program point during execution when two or more names exist for the same location. We have isolated various programming language mechanisms which create aliases. We have classified the complexity of the fllas problem induced by each mechanism alone and in combination, as AfP-hard, complement tip-hard, or polynomial (’P). We present our problem classification, give an overview of our proof that finding interprocedural aliases in the presence of single level pointers is in 7, and present a represent tive proof for the NP-hard problems.
William Landi, Barbara G. Ryder
POPL1
1990 Profiling an Incremental Data Flow Analysis Algorithm
abstract
Incremental data flow analysis algorithms have been designed to deal efficiently with change in evolving software systems. These algorithms document the current state of a software system by incorporating change effects into previously derived information describing the definition and use of data in the system. Unfortunately, the performance of these algorithms cannot, in general, be characterized by analytic predictions of their expected behavior. It is possible, however, to observe their performance empirically and predict their average behavior. The authors report on experiments on the empirical profiling of a general-purpose, incremental data flow analysis algorithm. The algorithm, dominator based and coded in C, was applied to statistically significant numbers of feasible, random software systems of moderate size. The experimental results, with quantifiable confidence limits, substantiate the claim that incremental analyses are viable and grow more valuable as a software system grows in size.>
Barbara G. Ryder, William Landi, Hemant D. Pande
IEEE Trans. Software Eng.2