[llvm-dev] LLVM Weekly - #380, April 12th 2021

Alex Bradbury via llvm-dev llvm-dev at lists.llvm.org
Mon Apr 12 10:07:44 PDT 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).


More information about the llvm-dev mailing list