Bounds checking: an instance of hybrid analysis

9 Citations (Scopus)

Abstract

This paper presents an analysis for bounds checking of array subscripts that lifts checking assertions to program level under the form of an arbitrarily-complex predicate (inspector), whose runtime evaluation guards the execution of the code of interest. Separating the predicate from the computation makes it more amenable to optimization, and allows it to be split into a cascade of sufficient conditions of increasing complexity that optimizes the commoninspection path. While synthesizing the bounds checking invariant resembles type checking techniques, we rely on compiler simplification and runtime evaluation rather than employing complex inference and annotation systems that might discourage the nonspecialist user. We integrate the analysis in the compiler's repertoire of Futhark: a purely-functional core language supporting mapreduce nested parallelism on regular arrays, and show how the highlevel language invariants enable a relatively straightforward analysis. Finally, we report a qualitative evaluation of our technique on three real-world applications from the financial domain that indicates that the runtime overhead of predicates is negligible..

Original languageEnglish
Title of host publicationProceedings of ACM SIGPLAN International Workshop on Libraries, Languages, and Compilers for Array Programming
Number of pages7
PublisherAssociation for Computing Machinery
Publication date9 Jun 2014
Pages88-94
ISBN (Print)978-1-4503-2937-8
DOIs
Publication statusPublished - 9 Jun 2014
EventACM SIGPLAN International Workshop on Libraries, Languages and Compilers for Array Programming 2014 - Edinburgh, United Kingdom
Duration: 12 Jun 201413 Jun 2014

Conference

ConferenceACM SIGPLAN International Workshop on Libraries, Languages and Compilers for Array Programming 2014
Country/TerritoryUnited Kingdom
CityEdinburgh
Period12/06/201413/06/2014

Cite this