Thread (103 messages) 103 messages, 16 authors, 2017-12-04

[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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help