In computer science, Steensgaard's algorithm is a scalable, flow-insensitive, algorithm for pointer analysis. It is often used in compilers, due to its speed (for example, an implementation is available in the LLVM compiler framework).[1] In its original formulation, this algorithm was field-, context-, and array-insensitive.

Steensgaard's algorithm is based on equality constraints,[2] as opposed to Andersen's algorithm, which is based on subset constraints. This allows points-to information to be tracked using a union-find data structure. This choice gives the algorithm its characteristic speed; when implemented using a union-find data structure it is linear space and almost linear time in the size of the input program.

Bjarne Steensgaard's formulation of the algorithm was in terms of type inference and type checking. Steensgaard proposed the points-to analysis for a small imperative but generic pointer language which captures the essential properties of other common languages with pointers, like C. The language semantics and typing rules constitute the analysis.

References

edit
  1. ^ "LLVM Alias Analysis Infrastructure — LLVM 8 documentation". releases.llvm.org. Retrieved 2022-04-22.
  2. ^ (Smaragdakis & Balatsouras 2015, p. 14)


📚 Artikel Terkait di Wikipedia

Pointer analysis

However, a context-insensitive analysis such as Andersen's or Steensgaard's algorithm would lose precision when analyzing the calls to id, and compute

Tracing garbage collection

than others such as reference counting – and there are a large number of algorithms used in implementation. Informally, an object is reachable if it is referenced

SIGPLAN

Rüthing, Bernhard Steffen 2001 (for 1991): A Data Locality Optimizing Algorithm by Michael E. Wolf and Monica S. Lam 2000 (for 1990): Profile Guided Code

2023 in science

loss of sentience and life) and near-death experiences. 2 May A new AI algorithm developed by Baidu is shown to boost the antibody response of COVID-19