https://www.mdu.se/

mdu.sePublications
1234565 of 6
CiteExportLink to record
Permanent link

Direct link
Cite
Citation style
  • apa
  • ieee
  • modern-language-association-8th-edition
  • vancouver
  • Other style
More styles
Language
  • de-DE
  • en-GB
  • en-US
  • fi-FI
  • nn-NO
  • nn-NB
  • sv-SE
  • Other locale
More languages
Output format
  • html
  • text
  • asciidoc
  • rtf
Graph-Free Control Dependence: A Syntax-Directed Method
Mälardalen University, Faculty of Engineering and Health Sciences, Department of Computer Science & Engineering.ORCID iD: 0000-0001-9410-1344
2026 (English)Doctoral thesis, comprehensive summary (Other academic)
Abstract [en]

Static program analysis aims to analyse program behavior without executing it, and has traditionally been implemented as offline tools running on desktop or server machines. As embedded and edge platforms gain compute capability, however, parts of these analyses are increasingly expected to run in new contexts—for example, inside Integrated Development Environments (IDEs), where developers require continuous, low-latency feedback as code evolves, and on embedded systems and hardware, where integrating selected analysis tasks can improve performance or enable new functionality. These settings impose strict constraints—low latency, limited memory, and energy efficiency—which favor demand-driven and incremental analyses over batch-oriented processing. A major obstacle to deploying static analyses in such settings is their reliance on multi-stage graph construction and fixed-point iteration; for example, computing control dependencies commonly involves transforming the program into a node-based representation, constructing a Control Flow Graph (CFG), and deriving a post-dominator tree (PDT), and materializing these intermediate structures increases both latency and memory footprint. This thesis enables the use of static program analysis techniques in such constrained environments through two distinct and complementary directions: first, it reduces unnecessary computation in unstructured code by eliminating full fixed-point iteration and avoiding complete construction of CFGs and PDTs; second, it introduces a syntax-directed method for computing control dependencies without constructing intermediate graphs or reformulating the program into additional node-based representations. The method is single-pass, requires only a constant number of auxiliary in-memory entities, and eliminates graph overhead; experimental evaluation shows that it preserves accuracy while substantially reducing memory usage and improving performance—typically by 6–12× compared to representative graph-based baselines—for well-structured programming languages. Although these two directions are distinct, they are complementary: the syntax-directed method is designed to be integrated into the demand-driven approach.

Place, publisher, year, edition, pages
Västerås: Mälardalens universitet, 2026.
Series
Mälardalen University Press Dissertations, ISSN 1651-4238 ; 470
National Category
Computer Sciences
Research subject
Computer Science
Identifiers
URN: urn:nbn:se:mdh:diva-77443ISBN: 978-91-7485-761-0 (print)OAI: oai:DiVA.org:mdh-77443DiVA, id: diva2:2069547
Public defence
2026-08-27, Gamma och digitalt, Mälardalens universitet, Västerås, 13:15 (English)
Opponent
Supervisors
Available from: 2026-06-10 Created: 2026-06-10 Last updated: 2026-06-10Bibliographically approved
List of papers
1. Static Backward Demand-Driven Slicing
Open this publication in new window or tab >>Static Backward Demand-Driven Slicing
2015 (English)In: PEPM '15 Proceedings of the 2015 Workshop on Partial Evaluation and Program Manipulation, 2015, p. 115-126Conference paper, Published paper (Refereed)
Abstract [en]

Program slicing identifies the program parts that may affect certain properties of the program, such as the outcomes of conditions affecting the program flow. Ottenstein’s Program Dependence Graph (PDG) based algorithm is the state-of-practice for static slicing today: it is well-suited in applications where many slices are computed, since the cost of building the PDG then can be amortized over the slices. But there are applications that require few slices of a given program, and where computing all the dependencies may be unnecessary. We present a light-weight interprocedural algorithm for backward static slicing where the data dependence analysis is done using a variant of the Strongly Live Variables (SLV) analysis. This allows us to avoid building the Data Dependence Graph, and to slice program statements “on-the-fly” during the SLV analysis which is potentially faster for computing few slices. Furthermore we use an abstract interpretation-based value analysis to extend our slicing algorithm to slice low-level code, where data dependencies are not evident due to dynamically calculated addresses. Our algorithm computes slices as sets of Control Flow Graph nodes: we show how to adapt existing techniques to generate executable slices that correspond to semantically correct code, where jump statements have been inserted at appropriate places. We have implemented our slicing algorithms, and made an experimental evaluation comparing them with the standard PDG-based algorithm for a number of example programs. We obtain the same accuracy as for PDG-based slicing, sometimes with substantial improvements in performance.

