A Fast and Precise Static Loop Analysis based on Abstract Interpretation, Program Slicing and Polytope Models

被引:31
|
作者
Lokuciejewski, Paul [1 ]
Cordes, Daniel [1 ]
Falk, Heiko [1 ]
Marwedel, Peter [1 ]
机构
[1] Embedded Syst Grp, D-44221 Dortmund, Germany
关键词
D O I
10.1109/CGO.2009.17
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
A static loop analysis is a program analysis computing loop iteration counts. This information is crucial for different fields of applications. In the domain of compilers, the knowledge about loop iterations can be exploited for aggressive loop optimizations like Loop Unrolling. A loop analyzer also provides static information about code execution frequencies which can assist feedback-directed optimizations. Another prominent application is the static worst-case execution time (WCET) analysis which relies on a safe approximation of loop iteration counts. In this paper, we propose a framework for a static loop analysis based on Abstract Interpretation, a theory of a sound approximation of program semantics. To accelerate the analysis, we preprocess the analyzed code using Program Slicing, a technique that removes statements irrelevant for the loop analysis. In addition, we introduce a novel polytope-based loop evaluation that further significantly reduces the analysis time. The efficiency of our loop analyzer is evaluated on a large number of benchmarks. Results show that 99% of the considered loops could be successfully analyzed in an acceptable amount of time. This study points out that our methodology is best suited for real-world problems.
引用
收藏
页码:136 / 146
页数:11
相关论文
共 50 条
  • [21] Abstract interpretation-based static safety for actors
    Garoche, Pierre-Loïc
    Pantel, Marc
    Thirioux, Xavier
    Journal of Software, 2007, 2 (03) : 87 - 98
  • [22] Trace partitioning in abstract interpretation based static analyzers
    Mauborgne, L
    Rival, X
    PROGRAMMING LANGUAGES AND SYSTEMS, PROCEEDINGS, 2005, 3444 : 5 - 20
  • [23] Practical Change Impact Analysis Based on Static Program Slicing for Industrial Software Systems
    Acharya, Mithun
    Robinson, Brian
    2011 33RD INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING (ICSE), 2011, : 746 - 755
  • [24] Abstract Simulation: a Static Analysis of Simulink Models
    Chapoutot, Alexandre
    Martel, Matthieu
    2009 INTERNATIONAL CONFERENCE ON EMBEDDED SOFTWARE AND SYSTEMS, PROCEEDINGS, 2009, : 83 - +
  • [25] Static Value Analysis of Python']Python Programs by Abstract Interpretation
    Fromherz, Aymeric
    Ouadjaout, Abdelraouf
    Mine, Antoine
    NASA FORMAL METHODS, NFM 2018, 2018, 10811 : 185 - 202
  • [26] Static Analysis of Sequential Function Charts using Abstract Interpretation
    Simon, Hendrik
    Kowalewski, Stefan
    2016 IEEE 21ST INTERNATIONAL CONFERENCE ON EMERGING TECHNOLOGIES AND FACTORY AUTOMATION (ETFA), 2016,
  • [27] Static analysis by abstract interpretation: application to the detection of heap overflows
    Allamigeon, Xavier
    Hymans, Charles
    JOURNAL OF COMPUTER VIROLOGY AND HACKING TECHNIQUES, 2008, 4 (01): : 5 - 23
  • [28] Disjunctive Relational Abstract Interpretation for Interprocedural Program Analysis
    Boutonnet, Remy
    Halbwachs, Nicolas
    VERIFICATION, MODEL CHECKING, AND ABSTRACT INTERPRETATION, VMCAI 2019, 2019, 11388 : 136 - 159
  • [29] Abstract Interpretation with Infinitesimals Towards Scalability in Nonstandard Static Analysis
    Kido, Kengo
    Chaudhuri, Swarat
    Hasuo, Ichiro
    VERIFICATION, MODEL CHECKING, AND ABSTRACT INTERPRETATION, VMCAI 2016, 2016, 9583 : 229 - 249
  • [30] Static Analysis by Abstract Interpretation of Numerical Programs and Systems, and FLUCTUAT
    Goubault, Eric
    STATIC ANALYSIS, SAS 2013, 2013, 7935 : 1 - 3