Change History (15)
follow-up: 3 comment:2 by , 6 years ago
For whoever does this ticket:
Known Issues These are issues that couldn’t be fixed before the release. See the bug reports for the latest status. PR40547 Clang gets miscompiled by GCC 9.
Clang gets miscompiled by GCC 9. A patch is available here:
https://bugs.llvm.org/attachment.cgi?id=22516
With some discussion here:
comment:3 by , 6 years ago
Replying to renodr:
It seems the test failures are from the targets BLFS doesn't use. But anyway it's an uninitialized usage so we should add the patch (or wait for 9.0.1).
follow-up: 6 comment:4 by , 6 years ago
Lets give it a couple of weeks to see if upstream makes another release by then.
follow-up: 7 comment:5 by , 6 years ago
For whoever does the ticket: rustc needs a patch to be built with LLVM-9.
comment:6 by , 6 years ago
Replying to bdubbs:
Lets give it a couple of weeks to see if upstream makes another release by then.
The patch has now been upstreamed, but based on the fairly-recent problem when compiling llvm with gcc (incompatible ABI?) llvm will be slow to make a point release (although I don't say that gcc would make a point release for only something like this).
comment:7 by , 6 years ago
Replying to xry111:
For whoever does the ticket: rustc needs a patch to be built with LLVM-9.
Thanks. So if this goes in to enable rustc-1.38.0 we'll need to put both in at the same time.
comment:8 by , 6 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
I'll do some experimental evaluation over the next days, to see if patched llvm-9.0.0 builds ok, and allows rustc-1.38.0 to build, and if that can build current cbindgen, firefox-release, firefox-beta, rsvg, thunderbird. Taking the ticket, but I'm not yet saying that I'll commit these newer versions :)
comment:9 by , 6 years ago
Owner: | changed from | to
---|---|
Status: | assigned → new |
I was overly pessimistic about needing llvm-9.0.0 for rustc-1.38.0, it merely ships with 9.0.0.
Builds ok on llvm-8.0.1 and is good enough for cbindgen, librsvg, firefox-70b10. However thunderbird-68.1.1 FTBFS (but is ok with rustc-1.37.0) :
6:20.66 error[E0506]: cannot assign to `self.input.cached_token` because it is borrowed
Giving the ticket back, I'll put 1.37.0 into the book for firefox-70 (after further testing, and assuming it can still build current firefox).
comment:10 by , 6 years ago
Milestone: | 9.1 → hold |
---|---|
Summary: | llvm-9.0.0 → llvm-9.0.0 (Hold for next version) |
comment:11 by , 5 years ago
Milestone: | hold → 9.1 |
---|---|
Summary: | llvm-9.0.0 (Hold for next version) → llvm-9.0.1 |
comment:12 by , 5 years ago
The cfe-<version>.src.tar.xz tarball is now clang-9.0.1.src.tar.xz.
The patch referenced above in Comment 2 above has been incorporated in clang-9.0.1.
comment:13 by , 5 years ago
No release notes for version 9.0.1, but the 9.0.0 notes are at:
http://releases.llvm.org/9.0.0/tools/clang/docs/ReleaseNotes.html
comment:15 by , 5 years ago
As Pierre pointed out on the blfs-dev list, LLVM 9.0.1 seems to break rustc
Non-comprehensive list of changes in this release:
Two new extension points, namely EP_FullLinkTimeOptimizationEarly and EP_FullLinkTimeOptimizationLast are available for plugins to specialize the legacy pass manager full LTO pipeline.
llvm-objcopy/llvm-strip got support for COFF object files/executables, supporting the most common copying/stripping options.
The CMake parameter CLANG_ANALYZER_ENABLE_Z3_SOLVER has been replaced by LLVM_ENABLE_Z3_SOLVER. The RISCV target is no longer “experimental” (see Changes to the RISCV Target below for more details).
The ORCv1 JIT API has been deprecated. Please see Transitioning from ORCv1 to ORCv2. Support for target-independent hardware loops in IR has been added, with PowerPC and Arm implementations.
Noteworthy optimizations:
LLVM will now remove stores to constant memory (since this is a contradiction) under the assumption the code in question must be dead. This has proven to be problematic for some C/C++ code bases which expect to be able to cast away ‘const’. This is (and has always been) undefined behavior, but up until now had not been actively utilized for optimization purposes in this exact way. For more information, please see: bug 42763 and post commit discussion.
The optimizer will now convert calls to memcmp into a calls to bcmp in some circumstances. Users who are building freestanding code (not depending on the platform’s libc) without specifying -ffreestanding may need to either pass -fno-builtin-bcmp, or provide a bcmp function.
LLVM will now pattern match wide scalar values stored by a succession of narrow stores.
LLVM will now omit range checks for jump tables when lowering switches with unreachable default destination.
LLVM can now sink similar instructions to a common successor block also when the instructions have no uses, such as calls to void functions.
Changes to the LLVM IR:
Added immarg parameter attribute. This indicates an intrinsic parameter is required to be a simple constant. This annotation must be accurate to avoid possible miscompiles.
The 2-field form of global variables @llvm.global_ctors and @llvm.global_dtors has been deleted. The third field of their element type is now mandatory. Specify i8* null to migrate from the obsoleted 2-field form.
The byval attribute can now take a type parameter: byval(<ty>). If present it must be identical to the argument’s pointee type. In the next release we intend to make this parameter mandatory in preparation for opaque pointer types.
atomicrmw xchg now allows floating point types
atomicrmw now supports fadd and fsub
Changes to the X86 Target:
Changes to the AMDGPU Target:
I think other sections of the release note are irrelevant with LFS/BLFS.