Keywords
Static backward slicing, Unstructured control flow, Data flow equations, Computational complexity, Strongly live variable, Abstract Interpretation
National Category
Computer and Information Sciences
Identifiers
urn:nbn:se:mdh:diva-28103 (URN)10.1145/2678015.2682538 (DOI)000461460400013 ()2-s2.0-84947975458 (Scopus ID)978-1-4503-3297-2 (ISBN)
Conference
ACM Sigplan-Sigact Symposium on Partial Evaluation and Program Manipulation PEPM, 12-18 Jan 2015, Mumbai, India
Projects
APARTS - Advanced Program Analysis for Real-Time SystemsSYNOPSIS - Safety Analysis for Predictable Software Intensive SystemsTOCSYC - Testing of Critical System Characteristics (KKS)
Available from: 2015-06-11 Created: 2015-06-08 Last updated: 2026-06-10Bibliographically approved
2. Static backward program slicing for safety-critical systems
Open this publication in new window or tab >>Static backward program slicing for safety-critical systems
2015 (English)In: Lecture Notes in Computer Science, 2015, p. 50-65Conference paper, Published paper (Refereed)
Abstract [en]

Static program slicing is a technique to detect the program parts (i.e. the “slice”) of the given program possibly affecting a given property. The technique is of interest for analysing safety-critical software, since it can identify the program parts that may affect various safety properties. Verification efforts can then be directed towards those parts, leading to a more efficient verification process. We have developed a novel method for static backward program slicing. The method works for well-structured programs, as commonly demanded by coding standards for safety-critical software. It utilises the program structure to obtain a highly efficient slicing process, where control dependencies are inferred from the program structure, and the slicing is done on-the-fly concurrently with the data dependence analysis. We have evaluated our method experimentally. For applications that require few slices to be taken, like checking for a set of safety properties, we obtain large speedups as compared with the standard method for static backward program slicing. We have also investigated how the speedup varies with various parameters such as code size, size of the slice relative to the full program, and relative frequency of conditions in the code.

Keywords
Dataflow analysis, Program dependency graph, Program slicing, Strongly live variable, Ada (programming language), Codes (symbols), Data flow analysis, Program processors, Safety engineering, Data dependence analysis, Program dependency graphs, Relative frequencies, Safety critical software, Safety critical systems, Verification process, Application programs
National Category
Electrical Engineering, Electronic Engineering, Information Engineering
Identifiers
urn:nbn:se:mdh:diva-29840 (URN)10.1007/978-3-319-19584-1_4 (DOI)2-s2.0-84947918293 (Scopus ID)9783319195834 (ISBN)
Conference
20th Ada-Europe International Conference on Reliable Software Technologies, Ada-Europe 2015; Madrid; Spain; 22 June 2015 through 26 June 2015
Available from: 2015-12-04 Created: 2015-12-04 Last updated: 2026-06-10Bibliographically approved
3. Enhanced PCB Based Slicing
Open this publication in new window or tab >>Enhanced PCB Based Slicing
2016 (English)In: Proceedings of the Fifth International Valentin Turchin Workshop on Metacomputation, Pereslavl-Zalessky, Russian Federation, 2016, p. 71-91Conference paper, Published paper (Refereed)
Place, publisher, year, edition, pages
Pereslavl-Zalessky, Russian Federation: , 2016
National Category
Computer and Information Sciences
Identifiers
urn:nbn:se:mdh:diva-33770 (URN)
Conference
Fifth International Valentin Turchin Workshop on Metacomputation META 2016 , 27 Jun 2016, Pereslavl-Zalessky, Russian Federation
Projects
SYNOPSIS - Safety Analysis for Predictable Software Intensive Systems
Available from: 2016-11-21 Created: 2016-11-21 Last updated: 2026-06-10Bibliographically approved
4. Demand-Driven Static Backward Slicing for Unstructured Programs
Open this publication in new window or tab >>Demand-Driven Static Backward Slicing for Unstructured Programs
2019 (English)Report (Other academic)
Abstract [en]

