[PATCH v2 18/18] arm64: select ARCH_SUPPORTS_LTO_CLANG
From: Paul E. McKenney <hidden>
Date: 2017-11-16 19:13:27
Also in:
linux-kbuild, lkml
On Thu, Nov 16, 2017 at 06:45:08PM +0000, Will Deacon wrote:
On Thu, Nov 16, 2017 at 10:39:51AM -0800, Paul E. McKenney wrote:quoted
On Thu, Nov 16, 2017 at 10:16:22AM -0800, Nick Desaulniers wrote:quoted
quoted
On Thu, Nov 16, 2017 at 06:34:17PM +0100, Peter Zijlstra wrote:quoted
So the problem is that its very very hard (and painful) to find these bugs. Getting the tools people to comment on these specific optimizations would really help lots.No doubt; I do not disagree with you. Kernel developers have very important use cases for the language. But the core point I'm trying to make is "do we need to block this patch set until issues with the C standards body in regards to the kernels memory model are resolved?" I would hope the two are orthogonal and that we'd take them and then test them even more extensively than the developer has in order to find out.Given that I have been working on getting the C and C++ standards to correctly handle rcu_dereference() for more than ten years, I recommend -against- waiting on standardization in the strongest possible terms. And if you think that ten years is bad, the Java standards community has been struggling with out-of-thin-air (OOTA) values for almost 20 years. And the C and C++ standards haven't solved OOTA, either.The problem is, if we go ahead with this change, the compiler *will* break some address dependencies and something will eventually go wrong. At that point, what do we do? Turn off some random compiler optimisation? Add a random barrier()? We don't necessarily need standardisation, but we at least need guarantees from the compiler implementation that LTO/PGO will respect source level address dependencies. I don't think we have that today.
Ah, if "this patch set" meant "adding LTO", I stand corrected and I apologize for my confusion. I agree that we need LTO/PGO to be housebroken from an LKMM viewpoint before it is enabled. Thanx, Paul