Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c > #122777
| 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> |
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 | Next — Previous in thread | Next in thread | Find similar
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