The Unix Heritage Society mailing list
 help / color / mirror / Atom feed
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

  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).