2012 LLVM Developers' MeetingTable of ContentsAboutProceedingsPresentationsLightning TalksProject Dependency Impact on Clang’s Build TimeClang and LLVM for Automated Defense (and Great Justice)A Prototype for Fast Type-Aware Memory ProfilingStatically Checking MPI Type SafetyAnnotations for Safe ParallelismSoSlangBitcode compatibilityEvaluating LLVM for Texas Instruments DSPsBOFsBOF: Polly: A Loop Nest Optimizer for LLVMBOF: SelectionDAG & DAGCombiner - how can they be improved?BOF: Instruction scheduling for Superscalar and VLIW platforms. Temporal perspectiveBOF: SPIR - A Standard Portable IR for OpenCL Kernel LanguageBOF: Memory Safety, Debugging Tools, and Automated DefensesBOF: Vectorization in LLVMPostersPoster: MemorySanitizer, ThreadSanitizerPoster: Vuo: Visual programming for multimedia artistsPoster: Scout: Using Clang/LLVM to Build A Domain-Specific Language for In Situ Data Analysis and Visualization on Emerging ArchitecturesConference Dates: November 7-8, 2012Location: Fairmont, 170 South Market Street, San Jose, CAEvent Site: https://llvm.org/devmtg/2012-11/Conference Dates: November 7-8, 2012Location: Fairmont, 170 South Market Street, San Jose, CAEvent Site: https://llvm.org/devmtg/2012-11/AboutSponsored by Apple, QuIC, Google, IntelThe meeting served as a forum for LLVM, Clang, LLDB, and other LLVM project developers and users to get acquainted, learn how LLVM is used, and exchange ideas about LLVM and its potential applications. More broadly, we believe the event will be of particular interest to the following people:Active developers of projects in the LLVM Umbrella (LLVM core, Clang, LLDB, libc++, compiler_rt, klee, dragonegg, etc).Anyone interested in using these as part of another project.Compiler, programming language, and runtime enthusiasts.Those interested in using compiler and toolchain technology in novel and interesting ways.We also invite you to sign up for the official Developer Meeting mailing list to be kept informed of updates concerning the meeting.ProceedingsPresentationsLightning TalksProject Dependency Impact on Clang’s Build TimeJavier Martinez [Slides] [Video]Clang and LLVM for Automated Defense (and Great Justice)John Criswell [Slides] [Video]A Prototype for Fast Type-Aware Memory ProfilingNico Weber [Slides] [Video]Statically Checking MPI Type SafetyDmitri Gribenko [Slides] [Video]Annotations for Safe ParallelismAlexandros Tzannes [Slides] [Video]SoSlangRonan Keryell [Slides] [Video]Bitcode compatibilityJoe Abbey [Slides] [Video]Evaluating LLVM for Texas Instruments DSPsJonathan Humphreys [Slides] [Video]BOFsBOF: Polly: A Loop Nest Optimizer for LLVMZino Benaissa (QuIC)BOF: SelectionDAG & DAGCombiner - how can they be improved?James Molloy (ARM)BOF: Instruction scheduling for Superscalar and VLIW platforms. Temporal perspectiveSergei Larin (QuIC), Andy Trick (Apple) [Slides]BOF: SPIR - A Standard Portable IR for OpenCL Kernel LanguageBoaz Ouriel (Intel)BOF: Memory Safety, Debugging Tools, and Automated DefensesSantosh Nagarakatte (Rutgers University), John Criswell (University of Illinois)BOF: Vectorization in LLVMNadav Rotem (Apple) [Slides]PostersPoster: MemorySanitizer, ThreadSanitizerKostya Serebryany (Google) [Slides]Following the success of AddressSanitizer (asan), a fast detector of use-after-free and buffer overflow bugs, we have developed two more bug detection tools based on similar ideas. MemorySanitizer (msan, http://code.google.com/p/memory-sanitizer/) detects uninitialized memory reads. It shares many ideas with Valgrind/Memcheck, however it is also different in two important ways: it uses compile-time instrumentation (LLVM) and 1:1 direct shadow memory mapping. Unless the entire program (including libc) is instrumented, msan requires a simple binary instrumentation component (we have an implementation based on DynamoRIO). The slowdown introduced by the tool is typically 2x-3x (compare to Valgrind's 20x). ThreadSanitizer (tsan, http://code.google.com/p/thread-sanitizer/) detects data races. The tool has been briefly mentioned at the 2011 llvm dev meeting but has matured since that time. Similarly to asan and msan, it uses compile-time instrumentation (LLVM), but 95% of the logic is contained in the run-time library. Tsan uses 1:4 direct shadow memory mapping (i.e. uses ~5x more memory). It does not have locks or atomic instructions on the fast path, which makes it scale to large and heavily threaded applications. The slowdown varies between 3x and 10x.Poster: Vuo: Visual programming for multimedia artistsJaymie Strecker (Kosada) [Slides]Vuo is a new programming environment for multimedia artists. We’re building Vuo’s compiler and linker on top of LLVM. We chose LLVM because LLVM makes it easy to add features that multimedia artists enjoy — features that would have taken months or years to write from scratch. Why do multimedia artists need a programming environment? Because very often their job is to create software: interactive art and music, animations, visualizations, games, special effects, museum exhibits, and kiosks. Yet their background is in art or music, not programming. Many multimedia artists get around this by using programming environments where, instead of typing a program, they drag-and-drop building blocks onto a canvas and draw lines to connect them. These “node-based” or “visual” programming environments include Max, VVVV, Quartz Composer — and, soon, Vuo. LLVM is helping Vuo become more powerful and flexible. Vuo programs are compiled and therefore faster than interpreted programs — thanks to LLVM’s APIs for code generation and optimization. Vuo programs will be able to target Mac, Windows, Linux, iOS, and Android — thanks to LLVM’s support for various targets. Vuo developers will be able to write new building blocks in C and, eventually, other languages (e.g. C#, Python, JavaScript, PHP, Lua) — thanks to LLVM’s many frontends and Mono’s LLVM backend. LLVM solves problems of parsing and code generation so we don’t have to. Instead, we can focus on adding features that multimedia artists appreciate, like live coding (the ability to edit a program while it’s running) and easy debugging. LLVM is helping Vuo become flexible, feature-rich, and fun.Poster: Scout: Using Clang/LLVM to Build A Domain-Specific Language for In Situ Data Analysis and Visualization on Emerging ArchitecturesChristine Ahrens (Los Alamos National Laboratory) [Slides]As supercomputing architectures change rapidly and larger amounts of data must be processed, it is difficult to create an efficient and versatile workflow for scientific simulations at scale. These large-scale scientific applications require computation, data analysis and visualization. Our approach is to explore building a programming language that can provide appropriate programming abstractions, a development toolchain and runtime layers that support existing scientific applications on emerging architectures without having to significantly rewrite or refactor their code. Towards this goal, we have developed Scout, a domain-specific language that provides conservative extensions to C/C++ via the LLVM/Clang compiler. The poster will provide example Scout programs, a high-level system diagram, visualization support details and architecture support details. It will also contain a discussion of our experiences using LLVM/Clang, Scout design considerations and future goals.