[PATCH v2 18/18] arm64: select ARCH_SUPPORTS_LTO_CLANG
From: peterz@infradead.org (Peter Zijlstra)
Date: 2017-11-16 16:31:20
Also in:
linux-kbuild, lkml
From: peterz@infradead.org (Peter Zijlstra)
Date: 2017-11-16 16:31:20
Also in:
linux-kbuild, lkml
On Thu, Nov 16, 2017 at 08:17:31AM -0800, Sami Tolvanen wrote:
On Thu, Nov 16, 2017 at 11:58:11AM +0000, Will Deacon wrote:quoted
I'll be honest with you: I'm absolutely terrified about enabling this.That's understandable, I wouldn't want to enable this by default quite yet either. This patch doesn't enable LTO for arm64, just makes it possible to enable the feature. I'm perfectly fine with marking CONFIG_LTO_CLANG experimental if it makes people more comfortable.quoted
How much testing has this seen?I've been running clang LTO kernels for a few months on a Pixel 2 device without any issues. This is on a 4.4 kernel though.quoted
Right now, the C standard isn't on our side here and we're relying on the compiler not doing this kind of thing. Can we continue to rely on that in the face of LTO?I'll have to check with our LLVM experts, but I have not run into these issues with current compiler versions. Looking at Andi's old patches, looks like gcc might be more aggressive in reordering things with LTO than clang.
Ideally we'd get the toolchain people to commit to supporting the kernel memory model along side the C11 one. That would help a ton.