Path: utzoo!mnetor!tmsoft!torsqnt!lethe!yunexus!ists!helios.physics.utoronto.ca!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!usc!apple!agate!dog.ee.lbl.gov!elf.ee.lbl.gov!torek From: torek@elf.ee.lbl.gov (Chris Torek) Newsgroups: comp.std.c Subject: Re: Function Argument Evaluation Message-ID: <11516@dog.ee.lbl.gov> Date: 27 Mar 91 10:59:34 GMT References: <15565@smoke.brl.mil> <1991Mar25.174542.24419@cs.ucla.edu> <3461@inews.intel.com> <1991Mar26.181821.22912@cs.ucla.edu> Reply-To: torek@elf.ee.lbl.gov (Chris Torek) Organization: Lawrence Berkeley Laboratory, Berkeley Lines: 33 X-Local-Date: Wed, 27 Mar 91 02:59:34 PST [this is a correction of a cancelled article, with the word `not' inserted in a strategic location.] In article <1991Mar26.181821.22912@cs.ucla.edu> jon@maui.cs.ucla.edu (Jonathan Gingerich) writes: >... My question remains 'Does "the value of the left operand after >the assignment" mean "immediately after" or "sometime after, before >the next sequence point"?' Yes. It also means anything else you can come up with that fits, since it is not pinned down any more precisely. The method by which `the value of the left operand after assignment' is computed is entirely up to the compiler. I would not be surprised to see a compiler turn: char c; int *ip; ... f(*ip++ = c, *ip++ = 0); into: extbl r1, p0 // turn byte in r1 into integer // with result going into `parameter // register 0' stl p0, [r2] // store result through pointer ip clrl p1 // put 0 in parameter register 1 stl p1, [r2] // store result through pointer ip incl 8, r2 // add sizeof 2 ints to pointer ip call _f // and call function -- In-Real-Life: Chris Torek, Lawrence Berkeley Lab CSE/EE (+1 415 486 5427) Berkeley, CA Domain: torek@ee.lbl.gov