[llvm-dev] LLVM Weekly - #375, March 8th 2021
Alex Bradbury via llvm-dev
llvm-dev at lists.llvm.org
Mon Mar 8 10:42:07 PST 2021
LLVM Weekly - #375, March 8th 2021
==================================
If you prefer, you can read a HTML version of this email at
<http://llvmweekly.org/issue/375>.
Welcome to the three hundred and seventy-fifth 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
Michał Górny [blogged about work on LLDB FreeBSD
support](https://www.moritz.systems/blog/freebsd-legacy-process-plugin-removed/),
detailing work already done, and work planned for the future.
Scott Wolchok blogged about [parameter passing in C and
C++](https://wolchok.org/posts/parameter-passing/).
## On the mailing lists
* Konrad Trifunovic posted an RFC on [upstreaming a proper SPIR-V backend to
LLVM](https://lists.llvm.org/pipermail/llvm-dev/2021-March/148985.html),
i.e. an LLVM backend that targets the SPIR-V portable IR format. The initial
target would be SPIR-V for compute, with potential future extensions for 3d
shaders. The RFC provides a brief summary of the previous discussions and
areas where consensus wasn't reched (specifically, the design choice of
creating a translator library wrapped within a target, a 'proper' target
using SelectionDAG/GlobalISel, or a binary emission layer). This resulted in
a lengthy thread that I couldn't hope to fully summarise. One notable line
of discussion was around [whether the goals could be achieved using
MLIR](https://lists.llvm.org/pipermail/llvm-dev/2021-March/148926.html).
* Tanya Lattner shared that [the deadline for mentors to submit Outreachy
project proposals has been extended to March
11th](https://lists.llvm.org/pipermail/llvm-dev/2021-March/149038.html).
Unfortunately, at the time of writing that email, nobody had yet submitted a
project idea or volunteered to be a mentor.
* Kito Cheng proposed an RFC on [proposed behaviour of `__fp16` for
RISC-V](https://lists.llvm.org/pipermail/cfe-dev/2021-March/067847.html).
Sjoerd Meijer [outlined some concerns with this
proposal](https://lists.llvm.org/pipermail/cfe-dev/2021-March/067867.html).
* Louis Dionne initiated a discussion on [which compilers and compiler
versions libc++ should claim to
support](https://lists.llvm.org/pipermail/libcxx-dev/2021-March/001082.html).
* Tom Stellard [updated on the status of the 12.0.0
release](https://lists.llvm.org/pipermail/llvm-dev/2021-March/148936.html),
indicating it will be delayed by 1-2 weeks.
* Kristof Beyls [re-advertised the agenda and notes doc for the LLVM security
group](https://lists.llvm.org/pipermail/llvm-dev/2021-March/148985.html),
who will be meeting next on 16th March.
* Louis Dionne proposed [improvements to the libc++ approval
policy](https://lists.llvm.org/pipermail/libcxx-dev/2021-March/001091.html),
which would increase the number of people approving patches.
* LLVM GPU News Issue #7 [is
out](https://lists.llvm.org/pipermail/llvm-dev/2021-March/149017.html).
* David Zarzycki proposed [creating
llvm/Support/InternalLimts.h](https://lists.llvm.org/pipermail/llvm-dev/2021-March/149010.html)
to contain essential constants such as the alignment limit.
* Tanya Lattner warns that [subscription to LLVM's mailman lists has had to be
disabled
temporarily](https://lists.llvm.org/pipermail/llvm-dev/2021-March/149027.html)
due to someone abusing the sign-up form to generate subscription
confirmation emails maliciously.
* Min-Yih Hsu [notes that the new experimental M68k backend is abou to
land](https://lists.llvm.org/pipermail/llvm-dev/2021-March/149040.html).
* ORC JIT Weekly #31 [is
out](https://lists.llvm.org/pipermail/llvm-dev/2021-March/148900.html) (in
fact, it was out last week and narrowly missed that LLVM Weekly issue). It
provides an update on debugger support for JITLink and the JITLink design
document.
* David Rector created a thread to discuss [a benchmark indicating Clang
evaluates constexpr substantially more slowly than
GCC](https://lists.llvm.org/pipermail/cfe-dev/2021-March/067809.html).
Richard Smith
[noted](https://lists.llvm.org/pipermail/cfe-dev/2021-March/067810.html)
this was due to GCC memoizing constant evaluations. In a trial where that
optimisation isn't possible, Clang out-performs GCC.
## LLVM commits
* The llvm-mca static performance analysis tool now support in-order CPUs such
as the Arm Cortex-A55. [d791695](https://reviews.llvm.org/rGd791695cb517).
* LoopVectorize was updated to generate runtime checks earlier in compilation,
allowing a more precise estimate of the actual cost of the checks (which
will be used in follow-up patches).
[53dacb7](https://reviews.llvm.org/rG53dacb7b6775).
* A new JitLink debug support plugin was introduced, for now targeting ELF
x86-64. [ef23892](https://reviews.llvm.org/rGef2389235c5d).
* The loop-invariant code motion pass was optimised, resulting in a ~1.8%
geomean improvement on CTMark at O3.
[3d8f842](https://reviews.llvm.org/rG3d8f842712d4).
* llvm-cov learned to cache file status information, resulting in a huge
speedup. [9d8a3e7](https://reviews.llvm.org/rG9d8a3e75b442).
* "Dangling pseudo probes" were introduced. These are probes associated with
an empty block (e.g. one where all instructions were optimised away).
[ad2a59f](https://reviews.llvm.org/rGad2a59f58404).
* The various LLVM IR syntax files were refreshed to support all current
attributes. [2da21a1](https://reviews.llvm.org/rG2da21a1bd466).
* The previous MemDep-based implementation of DeadStoreElimination was
removed, as the MemorySSA-backed version has been enabled by default without
issue for some time. [176bbca](https://reviews.llvm.org/rG176bbcae1113).
## Clang commits
* The ShortNamespaceLine option was added to clang-format, allowing
customisation of when a namespace is deemed too short to format.
[6ca5281](https://reviews.llvm.org/rG6ca52815fb3c).
* Clang can apply the `noundef` attribute at call sites when an argument or
return value may never contain uninitialised bits. This allows
MemorySanitizer to reduce the amount of generated instrumentation, reducing
code size by up to 17% according to the commit message.
[10264a1](https://reviews.llvm.org/rG10264a1b21ae).
## Other project commits
* The new Darwin backend for LLD is now used by default (as noted in the
commit message, this switch is now happening for LLVM 13 rather than LLVM
12). [415c0cd](https://reviews.llvm.org/rG415c0cd698a8).
* libunwind gained support for RV32 hard-float and soft-float RV32 and RV64.
[b17d464](https://reviews.llvm.org/rGb17d46430fce).
* C bindings were added for `mlir::ExecutionEngine`, allowing the JIT to be
invoked from the C API. [86c8a78](https://reviews.llvm.org/rG86c8a7857dc3).
More information about the llvm-dev
mailing list