LLVMCGO25 - CARTS: Enabling Event-Driven Task and Data Block Compilation for Distributed HPC Hello everyone! I’m Rafael, a PhD candidate at the University of Delaware. I recently flew from Philadelphia to Las Vegas to attend the CGO conference, where I had the chance to present my project and soak in new ideas about HPC.| The LLVM Project Blog
LLVM has included a Fortran compiler “Flang” since LLVM 11 in late 2020. However, until recently the Flang binary was not flang (like clang) but instead flang-new. LLVM 20 ends the era of flang-new.| The LLVM Project Blog
Hi, my name is Peter, and this year I was involved in Google Summer of Code 2024. I worked on improving the Clang-Doc documenation generator Mentors: Petr Hosek and Paul Kirth| The LLVM Project Blog
Hello everyone! My name is Thomas and for GSOC I’ve been working on adding plugin support for LLVM and Clang to windows, which mainly involved implementing proper support for building LLVM and Clang as shared libraries (known as DLLs on Windows, dylibs on macOS, or DSOs/SOs on most other Unices) on Windows.| The LLVM Project Blog
Some time ago I was talking about an ahead-of-time Ruby compiler. We started the project with certain goals and hypotheses in mind, and while the original compiler is at nearly 90% completion, there are still those other 90% that needs to be done.| The LLVM Project Blog
Hello! I’m Sahil Patidar, and this summer I had the exciting opportunity toparticipate in Google Summer of Code (GSoC) 2024. My project revolved aroundenhancing Clang-Repl by introducing Out-Of-Process Execution. Mentors: Vassil Vassilev and Matheus Izvekov Project Background Clang-Repl, part of the LLVM project, is a powerful interactive C++ interpreter using Just-In-Time (JIT) compilation. However, it faced two major issues: high resource consumption and instability. Running both Clang-Re...| Posts on The LLVM Project Blog
Hey everyone! My name is Shourya and I worked on LLVM this summer through GSoC. My project is called The 1001 thresholds in LLVM. The main objective of this project was to study how varying different thresholds in llvm affect performance parameters like compile-time, bitcode-size, execution-time and llvm stats. Background LLVM has lots of thresholds and flags to avoid “costly cases”. However, it is unclear if these thresholds are useful, their value is reasonable, and what impact they rea...| Posts on The LLVM Project Blog
Hello everyone! My name is Volodymyr, and in this post I would like to talk about the project I have been working on for the past couple of months as part of Google Summer of Code 2024. The aim of the project was to introduce 3-way comparison intrinsics to LLVM IR and add a decent level of optimizations for them. Background Three-way comparison is an operation present in many high-level languages, such as C++ and its spaceship operator or Rust and the Ord trait. It operates on two values for ...| Posts on The LLVM Project Blog
ClangIR is an ongoing effort to build a high-level intermediate representation(IR) for C/C++ within the LLVM ecosystem. Its key advantage lies in its abilityto retain more source code information. While ClangIR is making progress, itstill lacks certain features, notably ABI handling. Currently, ClangIR lowersmost functions without accounting for ABI-specific calling convention details. Goals The “Build & Run SingleSource Benchmarks with ClangIR - Part 2” Google Summer ofCode 2024 builds o...| Posts on The LLVM Project Blog
Welcome! My name is Andrew and I contributed to LLVM through the 2024 Google Summer of Code Program. My project is called Statistical Analysis of LLVM-IR Compilation. The objective of this project is to provide an analysis of how time is spent in the optimization pipeline. Generally, drastic differences in the percentage of time spent by a pass in the pipeline is considered abnormal. Background In principle, an LLVM IR bitcode file, or module, contains IR features that determine the behavior ...| The LLVM Project Blog
This summer I participated in GSoC under the LLVM Compiler Infrastructure. The goal of the project was to improve the NewGVN pass so that it can replace GVN as the main value numbering pass in LLVM. Background Global Value Numbering (GVN) consists of assigning value numbers such that instructions with the same value number are equivalent. NewGVN was introduced in 2016 to replace GVN. We now highlight a few aspects in which NewGVN is better than GVN. A key advantage of NewGVN over GVN is that ...| Posts on The LLVM Project Blog
Hello everyone! I’m 7mile. My GSoC project this summer is Compile GPU kernels using ClangIR. It’s been an exciting journey in compiler development, and I’m thrilled to share the progress and insights gained along the way here. Background The ClangIR project aims to establish a new IR for Clang, built on top of MLIR. As part of the ongoing effort to support heterogeneous programming models, this project focuses on integrating OpenCL C language support into ClangIR. The ultimate goal is t...| The LLVM Project Blog
C23 defines new floating-point types, such as _Float16, which corresponds to the binary16 format from IEEE Std 754, also known as “half-precision,” or FP16. C23 also defines new variants of the C standard library’s math functions accordingly, such as fabsf16 to get the absolute value of a _Float16.| blog.llvm.org
Hey everyone! My name is James and I worked on LLVM this summer through GSoC. My project is called GPU Libc Benchmarking. The main objective of this project was to develop microbenchmarking infrastructure for libc on the GPU.| blog.llvm.org
The LLVM organization was accepted to participate in Google Summer of Code in 2024. Soon, prospective participants will begin submitting their project proposals, and mentors will review them to select those who will spend a significant amount of time this year contributing to various parts of LLVM.| blog.llvm.org
The Compiler Research team is pleased to announce the successful completion of another round of internships focused on enhancements in interactive programming, specifically in relation to the Clang-REPL component in LLVM.| blog.llvm.org
Hi, My name is Shivam, I involved with the LLVM Foundation in 2023 GSoC edition and worked on an interesting project Map LLVM Values to corresponding source level expression. Project Scope Programmers frequently rely on compiler-generated remarks and analysis reports to enhance the efficiency of their code.| blog.llvm.org
Introduction I’m Krishna Narayanan, a final undergraduate at Veermata Jijabai Technological Institute, Mumbai and I am talking about my GSoC project in this blog post which mentions the goals, tasks we have accomplished during this summer tenure.| blog.llvm.org
TableGen is a language used within the LLVM project for generating a variety of files, when manual maintenance would be very difficult. For example, it is used to define all of the instructions that can be used on a particular architecture.| blog.llvm.org
Motivation For the last year, I have been contributing to LLVM JITLink. This post aims to doubly serve as a summary of my work and documentation for future contributors looking to add a new target/object backend to LLVM JITLink.| blog.llvm.org
The LLVM Foundation is excited to announce the 2023 EuroLLVM Developers' Meeting program! Early bird registration ends April 10th. Keynotes: Order out of Chaos, The LLVM Release Process. - Tobias Hieta “-fbounds-safety”: Enforcing bounds safety for production C code - Yeoul Na Technical Talks:| blog.llvm.org
Another program year is ending and our Compiler Research team is extremely happy to share the hard work and the results of our interns contributors! The Compiler Research team includes researchers located at Princeton University and CERN.| blog.llvm.org
About a thousand people contribute code to LLVM each year. There are probably many thousands who work on the LLVM code base in downstream projects. And even more people use the LLVM libraries to build other cool projects on top of.| blog.llvm.org
The LLVM Foundation would like to announce our Board of Directors for the 2022-2024 term: Kit Barton (Secretary) Kristof Beyls Chris Bieneman Mike Edwards (Treasurer) Reid Kleckner Anton Korobeynikov Chris Lattner Tanya Lattner (President) Wei Wu Three new members and six continuing members were elected to the nine person board.| blog.llvm.org
We had an amazing group of talk proposals submitted for the 2022 LLVM Developers' Meeting. Thank you to all that submitted a talk proposal this year! Here is the 2022 LLVM Developers' Meeting program:| blog.llvm.org
The last update on LLVM relicensing was done about 8 months ago. Since then we’ve made substantial progress, so I thought it’s worthwhile to share another update. The TL;DR is:| blog.llvm.org
Over the past few years, the LLVM project has seen the creation of a security group, which aims to enable responsible disclosure and fixing of security-related issues affecting the LLVM project.| blog.llvm.org
Trojan Source The original Trojan Source paper encompasses a family of attacks that rely on Unicode properties to make code look different from how a compiler processes it. For instance the following code taken from the paper:| blog.llvm.org
When the LLVM Project was open sourced in 2003, it was a small project with a small community. The tools selected to support the project were chosen during a different time and a different situation.| blog.llvm.org
In this blog post, I would like to explain how I migrated apt.llvm.org from physical hardware hosted in a datacenter to the Google cloud. This has resulted in better security and faster builds for LLVM Debian/Ubuntu nightly builds.| blog.llvm.org
Abstract By upgrading the LLVM compiler, we solved the problem when neither LLVM nor the GCC could create the correct Position Independent Code for Cortex M controllers, with the code running in Flash memory rather than in RAM.| blog.llvm.org
As today is the last day of Women’s History Month, it seems fitting to announce a new meetup series for Women in Compilers and Tools. The LLVM Women in Compilers and Tools Meetup Series is a free virtual event held each month.| blog.llvm.org
The LLVM Foundation is excited to announce Community.o! This is a new face to the LLVM Foundation’s Diversity and Inclusion and Women in Compilers and Tools program. We’ve adopted a name to represent what this program hopes to accomplish which is to build a strong, healthy, and diverse open source community.| blog.llvm.org
Context Stack clash is an attack that dates back to 2017, when the Qualys Research Team released an advisory with a joint blog post. It basically exploits large stack allocation (greater than PAGE_SIZE) that can lead to stack read/write not triggering the stack guard page allocated by the Linux Kernel.| blog.llvm.org
The LLVM Foundation is excited to announce the 2020 Virtual LLVM Developers' Meeting program! Registration will open this week. Keynote: Undef and Poison: Present and Future - J. Lee Technical Talks:| blog.llvm.org
The LLVM Foundation is pleased to announce its new Board of Directors, which includes: Kit Barton Kristof Beyls Mike Edwards (Treasurer) Hal Finkel Cyndy Ishida Anton Korobeynikov Tanya Lattner (President) Chris Lattner Tom Stellard (Secretary) Three new members and six continuing members were elected to the nine person board.| blog.llvm.org
Introduction In the last few months, I have been a part of an ongoing effort to improve Clang’s diagnostic capabilities. The newly released Clang 17 brings several of these improvements to the forefront.| blog.llvm.org
Historically formatting text in C++, using the standard library, has been unpleasant. It is possible to get nice output with the stream operators, but it is very verbose due to the stream manipulators.| blog.llvm.org
In this blog post, I’d like to summarize the main points I talked about in the relicensing update presentation at the 2021 LLVM Developer’s meeting. The very short summary is that we are currently in the long tail phase of collecting relicensing agreements of past contributors.| blog.llvm.org
The LLVM Project is participating in the Outreachy program for the first time. Two interns have been selected: Sushma Unnibhavi & Pooja Yadav. Outreachy provides paid, remote internships with the goal of increasing diversity in open source.| blog.llvm.org
The code property graph (CPG) is a data structure designed to mine large codebases for instances of programming patterns via a domain-specific query language. It was first introduced in the proceedings of the IEEE Security and Privacy conference in 2014 (publication, PDF) in the context of vulnerability discovery in C system code and the Linux kernel in particular.| blog.llvm.org
Interactive C++ with Cling In our previous blog post “Interactive C++ for Data Science” we described eval-style programming, interactive C++ in Notebooks and CUDA. This post will discuss some developed applications of Cling supporting interoperability and extensibility.| blog.llvm.org
Interactive C++ for Data Science In our previous blog post “Interactive C++ with Cling” we mentioned that exploratory programming is an effective way to reduce the complexity of the problem. This post will discuss some applications of Cling developed to support data science researchers.| blog.llvm.org
Interactive C++ with Cling The C++ programming language is used for many numerically intensive scientific applications. A combination of performance and solid backward compatibility has led to its use for many research software codes over the past 20 years.| blog.llvm.org
LLVM’s New Pass Manager What is a pass manager? A pass manager schedules transformation passes and analyses to be run on IR in a specific order. Passes can run on an entire module, a single function, or something more abstract such as a strongly connected component (SCC) in a call graph or a loop inside of a function.| blog.llvm.org
Constructor type homing for debug info Background Class type information is a large contributor to debug info size. Clang already has a few optimizations to reduce the size of class type information based on the assumption that debug info can be spread out over multiple compilation units.| blog.llvm.org