From: Dave Horsfall <dave@horsfall.org>
To: The Unix Heritage Society mailing list <tuhs@tuhs.org>
Subject: Re: [TUHS] History of popularity of C
Date: Sat, 6 Jun 2020 06:57:06 +1000 (EST) [thread overview]
Message-ID: <alpine.BSF.2.21.9999.2006060630050.44790@aneurin.horsfall.org> (raw)
In-Reply-To: <m1je5II-0036tPC@more.local>
On Wed, 27 May 2020, Greg A. Woods wrote:
> Sadly most compilers, including GCC and Clang/LLVM will, at best, warn
> (and warnings are only treated as errors by the most macho|wise); and
> compilers only do that now because they've been getting flack from
> developers whenever the optimizer does something unexpected.
Don't talk to me about optimisers... That's not the code that I wrote!
I've seen code simply disappear, because the "optimiser" though that it
was cleverer than I was.
> The Linux kernel example I've referred to involved dereferencing a
> pointer to do an assignment in a local variable definition, then a few
> lines later testing if the pointer was NULL before using the local
> variable. Unoptimised the code will dereference a NULL pointer and load
> junk from location zero into the variable (because it's kernel code),
> then the NULL test will trigger and all will be good. The optimizer
> rips out the NULL check because "obviously" the programmer has assumed
> the pointer is always a valid non-NULL pointer since they've explicitly
> dereferenced it before checking it and they wouldn't want to waste even
> a single jump-on-zero instruction checking it again. (It's also quite
> possible the code was written "correctly" at first, then someone mushed
> all the variable initialisations up onto their definitions.)
Typical Penguin/OS behaviour...
> In any case there's now a GCC option: -fno-delete-null-pointer-checks
> (to go along with -fno-strict-aliasing and -fno-strict-overflow, and
> -fno-strict-enums, all of which MUST be used, and sometimes
> -fno-strict-volatile-bitfields too, on all legacy code that you don't
> want to break)
I'm sure that there's a competition somewhere, to see who can come with
GCC's -fmost-longest-and-most-obscure-option flags...
> It's even worse when you have to write bare-metal code that must
> explictly dereference a NULL pointer (a not-so-real example: you want
> to use location zero in the CPU zero-page (e.g. on a 6502 or 6800, or
> PDP-8, etc.) as a pointer) -- it is now impossible to do that in strict
> Standard C even though trivially it "should just work" despite the silly
> rules. As far as I can tell it always did just work in "plain old" C.
I've programmed a PDP-8! 'Twas way back in high school, and I found a bug
in my mentor's program; it controlled traffic lights...
> The crazy thing about modern optimizers is that they're way more
> persistent and often somewhat more clever than your average programmer.
> They follow all the paths. They apply all the rules at every turn.
Optimisers... Grrr...
-- Dave
next prev parent reply other threads:[~2020-06-05 20:57 UTC|newest]
Thread overview: 105+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-21 15:27 Tyler Adams
2020-05-21 16:10 ` Toby Thain
2020-05-21 16:30 ` Larry McVoy
2020-05-21 17:22 ` John Foust
2020-05-21 20:17 ` Toby Thain
2020-05-21 16:43 ` Tony Finch
2020-05-21 17:35 ` arnold
2020-05-21 19:16 ` CHARLES KESTER
2020-05-21 20:33 ` Thomas Paulsen
2020-05-21 20:09 ` Toby Thain
2020-05-21 20:12 ` Tony Finch
2020-05-22 8:28 ` David Arnold
2020-05-21 20:07 ` Toby Thain
2020-05-21 20:56 ` Clem Cole
2020-05-21 23:45 ` Toby Thain
2020-05-21 23:57 ` Richard Salz
2020-05-22 0:17 ` Toby Thain
2020-05-22 4:10 ` John Gilmore
2020-05-22 14:11 ` Larry McVoy
2020-05-22 14:34 ` Richard Salz
2020-05-22 14:17 ` Larry McVoy
2020-05-22 7:42 ` arnold
2020-05-22 23:50 ` Greg A. Woods
2020-05-23 7:28 ` Andy Kosela
2020-05-23 17:08 ` Clem Cole
2020-05-23 17:22 ` Richard Salz
2020-05-23 18:42 ` Derek Fawcus
2020-05-23 19:28 ` Michael Kjörling
2020-05-26 4:21 ` Dave Horsfall
2020-05-26 4:32 ` Ed Carp
2020-05-26 8:21 ` Rob Pike
2020-05-26 14:44 ` Clem Cole
2020-05-26 14:32 ` Clem Cole
2020-05-26 19:50 ` Greg A. Woods
2020-05-26 21:48 ` Thomas Paulsen
2020-05-26 22:36 ` Greg A. Woods
2020-05-27 14:37 ` Ronald Natalie
2020-05-27 15:09 ` Clem Cole
2020-05-27 16:11 ` Thomas Paulsen
2020-05-27 19:49 ` Greg A. Woods
2020-05-27 20:13 ` Larry McVoy
2020-05-27 20:23 ` Richard Salz
2020-05-27 21:00 ` Nevin Liber
2020-05-27 23:17 ` Greg A. Woods
2020-06-05 20:57 ` Dave Horsfall [this message]
2020-06-05 21:40 ` Nemo Nusquam
2020-06-05 21:47 ` Richard Salz
2020-06-05 22:01 ` Bakul Shah
2020-06-06 20:49 ` Ed Carp
2020-06-06 21:08 ` Thomas Paulsen
2020-06-06 21:13 ` Larry McVoy
2020-06-06 22:27 ` Ed Carp
2020-06-06 23:14 ` Tyler Adams
2020-06-07 5:57 ` arnold
2020-06-07 9:22 ` Andy Kosela
2020-06-07 9:39 ` Ed Carp
2020-06-07 10:02 ` Brantley Coile
2020-06-07 11:30 ` Thomas Paulsen
2020-06-07 15:26 ` Clem Cole
2020-06-07 15:52 ` Larry McVoy
2020-06-08 1:02 ` Adam Thornton
2020-06-08 8:04 ` Thomas Paulsen
2020-06-07 17:26 ` Bakul Shah
2020-06-07 17:35 ` Bakul Shah
2020-06-07 18:50 ` Nemo Nusquam
2020-06-07 21:15 ` Chris Torek
2020-06-07 22:16 ` Dan Cross
2020-06-07 22:56 ` Chris Torek
2020-06-07 23:14 ` [TUHS] Comparative languages Warren Toomey
2020-06-08 0:24 ` [TUHS] History of popularity of C Bram Wyllie
2020-06-08 5:48 ` Lars Brinkhoff
2020-06-06 23:31 ` Bakul Shah
2020-06-07 0:12 ` Greg A. Woods
2020-06-07 11:04 ` emanuel stiebler
2020-06-07 11:33 ` Thomas Paulsen
2020-05-26 15:19 ` Toby Thain
2020-05-26 16:00 ` Thomas Paulsen
2020-05-26 16:21 ` Christopher Browne
2020-05-26 19:29 ` Thomas Paulsen
2020-05-26 19:55 ` Dan Cross
2020-05-26 20:00 ` Jon Steinhart
2020-05-21 16:18 ` Jim Capp
2020-05-21 18:58 ` A. P. Garcia
2020-05-21 19:02 ` Clem Cole
2020-05-21 18:28 Noel Chiappa
2020-05-21 18:44 ` Thomas Paulsen
2020-05-21 19:06 ` Paul Winalski
2020-05-21 20:27 ` Thomas Paulsen
2020-05-22 8:52 ` Tom Ivar Helbekkmo via TUHS
2020-05-22 9:51 ` Tyler Adams
2020-05-22 11:09 ` arnold
2020-05-22 11:15 ` Tyler Adams
2020-05-22 18:40 ` John Gilmore
2020-05-22 19:01 ` Toby Thain
2020-05-22 19:35 ` Larry McVoy
2020-05-22 19:31 ` Larry McVoy
2020-05-22 20:19 ` Michael Kjörling
2020-05-22 14:59 ` Toby Thain
2020-05-22 11:58 ` A. P. Garcia
2020-06-06 21:49 Doug McIlroy
2020-06-06 21:55 ` Warner Losh
2020-06-08 13:56 ` Derek Fawcus
2020-06-08 15:20 ` Richard Salz
2020-06-08 15:30 ` Dan Cross
2020-06-08 16:32 ` Tony Finch
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=alpine.BSF.2.21.9999.2006060630050.44790@aneurin.horsfall.org \
--to=dave@horsfall.org \
--cc=tuhs@tuhs.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).