Meta Developing A New IR For LLVM's Clang C/C++ Compiler With Better Speed, Security
Meta (Facebook) engineers on Monday announced CIR, a proposed new intermediate representation (IR) for LLVM's Clang C/C++ compiler front-end that is based on the MLIR representation.
CIR is their new IR that is short for "Clang IR" or "C/C++ IR" and is another open-source effort out of Meta/Facebook that they are hoping to eventually upstream. They hope this new IR for Clang will lead to improved diagnostics for modern C++ programming, allow for more C++ high level optimizations, and addressing other shortcomings with Clang's AST / LLVM IR. Inspired by Swift's SIL and Rust's HIR/MIR intermediate representations, Meta hopes CIR could provide similar improvements for C++ programmers.
Among the defined goals for CIR is to provide better diagnostics for correctness / security / performance. This could ultimately lead to safer C++ programs. It was noted in the CIR announcement, "Security / Bugs: The Google Chrome team notes that around 70% of their high-severity security bugs are memory unsafety problems. Half of which are use-after-free bugs. Using std::optional to illustrate, CIR could introduce instructions for optional derefs (cir.std.optional.deref) and diagnose them as harmful if they are not dominated by the check on whether the object contains a value (cir.std.optional.has_value)."
Those interested in learning more about CIR can visit the LLVM Discourse announcement. The CIR code and documentation in current form is hosted by Facebook Incubator on GitHub.
LLVM founder Chris Lattner already commented on the CIR effort, multiple times mentioning he's a "superfan" of this effort. He's also hoping for it to become an LLVM incubator project and getting more LLVM developers working on this code and ultimately as an upstream solution.
CIR is going to definitely be another interesting LLVM effort to watch for improving this leading open-source compiler stack.
CIR is their new IR that is short for "Clang IR" or "C/C++ IR" and is another open-source effort out of Meta/Facebook that they are hoping to eventually upstream. They hope this new IR for Clang will lead to improved diagnostics for modern C++ programming, allow for more C++ high level optimizations, and addressing other shortcomings with Clang's AST / LLVM IR. Inspired by Swift's SIL and Rust's HIR/MIR intermediate representations, Meta hopes CIR could provide similar improvements for C++ programmers.
Among the defined goals for CIR is to provide better diagnostics for correctness / security / performance. This could ultimately lead to safer C++ programs. It was noted in the CIR announcement, "Security / Bugs: The Google Chrome team notes that around 70% of their high-severity security bugs are memory unsafety problems. Half of which are use-after-free bugs. Using std::optional to illustrate, CIR could introduce instructions for optional derefs (cir.std.optional.deref) and diagnose them as harmful if they are not dominated by the check on whether the object contains a value (cir.std.optional.has_value)."
Those interested in learning more about CIR can visit the LLVM Discourse announcement. The CIR code and documentation in current form is hosted by Facebook Incubator on GitHub.
LLVM founder Chris Lattner already commented on the CIR effort, multiple times mentioning he's a "superfan" of this effort. He's also hoping for it to become an LLVM incubator project and getting more LLVM developers working on this code and ultimately as an upstream solution.
CIR is going to definitely be another interesting LLVM effort to watch for improving this leading open-source compiler stack.
6 Comments