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


Groups > comp.lang.c > #122777

Re: Equal yet different pointers

From Ben Bacarisse <ben.usenet@bsb.me.uk>
Newsgroups comp.lang.c
Subject Re: Equal yet different pointers
Date 2017-11-16 23:11 +0000
Organization A noiseless patient Spider
Message-ID <878tf52503.fsf@bsb.me.uk> (permalink)
References (1 earlier) <oujpb3$b9s$1@dont-email.me> <elePB.43928$WQ.6569@fx10.am4> <ouk4q6$ql4$1@dont-email.me> <87k1yqyxgx.fsf@kst-u.example.com> <oukvp3$bmf$1@dont-email.me>

Show all headers | View raw


David Brown <david.brown@hesbynett.no> writes:

> On 16/11/17 17:55, Keith Thompson wrote:
>> David Brown <david.brown@hesbynett.no> writes:
>> [...]
>>>>> On 16/11/17 11:00, Stefan Ram wrote:
>>>>>>     I did not invent this program, I just read it in an article
>>>>>>     and then typed it in from my memory:
>>>>>>
>>>>>>     main.c
>>>>>>
>>>>>> #include <stdio.h>
>>>>>> #include <string.h>
>>>>>>
>>>>>> int main()
>>>>>> { int i = 1; int j = 2;
>>>>>>     int * p = &i + 1; int * q = &j;
>>>>>>     if( !memcmp( &p, &q, sizeof( p )))
>>>>>>     { *p = 3; printf( "%d %d\n", *p, *q ); }}
>>>>>>
>>>>>>     transcript
>>>>>>
>>>>>> 3 2
>> [...]
>>
>>> gcc /does/ do something wrong here - it accepts this program without
>>> warnings, even with -Wall -Wextra.  So I do have something to complain
>>> about here with gcc.
>>
>> Why do you expect a warning?  There may or may not be undefined
>> behavior, but as far as I can tell no diagnostic is required.
>
> No diagnostic is /required/ - I believe you are correct there.  But a
> warning would be helpful.  Usually when a program has undefined
> behaviour, you have a mistake somewhere - it is good if a compiler
> tells the programmer about it.  (Issuing a diagnostic is certainly a
> permissible behaviour for the undefined behaviour.)

The trouble is that the compiler is probably not detecting undefined
behaviour and ignoring the undefined code (that's how you described the
situation up thread).  In cases like that it would indeed be great if
compilers would say "I ignored some code, you should check it".

But that's probably not what's happening.  The compiler ignores the
write though p even when it's defined (say by making p = &i) because it
can see that only *p is needed later and *that* optimisation would throw
up all sorts of annoying messages were it to be reported in every case.
The other fact, that nothing in the code aliases j is also very common
in perfectly legal code and would throw up far too many warnings were it
to be reported.

These two are enough to explain the fact that gcc determines, at compile
time, that 3 and 2 should be printed.  To report the undefined behaviour
in this case, gcc would have to have code specifically design to look
for it.

There may be cases where gcc *is* simply ignoring undefined code and not
reporting that fact, but it need not be the case here.

(I admit there is more guessing on my part here, but it's not entirely
uninformed guessing.)

<snip>
-- 
Ben.

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


Thread

