Index: Features.html =================================================================== --- Features.html +++ Features.html @@ -62,7 +62,7 @@ profile-driven, and some simple loop optimizations.
  • It supports a life-long + href="https://llvm.org/pubs/2004-01-30-CGO-LLVM.html">life-long compilation model, including link-time, install-time, run-time, and offline optimization.
  • @@ -86,7 +86,7 @@ of development.
  • LLVM is freely available under an OSI-approved "three-clause BSD" license.
  • + href="https://llvm.org/docs/FAQ.html#license">license.
  • LLVM is currently used by several commercial entities, who contribute many extensions and new features.
  • Index: OpenProjects.html =================================================================== --- OpenProjects.html +++ OpenProjects.html @@ -113,7 +113,7 @@
    -

    Written by the LLVM Team

    +

    Written by the LLVM Team

    @@ -164,7 +164,7 @@ After instruction selection LLVM uses the MI (Machine Instruction) representation for programs. We recently added support for reading and writing this representation to disk - (http://llvm.org/docs/MIRLangRef.html). Usage of this format for writing + (https://llvm.org/docs/MIRLangRef.html). Usage of this format for writing tests is growing and so is the desire to improve the format, tools and workflow. Possible projects:

    @@ -238,7 +238,7 @@
    -

    Description of the project: LLVM functions can be tagged with several attributes such as the function only reads memory, or the function cannot throw exceptions. These attributes are used by many optimizations when deciding if a particular transformation is valid or not. Functions attributes can be either given by the frontend or be inferred by LLVM.
    +

    Description of the project: LLVM functions can be tagged with several attributes such as the function only reads memory, or the function cannot throw exceptions. These attributes are used by many optimizations when deciding if a particular transformation is valid or not. Functions attributes can be either given by the frontend or be inferred by LLVM.
    The goal of this project is to improve current function attributes inference algorithms, and to infer attributes that are not inferred right now. This will be accomplished via intra- and/or inter-procedural analyses. See this email for a list of oportunities for improvement.

    Confirmed Mentor: Nuno Lopes

    Desirable skills: Intermediate knowledge of C++. Optional familiarity with static analysis/abstract interpretation.

    @@ -548,7 +548,7 @@

    Description of the project: ThinLTO is a cool new technology to perform Link-Time Optimization (see - this talk for more info). It is fairly new + this talk for more info). It is fairly new and there are multiple improvements about cross-module optimizations that can be made there.

    @@ -591,7 +591,7 @@

    Description of the project: - See this talk + See this talk for a starting point. Please take a look at the list of enhancements and bugs in @@ -623,7 +623,7 @@ After instruction selection LLVM uses the MI (Machine Instruction) representation for programs. We recently added support for reading and writing this representation to disk - (http://llvm.org/docs/MIRLangRef.html). Usage of this format for writing + (https://llvm.org/docs/MIRLangRef.html). Usage of this format for writing tests is growing and so is the desire to improve the format, tools and workflow. Improvements would be welcome: @@ -989,7 +989,7 @@

    Confirmed Mentor: Tobias Grosser

    @@ -1030,7 +1030,7 @@

    Confirmed Mentor: Tobias Grosser

    @@ -1172,9 +1172,9 @@ Some specific ones that would be great to have:

    @@ -1243,7 +1243,7 @@

    Find benchmarks either using our test results or on your own, +href="https://llvm.org/nightlytest/">test results or on your own, where LLVM code generators do not produce optimal code or where another compiler produces better code. Try to minimize the test case that demonstrates the issue. Then, either submit a @@ -1263,11 +1263,11 @@

    -

    The +

    The LNT perf database has some nice features like detect moving average, standard deviations, variations, etc. But the report page give too much emphasis on the individual variation (where noise can be higher than signal), eg. - + this case.

    The first part of the project would be to create an analysis tool that would @@ -1300,7 +1300,7 @@

    -

    The +

    The LLVM Coverage Report has a nice interface to show what source lines are covered by the tests, but it doesn't mentions which tests, which revision and what architecture is covered.

    @@ -1373,7 +1373,7 @@
    1. Improvements for Debug Information Generation
    2. -
    3. EH support for non-call exceptions
    4. +
    5. EH support for non-call exceptions
    6. Many ideas for feature requests are stored in LLVM bugzilla. Searchfor bugs with a "new-feature" keyword.
    @@ -1400,7 +1400,7 @@
  • The alias analysis API supports the getModRefBehavior method, which allows the implementation to give details analysis of the functions. For example, we - could implement full knowledge of + could implement full knowledge of printf/scanf side effects, which would be useful. This feature is in place but not being used for anything right now.
  • @@ -1431,7 +1431,7 @@ something and change sys headers to use it.

  • There are lots of ways to optimize out and improve handling of +href="https://llvm.org/PR452">improve handling of memcpy/memset.
  • @@ -1516,7 +1516,7 @@
  • Type inference (aka. devirtualization)
  • Value - assertions (also PR810).
  • + assertions (also PR810).
    Index: ProjectsWithLLVM/index.html =================================================================== --- ProjectsWithLLVM/index.html +++ ProjectsWithLLVM/index.html @@ -648,7 +648,7 @@ restricted to programs in the Single Static Assignment (SSA) form. Although striking, this major theoretical accomplishment has yet to be endorsed empirically. This project consists in the implementation of a complete - SSA-based register allocator using the LLVM compiler framework. We have implemented a static transformation of the target program that simplifies the implementation of the register allocator and improves the quality of the code that it @@ -830,7 +830,7 @@

    Wiki page with overview; design doc, and user manual. You can download - llvm-tv from LLVM SVN (http://llvm.org/svn/llvm-project/television/trunk).

    + llvm-tv from LLVM SVN (https://llvm.org/svn/llvm-project/television/trunk).

    Index: RandomBoxes/002-LLVM-TV.html =================================================================== --- RandomBoxes/002-LLVM-TV.html +++ RandomBoxes/002-LLVM-TV.html @@ -1,5 +1,5 @@ -Check out the LLVM +Check out the LLVM Visualization Tool, a neat tool for graphically inspecting LLVM programs. It lets you view the CFG, Call Graph, SSA def-use chains, and data structures in a bytecode file. Index: Users.html =================================================================== --- Users.html +++ Users.html @@ -13,7 +13,7 @@

    This page has only brief entries. Some of these projects are described in more detail on the - "Projects Using LLVM" page. + "Projects Using LLVM" page.

    LLVM Distributions
    @@ -39,7 +39,7 @@ Adobe Systems Incorporated Optimizer and JIT codegen for the Hydra Language. + href="https://llvm.org/ProjectsWithLLVM/#adobe-hydra">Hydra Language. @@ -47,7 +47,7 @@ Adobe Systems Incorporated Alchemy C/C++ Compiler for the ActionScript Virtual Machine (AVM2). See the FAQ - and Scott Petersen's DevMtg talk for more details. + and Scott Petersen's DevMtg talk for more details. @@ -148,7 +148,7 @@ Intel - + OpenCL @@ -269,16 +269,16 @@ Modula-2 compiler w/ObjC runtime support. Targets Objective-C and LLVM. - + - + IcedTea Version of Sun's OpenJDK Uses LLVM as JIT on architectures other than x86 and Sparc. - + PyPy Project Python interpreter written in Python. Targets LLVM and C. Index: demo/DemoInfo.html =================================================================== --- demo/DemoInfo.html +++ demo/DemoInfo.html @@ -86,7 +86,7 @@

    Select the target you want to output code for. Generally a target uses the -llc tool to output machine assembly +llc tool to output machine assembly code. However, a few special targets exists:

    @@ -93,7 +93,7 @@
    LLVM assembly:
    Select this option to run the LLVM dissambler -(llvm-dis tool) to show the LLVM IR. +(llvm-dis tool) to show the LLVM IR.
    LLVM C++ API code:
    @@ -108,7 +108,7 @@

    Select this option to run the llvm-bcanalyzer tool +href="https://llvm.org/cmds/llvm-bcanalyzer.html">llvm-bcanalyzer tool on the generated bytecode, which introspects into the format of the .bc file itself.

    Index: demo/index.cgi =================================================================== --- demo/index.cgi +++ demo/index.cgi @@ -125,7 +125,7 @@ Try out LLVM and Clang in your browser! Index: devmtg/2007-05/index.html =================================================================== --- devmtg/2007-05/index.html +++ devmtg/2007-05/index.html @@ -9,7 +9,7 @@ The LLVM Compiler Infrastructure Project + href="https://llvm.org/devmtg/2007-05/podcast.xml"> @@ -17,7 +17,7 @@
    May 25, 2007
    LLVM Developers' Index: devmtg/2007-05/podcast.xml =================================================================== --- devmtg/2007-05/podcast.xml +++ devmtg/2007-05/podcast.xml @@ -4,7 +4,7 @@ Fri, 13 Jul 2007 18:08:44 -0700 LLVM Developers' Meeting Proceedings Chris Hanson - http://llvm.org/devmtg/2007-05/ + https://llvm.org/devmtg/2007-05/ Proceedings of the LLVM Developers' Meeting. @@ -27,8 +27,8 @@ - - http://llvm.org/devmtg/2007-05/15-Lattner-Feedback.mov + + https://llvm.org/devmtg/2007-05/15-Lattner-Feedback.mov Fri, 25 May 2007 17:42:43 -0700 Software How-To no @@ -41,8 +41,8 @@ - - http://llvm.org/devmtg/2007-05/14-Spencer-ProjMgmt.mov + + https://llvm.org/devmtg/2007-05/14-Spencer-ProjMgmt.mov Fri, 25 May 2007 17:42:36 -0700 Software How-To no @@ -55,8 +55,8 @@ While our adoption has increased greatly recently, we're still tiny compared to other compiler and virtual machine systems. While our adoption has increased greatly recently, we're still tiny compared to other compiler and virtual machine systems. - - http://llvm.org/devmtg/2007-05/13-Lattner-Adoption.mov + + https://llvm.org/devmtg/2007-05/13-Lattner-Adoption.mov Fri, 25 May 2007 17:42:28 -0700 Software How-To no @@ -69,8 +69,8 @@ Does the development community care to disclose and maintain advance information about what is being worked on? Does the development community care to disclose and maintain advance information about what is being worked on? - - http://llvm.org/devmtg/2007-05/12-Spencer-Roadmap.mov + + https://llvm.org/devmtg/2007-05/12-Spencer-Roadmap.mov Fri, 25 May 2007 17:42:22 -0700 Software How-To no @@ -83,8 +83,8 @@ For multi-threaded shared memory models. For multi-threaded shared memory models. - - http://llvm.org/devmtg/2007-05/11-Lamb-Concurrency.mov + + https://llvm.org/devmtg/2007-05/11-Lamb-Concurrency.mov Fri, 25 May 2007 17:42:16 -0700 Software How-To no @@ -97,8 +97,8 @@ A presentation put together in 10 minutes, talking about LLVM being used for OpenGL and some speculative talk about dynamic languages. A presentation put together in 10 minutes, talking about LLVM being used for OpenGL and some speculative talk about dynamic languages. - - http://llvm.org/devmtg/2007-05/10-Lattner-OpenGL.mov + + https://llvm.org/devmtg/2007-05/10-Lattner-OpenGL.mov Fri, 25 May 2007 17:41:18 -0700 Software How-To no @@ -111,8 +111,8 @@ This talk describes a new from-scratch C frontend (which is aiming to support Objective C and C++ someday) for LLVM, built as a native part of the LLVM system and in the LLVM design style. This talk describes a new from-scratch C frontend (which is aiming to support Objective C and C++ someday) for LLVM, built as a native part of the LLVM system and in the LLVM design style. - - http://llvm.org/devmtg/2007-05/09-Naroff-CFE.mov + + https://llvm.org/devmtg/2007-05/09-Naroff-CFE.mov Fri, 25 May 2007 17:41:09 -0700 Software How-To no @@ -125,8 +125,8 @@ A presentation on our research to create a virtual machine that operates below the operating system and a brief introduction to some of the novel security capabilities that our architecture can enable. A presentation on our research to create a virtual machine that operates below the operating system and a brief introduction to some of the novel security capabilities that our architecture can enable. - - http://llvm.org/devmtg/2007-05/08-Criswell-SVA.mov + + https://llvm.org/devmtg/2007-05/08-Criswell-SVA.mov Fri, 25 May 2007 17:40:49 -0700 Software How-To no @@ -139,8 +139,8 @@ An overview of HLVM, its current status and its goals after integration with LLVM. An overview of HLVM, its current status and its goals after integration with LLVM. - - http://llvm.org/devmtg/2007-05/06-Spencer-HLVM.mov + + https://llvm.org/devmtg/2007-05/06-Spencer-HLVM.mov Fri, 25 May 2007 17:28:29 -0700 Software How-To no @@ -153,8 +153,8 @@ A review of the design and implementation of LLVM's Predicate Simplifier Pass, otherwise known as VRP (Value Range Propagation). A review of the design and implementation of LLVM's Predicate Simplifier Pass, otherwise known as VRP (Value Range Propagation). - - http://llvm.org/devmtg/2007-05/05-Lewycky-Predsimplify.mov + + https://llvm.org/devmtg/2007-05/05-Lewycky-Predsimplify.mov Fri, 25 May 2007 17:27:47 -0700 Software How-To no @@ -167,8 +167,8 @@ An overview of the LLVM generic code generator design and changes to it that are coming in the future. An overview of the LLVM generic code generator design and changes to it that are coming in the future. - - http://llvm.org/devmtg/2007-05/04-Cheng-Codegen.mov + + https://llvm.org/devmtg/2007-05/04-Cheng-Codegen.mov Fri, 25 May 2007 17:27:14 -0700 Software How-To no @@ -181,8 +181,8 @@ The PassManager, which manages the execution of all LLVM passes, was recently revised to be simpler and more useful. This talk will help you understand what the new pass manager does and how to use it. The PassManager, which manages the execution of all LLVM passes, was recently revised to be simpler and more useful. This talk will help you understand what the new pass manager does and how to use it. - - http://llvm.org/devmtg/2007-05/03-Patel-Passmanager.mov + + https://llvm.org/devmtg/2007-05/03-Patel-Passmanager.mov Fri, 25 May 2007 17:26:47 -0700 Software How-To no @@ -195,8 +195,8 @@ Everyone introduced themselves to the group. Everyone introduced themselves to the group. - - http://llvm.org/devmtg/2007-05/02-Introductions.mov + + https://llvm.org/devmtg/2007-05/02-Introductions.mov Fri, 25 May 2007 17:22:17 -0700 Software How-To no @@ -209,8 +209,8 @@ During this brief session, Vikram and Chris (the originators of LLVM) presented a brief history of the early history of LLVM. During this brief session, Vikram and Chris (the originators of LLVM) presented a brief history of the early history of LLVM. - - http://llvm.org/devmtg/2007-05/01-History.mov + + https://llvm.org/devmtg/2007-05/01-History.mov Fri, 25 May 2007 17:21:22 -0700 Software How-To no Index: devmtg/2013-11/slides/BenchmarkBOFNotes.html =================================================================== --- devmtg/2013-11/slides/BenchmarkBOFNotes.html +++ devmtg/2013-11/slides/BenchmarkBOFNotes.html @@ -28,7 +28,7 @@

    We already have a central database that stores benchmarking numbers, produced for 2 boards, see -perf's +perf's page. However, it seems no-one monitors the produced results, nor is it easy to derive from those numbers if a particular patch really introduced a significant regression.

    Index: devmtg/2015-04/index.html =================================================================== --- devmtg/2015-04/index.html +++ devmtg/2015-04/index.html @@ -66,99 +66,99 @@ - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + @@ -165,22 +165,22 @@ - - + + - - + + - - + + @@ -190,8 +190,8 @@

    Lightning talks: - Video HD - Video SD + Video HD + Video SD

    Video HDVideo SDSlidesTalk
    Video HDVideo SDVideo HDVideo SD   Introduction
    Andy Thomason
    Video HDVideo SDVideo HDVideo SD Slides Keynote: C Concurrency: Still Tricky
    Francesco Zappa Nardelli
    Video HDVideo SDVideo HDVideo SD Slides ThinLTO: A Fine-Grained Demand-Driven Infrastructure
    Teresa Johnson and Xinliang David Li
    Video HDVideo SDVideo HDVideo SD Slides Supporting the new IBM z13 mainframe and its SIMD vector unit
    Ulrich Weigand
    Video HDVideo SDVideo HDVideo SD Slides Loop fusion amid complex control flow
    Ramshankar Ramanarayanan and Dibyendu Das
    Video HDVideo SDVideo HDVideo SD Slides T-EMU 2.0: The Next Generation LLVM Based Micro-Processor Emulator
    Mattias Holm
    Video HDVideo SDVideo HDVideo SD Slides Templight: A Clang Extension for Debugging and Profiling C++ Template Metaprograms
    Zoltan Porkolab
    Video HDVideo SDVideo HDVideo SD Slides LLPE: High accurate partial evaluation for LLVM IR
    Christopher Smowton
    Video HDVideo SDVideo HDVideo SD   Keynote: LLVM meets the truly alien: the Mill CPU architecture in a multi-target tool chain
    Ivan Godard
    Video HDVideo SDVideo HDVideo SD Slides A high-level implementation of software pipelining in LLVM
    Roel Jordans and David Moloney
    Video HDVideo SDVideo HDVideo SD Slides PSLP: Padded SLP Automatic Vectorization
    Vasileios Porpodas, Alberto Magni and Timothy Jones
    Video HDVideo SDVideo HDVideo SD Slides Vectorization Of Control Flow Using New Masked Vector Intrinsics
    Elena Demikhovsky
    Video HDVideo SDVideo HDVideo SD Slides Why should I use LLDB?
    Deepak Panickal and Ewan Crawford
    Video HDVideo SDVideo HDVideo SD Slides LLILC: LLVM as a code generator for the CoreCLR
    Andrew Ayers
    Video HDVideo SDVideo HDVideo SD Slides Industrial Experiences with the Clang Static Analysis Toolset
    Daniel Krupp, Gyorgy Orban, Gabor Horvath and Bence Babati
    Video HDVideo SDVideo HDVideo SD   C++ on the web: ponies for developers without pwn'ing users
    Jf Bastien
    Video HDVideo SDVideo HDVideo SD Slides Challenges of mixed-width vector code generation and static scheduling in LLVM
    Erkan Diken, Pierre-Andre Saulais, Martin J. O'Riordan and David Moloney
    Index: devmtg/2017-03/2016/10/14/cfc-out.html =================================================================== --- devmtg/2017-03/2016/10/14/cfc-out.html +++ devmtg/2017-03/2016/10/14/cfc-out.html @@ -10,18 +10,18 @@ - - - - - - + + + + + + - + @@ -29,7 +29,7 @@ @@ -358,7 +358,7 @@

    Clank: Java-port of C/C++ compiler frontend - - [pdf] + [pdf] [video]

    @@ -402,7 +402,7 @@

    CodeCompass: An Open Software Comprehension Framework - - [pdf] + [pdf] [video]

    @@ -446,7 +446,7 @@

    Cross Translational Unit Analysis in Clang Static Analyzer: Prototype and Measurements - - [pdf] + [pdf] [video]

    @@ -484,7 +484,7 @@

    Delivering Sample-based PGO for PlayStation(R)4 (and the impact on optimized debugging) - - [pdf] + [pdf] [video]

    @@ -540,7 +540,7 @@

    Effective Compilation of Higher-Order Programs - - [pdf] + [pdf] [video]

    @@ -566,7 +566,7 @@

    Expressing high level optimizations within LLVM - - [pdf] + [pdf] [video]

    @@ -598,7 +598,7 @@

    Formalizing the Concurrency Semantics of an LLVM Fragment - - [pdf] + [pdf] [video]

    @@ -630,7 +630,7 @@

    Introducing VPlan to the Loop Vectorizer - - [pdf] + [pdf] [video]

    @@ -656,7 +656,7 @@

    LLVM performance optimization for z Systems - - [pdf] + [pdf] [video]

    @@ -725,7 +725,7 @@

    Path Invariance Based Partial Loop Un-switching - - [pdf] + [pdf] [video]

    @@ -769,7 +769,7 @@

    Register Allocation and Instruction Scheduling in Unison - - [pdf] + [pdf] [video]

    @@ -801,7 +801,7 @@

    SPIR-V infrastructure and its place in the LLVM ecosystem - - [pdf] + [pdf] [video]

    @@ -858,7 +858,7 @@

    Using LLVM in a scalable, high-available, in-memory database server - - [pdf] + [pdf] [video]

    @@ -993,7 +993,7 @@

    Automated Combination of Tolerance and Control Flow Integrity Countermeasures against Multiple Fault Attacks - - [pdf] + [pdf] [video]

    @@ -1037,7 +1037,7 @@

    Bringing Next Generation C++ to GPUs: The LLVM-based PACXX Approach - - [pdf] + [pdf] [video]

    @@ -1075,7 +1075,7 @@

    Data Reuse Analysis for Automated Synthesis of Custom Instructions in Sliding Window Applications - - [pdf] + [pdf] [video]

    @@ -1149,7 +1149,7 @@

    LifeJacket: Verifying Precise Floating-Point Optimizations in LLVM - - [pdf] + [pdf] [video]

    @@ -1181,7 +1181,7 @@

    Software Prefetching for Indirect Memory Accesses - - [pdf] + [pdf] [video]

    @@ -1219,7 +1219,7 @@

    ClrFreqPrinter: A Tool for Frequency Annotated Control Flow Graphs Generation - - [pdf] + [pdf] [web] [video]

    @@ -1246,7 +1246,7 @@

    DIVA (Debug Information Visual Analyzer) - - [pdf] + [pdf] [video]

    @@ -1272,7 +1272,7 @@

    Generalized API checkers for the Clang Static Analyzer - - [pdf] + [pdf] [video]

    @@ -1298,7 +1298,7 @@

    LibreOffice loves LLVM - - [pdf] + [pdf] [video]

    @@ -1336,7 +1336,7 @@

    LLVM AMDGPU for High Performance Computing: are we competitive yet? - [pdf] + [pdf] [web] [video]

    @@ -1418,7 +1418,7 @@

    Clangd: A new Language Server Protocol implementation leveraging Clang - - [pdf] + [pdf]

    Etherpad

    Clangd is a new tool developed as part of clang-tools-extra. It aims at implementing the Language Server Protocol, a protocol that provides
    IDEs and code editors all the language "smartness". Work in this area is only just beginning however there is already a large interest surrounding it. This BoF session will be a nice opportunity for the attendees to get to know each other as well as discuss several topics that will help make this tool a success.

    Possible agenda/topics:
    - Introductions
    - Goals and scope of Clangd
    - Existing language server implementations. Comparisons, advantages/disadvantages, etc.
    - Challenges
    - Proposed architecture
    - Collaborations and planning @@ -1593,7 +1593,7 @@

    AnyDSL: A Compiler-Framework for Domain-Specific Libraries (DSLs) - - [pdf] + [pdf]

    AnyDSL is a framework for the rapid development of domain-specific libraries (DSLs). AnyDSL's main ingredient is AnyDSL's intermediate representation Thorin. In contrast to other intermediate representations, Thorin features certain abstractions which allow to maintain domain-specific types and control-flow. On these grounds, a DSL compiler gains two major advantages:
    - The domain expert can focus on the semantics of the DSL. The DSL's code generator can leave low-level details like exact iteration order of looping constructs or detailed memory layout of data types open. Nevertheless, the code generator can emit Thorin code which acts as interchange format.
    - The expert of a certain target machine just has to specify the required details once. These details are linked like a library to the abstract Thorin code. Thorin's analyses and transformations will then optimize the resulting Thorin code in a way such that the resulting Thorin code appears to be written by an expert of that target machine. @@ -1690,7 +1690,7 @@

    Hydra LLVM: Instruction Selection with Threads - - [pdf] + [pdf]

    By the rise of program complexity and some specific usages like JIT(Just-In-Time) compilation, compilation speed becomes more and more important in recent years.
    Instruction selection in LLVM, on the other hand, is the most time-consuming part among all the LLVM components, which can take nearly 50% of total compilation time. We believe that by reducing time consumption of instruction selection, the total compilation speed can get a significant increase. Thus, we propose a (work-in-progress) prototype design that use multi-thread programming to parallelize the instruction selector in order to reach the goal mentioned above. The original instruction selector is implemented as a bytecode interpreter, which executes the operation codes generated by TableGen files that models the machine instructions, and transform IR selection graph into machine-dependent selection graph at the end. The selector, to our surprised, shows some great properties which we can benefit from in creating multi-thread version of that. For example, an opcode scope that save the current context before executing the following opcodes sequence, and restore the context after finishing them. While preserving the original algorithm of the selector, we also try hard to reduce the concurrency overhead by replacing unnecessary mutex lock with better one like read/write lock and atomic variables. Though the experiments didn’t show promising result, we are still looking forward to the potential of reducing the consuming time of instruction selection in order to increase the overall compilation speed. In the future, we will try different compilation regions to parallelize for the sake of finding the optimal one that causes less overhead. At the same time, we are also going to combine this project with existing JIT framework in LLVM in order to reduce the execution latency caused by runtime compilation. @@ -1727,7 +1727,7 @@

    Intelligent selection of compiler options to optimize compile time and performance - - [pdf] + [pdf]

    The efficiency of the optimization process during the compilation is crucial for the later execution behavior of the code. The achieved performance depends on the hardware architecture and the compiler's capabilities to extract this performance.

    Code optimization can be a CPU- and memory-intensive process which -- for large codes -- can lead to high compilation times during development. Optimization also influences the debuggability of the resulting binary; for example, by storing data in registers. During development, it would be interesting to compile files individually with appropriate flags that enable debugging and provide high (near-production) performance during the testing but with moderate compile times. We are exploring to create a tool to identify code regions that are candidates for higher optimization levels. We follow two different approaches to identify the most efficient code optimization:
    1) compiling different files with different options by brute force; 2) using profilers to identify the relevant code regions that should be optimized.

    Since big projects comprise hundreds of files, brute force is not efficient. The problem in, e.g., climate applications is that codes have too many files to test them individually.
    Improving this strategy using a profiler, we can identify the time consuming regions (and files) and then repeatedly refine our selection. Then, the relevant files are evaluated with different compiler flags to determine a good compromise of the flags. Once the appropriate flags are determined, this information could be retained across builds and shared between users.


    In our poster, we motivate and demonstrate this strategy on a stencil code derived from climate applications. The experiments done throughout this work are carried out on a recent Intel Skylake (i7-6700 CPU @ 3.40GHz) machine. We compare performance of the compilers clang (version 3.9.1) and gcc (version 6.3.0) for various optimization flags and using profile guided optimization (PGO) with the traditional compile with instrumentation/run/compile phase and when using the perf tool for dynamic instrumentation. The results show that more time (2x) is spent for compiling code using higher optimization levels in general, though gcc takes a little less time in general than clang. Yet the performance of the application were comparable after compiling the whole code with O3 to that of applying O3 optimization to the right subset of files. Thus, the approach proves to be effective for repositories where compilation is analyzed to guide subsequent compilations.

    Based on these results, we are building a prototype tool that can be embedded into building systems that realizes the aforementioned strategies of brute-force testing and profile guided analysis of relevant compilation flags. @@ -1852,7 +1852,7 @@

    Index: devmtg/2017-03/about.html =================================================================== --- devmtg/2017-03/about.html +++ devmtg/2017-03/about.html @@ -10,18 +10,18 @@ - - - - - - + + + + + + - + @@ -29,7 +29,7 @@
    MediaTalk
    @@ -225,14 +225,14 @@ @@ -239,14 +239,14 @@ @@ -253,14 +253,14 @@ @@ -267,14 +267,14 @@ @@ -281,14 +281,14 @@ @@ -295,14 +295,14 @@ @@ -309,14 +309,14 @@ @@ -323,13 +323,13 @@ @@ -336,14 +336,14 @@ @@ -350,13 +350,13 @@ @@ -363,13 +363,13 @@ @@ -376,14 +376,14 @@ @@ -390,12 +390,12 @@ @@ -402,14 +402,14 @@ @@ -417,14 +417,14 @@ @@ -431,14 +431,14 @@ @@ -446,76 +446,76 @@ @@ -544,7 +544,7 @@
    LLVM for the future of Supercomputing - Keynote - - [more] - [pdf] + [more] + [pdf] [video] Weak Memory Concurrency in C/C++11 and LLVM - Keynote - - [more] - [pdf] + [more] + [pdf] [video]
    Adventures in Fuzzing Instruction Selection - Technical Talk - - [more] - [pdf] + [more] + [pdf] [video] ARM Code Size Optimisations - Technical Talk - - [more] - [pdf] + [more] + [pdf] [video]
    AVX-512 Mask Registers Code Generation Challenges in LLVM - Technical Talk - - [more] - [pdf] + [more] + [pdf] [video] Clank: Java-port of C/C++ compiler frontend - Technical Talk - - [more] - [pdf] + [more] + [pdf] [video]
    CodeCompass: An Open Software Comprehension Framework - Technical Talk - - [more] - [pdf] + [more] + [pdf] [video] Cross Translational Unit Analysis in Clang Static Analyzer: Prototype and Measurements - Technical Talk - - [more] - [pdf] + [more] + [pdf] [video]
    Delivering Sample-based PGO for PlayStation(R)4 (and the impact on optimized debugging) - Technical Talk - - [more] - [pdf] + [more] + [pdf] [video] Effective Compilation of Higher-Order Programs - Technical Talk - - [more] - [pdf] + [more] + [pdf] [video]
    Expressing high level optimizations within LLVM - Technical Talk - - [more] - [pdf] + [more] + [pdf] [video] Formalizing the Concurrency Semantics of an LLVM Fragment - Technical Talk - - [more] - [pdf] + [more] + [pdf] [video]
    Introducing VPlan to the Loop Vectorizer - Technical Talk - - [more] - [pdf] + [more] + [pdf] [video] LLVM performance optimization for z Systems - Technical Talk - - [more] - [pdf] + [more] + [pdf] [video]
    LLVMTuner: An Autotuning framework for LLVM - Technical Talk - - [more] + [more] [video] Path Invariance Based Partial Loop Un-switching - Technical Talk - - [more] - [pdf] + [more] + [pdf] [video]
    Register Allocation and Instruction Scheduling in Unison - Technical Talk - - [more] - [pdf] + [more] + [pdf] [video] SPIR-V infrastructure and its place in the LLVM ecosystem - Technical Talk - - [more] - [pdf] + [more] + [pdf] [video]
    Using LLVM for Safety-Critical Applications - Technical Talk - - [more] + [more] [video] Using LLVM in a scalable, high-available, in-memory database server - Technical Talk - - [more] - [pdf] + [more] + [pdf] [video]
    XLA: Accelerated Linear Algebra - Technical Talk - - [more] + [more] [video] Automated Combination of Tolerance and Control Flow Integrity Countermeasures against Multiple Fault Attacks - SRC - - [more] - [pdf] + [more] + [pdf] [video]
    Bringing Next Generation C++ to GPUs: The LLVM-based PACXX Approach - SRC - - [more] - [pdf] + [more] + [pdf] [video] Data Reuse Analysis for Automated Synthesis of Custom Instructions in Sliding Window Applications - SRC - - [more] - [pdf] + [more] + [pdf] [video]
    ELF GOT Problems? CFI Can Help. - SRC - - [more] + [more] LifeJacket: Verifying Precise Floating-Point Optimizations in LLVM - SRC - - [more] - [pdf] + [more] + [pdf] [video]
    Software Prefetching for Indirect Memory Accesses - SRC - - [more] - [pdf] + [more] + [pdf] [video] ClrFreqPrinter: A Tool for Frequency Annotated Control Flow Graphs Generation - Lightning Talk - - [more] - [pdf] + [more] + [pdf] [web] [video]
    DIVA (Debug Information Visual Analyzer) - Lightning Talk - - [more] - [pdf] + [more] + [pdf] [video] Generalized API checkers for the Clang Static Analyzer - Lightning Talk - - [more] - [pdf] + [more] + [pdf] [video]
    LibreOffice loves LLVM - Lightning Talk - - [more] - [pdf] + [more] + [pdf] [video] LLVM AMDGPU for High Performance Computing: are we competitive yet? - Lightning Talk - - [more] - [pdf] + [more] + [pdf] [web] [video]
    Simple C++ reflection with a Clang plugin - Lightning Talk - - [more] + [more] [video] Alternative Backend Design - BoF - - [more] + [more]
    Clangd: A new Language Server Protocol implementation leveraging Clang - BoF - - [more] - [pdf] + [more] + [pdf] GlobalISel - BoF - - [more] + [more]
    LLVM Foundation - BoF - - [more] + [more] A Source-to-Source Vectorizer for the Connex SIMD Accelerator - Poster - - [more] + [more]
    AnyDSL: A Compiler-Framework for Domain-Specific Libraries (DSLs) - Poster - - [more] - [pdf] + [more] + [pdf] Binary Instrumentation of ELF Objects on ARM - Poster - - [more] + [more]
    CodeCompass: An Open Software Comprehension Framework - Poster - - [more] + [more] Hydra LLVM: Instruction Selection with Threads - Poster - - [more] - [pdf] + [more] + [pdf]
    Intelligent selection of compiler options to optimize compile time and performance - Poster - - [more] - [pdf] + [more] + [pdf] LLVM-based silent stores optimization to reduce energy consumption on STT-RAM cache memory - Poster - - [more] + [more]
    Modeling Universal Instruction Selection - Poster - - [more] + [more] Preparing LLVM for the Future of Supercomputing - Poster - - [more] + [more]
    - + @@ -557,8 +557,8 @@

    Apple

    Apple
    - - + + @@ -571,9 +571,9 @@
    Google
    - - - + + + @@ -714,7 +714,7 @@ Index: devmtg/2017-03/left-sidebar.html =================================================================== --- devmtg/2017-03/left-sidebar.html +++ devmtg/2017-03/left-sidebar.html @@ -10,18 +10,18 @@ - - - - - - + + + + + + - + @@ -29,7 +29,7 @@
    ARM