Alex Bradbury via llvm-dev
2021-Apr-12 17:07 UTC
[llvm-dev] LLVM Weekly - #380, April 12th 2021
LLVM Weekly - #380, April 12th 2021 ================================== If you prefer, you can read a HTML version of this email at <http://llvmweekly.org/issue/380>. Welcome to the three hundred and eightieth issue of LLVM Weekly, a weekly newsletter (published every Monday) covering developments in LLVM, Clang, and related projects. LLVM Weekly is brought to you by [Alex Bradbury](https://www.linkedin.com/in/alex-bradbury/). Subscribe to future issues at <http://llvmweekly.org> and pass it on to anyone else you think may be interested. Please send any tips or feedback to <asb at asbradbury.org>, or @llvmweekly or @asbradbury on Twitter. ## News and articles from around the web The Mozilla Hacks blog featured a detailed post about [using ThreadSanitizer to eliminate data races in Firefox](https://hacks.mozilla.org/2021/04/eliminating-data-races-in-firefox-a-technical-report/). Although the majority of talks at the first Community.o summit weren't recorded, those that were are [now available](https://www.youtube.com/playlist?list=PL_R5A0lGi1AD8Xakb5ZOE3ZP7vS4YSkXh) on the LLVM Foundation's YouTube channel. 'duk' on the Secret Club blog looked in details at [differing codegen for floating poitn clamp between Clang and Rust](https://secret.club/2021/04/09/std-clamp.html). Ultimately a bug report was [filed](https://bugs.llvm.org/show_bug.cgi?id=49909) and the codegen issue was fixed. Version 1.0 of HPVM (the Heterogeneous Parallel Virtual Machine) [has been released](https://lists.llvm.org/pipermail/llvm-dev/2021-April/149693.html). HPVM is a retargetable compiler infrastructure that targets CPUs, GPUs, FPGAs and accelerators. It uses a target-independent compiler IR that extends the LLVM 9.0.0 compiler IR with an explicit, hierarchical data flow representation that captures task, data, and pipelined parallelism. ## On the mailing lists * Melanie Blower posted a pair of RFCs [for LLVM](https://lists.llvm.org/pipermail/llvm-dev/2021-April/149628.html) and [for clang](https://lists.llvm.org/pipermail/cfe-dev/2021-April/067982.html), to provide finer grained (expression level) control for floating point optimisation. Note that the linked Phabricator review threads provide a detailed summary and rationale. * Anastasia Stulova posted an RFC on [testing all OpenCL builtin function declarations in Clang](https://lists.llvm.org/pipermail/cfe-dev/2021-April/067973.html). The proposal lists the various options under consideration and their trade-offs. * Philip Reames initiated a discussion around an [ambiguity of the nofree function attribute](https://lists.llvm.org/pipermail/llvm-dev/2021-April/149706.html), proposing two options: 1) nofree implies no call to free, or 2) nofree applies to memory visible to the caller. * Andrzej Warzynski asks [what clang should do when passed options that are reserved for Fortran inputs](https://lists.llvm.org/pipermail/cfe-dev/2021-April/067981.html), noting that GCC tends to issue a warning rather than an error in such cases. * LLVM 12.0.0-rc5 [has been tagged](https://lists.llvm.org/pipermail/llvm-dev/2021-April/149653.html). * Serguei Katkov posted a heads-up about [planned changes to the statistics reported by the greedy register allocator to the optimisation remark emitter](https://lists.llvm.org/pipermail/llvm-dev/2021-April/149631.html). ## LLVM commits * The PreserveCFG checker had been redesigned. [39e3e3a](https://reviews.llvm.org/rG39e3e3aa51d6). * LLVM community norms around reverts are now documented. [0918f44](https://reviews.llvm.org/rG0918f44e2670). * GlobalISel for AArch64 learned to swap compare operands when it may be profitable. [49c3565](https://reviews.llvm.org/rG49c3565b9ba7). * The Ocaml bindings saw several cleanups and fixes. [5c25ff8](https://reviews.llvm.org/rG5c25ff8739e0), [58bb922](https://reviews.llvm.org/rG58bb9222dd29), [e5b7fed](https://reviews.llvm.org/rGe5b7fedc573c), [2c82ea1](https://reviews.llvm.org/rG2c82ea1849dc), [d9bbd98](https://reviews.llvm.org/rGd9bbd9864578). * Amongst other RISC-V vector changes, support was added for bitcasts between scalars and fixed-length vectors. [af3a839](https://reviews.llvm.org/rGaf3a839c70ad). ## Clang commits * Initial support was added for the OpenMP 5.1 nocontext and filter clauses, and the masked directive [7078ef4](https://reviews.llvm.org/rG7078ef472250), [1a43fd2](https://reviews.llvm.org/rG1a43fd27691c). * Additional RISC-V vector intrinsics were added. [66c0560](https://reviews.llvm.org/rG66c05609e0d5), [0a18ea0](https://reviews.llvm.org/rG0a18ea01f197), [f720c22](https://reviews.llvm.org/rGf720c22e7729), [fe252b5](https://reviews.llvm.org/rGfe252b509ee6), [f2a3601](https://reviews.llvm.org/rGf2a3601aa5a5). * C-style explicit type conversions are now supported for matrix types. [71ab6c9](https://reviews.llvm.org/rG71ab6c98a0d1). ## Other project commits * The flang driver gained support for the `-cpp` and `-nocpp` flags to control enabling/disabling predefined and command-line preprocessor macros. [b83a445](https://reviews.llvm.org/rGb83a4450c216). * The remaining C++ callable concepts were added to libcxx. [c7ad020](https://reviews.llvm.org/rGc7ad02009934). * LLDB gained initial support for watching for fork/vfork, laying the foundations for user-visible work on supporting fork. [a345419](https://reviews.llvm.org/rGa345419ee030).