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


Groups > comp.lang.c++ > #44726

Re: This will work or not?

From David Brown <david.brown@hesbynett.no>
Newsgroups comp.lang.c++
Subject Re: This will work or not?
Date 2016-09-02 09:35 +0200
Organization A noiseless patient Spider
Message-ID <nqba4f$cp8$1@dont-email.me> (permalink)
References (5 earlier) <nq86jq$676$1@jstuckle.eternal-september.org> <nq8lod$9l9$1@dont-email.me> <nq9vrk$qrv$1@jstuckle.eternal-september.org> <nqa5n8$g2f$1@dont-email.me> <nqaj3f$mv2$2@jstuckle.eternal-september.org>

Show all headers | View raw


On 02/09/16 03:02, Jerry Stuckle wrote:
> On 9/1/2016 5:14 PM, David Brown wrote:
>> On 01/09/16 21:34, Jerry Stuckle wrote:
>>> On 9/1/2016 3:35 AM, David Brown wrote:
>>>> On 01/09/16 05:17, Jerry Stuckle wrote:
>>
>>>>>
>>>>> Incorrect.  Order of data members in the struct must be as they are
>>>>> declared in the struct.  There may be padding between the members, but
>>>>> the order cannot change.
>>>>>
>>>>> Compilers cannot "generate anything they want as long as the runs as
>>>>> if".  They are bound by other rules.
>>>>
>>>> No, to a very large extent they /can/ generate anything they want - as
>>>> long as the code runs "as if" it followed the rules strictly.  This is
>>>> one of the key points for an optimising compiler.
>>>>
>>>
>>> They can "to a very large extent".  But this does NOT include reordering
>>> members of a struct.  The most they can do is add padding between
>>> members.  That is not reordering.
>>>
>>
>> Read up a bit about the "as if" rule.
>>
>> You might also want to look up the "-fipa-struct-reorg" flag to gcc,
>> which existed between versions 4.4 and 4.8.
>>
>> Here's a link so that you don't have to google:
>>
>> <http://stackoverflow.com/questions/14671253/is-there-a-gcc-keyword-to-allow-structure-reordering>
>>
>>
>> And here's a paper discussing it on the Pathscale compiler:
>>
>> <http://www.capsl.udel.edu/conferences/open64/2008/Papers/111.pdf>
>>
>> Of course, it is conceivable that /you/ understand C and C++ far better
>> than the people writing these compilers - but I think it is unlikely.
>>
>>
> 
> And it is conceivable the quote I got from the standard shows how wrong
> you are.  But you never read that quote, did you?
> 

Yes, I read the quotation.  And note here that I referenced compiler
writers opinions on applying the as-if rule to struct layout - not just
my own.  Are you telling me that you know better than they do?

And I see from your other posts that you believe "the as-if rule applies
to execution, not memory layout".  If that belief were true, then you
would be correct that struct layout is exempt from as-if optimisation.
However, it is /not/ true.

There are two reasons for me saying this.  First, there is nowhere in
the standards (C standards at least - I haven't read as much of the C++
standards) that makes this distinction.

Secondly, as long as we are talking about memory that can only be seen
from within the program (while following the rules of C), memory layout
is nothing more than an effect of execution.  The way a struct is laid
out is not observable behaviour in itself, and thus the compiler is free
to change it.

It is /not/ free to change struct layout when that data is passed to
external functions, written to files, or has volatile behaviour - those
are observable effects.  But if the data stays within the program as
known to the compiler, the compiler is free to do as it wants.



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


Thread

