Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #55034

Re: the language

From Richard Damon <Richard@Damon-Family.org>
Newsgroups comp.lang.c
Subject Re: the language
References (11 earlier) <m6sc87$hmj$1@speranza.aioe.org> <ek259a5e27tr5bel88c6o07qah84o349v1@4ax.com> <5492c298.300765@news.xs4all.nl> <LjAkw.152595$Sn4.106292@fx10.iad> <m6uksd$7t3$1@dont-email.me>
Message-ID <rsOkw.818947$DX.276445@fx06.iad> (permalink)
Organization Forte - www.forteinc.com
Date 2014-12-19 00:11 -0500

Show all headers | View raw


On 12/18/14, 8:30 AM, James Kuyper wrote:
> On 12/18/2014 08:06 AM, Richard Damon wrote:
>> On 12/18/14, 7:04 AM, Richard Bos wrote:
>>> Robert Wessel <robertwessel2@yahoo.com> wrote:
>>>
>>>> In fact there's a lively discussion going on about compilers doing
>>>> just that.  Mike Stump (who's a GCC developer) has been arguing here
>>>> in c.l.c that compiler *are* allowed to make assumptions based on what
>>>> is technically undefined behavior when optimizing code.  A number of
>>>> other folks are unhappy with that.
>>>
>>> They may be unhappy with that, but I can't see what arguments they can
>>> bring against it. Undefined behaviour is _undefined_, so if an optimiser
>>> wants to make use of it, it's free to do so.
>>>
>>> Richard
>>>
>>
>> Just because the C standard says something is undefined, doesn't mean
>> that the compiler is free to do anything in that case. There may be a
>> second document defining that condition, and if the compiler claims
>> compliance to that document, it should follow that too. A very common
>> case is POSIX, which defines a number of things that would be undefined
>> in plain C.
>
> That is quite true.
>
>> It isn't that far of a reach to say that if a compiler claims that it
>> generates code for processor X, that this means that if the manufacturer
>> of that processor defines the behavior of a certain operation that C
>> leaves as undefined, then that definition would apply to the C program
>> apparently doing that operation.
>
> Could you please specify a particular processor, and provide a piece of
> code with behavior undefined by the C standard which, in your opinion,
> mandates the use of a particular machine operation if compiled by an
> implementation that claims to target that processor?

Note, I didn't say "Mandated", but defined how that machine performed 
certain operations.

Take almost ANY normal 2's complement machine (like x86)

int i = INT_MAX;
int j = 1;
int k = i+j;

Under the assumption that + means use the processors addition 
instruction, and not some horrible concoction that acts like the 
addition instruction most of the time, but in certain conditions defined 
by the standard, because there have at one time existed that did 
something diffent, the the only reasonable value for k int INT_MIN.

The hardware definition has defined that the way arithmetic works on 
this machine is a benign wrap around. The compiler, in exploiting that 
the formal definition in C doesn't require the program to use the 
defined capabilities of the machine has inserts many landmines into the 
program design. It has gone out of its way to do something (technically 
allowed, but largely unexpected) surprising and counter intuitive.

By the same logic, the compiler is allowed to insert code into a program 
so if ever the program does something undefined (like compute INT_MAX+1) 
it automatically emails the contents of the users computer to their 
competitor and then reformat the hard disk.

>
> The concept that such code can even exist is fundamentally flawed. C
> doesn't provide any way of specifying that a particular machine
> operation be used (though it does mention the existence of an asm()
> construct which would have that affect, as a common extension). It just
> defines what the effects are when C code is translated and executed. The
> compiler is free to choose any desired combination of the machine
> operations provided by a given processor, so long as the net result of
> the operations chosen produces the behavior required by the C standard.
> When the C standard leaves the behavior undefined, there is no behavior
> that is not permitted, so the implementation is free to use any machine
> operations it wishes, including ones that behave quite differently from
> the one you mistakenly thought it was required to use. That's what
> "undefined" means: "this international standard imposes no restrictions"
> - including, as a special case, the fact that it doesn't impose any
> restrictions on which machine operations can be executed.
>

Yes, C doesn't require that the compiler "do the expected thing" in the 
face of undefined behavior. I would contend that the fact the compiler 
goes out of its way to detect that the only way a path can happen is the 
result of undefined behavior and using that fact quietly optimize it 
away indicates that creating correct programs is not high on the list of 
results. The fact that the compiler has detected a path that can only be 
executed after undefined behavior says that the compiler should have 
warned of the case, as it is almost certainly a bug in the code.

Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

the language Rosario193 <Rosario@invalid.invalid> - 2014-11-26 21:54 +0100
  Re: the language Rosario193 <Rosario@invalid.invalid> - 2014-11-26 21:56 +0100
    Re: the language John Bode <jfbode1029@gmail.com> - 2014-11-26 13:45 -0800
      Re: the language Rosario193 <Rosario@invalid.invalid> - 2014-11-28 11:52 +0100
      Re: the language "Bill Cunningham" <nospam@nspam.invalid> - 2014-12-01 23:25 -0500
      Re: the language "Bill Cunningham" <nospam@nspam.invalid> - 2014-12-02 00:56 -0500
        Re: the language Rosario193 <Rosario@invalid.invalid> - 2014-12-04 14:52 +0100
          Re: the language "Osmium" <r124c4u102@comcast.net> - 2014-12-04 08:07 -0600
            Re: the language Geoff <geoff@invalid.invalid> - 2014-12-04 10:20 -0800
  Re: the language Mark Storkamp <mstorkamp@yahoo.com> - 2014-11-26 15:11 -0600
    Re: the language Rosario193 <Rosario@invalid.invalid> - 2014-11-28 12:16 +0100
      Re: the language Rosario193 <Rosario@invalid.invalid> - 2014-11-28 12:18 +0100
  Re: the language John Bode <jfbode1029@gmail.com> - 2014-11-26 13:12 -0800
    Re: the language Kaz Kylheku <kaz@kylheku.com> - 2014-11-27 00:37 +0000
    Re: the language Ben Bacarisse <ben.usenet@bsb.me.uk> - 2014-11-27 01:13 +0000
  Re: the language raltbos@xs4all.nl (Richard Bos) - 2014-11-26 22:45 +0000
    Re: the language Rosario193 <Rosario@invalid.invalid> - 2014-11-27 07:41 +0100
  Re: the language Rosario193 <Rosario@invalid.invalid> - 2014-11-27 08:12 +0100
    Re: the language Morris Dovey <mrdovey@iedu.com> - 2014-11-27 01:43 -0600
      Re: the language Rosario193 <Rosario@invalid.invalid> - 2014-11-28 11:56 +0100
        Re: the language Morris Dovey <mrdovey@iedu.com> - 2014-11-28 09:08 -0600
          Re: the language Rosario193 <Rosario@invalid.invalid> - 2014-11-28 20:58 +0100
            Re: the language Morris Dovey <mrdovey@iedu.com> - 2014-11-28 19:22 -0600
              Re: the language Rosario193 <Rosario@invalid.invalid> - 2014-12-02 02:59 +0100
                Re: the language Kaz Kylheku <kaz@kylheku.com> - 2014-12-02 02:53 +0000
                Re: the language Les Cargill <lcargill99@comcast.com> - 2014-12-01 21:25 -0600
                Re: the language Kaz Kylheku <kaz@kylheku.com> - 2014-12-02 06:22 +0000
  Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-11-27 08:37 +0000
    Re: the language Reinhardt Behm <rbehm@hushmail.com> - 2014-11-27 16:44 +0800
      Re: the language gazelle@shell.xmission.com (Kenny McCormack) - 2014-11-27 15:35 +0000
        Re: the language Richard Damon <Richard@Damon-Family.org> - 2014-11-27 11:58 -0500
          Re: the language jt@toerring.de (Jens Thoms Toerring) - 2014-11-27 22:44 +0000
            Re: the language Rosario193 <Rosario@invalid.invalid> - 2014-11-28 09:52 +0100
            Re: the language Tim Rentsch <txr@alumni.caltech.edu> - 2014-11-28 12:53 -0800
          Re: the language Thomas Jahns <jahns@idontlikespam.dkrz.de> - 2014-11-28 10:07 +0100
            Re: the language Thomas Jahns <jahns@idontlikespam.dkrz.de> - 2014-11-28 14:57 +0100
            Re: the language Tim Rentsch <txr@alumni.caltech.edu> - 2014-11-28 13:09 -0800
    Re: the language Rosario193 <Rosario@invalid.invalid> - 2014-11-28 12:01 +0100
      Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-11-28 14:46 +0000
    Re: the language Tim Rentsch <txr@alumni.caltech.edu> - 2014-11-28 13:16 -0800
      Re: the language gazelle@shell.xmission.com (Kenny McCormack) - 2014-11-28 22:09 +0000
        Re: the language Tim Rentsch <txr@alumni.caltech.edu> - 2014-12-01 03:40 -0800
      Re: the language Malcolm McLean <malcolm.mclean5@btinternet.com> - 2014-11-28 14:42 -0800
        Re: the language Tim Rentsch <txr@alumni.caltech.edu> - 2014-12-01 03:22 -0800
      Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-11-28 23:09 +0000
        Re: the language Malcolm McLean <malcolm.mclean5@btinternet.com> - 2014-11-28 16:14 -0800
          Re: the language BartC <bc@freeuk.com> - 2014-11-29 01:42 +0000
          Re: the language Kaz Kylheku <kaz@kylheku.com> - 2014-11-29 01:42 +0000
            Re: the language Malcolm McLean <malcolm.mclean5@btinternet.com> - 2014-11-29 04:03 -0800
          Re: the language Keith Thompson <kst-u@mib.org> - 2014-12-01 00:55 -0800
            Re: the language glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-12-02 05:42 +0000
        Re: the language Richard Damon <Richard@Damon-Family.org> - 2014-11-28 19:25 -0500
        Re: the language Tim Rentsch <txr@alumni.caltech.edu> - 2014-12-01 03:21 -0800
          Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-01 14:02 +0000
            Re: the language Tim Rentsch <txr@alumni.caltech.edu> - 2014-12-05 10:18 -0800
              Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-07 08:25 +0000
                Re: the language Öö Tiib <ootiib@hot.ee> - 2014-12-07 10:44 -0800
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-07 19:17 +0000
                Re: the language Öö Tiib <ootiib@hot.ee> - 2014-12-07 15:48 -0800
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-08 05:45 +0000
                Re: the language Malcolm McLean <malcolm.mclean5@btinternet.com> - 2014-12-08 03:27 -0800
                Re: the language Kaz Kylheku <kaz@kylheku.com> - 2014-12-08 06:00 +0000
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-08 06:17 +0000
                Re: the language Malcolm McLean <malcolm.mclean5@btinternet.com> - 2014-12-08 03:37 -0800
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-08 12:53 +0000
                Re: the language Tim Rentsch <txr@alumni.caltech.edu> - 2014-12-16 04:21 -0800
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-16 12:43 +0000
                Re: the language Tim Rentsch <txr@alumni.caltech.edu> - 2014-12-16 14:46 -0800
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-17 00:23 +0000
                Re: the language JohnF <john@please.see.sig.for.email.com> - 2014-12-17 07:01 +0000
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-17 07:22 +0000
                Re: the language Ben Bacarisse <ben.usenet@bsb.me.uk> - 2014-12-17 11:56 +0000
                Re: the language Malcolm McLean <malcolm.mclean5@btinternet.com> - 2014-12-17 05:43 -0800
                Re: the language Rosario193 <Rosario@invalid.invalid> - 2014-12-18 18:30 +0100
                Re: the language Rosario193 <Rosario@invalid.invalid> - 2014-12-18 18:41 +0100
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-17 14:34 +0000
                Re: the language Ben Bacarisse <ben.usenet@bsb.me.uk> - 2014-12-18 02:15 +0000
                Re: the language James Kuyper <jameskuyper@verizon.net> - 2014-12-17 22:31 -0500
                Re: the language Ben Bacarisse <ben.usenet@bsb.me.uk> - 2014-12-18 17:19 +0000
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-18 07:52 +0000
                Re: the language Ben Bacarisse <ben.usenet@bsb.me.uk> - 2014-12-18 17:21 +0000
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-18 18:15 +0000
                Re: the language Ben Bacarisse <ben.usenet@bsb.me.uk> - 2014-12-19 01:20 +0000
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-19 07:48 +0000
                Re: the language James Kuyper <jameskuyper@verizon.net> - 2014-12-19 07:40 -0500
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-19 12:54 +0000
                Re: the language James Kuyper <jameskuyper@verizon.net> - 2014-12-19 09:54 -0500
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-19 15:19 +0000
                Re: the language James Kuyper <jameskuyper@verizon.net> - 2014-12-19 11:00 -0500
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-19 16:13 +0000
                Re: the language James Kuyper <jameskuyper@verizon.net> - 2014-12-19 11:27 -0500
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-19 16:45 +0000
                Re: the language James Kuyper <jameskuyper@verizon.net> - 2014-12-19 13:48 -0500
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-19 19:10 +0000
                Re: the language Morris Dovey <mrdovey@iedu.com> - 2014-12-19 21:17 -0600
                Re: the language Morris Dovey <mrdovey@iedu.com> - 2014-12-19 21:32 -0600
                Re: the language Ben Bacarisse <ben.usenet@bsb.me.uk> - 2014-12-19 16:49 +0000
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-19 17:00 +0000
                Re: the language James Kuyper <jameskuyper@verizon.net> - 2014-12-19 13:57 -0500
                Re: the language Malcolm McLean <malcolm.mclean5@btinternet.com> - 2014-12-19 14:31 -0800
                Re: the language Ben Bacarisse <ben.usenet@bsb.me.uk> - 2014-12-19 20:29 +0000
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-19 20:36 +0000
                Re: the language Tim Rentsch <txr@alumni.caltech.edu> - 2014-12-17 07:18 -0800
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-17 15:45 +0000
                Re: the language glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-12-17 16:50 +0000
                Re: the language raltbos@xs4all.nl (Richard Bos) - 2014-12-17 17:24 +0000
                Re: the language Robert Wessel <robertwessel2@yahoo.com> - 2014-12-18 02:07 -0600
                Re: the language raltbos@xs4all.nl (Richard Bos) - 2014-12-18 12:04 +0000
                Re: the language Richard Damon <Richard@Damon-Family.org> - 2014-12-18 08:06 -0500
                Re: the language James Kuyper <jameskuyper@verizon.net> - 2014-12-18 08:30 -0500
                Re: the language Richard Damon <Richard@Damon-Family.org> - 2014-12-19 00:11 -0500
                Re: the language glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-12-19 07:00 +0000
                Re: the language Keith Thompson <kst-u@mib.org> - 2014-12-19 08:43 -0800
                Re: the language Richard Damon <Richard@Damon-Family.org> - 2014-12-19 23:29 -0500
                Re: the language Keith Thompson <kst-u@mib.org> - 2014-12-20 00:37 -0800
                Re: the language gazelle@shell.xmission.com (Kenny McCormack) - 2014-12-20 08:45 +0000
                Re: the language raltbos@xs4all.nl (Richard Bos) - 2014-12-20 09:45 +0000
                Re: the language Malcolm McLean <malcolm.mclean5@btinternet.com> - 2014-12-20 03:17 -0800
                Re: the language Malcolm McLean <malcolm.mclean5@btinternet.com> - 2014-12-18 06:09 -0800
                Re: the language raltbos@xs4all.nl (Richard Bos) - 2014-12-18 14:30 +0000
                Re: the language raltbos@xs4all.nl (Richard Bos) - 2014-12-18 14:23 +0000
                Re: the language Keith Thompson <kst-u@mib.org> - 2014-12-18 08:18 -0800
                Re: the language Richard Damon <Richard@Damon-Family.org> - 2014-12-20 12:22 -0500
                Re: the language James Kuyper <jameskuyper@verizon.net> - 2014-12-20 13:36 -0500
                Re: the language Keith Thompson <kst-u@mib.org> - 2014-12-20 11:43 -0800
                Re: the language Keith Thompson <kst-u@mib.org> - 2014-12-20 11:37 -0800
                Re: the language glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-12-20 20:10 +0000
                Re: the language Robert Wessel <robertwessel2@yahoo.com> - 2014-12-21 15:02 -0600
                Re: the language Kaz Kylheku <kaz@kylheku.com> - 2014-12-21 22:02 +0000
                Re: the language Stephen Sprunk <stephen@sprunk.org> - 2014-12-21 23:49 -0600
                Re: the language raltbos@xs4all.nl (Richard Bos) - 2014-12-21 17:45 +0000
                Re: the language Tim Rentsch <txr@alumni.caltech.edu> - 2014-12-18 10:29 -0800
                Re: the language Robert Wessel <robertwessel2@yahoo.com> - 2014-12-20 05:29 -0600
                Re: the language Tim Rentsch <txr@alumni.caltech.edu> - 2014-12-20 11:32 -0800
                Re: the language Robert Wessel <robertwessel2@yahoo.com> - 2014-12-21 15:23 -0600
                Re: the language Tim Rentsch <txr@alumni.caltech.edu> - 2014-12-22 23:39 -0800
                Re: the language glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-12-20 20:22 +0000
                Re: the language Tim Rentsch <txr@alumni.caltech.edu> - 2014-12-18 10:24 -0800
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-18 18:36 +0000
                Re: the language Tim Rentsch <txr@alumni.caltech.edu> - 2014-12-19 09:24 -0800
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-19 17:53 +0000
                Re: the language Tim Rentsch <txr@alumni.caltech.edu> - 2014-12-20 11:48 -0800
                Re: the language JohnF <john@please.see.sig.for.email.com> - 2014-12-19 02:20 +0000
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-19 08:31 +0000
                Re: the language JohnF <john@please.see.sig.for.email.com> - 2014-12-19 09:31 +0000
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-19 10:10 +0000
                Re: the language Malcolm McLean <malcolm.mclean5@btinternet.com> - 2014-12-19 07:08 -0800
                Re: the language JohnF <john@please.see.sig.for.email.com> - 2014-12-20 06:39 +0000
                Re: the language John Forkosh <forkosh@panix.com> - 2014-12-20 07:32 +0000
                Re: the language Greg Martin <greg.at.softsprocket@dot.com> - 2015-01-04 17:02 +0000
                Re: the language James Kuyper <jameskuyper@verizon.net> - 2015-01-04 12:40 -0500
                Re: the language Greg Martin <greg.at.softsprocket@dot.com> - 2015-01-04 18:02 +0000
                Re: the language James Kuyper <jameskuyper@verizon.net> - 2015-01-05 09:47 -0500
                Re: the language Greg Martin <greg.at.softsprocket@dot.com> - 2015-01-05 15:14 +0000
                Re: the language Keith Thompson <kst-u@mib.org> - 2015-01-05 08:42 -0800
                Re: the language glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2015-01-06 00:14 +0000
                Re: the language James Kuyper <jameskuyper@verizon.net> - 2015-01-05 13:19 -0500
                Re: the language Richard Damon <Richard@Damon-Family.org> - 2015-01-04 15:59 -0500
                Re: the language Keith Thompson <kst-u@mib.org> - 2015-01-04 14:30 -0800
                Re: the language Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-01-04 15:44 -0800
                Re: the language James Kuyper <jameskuyper@verizon.net> - 2015-01-05 13:36 -0500
  Re: the language Rosario193 <Rosario@invalid.invalid> - 2014-11-28 12:07 +0100
  Re: the language "ocq (an evil corporate man)" <ocq@maili.ng> - 2014-12-02 23:16 +0100
    Re: the language Malcolm McLean <malcolm.mclean5@btinternet.com> - 2014-12-03 02:23 -0800
      Re: the language "ocq (an evil corporate man)" <ocq@maili.ng> - 2014-12-03 15:55 +0100
      Re: the language Nobody <nobody@nowhere.invalid> - 2014-12-03 15:42 +0000
        Re: the language Malcolm McLean <malcolm.mclean5@btinternet.com> - 2014-12-04 04:49 -0800
          Re: the language Keith Thompson <kst-u@mib.org> - 2014-12-04 09:07 -0800
            Re: the language Malcolm McLean <malcolm.mclean5@btinternet.com> - 2014-12-04 10:08 -0800
              Re: the language Keith Thompson <kst-u@mib.org> - 2014-12-04 11:49 -0800
                Re: the language Rosario193 <Rosario@invalid.invalid> - 2014-12-05 12:32 +0100
          Re: the language raltbos@xs4all.nl (Richard Bos) - 2014-12-04 22:17 +0000
  Re: the language Rosario193 <Rosario@invalid.invalid> - 2014-12-18 18:17 +0100
    Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-18 18:12 +0000
      Re: the language Rosario193 <Rosario@invalid.invalid> - 2014-12-18 23:15 +0100
        Re: the language Rosario193 <Rosario@invalid.invalid> - 2014-12-18 23:50 +0100
    Re: the language "ocq (an evil corporate man)" <ocq@maili.ng> - 2014-12-19 02:34 +0100

csiph-web