JTC1/SC22/WG14
N784
SC22/WG14 N784
Additional flexibility for inlining implementations
Clive D.W. Feather
clive@demon.net
1997-10-21
Abstract
========
The current draft allows external linkage functions to be inlined only as
part of a direct call. This proposal relaxes the restriction to allow
indirect inlining.
Discussion
==========
The current draft allows external linkage functions to be inlined only as
part of a direct call. If this restriction were relaxed, then an intelligent
implementation could do some kinds of indirect inlining, such as inlining
a call to the comparison function within qsort().
Proposal
========
[References are to draft 11 pre 3.]
In 6.5.4 "Function-specifiers" paragraph 8, change:
..., which a translator may use to implement any call to the
function in the same translation unit. It is unspecified whether
a call to the function uses the inline definition or the external
definition.
to:
| ..., which a translator may use to implement any reference to the
function in the same translation unit. It is unspecified whether
| a call to the function [*] uses the inline definition or the external
definition.
[*] In particular, if the address of an inline function is taken and
then passed to another translation unit, a call using the address
might call the version in the inline definition.