Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | cri@tiac.net (Richard Harter) |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: what is the right value about a = a++; |
| Date | 2012-02-10 02:27 +0000 |
| Message-ID | <4f347b72.423614568@text.giganews.com> (permalink) |
| References | (5 earlier) <qdadndbp0NhHGKzSnZ2dnUVZ_uCdnZ2d@bestweb.net> <4f319955.234650417@text.giganews.com> <jgs9t7$5se$1@dont-email.me> <4f327fb1.293624067@text.giganews.com> <jgului$1t5$1@dont-email.me> |
On Wed, 08 Feb 2012 14:29:05 -0600, Stephen Sprunk <stephen@sprunk.org> wrote: >On 08-Feb-12 08:47, Richard Harter wrote: >> On Tue, 07 Feb 2012 16:51:17 -0600, Stephen Sprunk >> <stephen@sprunk.org> wrote: >> >>> On 07-Feb-12 15:50, Richard Harter wrote: >>>> On Tue, 07 Feb 2012 15:12:53 -0500, Kenneth Brody >>>> <kenbrody@spamcop.net> wrote: >>>>> On 2/7/2012 3:15 AM, Kaz Kylheku wrote: >>>>>> I don't want diagnostics; I want strict left to right evaluation order >>>>>> of operands and subexpressions that complete their side effects before >>>>>> yielding a value. >>>>> >>>>> So, what you are really saying, is you want to eliminate most of C's >>>>> optimization abilities, by restricting the order in which the expression >>>>> *must* be evaluated, and side effects *must* be completed? >>>> >>>> Well, no, he isn't saying any such thing. You just made it up. The >>>> fact that evaluation order in C is left to the compilers has very >>>> little to do with optimization; it is a historical artifact that came >>>> from endorsing existing practice when the ANSI standard was put >>>> together. Existing practice then was that compiler writers could do >>>> evaluations in whatever they pleased and they did. >>> >>> No, they did evaluations in the order that made the most sense (i.e. had >>> the best performance) for their particular implementation--and >>> implementations vary. >> >> You are not disagreeing with me. > >I disagree that they did "whatever they pleased"; they did what was best >for their particular implementation, for various definitions of "best". Then if they did whatever they thought was best then that was what they pleased. I'm not sure what you think "whatever they pleased" means. > >>> For instance, varargs is more straightforward to implement with >>> right-to-left evaluation of arguments, at least with a stack-based >>> calling convention. Order of evaluation may not matter for >>> register-based calling conventions, but if an implementation uses both, >>> it makes sense to use the same order. >> >> Well, yes, I know that. However what you are talking about is a minor >> micro-optimization at most. > >It doesn't seem so minor, particularly for platforms where _every_ call >uses a stack-based calling convention. Whoa. The claim was about the cost of implementing varargs, something only used in a rather small number of cases. For that matter, at the time varargs was not standardized. Optimizing processing varargs was and is a micro-optimization, then and now. >Remember, we're talking about >long ago when compilers were rather dumb and most popular architectures >were register-starved. Granted. And it is also true that the generated code in the bodies of functions also suffered both because the architectures were limited and, quite bluntly, the quality of most implementations were limited. Furthermore evaluating function arguments right to left rather than left to right is an almost imperceptible micro-optimization when it is an optimization at all. >That is the environment that ANSI was faced >with, and it would have been unreasonable to force the majority of >implementations to suffer a performance penalty for the questionable >benefit of left-to-right evaluation. IMNSHO that performance penalty is much more fantasy than reality. On the other hand the cost of reworking all of those compilers was a very real cost. Quite reasonably, nobody wanted to pay that price. On the other hand there is a real benefit when all behaviours are well defined, when all code is either legal or illegal, and what the code is supposed to do can be determined by inspection of the code. The qualility of C as a language would IMO be enhanced if most of these "undefined behaviours" were compilation errors. > >> Historically the variations weren't a matter of performance - for the >> most part the performance of the early compilers was less than >> stellar. > >Of course; that was the state of the industry at the time. All the more >reason not to make things worse. > >> The various choices in calling sequence conventions and in >> parsing order were a mixture of convenience and ad hoc decisions. The >> order variations were an unalterable part of the language by the time >> it came to standardization. > >I think we can agree on this much: by the time ANSI looked at the >matter, it was too late to "fix" many of the behaviors that ended up >being called undefined, unspecified or implementation-defined because >doing so would have broken a lot of code that implicitly depended on a >particular implementation's pre-standard behavior. > >> In any event the idea that "most of C's optimization abilities" depend >> upon not restricting evaluation order and side effect order is a wild >> exaggeration. > >Optimization doesn't depend entirely on that particular gray area, but >gray areas in general provide implementations leeway to make more >aggressive optimizations because they lessen the impact of the "as if" >rule. Allowing the meaning of "a=a++;" to change isn't helpful in >itself, but it may help the compiler optimize _something else_. > >Also, most of those gray areas aren't terribly useful in the first place >and avoiding them generally results in clearer code anyway. If _I_ >can't figure out what "a=a++;" is supposed to mean, without possibly >resorting to the Standard, it's not important to me that the compiler >knows either because I won't write it in the first place! My primary >audience is human, not machine. > >S > >-- >Stephen Sprunk "God does not play dice." --Albert Einstein >CCIE #3723 "God is an inveterate gambler, and He throws the >K5SSS dice at every possible opportunity." --Stephen Hawking
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
what is the right value about a = a++; lujnan <lujnan@gmail.com> - 2012-02-06 00:10 -0800
Re: what is the right value about a = a++; Ruben Mikkonen <camu.umac@gmail.com> - 2012-02-06 00:28 -0800
Re: what is the right value about a = a++; Keith Thompson <kst-u@mib.org> - 2012-02-06 21:27 -0800
Re: what is the right value about a = a++; Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2012-02-06 22:39 -0700
Re: what is the right value about a = a++; bert <bert.hutchings@btinternet.com> - 2012-02-06 01:45 -0800
Re: what is the right value about a = a++; lujnan <lujnan@gmail.com> - 2012-02-06 02:33 -0800
Re: what is the right value about a = a++; "christian.bau" <christian.bau@cbau.wanadoo.co.uk> - 2012-02-06 14:57 -0800
Re: what is the right value about a = a++; Barry Schwarz <schwarzb@dqel.com> - 2012-02-06 22:50 -0800
Re: what is the right value about a = a++; Kaz Kylheku <kaz@kylheku.com> - 2012-02-07 08:15 +0000
Re: what is the right value about a = a++; lujnan <lujnan@gmail.com> - 2012-02-07 00:31 -0800
Re: what is the right value about a = a++; Keith Thompson <kst-u@mib.org> - 2012-02-07 09:07 -0800
Re: what is the right value about a = a++; Kaz Kylheku <kaz@kylheku.com> - 2012-02-07 17:31 +0000
Re: what is the right value about a = a++; Joshua Maurice <joshuamaurice@gmail.com> - 2012-02-09 17:50 -0800
Re: what is the right value about a = a++; Phil Carmody <thefatphil_demunged@yahoo.co.uk> - 2012-02-21 23:42 +0200
Re: what is the right value about a = a++; Kaz Kylheku <kaz@kylheku.com> - 2012-02-22 04:28 +0000
Re: what is the right value about a = a++; Phil Carmody <thefatphil_demunged@yahoo.co.uk> - 2012-02-25 00:01 +0200
Re: what is the right value about a = a++; Shao Miller <sha0.miller@gmail.com> - 2012-02-25 02:25 -0500
Re: what is the right value about a = a++; Ike Naar <ike@iceland.freeshell.org> - 2012-02-25 09:00 +0000
Re: what is the right value about a = a++; Philip Lantz <prl@canterey.us> - 2012-02-25 11:13 -0800
Re: what is the right value about a = a++; cri@tiac.net (Richard Harter) - 2012-02-25 19:34 +0000
Re: what is the right value about a = a++; Kenneth Brody <kenbrody@spamcop.net> - 2012-02-25 16:51 -0500
Re: what is the right value about a = a++; lawrence.jones@siemens.com - 2012-02-27 16:12 -0500
Re: what is the right value about a = a++; Ike Naar <ike@iceland.freeshell.org> - 2012-02-27 22:42 +0000
Re: what is the right value about a = a++; Shao Miller <sha0.miller@gmail.com> - 2012-02-27 18:54 -0500
Re: what is the right value about a = a++; Barry Schwarz <schwarzb@dqel.com> - 2012-02-07 09:26 -0800
Re: what is the right value about a = a++; Kenneth Brody <kenbrody@spamcop.net> - 2012-02-07 15:12 -0500
Re: what is the right value about a = a++; cri@tiac.net (Richard Harter) - 2012-02-07 21:50 +0000
Re: what is the right value about a = a++; Stephen Sprunk <stephen@sprunk.org> - 2012-02-07 16:51 -0600
Re: what is the right value about a = a++; Robert Wessel <robertwessel2@yahoo.com> - 2012-02-07 22:49 -0600
Re: what is the right value about a = a++; Stephen Sprunk <stephen@sprunk.org> - 2012-02-08 14:08 -0600
Re: what is the right value about a = a++; Kaz Kylheku <kaz@kylheku.com> - 2012-02-09 00:18 +0000
Re: what is the right value about a = a++; Kenneth Brody <kenbrody@spamcop.net> - 2012-02-09 13:06 -0500
Re: what is the right value about a = a++; Stephen Sprunk <stephen@sprunk.org> - 2012-02-09 13:58 -0600
Re: what is the right value about a = a++; Kaz Kylheku <kaz@kylheku.com> - 2012-02-09 23:52 +0000
Re: what is the right value about a = a++; jgk@panix.com (Joe keane) - 2012-02-10 21:45 +0000
Re: what is the right value about a = a++; Phil Carmody <thefatphil_demunged@yahoo.co.uk> - 2012-02-22 00:09 +0200
Re: what is the right value about a = a++; Robert Wessel <robertwessel2@yahoo.com> - 2012-02-08 22:35 -0600
Re: what is the right value about a = a++; Kenneth Brody <kenbrody@spamcop.net> - 2012-02-08 15:42 -0500
Re: what is the right value about a = a++; cri@tiac.net (Richard Harter) - 2012-02-08 14:47 +0000
Re: what is the right value about a = a++; Stephen Sprunk <stephen@sprunk.org> - 2012-02-08 14:29 -0600
Re: what is the right value about a = a++; cri@tiac.net (Richard Harter) - 2012-02-10 02:27 +0000
Re: what is the right value about a = a++; James Kuyper <jameskuyper@verizon.net> - 2012-02-09 23:10 -0500
Re: what is the right value about a = a++; cri@tiac.net (Richard Harter) - 2012-02-10 09:11 +0000
Re: what is the right value about a = a++; James Kuyper <jameskuyper@verizon.net> - 2012-02-10 07:26 -0500
Re: what is the right value about a = a++; Ben Bacarisse <ben.usenet@bsb.me.uk> - 2012-02-10 13:12 +0000
Re: what is the right value about a = a++; James Kuyper <jameskuyper@verizon.net> - 2012-02-10 11:07 -0500
Re: what is the right value about a = a++; cri@tiac.net (Richard Harter) - 2012-02-10 16:27 +0000
Re: what is the right value about a = a++; James Kuyper <jameskuyper@verizon.net> - 2012-02-10 12:17 -0500
Re: what is the right value about a = a++; Stephen Sprunk <stephen@sprunk.org> - 2012-02-10 12:09 -0600
Re: what is the right value about a = a++; Kenneth Brody <kenbrody@spamcop.net> - 2012-02-10 18:17 -0500
Re: what is the right value about a = a++; Kaz Kylheku <kaz@kylheku.com> - 2012-02-11 10:15 +0000
Re: what is the right value about a = a++; Kenneth Brody <kenbrody@spamcop.net> - 2012-02-13 16:04 -0500
Re: what is the right value about a = a++; Stephen Sprunk <stephen@sprunk.org> - 2012-02-10 12:30 -0600
Re: what is the right value about a = a++; Shao Miller <sha0.miller@gmail.com> - 2012-02-09 21:30 -0500
Re: what is the right value about a = a++; cri@tiac.net (Richard Harter) - 2012-02-10 02:48 +0000
Re: what is the right value about a = a++; Kaz Kylheku <kaz@kylheku.com> - 2012-02-10 09:49 +0000
Re: what is the right value about a = a++; Kaz Kylheku <kaz@kylheku.com> - 2012-02-09 00:15 +0000
Re: what is the right value about a = a++; Kenneth Brody <kenbrody@spamcop.net> - 2012-02-09 12:49 -0500
Re: what is the right value about a = a++; Kaz Kylheku <kaz@kylheku.com> - 2012-02-09 23:51 +0000
Re: what is the right value about a = a++; Kenneth Brody <kenbrody@spamcop.net> - 2012-02-08 15:39 -0500
Re: what is the right value about a = a++; Kaz Kylheku <kaz@kylheku.com> - 2012-02-09 01:05 +0000
Re: what is the right value about a = a++; Shao Miller <sha0.miller@gmail.com> - 2012-02-09 23:24 -0500
Re: what is the right value about a = a++; Jens Gustedt <jens.gustedt@loria.fr> - 2012-02-10 16:58 +0100
Re: what is the right value about a = a++; Kaz Kylheku <kaz@kylheku.com> - 2012-02-10 23:32 +0000
Re: what is the right value about a = a++; John Bode <jfbode1029@gmail.com> - 2012-02-08 17:41 -0800
Re: what is the right value about a = a++; James Kuyper <jameskuyper@verizon.net> - 2012-02-08 22:25 -0500
Re: what is the right value about a = a++; Kenneth Brody <kenbrody@spamcop.net> - 2012-02-09 13:15 -0500
Re: what is the right value about a = a++; Kaz Kylheku <kaz@kylheku.com> - 2012-02-09 23:57 +0000
Re: what is the right value about a = a++; Kenneth Brody <kenbrody@spamcop.net> - 2012-02-10 11:15 -0500
Re: what is the right value about a = a++; Stephen Sprunk <stephen@sprunk.org> - 2012-02-10 11:58 -0600
Re: what is the right value about a = a++; Kenneth Brody <kenbrody@spamcop.net> - 2012-02-10 18:14 -0500
Re: what is the right value about a = a++; Ben Bacarisse <ben.usenet@bsb.me.uk> - 2012-02-10 22:43 +0000
Re: what is the right value about a = a++; Stephen Sprunk <stephen@sprunk.org> - 2012-02-10 11:53 -0600
Re: what is the right value about a = a++; Joshua Maurice <joshuamaurice@gmail.com> - 2012-02-10 15:19 -0800
Re: what is the right value about a = a++; cri@tiac.net (Richard Harter) - 2012-02-10 02:32 +0000
Re: what is the right value about a = a++; James Kuyper <jameskuyper@verizon.net> - 2012-02-09 23:13 -0500
Re: what is the right value about a = a++; cri@tiac.net (Richard Harter) - 2012-02-10 09:34 +0000
Re: what is the right value about a = a++; James Kuyper <jameskuyper@verizon.net> - 2012-02-10 07:32 -0500
Re: what is the right value about a = a++; Kaz Kylheku <kaz@kylheku.com> - 2012-02-10 22:24 +0000
Re: what is the right value about a = a++; Kenneth Brody <kenbrody@spamcop.net> - 2012-02-10 11:35 -0500
Re: what is the right value about a = a++; James Kuyper <jameskuyper@verizon.net> - 2012-02-10 12:23 -0500
Re: what is the right value about a = a++; falk@rahul.net (Edward A. Falk) - 2012-02-08 20:40 +0000
Re: what is the right value about a = a++; Keith Thompson <kst-u@mib.org> - 2012-02-08 15:00 -0800
Re: what is the right value about a = a++; Kaz Kylheku <kaz@kylheku.com> - 2012-02-09 01:10 +0000
Re: what is the right value about a = a++; 88888 Dihedral <dihedral88888@googlemail.com> - 2012-02-09 20:43 -0800
Re: what is the right value about a = a++; Robert Wessel <robertwessel2@yahoo.com> - 2012-02-09 23:36 -0600
Re: what is the right value about a = a++; cri@tiac.net (Richard Harter) - 2012-02-10 02:40 +0000
Re: what is the right value about a = a++; James Kuyper <jameskuyper@verizon.net> - 2012-02-09 23:17 -0500
Re: what is the right value about a = a++; Kaz Kylheku <kaz@kylheku.com> - 2012-02-08 23:49 +0000
Re: what is the right value about a = a++; Kaz Kylheku <kaz@kylheku.com> - 2012-02-08 23:42 +0000
Re: what is the right value about a = a++; blp@cs.stanford.edu (Ben Pfaff) - 2012-02-07 12:09 -0800
Re: what is the right value about a = a++; James Kuyper <jameskuyper@verizon.net> - 2012-02-07 07:42 -0500
Re: what is the right value about a = a++; Kaz Kylheku <kaz@kylheku.com> - 2012-02-07 17:21 +0000
Re: what is the right value about a = a++; Stephen Sprunk <stephen@sprunk.org> - 2012-02-07 15:24 -0600
Re: what is the right value about a = a++; Kaz Kylheku <kaz@kylheku.com> - 2012-02-09 01:27 +0000
Re: what is the right value about a = a++; Stephen Sprunk <stephen@sprunk.org> - 2012-02-10 21:57 -0600
Re: what is the right value about a = a++; "Joel C. Salomon" <joelcsalomon@gmail.com> - 2012-02-08 01:00 -0500
Re: what is the right value about a = a++; falk@rahul.net (Edward A. Falk) - 2012-02-08 20:33 +0000
Re: what is the right value about a = a++; Kaz Kylheku <kaz@kylheku.com> - 2012-02-09 02:05 +0000
Re: what is the right value about a = a++; Markus Wichmann <nullplan@gmx.net> - 2012-02-09 09:28 +0100
Re: what is the right value about a = a++; Kaz Kylheku <kaz@kylheku.com> - 2012-02-09 10:21 +0000
Re: what is the right value about a = a++; Kaz Kylheku <kaz@kylheku.com> - 2012-02-09 11:38 +0000
Re: what is the right value about a = a++; Shao Miller <sha0.miller@gmail.com> - 2012-02-10 00:03 -0500
Re: what is the right value about a = a++; Philip Lantz <prl@canterey.us> - 2012-02-10 01:15 -0800
Re: what is the right value about a = a++; Kenneth Brody <kenbrody@spamcop.net> - 2012-02-09 13:22 -0500
Re: what is the right value about a = a++; Slash QB <slashqb@gmail.com> - 2012-02-06 02:35 -0800
Re: what is the right value about a = a++; Nick Keighley <nick_keighley_nospam@hotmail.com> - 2012-02-07 03:07 -0800
Re: what is the right value about a = a++; Stephen Sprunk <stephen@sprunk.org> - 2012-02-07 15:19 -0600
Re: what is the right value about a = a++; James Kuyper <jameskuyper@verizon.net> - 2012-02-07 17:00 -0500
Re: what is the right value about a = a++; Stephen Sprunk <stephen@sprunk.org> - 2012-02-10 12:05 -0600
Re: what is the right value about a = a++; James Kuyper <jameskuyper@verizon.net> - 2012-02-10 13:46 -0500
Re: what is the right value about a = a++; Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2012-02-06 22:37 -0700
Re: what is the right value about a = a++; Kaz Kylheku <kaz@kylheku.com> - 2012-02-07 07:22 +0000
Re: what is the right value about a = a++; Shao Miller <sha0.miller@gmail.com> - 2012-02-07 01:18 -0500
csiph-web