Re: Equal yet different pointers David Brown <david.brown@hesbynett.no> - 2017-11-16 11:29 +0100
  Re: Equal yet different pointers Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2017-11-16 03:01 -0800
    Re: Equal yet different pointers "Bill Davy" <Bill@XchelSys.co.uk> - 2017-11-16 11:03 +0000
    Re: Equal yet different pointers David Brown <david.brown@hesbynett.no> - 2017-11-16 13:55 +0100
      Re: Equal yet different pointers Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2017-11-16 06:44 -0800
        Re: Equal yet different pointers Spiros Bousbouras <spibou@gmail.com> - 2017-11-16 14:49 +0000
          Re: Equal yet different pointers Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2017-11-16 08:28 -0800
        Re: Equal yet different pointers David Brown <david.brown@hesbynett.no> - 2017-11-16 16:46 +0100
      Re: Equal yet different pointers "James R. Kuyper" <jameskuyper@verizon.net> - 2017-11-16 12:29 -0500
        Re: Equal yet different pointers Nick Bowler <nbowler@draconx.ca> - 2017-11-17 22:47 +0000
          Re: Equal yet different pointers Richard Damon <Richard@Damon-Family.org> - 2017-11-18 17:03 -0500
  Re: Equal yet different pointers bartc <bc@freeuk.com> - 2017-11-16 11:09 +0000
    Re: Equal yet different pointers bartc <bc@freeuk.com> - 2017-11-16 11:14 +0000
    Re: Equal yet different pointers "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2017-11-16 03:41 -0800
      Rick's neuroses (Was: Equal yet different pointers) gazelle@shell.xmission.com (Kenny McCormack) - 2017-11-16 12:11 +0000
        Re: Rick's neuroses (Was: Equal yet different pointers) "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2017-11-16 04:30 -0800
          Re: Rick's neuroses (Was: Equal yet different pointers) David Brown <david.brown@hesbynett.no> - 2017-11-16 14:52 +0100
            Obscure references (Was: Rick's neuroses (Was: Equal yet different pointers)) gazelle@shell.xmission.com (Kenny McCormack) - 2017-11-19 12:32 +0000
              Re: Obscure references Noob <root@127.0.0.1> - 2017-11-20 11:08 +0100
                Re: Obscure references David Brown <david.brown@hesbynett.no> - 2017-11-20 12:36 +0100
    Re: Equal yet different pointers David Brown <david.brown@hesbynett.no> - 2017-11-16 14:45 +0100
      Re: Equal yet different pointers Keith Thompson <kst-u@mib.org> - 2017-11-16 08:55 -0800
        Re: Equal yet different pointers Spiros Bousbouras <spibou@gmail.com> - 2017-11-16 17:09 +0000
          Re: Equal yet different pointers Keith Thompson <kst-u@mib.org> - 2017-11-16 09:33 -0800
        Re: Equal yet different pointers Gareth Owen <gwowen@gmail.com> - 2017-11-16 19:20 +0000
          Re: Equal yet different pointers Keith Thompson <kst-u@mib.org> - 2017-11-16 11:36 -0800
            Re: Equal yet different pointers David Brown <david.brown@hesbynett.no> - 2017-11-16 22:50 +0100
              Re: Equal yet different pointers supercat@casperkitty.com - 2017-11-16 14:34 -0800
                Re: Equal yet different pointers David Brown <david.brown@hesbynett.no> - 2017-11-17 10:44 +0100
                Re: Equal yet different pointers supercat@casperkitty.com - 2017-11-17 08:23 -0800
                Re: Equal yet different pointers David Brown <david.brown@hesbynett.no> - 2017-11-17 19:13 +0100
                Re: Equal yet different pointers supercat@casperkitty.com - 2017-11-17 16:45 -0800
                Re: Equal yet different pointers Spiros Bousbouras <spibou@gmail.com> - 2017-11-18 07:30 +0000
        Re: Equal yet different pointers David Brown <david.brown@hesbynett.no> - 2017-11-16 22:25 +0100
          Re: Equal yet different pointers Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-11-16 23:11 +0000
            Re: Equal yet different pointers supercat@casperkitty.com - 2017-11-16 15:47 -0800
            Re: Equal yet different pointers David Brown <david.brown@hesbynett.no> - 2017-11-17 10:49 +0100
      Re: Equal yet different pointers Gareth Owen <gwowen@gmail.com> - 2017-11-16 19:20 +0000
        Re: Equal yet different pointers "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2017-11-16 11:26 -0800
        Re: Equal yet different pointers gazelle@shell.xmission.com (Kenny McCormack) - 2017-11-16 22:22 +0000
          Re: Equal yet different pointers bartc <bc@freeuk.com> - 2017-11-16 23:09 +0000
            Re: Equal yet different pointers gazelle@shell.xmission.com (Kenny McCormack) - 2017-11-17 08:50 +0000
              Re: Equal yet different pointers Gareth Owen <gwowen@gmail.com> - 2017-11-17 17:42 +0000
                Re: Equal yet different pointers gazelle@shell.xmission.com (Kenny McCormack) - 2017-11-17 19:35 +0000
      Re: Equal yet different pointers bartc <bc@freeuk.com> - 2017-11-16 23:34 +0000
        Re: Equal yet different pointers supercat@casperkitty.com - 2017-11-16 15:58 -0800
        Re: Equal yet different pointers Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-11-17 00:57 +0000
        Re: Equal yet different pointers David Brown <david.brown@hesbynett.no> - 2017-11-17 12:32 +0100
          Re: Equal yet different pointers bartc <bc@freeuk.com> - 2017-11-17 12:31 +0000
            Re: Equal yet different pointers mark.bluemel@gmail.com - 2017-11-17 07:23 -0800
            Re: Equal yet different pointers David Brown <david.brown@hesbynett.no> - 2017-11-17 17:14 +0100
              Re: Equal yet different pointers bartc <bc@freeuk.com> - 2017-11-18 00:12 +0000
                Re: Equal yet different pointers Ian Collins <ian-news@hotmail.com> - 2017-11-18 13:39 +1300
                Re: Equal yet different pointers bartc <bc@freeuk.com> - 2017-11-18 01:39 +0000
                Re: Equal yet different pointers Ian Collins <ian-news@hotmail.com> - 2017-11-18 14:42 +1300
                Re: Equal yet different pointers bartc <bc@freeuk.com> - 2017-11-18 02:01 +0000
                Re: Equal yet different pointers Melzzzzz <Melzzzzz@zzzzz.com> - 2017-11-18 02:07 +0000
                Re: Equal yet different pointers Ian Collins <ian-news@hotmail.com> - 2017-11-18 15:35 +1300
                Re: Equal yet different pointers bartc <bc@freeuk.com> - 2017-11-18 11:23 +0000
                Re: Equal yet different pointers Ian Collins <ian-news@hotmail.com> - 2017-11-19 12:02 +1300
                Re: Equal yet different pointers bartc <bc@freeuk.com> - 2017-11-18 23:25 +0000
                Re: Equal yet different pointers Ian Collins <ian-news@hotmail.com> - 2017-11-19 13:44 +1300
                Re: Equal yet different pointers bartc <bc@freeuk.com> - 2017-11-19 01:05 +0000
                Re: Equal yet different pointers Ian Collins <ian-news@hotmail.com> - 2017-11-19 14:30 +1300
                Re: Equal yet different pointers bartc <bc@freeuk.com> - 2017-11-19 01:48 +0000
                Re: Equal yet different pointers Ian Collins <ian-news@hotmail.com> - 2017-11-19 16:21 +1300
                Re: Equal yet different pointers Reinhardt Behm <rbehm@hushmail.com> - 2017-11-19 11:44 +0800
                Re: Equal yet different pointers bartc <bc@freeuk.com> - 2017-11-19 10:10 +0000
                Re: Equal yet different pointers mark.bluemel@gmail.com - 2017-11-20 00:52 -0800
                Re: Equal yet different pointers David Brown <david.brown@hesbynett.no> - 2017-11-19 23:27 +0100
                Re: Equal yet different pointers Richard Damon <Richard@Damon-Family.org> - 2017-11-19 22:48 -0500
                Re: Equal yet different pointers Ian Collins <ian-news@hotmail.com> - 2017-11-20 16:52 +1300
    Re: Equal yet different pointers Spiros Bousbouras <spibou@gmail.com> - 2017-11-16 14:28 +0000
      Re: Equal yet different pointers Barry Schwarz <schwarzb@dqel.com> - 2017-11-16 07:10 -0800
        Re: Equal yet different pointers David Brown <david.brown@hesbynett.no> - 2017-11-16 16:51 +0100
          Re: Equal yet different pointers "James R. Kuyper" <jameskuyper@verizon.net> - 2017-11-16 12:57 -0500
      Re: Equal yet different pointers supercat@casperkitty.com - 2017-11-16 08:03 -0800
      Re: Equal yet different pointers "James R. Kuyper" <jameskuyper@verizon.net> - 2017-11-16 12:38 -0500
        Re: Equal yet different pointers "Pascal J. Bourguignon" <pjb@informatimago.com> - 2017-11-16 20:13 +0100
          Re: Equal yet different pointers "James R. Kuyper" <jameskuyper@verizon.net> - 2017-11-16 14:29 -0500
    Re: Equal yet different pointers Jorgen Grahn <grahn+nntp@snipabacken.se> - 2017-11-16 15:57 +0000
      Re: Equal yet different pointers Spiros Bousbouras <spibou@gmail.com> - 2017-11-16 16:07 +0000
        Re: Equal yet different pointers Jorgen Grahn <grahn+nntp@snipabacken.se> - 2017-11-16 19:01 +0000
          Re: Equal yet different pointers Spiros Bousbouras <spibou@gmail.com> - 2017-11-16 19:14 +0000
            Re: Equal yet different pointers Jorgen Grahn <grahn+nntp@snipabacken.se> - 2017-11-16 19:47 +0000
      Re: Equal yet different pointers bartc <bc@freeuk.com> - 2017-11-16 23:08 +0000
        Re: Equal yet different pointers Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-11-17 00:33 +0000

csiph-web