7 research outputs found

    A Language for Specifying Compiler Optimizations for Generic Software

    Get PDF
    Compiler optimization is important to software performance, and modern processor architectures make optimization even more critical. However, many modern software applications use libraries providing high levels of abstraction. Such libraries often hinder effective optimization—the libraries are difficult to analyze using current compiler technology. For example, high-level libraries often use dynamic memory allocation and indirectly expressed control structures, such as iterator-based loops. Programs using these libraries often cannot achieve an optimal level of performance. On the other hand, software libraries have also been recognized as potentially aiding in program optimization. One proposed implementation of library-based optimization is to allow the library author, or a library user, to define custom analyses and optimizations. Only limited systems have been created to take advantage of this potential, however. One problem in creating a framework for defining new optimizations and analyses is how users are to specify them: implementing them by hand inside a compiler is difficult and prone to errors. Thus, a domain-specific language for library-based compiler optimizations would be beneficial. Many optimization specification languages have appeared in the literature, but they tend to be either limited in power or unnecessarily difficult to use. Therefore, I have designed, implemented, and evaluated the Pavilion language for specifying program analyses and optimizations, designed for library authors and users. These analyses and optimizations can be based on the implementation of a particular library, its use in a specific program, or on the properties of a broad range of types, expressed through concepts. The new system is intended to provide a high level of expressiveness, even though the intended users are unlikely to be compiler experts

    Résolution d'équations en algèbre de Kleene : applications à l'analyse de programmes

    Get PDF
    Au fil des ans, l'algèbre de Kleene s'est avérée être un outil formel très pratique et flexible quant vient le temps de raisonner sur les programmes informatiques. Cependant, actuellement, la plupart des applications à l'analyse de programmes de l'algèbre de Kleene se font en sélectionnant un problème précis et en voyant comment l'algèbre de Kleene permet de le résoudre, ce qui limite les applications possibles. L'objectif visé par ce mémoire est de déterminer dans quelle mesure la résolution d'équations, en algèbre de Kleene, peut être utilisée en analyse de programmes. Une grande partie de ce mémoire est donc consacrée à la résolution de différents types d'équations dans différentes variantes de l'algèbre de Kleene. Puis nous montrons comment la vérification de programmes ainsi que la synthèse de contrôleurs peuvent tirer profit de la résolution d'équations en algèbre de Kleene

    A Language for Specifying Compiler Optimizations for Generic Software

    Full text link

    Incremental execution of transformation specifications

    No full text

    Incremental Execution of Transformation Specifications

    No full text

    Abstract Incremental Execution of Transformation Specifications

    No full text
    We aim to specify program transformations in a declarative style, and then to generate executable program transformers from such specifications. Many transformations require non-trivial program analysis to check their applicability, and it is prohibitively expensive to re-run such analyses after each transformation. It is desirable, therefore, that the analysis information is incrementally updated. We achieve this by drawing on two pieces of previous work: first, Bernhard Steffen’s proposal to use model checking for certain analysis problems, and second, John Conway’s theory of language factors. The first allows the neat specification of transformations, while the second opens the way for an incremental implementation. The two ideas are linked by using regular patterns instead of Steffen’s modal logic: these patterns can be viewed as queries on the set of program paths. Categories and Subject Descriptors: D.3.4 [Processors]: Optimization, Incremental compilers, Translator writing systems an
    corecore