Re: [RFC PATCH] lib: Introduce generic __cmpxchg_u64() and use it where needed
From: Paul E. McKenney <hidden>
Date: 2018-11-02 13:38:50
Also in:
linux-mips, linux-nfs, linuxppc-dev, lkml
From: Paul E. McKenney <hidden>
Date: 2018-11-02 13:38:50
Also in:
linux-mips, linux-nfs, linuxppc-dev, lkml
On Fri, Nov 02, 2018 at 01:23:28PM +0100, Peter Zijlstra wrote:
On Fri, Nov 02, 2018 at 10:56:31AM +0000, David Laight wrote:quoted
From: Paul E. McKenneyquoted
Sent: 01 November 2018 17:02...quoted
And there is a push to define C++ signed arithmetic as 2s complement, but there are still 1s complement systems with C compilers. Just not C++ compilers. Legacy...Hmmm... I've used C compilers for DSPs where signed integer arithmetic used the 'data registers' and would saturate, unsigned used the 'address registers' and wrapped. That was deliberate because it is much better to clip analogue values.Seems a dodgy heuristic if you ask me.quoted
Then there was the annoying cobol run time that didn't update the result variable if the result wouldn't fit. Took a while to notice that the sum of a list of values was even wrong! That would be perfectly valid for C - if unexpected.That's just insane ;-)quoted
quoted
quoted
But for us using -fno-strict-overflow which actually defines signed overflowI wonder how much real code 'strict-overflow' gets rid of? IIRC gcc silently turns loops like: int i; for (i = 1; i != 0; i *= 2) ... into infinite ones. Which is never what is required.Nobody said C was a 'safe' language. But less UB makes a better language IMO. Ideally we'd get all UBs filled in -- but I realise C has a few very 'interesting' ones that might be hard to get rid of.
There has been an effort to reduce UB, but not sure how far they got. Thanx, Paul