This will work or not? Melzzzzz <mel@zzzzz.com> - 2016-08-31 14:59 +0200
  Re: This will work or not? David Brown <david.brown@hesbynett.no> - 2016-08-31 15:20 +0200
    Re: This will work or not? mark <mark@invalid.invalid> - 2016-08-31 16:05 +0200
      Re: This will work or not? David Brown <david.brown@hesbynett.no> - 2016-08-31 16:19 +0200
    Re: This will work or not? scott@slp53.sl.home (Scott Lurndal) - 2016-08-31 14:20 +0000
    Re: This will work or not? Bo Persson <bop@gmb.dk> - 2016-08-31 18:53 +0200
      Re: This will work or not? Tim Rentsch <txr@alumni.caltech.edu> - 2016-09-01 09:03 -0700
        Re: This will work or not? David Brown <david.brown@hesbynett.no> - 2016-09-01 22:45 +0200
          Re: This will work or not? Tim Rentsch <txr@alumni.caltech.edu> - 2016-09-01 18:08 -0700
            Re: This will work or not? David Brown <david.brown@hesbynett.no> - 2016-09-02 09:24 +0200
              Re: This will work or not? Tim Rentsch <txr@alumni.caltech.edu> - 2016-09-04 06:31 -0700
                Re: This will work or not? David Brown <david.brown@hesbynett.no> - 2016-09-04 20:19 +0200
  Re: This will work or not? Manfred <noname@invalid.add> - 2016-08-31 15:45 +0200
    Re: This will work or not? Melzzzzz <mel@zzzzz.com> - 2016-08-31 15:59 +0200
    Re: This will work or not? David Brown <david.brown@hesbynett.no> - 2016-08-31 16:22 +0200
      Re: This will work or not? Manfred <noname@invalid.add> - 2016-08-31 17:06 +0200
        Re: This will work or not? David Brown <david.brown@hesbynett.no> - 2016-08-31 19:29 +0200
          Re: This will work or not? Chris Vine <chris@cvine--nospam--.freeserve.co.uk> - 2016-08-31 21:52 +0100
            Re: This will work or not? David Brown <david.brown@hesbynett.no> - 2016-09-01 09:07 +0200
              Re: This will work or not? Chris Vine <chris@cvine--nospam--.freeserve.co.uk> - 2016-09-01 12:30 +0100
            Re: This will work or not? Tim Rentsch <txr@alumni.caltech.edu> - 2016-09-01 09:01 -0700
              Re: This will work or not? Chris Vine <chris@cvine--nospam--.freeserve.co.uk> - 2016-09-01 18:16 +0100
                Re: This will work or not? Tim Rentsch <txr@alumni.caltech.edu> - 2016-09-01 18:37 -0700
                Re: This will work or not? Chris Vine <chris@cvine--nospam--.freeserve.co.uk> - 2016-09-02 10:42 +0100
                Re: This will work or not? Tim Rentsch <txr@alumni.caltech.edu> - 2016-09-04 06:59 -0700
          Re: This will work or not? Jerry Stuckle <jstucklex@attglobal.net> - 2016-08-31 23:17 -0400
            Re: This will work or not? David Brown <david.brown@hesbynett.no> - 2016-09-01 09:35 +0200
              Re: This will work or not? Jerry Stuckle <jstucklex@attglobal.net> - 2016-09-01 15:34 -0400
                Re: This will work or not? me <crisdunbar@gmail.com> - 2016-09-01 13:50 -0700
                Re: This will work or not? Jerry Stuckle <jstucklex@attglobal.net> - 2016-09-01 21:01 -0400
                Re: This will work or not? me <crisdunbar@gmail.com> - 2016-09-01 19:02 -0700
                Re: This will work or not? Jerry Stuckle <jstucklex@attglobal.net> - 2016-09-01 22:17 -0400
                Re: This will work or not? me <crisdunbar@gmail.com> - 2016-09-02 08:19 -0700
                Re: This will work or not? Jerry Stuckle <jstucklex@attglobal.net> - 2016-09-02 12:39 -0400
                Re: This will work or not? me <crisdunbar@gmail.com> - 2016-09-02 12:26 -0700
                Re: This will work or not? Jerry Stuckle <jstucklex@attglobal.net> - 2016-09-02 16:38 -0400
                Re: This will work or not? me <crisdunbar@gmail.com> - 2016-09-02 13:51 -0700
                Re: This will work or not? me <crisdunbar@gmail.com> - 2016-09-02 14:16 -0700
                Re: This will work or not? Jerry Stuckle <jstucklex@attglobal.net> - 2016-09-02 19:58 -0400
                Re: This will work or not? Paavo Helde <myfirstname@osa.pri.ee> - 2016-09-02 23:56 +0300
                Re: This will work or not? David Brown <david.brown@hesbynett.no> - 2016-09-03 17:58 +0200
                Re: This will work or not? Manfred <noname@invalid.add> - 2016-09-02 11:41 +0200
                Re: This will work or not? David Brown <david.brown@hesbynett.no> - 2016-09-02 12:27 +0200
                Re: This will work or not? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-09-02 12:37 +0100
                Re: This will work or not? David Brown <david.brown@hesbynett.no> - 2016-09-02 17:39 +0200
                Re: This will work or not? Melzzzzz <mel@zzzzz.com> - 2016-09-02 17:40 +0200
                Re: This will work or not? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-09-02 16:54 +0100
                Re: This will work or not? David Brown <david.brown@hesbynett.no> - 2016-09-02 20:22 +0200
                Re: This will work or not? Richard Damon <Richard@Damon-Family.org> - 2016-09-02 08:04 -0400
                Re: This will work or not? BartC <bc@freeuk.com> - 2016-09-02 13:51 +0100
                Re: This will work or not? Richard Damon <Richard@Damon-Family.org> - 2016-09-02 21:48 -0400
                Re: This will work or not? Manfred <noname@invalid.add> - 2016-09-02 15:17 +0200
                Re: This will work or not? David Brown <david.brown@hesbynett.no> - 2016-09-02 17:46 +0200
                Re: This will work or not? David Brown <david.brown@hesbynett.no> - 2016-09-01 23:14 +0200
                Re: This will work or not? Jerry Stuckle <jstucklex@attglobal.net> - 2016-09-01 21:02 -0400
                Re: This will work or not? David Brown <david.brown@hesbynett.no> - 2016-09-02 09:35 +0200
                Re: This will work or not? Jerry Stuckle <jstucklex@attglobal.net> - 2016-09-02 08:50 -0400
                Re: This will work or not? David Brown <david.brown@hesbynett.no> - 2016-09-02 17:59 +0200
                Re: This will work or not? Jerry Stuckle <jstucklex@attglobal.net> - 2016-09-02 12:49 -0400
                Re: This will work or not? David Brown <david.brown@hesbynett.no> - 2016-09-02 20:36 +0200
                Re: This will work or not? Jerry Stuckle <jstucklex@attglobal.net> - 2016-09-02 16:32 -0400
                Re: This will work or not? David Brown <david.brown@hesbynett.no> - 2016-09-03 18:08 +0200
                Re: This will work or not? Jerry Stuckle <jstucklex@attglobal.net> - 2016-09-03 18:25 -0400
                Re: This will work or not? Mr Flibble <flibbleREMOVETHISBIT@i42.co.uk> - 2016-09-03 23:51 +0100
                Re: This will work or not? Jerry Stuckle <jstucklex@attglobal.net> - 2016-09-03 21:48 -0400
                Re: This will work or not? Mr Flibble <flibbleREMOVETHISBIT@i42.co.uk> - 2016-09-04 03:48 +0100
                Re: This will work or not? Jerry Stuckle <jstucklex@attglobal.net> - 2016-09-03 23:05 -0400
                Re: This will work or not? Mr Flibble <flibbleREMOVETHISBIT@i42.co.uk> - 2016-09-04 05:02 +0100
                Re: This will work or not? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-09-04 10:57 +0100
                Re: This will work or not? Jerry Stuckle <jstucklex@attglobal.net> - 2016-09-04 09:40 -0400
                Re: This will work or not? Mr Flibble <flibbleREMOVETHISBIT@i42.co.uk> - 2016-09-04 16:39 +0100
                Re: This will work or not? Jerry Stuckle <jstucklex@attglobal.net> - 2016-09-04 12:46 -0400
                Re: This will work or not? Mr Flibble <flibbleREMOVETHISBIT@i42.co.uk> - 2016-09-04 17:51 +0100
                Re: This will work or not? Jerry Stuckle <jstucklex@attglobal.net> - 2016-09-04 13:07 -0400
                Re: This will work or not? Mr Flibble <flibbleREMOVETHISBIT@i42.co.uk> - 2016-09-04 18:37 +0100
                Re: This will work or not? Jerry Stuckle <jstucklex@attglobal.net> - 2016-09-04 17:16 -0400
                Re: This will work or not? Mr Flibble <flibbleREMOVETHISBIT@i42.co.uk> - 2016-09-04 22:23 +0100
                Re: This will work or not? Jerry Stuckle <jstucklex@attglobal.net> - 2016-09-04 18:54 -0400
                Re: This will work or not? "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-09-04 09:58 -0700
                Re: This will work or not? Jerry Stuckle <jstucklex@attglobal.net> - 2016-09-04 13:08 -0400
                Re: This will work or not? "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-09-04 10:21 -0700
                Re: This will work or not? Jerry Stuckle <jstucklex@attglobal.net> - 2016-09-04 17:18 -0400
                Re: This will work or not? Mr Flibble <flibbleREMOVETHISBIT@i42.co.uk> - 2016-09-04 22:24 +0100
                Re: This will work or not? Jerry Stuckle <jstucklex@attglobal.net> - 2016-09-04 18:56 -0400
                Re: This will work or not? Mr Flibble <flibbleREMOVETHISBIT@i42.co.uk> - 2016-09-05 00:27 +0100
                Re: This will work or not? Jerry Stuckle <jstucklex@attglobal.net> - 2016-09-04 22:53 -0400
                Re: This will work or not? Mr Flibble <flibbleREMOVETHISBIT@i42.co.uk> - 2016-09-05 18:18 +0100
                Re: This will work or not? Jerry Stuckle <jstucklex@attglobal.net> - 2016-09-05 15:27 -0400
                Re: This will work or not? Mr Flibble <flibbleREMOVETHISBIT@i42.co.uk> - 2016-09-05 20:32 +0100
                Re: This will work or not? woodbrian77@gmail.com - 2016-09-05 14:07 -0700
                Re: This will work or not? Jerry Stuckle <jstucklex@attglobal.net> - 2016-09-05 18:15 -0400
                Re: This will work or not? Ike Naar <ike@iceland.freeshell.org> - 2016-09-05 20:12 +0000
                Re: This will work or not? Mr Flibble <flibbleREMOVETHISBIT@i42.co.uk> - 2016-09-05 22:05 +0100
                Re: This will work or not? Jerry Stuckle <jstucklex@attglobal.net> - 2016-09-05 18:16 -0400
                Re: This will work or not? David Brown <david.brown@hesbynett.no> - 2016-09-06 08:47 +0200
                Re: This will work or not? Jerry Stuckle <jstucklex@attglobal.net> - 2016-09-06 09:12 -0400
                Re: This will work or not? David Brown <david.brown@hesbynett.no> - 2016-09-06 16:31 +0200
                Re: This will work or not? Jerry Stuckle <jstucklex@attglobal.net> - 2016-09-06 11:20 -0400
                Re: This will work or not? bighe.trole@gmail.com - 2016-09-04 18:55 -0700
                Re: This will work or not? Jerry Stuckle <jstucklex@attglobal.net> - 2016-09-04 22:55 -0400
                Re: This will work or not? "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-09-04 17:17 -0700
                Re: This will work or not? Jerry Stuckle <jstucklex@attglobal.net> - 2016-09-04 22:57 -0400
                Re: This will work or not? "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2016-09-05 11:20 -0700
                Re: This will work or not? Luuk <luuk@invalid.lan> - 2016-09-04 18:54 +0200
                Re: This will work or not? Mr Flibble <flibbleREMOVETHISBIT@i42.co.uk> - 2016-09-04 17:59 +0100
                Re: This will work or not? Jerry Stuckle <jstucklex@attglobal.net> - 2016-09-04 13:08 -0400
                Re: This will work or not? David Brown <david.brown@hesbynett.no> - 2016-09-04 20:25 +0200
                Re: This will work or not? Jerry Stuckle <jstucklex@attglobal.net> - 2016-09-04 17:20 -0400
                Re: This will work or not? Öö Tiib <ootiib@hot.ee> - 2016-09-04 02:36 -0700
                Re: This will work or not? Jerry Stuckle <jstucklex@attglobal.net> - 2016-09-04 09:41 -0400
                Re: This will work or not? Jerry Stuckle <jstucklex@attglobal.net> - 2016-09-03 21:49 -0400
                Re: This will work or not? Mr Flibble <flibbleREMOVETHISBIT@i42.co.uk> - 2016-09-04 03:49 +0100
                Re: This will work or not? Jerry Stuckle <jstucklex@attglobal.net> - 2016-09-03 23:06 -0400
                Re: This will work or not? woodbrian77@gmail.com - 2016-09-03 21:16 -0700
  Re: This will work or not? Vir Campestris <vir.campestris@invalid.invalid> - 2016-08-31 21:08 +0100
  Re: This will work or not? "Alf P. Steinbach" <alf.p.steinbach+usenet@gmail.com> - 2016-09-01 02:28 +0200
    Re: This will work or not? Öö Tiib <ootiib@hot.ee> - 2016-09-01 01:28 -0700
    Re: This will work or not? "Chris M. Thomasson" <invalid@invalid.invalid> - 2016-09-02 12:06 -0700
  Re: This will work or not? Öö Tiib <ootiib@hot.ee> - 2016-09-05 02:21 -0700
    Re: This will work or not? Melzzzzz <mel@zzzzz.com> - 2016-09-05 13:38 +0200
  Re: This will work or not? Juha Nieminen <nospam@thanks.invalid> - 2016-09-05 11:34 +0000
    Re: This will work or not? Melzzzzz <mel@zzzzz.com> - 2016-09-05 13:36 +0200
      Re: This will work or not? Vir Campestris <vir.campestris@invalid.invalid> - 2016-09-05 21:25 +0100

csiph-web