On merging software extensions
Acta Informatica
The program dependence graph and its use in optimization
ACM Transactions on Programming Languages and Systems (TOPLAS)
Composing recursive logic programs with clausal join
New Generation Computing - Special Issue: Selected Papers from the Workshop on Partial Evaluation and Mixed
Integrating noninterfering versions of programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Detecting equality of variables in programs
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Global value numbers and redundant computations
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
An efficient method of computing static single assignment form
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Dependence graphs and compiler optimizations
POPL '81 Proceedings of the 8th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The program dependence graph in a software development environment
SDE 1 Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
Inspection Methods in Programming: Cliches and Plans
Inspection Methods in Programming: Cliches and Plans
A new algorithm for semantics-based program integration
A new algorithm for semantics-based program integration
Structure-oriented merging of revisions of software documents
SCM '91 Proceedings of the 3rd international workshop on Software configuration management
Interprocedural Def-Use associations in C programs
TAV4 Proceedings of the symposium on Testing, analysis, and verification
A program integration algorithm that accommodates semantics-preserving transformations
ACM Transactions on Software Engineering and Methodology (TOSEM)
Combination of inheritance hierarchies
OOPSLA '92 conference proceedings on Object-oriented programming systems, languages, and applications
A comprehensive approach to parallel data flow analysis
ICS '92 Proceedings of the 6th international conference on Supercomputing
Software merge: semantics of combining changes to programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Program decomposition for pointer aliasing: a step toward practical analyses
SIGSOFT '96 Proceedings of the 4th ACM SIGSOFT symposium on Foundations of software engineering
Semantics Guided Regression Test Cost Reduction
IEEE Transactions on Software Engineering
Toward a complete transformational toolkit for compilers
ACM Transactions on Programming Languages and Systems (TOPLAS)
Interprocedural Def-Use Associations for C Systems with Single Level Pointers
IEEE Transactions on Software Engineering
An Implementation of and Experiment with Semantic Differencing
ICSM '01 Proceedings of the IEEE International Conference on Software Maintenance (ICSM'01)
Incremental Maintenance of Software Artifacts
IEEE Transactions on Software Engineering
Static type determination for C++
CTEC'94 Proceedings of the 6th conference on USENIX Sixth C++ Technical Conference - Volume 6
Hi-index | 0.00 |
Given a program Base and two variants, A and B, each created by modifying separate copies of Base, the goal of program integration is to determine whether the modifications interfere, and if they do not, to create an integrated program that includes both sets of changes as well as the portions of Base preserved in both variants. Text-based integration techniques, such as the one used by the UNIX diff3 utility, are obviously unsatisfactory because one has no guarantees about how the execution behavior of the integrated program relates to the behaviors of Base, A, and B. The first program-integration algorithm to provide such guarantees was developed by Horwitz, Prins, and Reps. However, a limitation of that algorithm is that it incorporates no notion of semantics-preserving transformations. This limitation causes the algorithm to be overly conservative in its definition of interference. For example, if one variant changes the way a computation is performed (without changing the values computed) while the other variant adds code that uses the result of the computation, the algorithm would classify those changes as interfering. This paper describes a new integration algorithm that is able to accommodate semantics-preserving transformations.