Backward program slicing identifies the program parts that might influence a particular variable at a program point. A program part (e.g., a statement) can be directly influenced by another part due to its data or control dependence on the later. The classical program slicing approaches are designed to find in advance all the data and control dependencies in the program. This design entails a considerable amount of unnecessary computations because not all the dependencies are required for computing the slice. Demand-driven program slicing approaches try to raise the analysis performance by avoiding the unnecessary computations. However, these approaches cannot address unstructured programs in a demand-driven fashion. On the other hand, the existing techniques that compute the control dependencies in unstructured programs are based on fixed-point iterations, which limits their integration to the demand-driven slicing approaches. Program slicing based on Predicate Code Block (PCB) is a new demand-driven slicing approach that can address only structured programs. This paper presents the first demand-driven technique to compute the control dependencies in unstructured programs. In this regard, the technique uses flow information, location-based information and syntactic structure of the source code. Further, the paper shows how the new technique can be integrated to the PCB-based slicing approach to address unstructured programs.

Keywords
Static Program AnalysisPredicate Control BlockControl DependenceStatic Program SlicingUnstructured Programs.
National Category
Engineering and Technology Computer Systems
Identifiers
urn:nbn:se:mdh:diva-45033 (URN)MDH-MRTC-324/2019-1-SE (ISRN)
Projects
TESTOMAT Project - The Next Level of Test Automation
Available from: 2019-08-22 Created: 2019-08-22 Last updated: 2026-06-10Bibliographically approved
5. Syntax-Directed Control Dependence Analysis: Eliminating Graph Overhead
Open this publication in new window or tab >>Syntax-Directed Control Dependence Analysis: Eliminating Graph Overhead
2025 (English)Report (Other academic)
Abstract [en]

State-of-practice techniques in static program analysis mainly depend on constructing intermediate data structures, primarily graphs, to facilitate various analyses. However, these structures introduce significant computational overhead in terms of time and space. One key static analysis technique is the computation of control dependencies,which plays a crucial role in optimizing compilers, program slicing, debugging, and parallelization by determining the execution order of statements based on conditional branches. In this paper, we present an improved technique for computing control dependencies without requiring any intermediate graph-based representations. Our approach eliminates unnecessary computations, significantly reducing resource consumption while maintaining accuracy. Experimental evaluations demonstrate that our method not only outperforms classical techniques in terms of execution speed but also exhibits superior scalability and stability when applied to large-scale programs. These findings suggest that our approachis a viable alternative to conventional methods, offering a more efficient solution for static program analysis in modern software engineering.

Publisher
p. 83
Series
MRTC Report ; MDH-MRTC-354/2025-1-SE
National Category
Computer Sciences
Identifiers
urn:nbn:se:mdh:diva-70368 (URN)MDH-MRTC-354/2025-1-SE (ISRN)
Available from: 2025-02-28 Created: 2025-02-28 Last updated: 2026-06-10Bibliographically approved

Open Access in DiVA

No full text in DiVA

Authority records

Khanfar, Husni

Search in DiVA

By author/editor
Khanfar, Husni
By organisation
Department of Computer Science & Engineering
Computer Sciences

Search outside of DiVA

GoogleGoogle Scholar

isbn
urn-nbn

Altmetric score

isbn
urn-nbn
Total: 64 hits
1234565 of 6
CiteExportLink to record
Permanent link

Direct link
Cite
Citation style
  • apa
  • ieee
  • modern-language-association-8th-edition
  • vancouver
  • Other style
More styles
Language
  • de-DE
  • en-GB
  • en-US
  • fi-FI
  • nn-NO
  • nn-NB
  • sv-SE
  • Other locale
More languages
Output format
  • html
  • text
  • asciidoc
  • rtf