[m-rev.] proposed addition to coding standards

Peter Moulder Peter.Moulder at infotech.monash.edu.au
Sat Nov 15 17:32:07 AEDT 2003

On Thu, Nov 13, 2003 at 12:46:04AM +1100, Fergus Henderson wrote:
> I have noticed that while most files in the Mercury system are written
> in top-down order, others are written in bottom-up order.
> Top-down ordering is usually a lot easier to read and understand than
> bottom-up ordering, so I propose that we specify this in our coding
> guidelines.

Note that following this proposal for C code means that gcc (3.3.2, -O2) 
will do no inlining of functions where the caller and callee are defined
in the same source file; i.e. gcc-3.3 -O2 won't inline functions whose
definition appears after the call in the translation unit.

E.g. no inlining is done for the following file:

  static inline int bar(void);

  int foo(void) { return bar() + bar(); }

  static inline int bar(void) { return 42; }

despite the programmer telling the compiler in advance that bar is
static and intended to be inlined.

(bar is inlined in the above case with -O3.  I haven't experimented with
other options.  The claim "won't [ever] inline" is based on looking at -S
output rather than looking at gcc source code.)

This suggests that it may be beneficial to add something like the following
for c_coding_standard.html:

  An exception may be made if <tt>bar()</tt> is a short function that should be
  inlined.  gcc -O2 appears never to do inlining where the call precedes
  the definition of the callee.

[Incidentally, I believe `<p>' ought to precede a paragraph even if the
paragraph comes after `</h2>' or `</ul>'.  One advantage is making the
paragraph easier to move.]

mercury-reviews mailing list
post:  mercury-reviews at cs.mu.oz.au
administrative address: owner-mercury-reviews at cs.mu.oz.au
unsubscribe: Address: mercury-reviews-request at cs.mu.oz.au Message: unsubscribe
subscribe:   Address: mercury-reviews-request at cs.mu.oz.au Message: subscribe

More information about the reviews mailing list