From: rixed@happyleptic.org
To: caml-list@inria.fr
Subject: Re: [Caml-list] Interfacing with C: bad practice
Date: Tue, 16 Aug 2011 19:08:12 +0200 [thread overview]
Message-ID: <20110816170812.GA15913@yeeloong.happyleptic.org> (raw)
In-Reply-To: <20110816161042.GA31932@annexia.org>
-[ Tue, Aug 16, 2011 at 05:10:42PM +0100, Richard W.M. Jones ]----
> Nevertheless, the C compiler isn't allowed to just push 'list' blindly
> onto the stack and assume it doesn't change across the call to
> 'caml_copy_string'.
For me,
wrp_ml_cons(caml_copy_string(*s), list);
with caml_copy_string changing list, fall under the rule that a value
shall not be modified twice between two sequence points. I've just read
the relevant parts of the spec and if indeed there is a sequence point
between parameters evaluation and the call itself, there are not between
the evaluation of the parameters themself (which order of evaluation is,
of course, undefined)! Please see for yourself:
[#10] The order of evaluation of the function designator,
the actual arguments, and subexpressions within the actual
arguments is unspecified, but there is a sequence point
before the actual call.
So it seams to me that the compiler if entitled to evaluate list first,
and then evaluate caml_copy_string(*s), provided it "fully" evaluates
them before the actual jump to wrp_ml_cons. This is unrelated to wether
the address of list is available to caml_copy_string or anything; the
programmer is supposed to know that the order of evaluation is undefined
and write his code accordingly.
next prev parent reply other threads:[~2011-08-16 17:09 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-08-16 7:37 Dmitry Bely
2011-08-16 8:04 ` Török Edwin
2011-08-16 8:25 ` Dmitry Bely
2011-08-16 8:43 ` Török Edwin
2011-08-16 9:46 ` rixed
2011-08-16 9:53 ` Dmitry Bely
2011-08-16 10:17 ` Török Edwin
2011-08-16 11:04 ` rixed
[not found] ` <20110816.105738.246515733851238101.Christophe.Troestler@umons.ac.be>
2011-08-16 9:21 ` Dmitry Bely
2011-08-16 10:39 ` Mauricio Fernandez
2011-08-16 14:27 ` John Carr
2011-08-16 12:28 ` [Caml-list] " Dmitry Bely
2011-08-16 15:25 ` [Caml-list] " Richard W.M. Jones
2011-08-16 15:51 ` rixed
2011-08-16 16:00 ` Will M. Farr
2011-08-16 16:10 ` Richard W.M. Jones
2011-08-16 16:17 ` Richard W.M. Jones
2011-08-16 16:18 ` Dmitry Bely
2011-08-16 16:22 ` Richard W.M. Jones
2011-08-16 16:27 ` Richard W.M. Jones
2011-08-16 16:30 ` malc
2011-08-16 16:34 ` Török Edwin
2011-08-16 16:47 ` Richard W.M. Jones
2011-08-16 16:55 ` [Caml-list] " Jeffrey Scofield
2011-08-16 17:08 ` Will M. Farr
2011-08-16 19:46 ` Gerd Stolpmann
2011-08-16 20:18 ` Jeffrey Scofield
2011-08-16 17:08 ` rixed [this message]
2011-08-16 16:06 ` [Caml-list] " John Carr
2011-08-16 16:14 ` Wojciech Meyer
2011-08-16 16:13 ` Dmitry Bely
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20110816170812.GA15913@yeeloong.happyleptic.org \
--to=rixed@happyleptic.org \
--cc=caml-list@inria.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox