2008 LLVM Developers' MeetingTable of ContentsAboutProceedingsWelcome and ThanksClang InternalsCodeGen Overview and Focus on SelectionDAGsLLVM Register AllocationBuilding an Efficient JITAdobe Image Foundation and Adobe PixelBenderFinding Bugs with the Clang Static AnalyzerBuilding a JIT compiler for PHP in 2 daysllvmc2 Compiler DriverSVA: Using LLVM to Provide Memory SafetyThe VMKit ProjectDesignflow: using LLVM to compile to HardwareFlash C Compiler: Compiling C code to the Adobe Flash Virtual MachineConference Dates: August 1-1, 2008Location: Apple Campus, Cupertino, CAEvent Site: https://llvm.org/devmtg/2008-08/AboutSponsored by Apple, Google, Adobe, and the University of IllinoisThe meeting served as a forum for LLVM developers and users to get acquainted, learn how LLVM is used, and exchange ideas about LLVM, future extensions, and its potential applications.ProceedingsThe day was structured to have general overview/introduction talks about some major LLVM subsystems, followed by talks on applications of LLVM for various specific projects.In addition to being available here, the videos are also available on YouTube.Welcome and ThanksChris Lattner (Apple, Inc.) [Video]A brief welcome, thanks and some logistics for the day.Clang InternalsSteve Naroff (Apple, Inc.) [Slides] [Video]Clang is a new C/ObjC/C++ front-end in development as part of the LLVM project. This talk describes its current status, high level architecture, and how its Abstract Syntax Trees (ASTs) work.CodeGen Overview and Focus on SelectionDAGsDan Gohman (Apple, Inc.) [Slides] [Video]A high-level overview of the LLVM Code Generator, with specific depth and overview in the area of the SelectionDAG phases.LLVM Register AllocationEvan Cheng (Apple, Inc.) [Slides] [Video]Description of the current design and architecture of the LLVM register allocator. The talk discusses some optimizations that are currently performed as well as describing future directions and where we'd like to go.Building an Efficient JITNate Begeman (Apple, Inc.) [Slides] [Video]LLVM provides many of the facilities that you need to assemble a JIT for various purposes. This talk walks you through construction of a simple JIT for C code (based on Clang) and talks about some of the important APIs for doing this. After getting it working, Nate describes the efficiency implications of various choices and describes how to dramatically improve the efficiency of the first implementation.Adobe Image Foundation and Adobe PixelBenderChuck Rose III (Adobe Inc.) [Slides] [Video]Adobe Image Foundation is a system for JIT compiling code written in the Adobe PixelBender language to run on the CPU and GPU. This talk describes how AIF and PixelBender work and how it uses LLVM to evaluate dependencies, reason about dirty regions of images, and do pixel processing when a GPU cannot handle a program.Finding Bugs with the Clang Static AnalyzerTed Kremenek (Apple, Inc.) [Slides] [Video]The Clang Static Analyzer is a standalone tool that finds bugs in C and Objective-C programs. The analyzer is 100% open source and part of the Clang project. Although still early in development, the tool has been effective at finding thousands of bugs in real-world code. This talk presents a high-level overview of its goals, implementation, and status.Building a JIT compiler for PHP in 2 daysNuno Lopes (Instituto Superior Tecnico) [Slides] [Video]This talk describes the implementation of the PHP interpreter and how it was easily changed into an LLVM JIT. It discusses why LLVM makes this easy and presents some early results.llvmc2 Compiler DriverAnton Korobeynikov (Saint Petersburg State University) [Slides] [Video]'llvmc2' is the LLVM Compiler Driver, useful for building new languages and tools from the LLVM toolchain. This talk covers the design constraints, how llvmc2 meets them, and its architecture and future directions.SVA: Using LLVM to Provide Memory SafetyJohn Criswell (University of Illinois) [Slides]SVA is an approach to provide an efficient compiler-based system with memory safety on top of LLVM IR. Unfortunately, video is not available due to camera problems.The VMKit ProjectNicolas Geoffray (Université Pierre et Marie Curie) [Slides] [Video]VMKit is an implementation of Java and .NET VMs using LLVM to optimize and JIT compile code. This talk explains its integration of components, bytecode translation, current performance, and plans for extension.Designflow: using LLVM to compile to HardwareTim Sander (Technischen Universität Darmstadt) [Slides] [Video]This project uses LLVM to compile code to a mixed hardware/software system. It detects code suitable for VHDL synthesis onto an FPGA and compiles the rest to PowerPC. The system automatically handles data migration and coordination between the two.Flash C Compiler: Compiling C code to the Adobe Flash Virtual MachineScott Petersen (Adobe Inc.) [Slides] [Video]FlaCC is a research project that compiles C code to ActionScript using llvm-gcc with a custom Flash code generator. This allows nearly arbitrary C/C++ code to run inside Flash on web pages, including interpreters and large programs. The demos are especially impressive.