       Copyright (C) 1995 MetaWare Incorporated.  All Rights Reserved.

                          High C/C++ Version 3.31
                   Globally Optimizing Compiler and Tools
                    for 32-Bit Extended DOS and Windows

                    +----------------------------------+
                    |   New Inline Compiler Controls   |
                    +----------------------------------+

The following new inline compiler controls have been added to the High C/C++
inliner:

-HiC=size,calls -- Fine-tune inlining criteria

   Command-line option

   Specifies that functions with fewer than "size" HLIL nodes should be
   inlined only if they are called fewer than "calls" times.  You can 
   use -HiC more than once to specify functions of different sizes and
   number of calls:

      hc386 -HiC=10,5 -HiC=20,4 -HiC=25,2 myprog.c

   This example tells the compiler to inline functions with fewer than
   ten HLIL nodes if they are called fewer than five times; functions
   with fewer than 20 HLIL nodes if they are called fewer than four times;
   and functions with fewer than 25 HLIL nodes if they are called less 
   than twice.

-Hinlsize=nnn - Specify the maximum size of inlined functions

   Command-line option

   Specifies the maximum size of functions to be inlined.  The greater the 
   value of the variable nnn, the greater the size of functions that can be 
   inlined.

   (This option belongs with the inlining controls in Appendix C of the 
   High C/C++ Programmer's Guide.)

Off_inline(function_name[, function_name]...) -- Turn off the inlining of
   specific functions
   Pragma

   When this pragma is active, it prevents calls to the functions named as
   its arguments from being inlined when they otherwise would be -- even if 
   the function is declared as an inline function.

   Pragma Off_inline is pushed onto a stack for each function specified.

On_inline(function_name[, function_name]...) -- Turn on the inlining of
   specific functions
   Pragma

   When this pragma is active, it causes calls to the functions named as its
   arguments to be inlined even if these functions do not otherwise meet the 
   criteria for inlining (that is, if they are not declared as inline 
   functions, or they do not fit the size or call-count requirements for 
   inlining for C functions).

   NOTE:  If C++ functions are to be inlined at all, they must be declared as
          inline functions.  Pragma On_inline works only with C++ functions
          that have been so declared.  Even if a function appears in the
          On_inline argument list, it cannot be inlined if it contains
          calls to alloca() or setjmp(), or is a varargs function.  

          On_inline does, however, override inliner options that suppress 
          inlining for recursive, exported, and nested functions, and
          functions that have their address taken.

   Pragma On-inline is pushed onto a stack for each function specified.

Pop_inline(function_name[, function_name]...) -- Pop topmost stack entry for
   each specified function
   Pragma

   This pragma pops the topmost stack entry for each function specified, and
   restores the previous On_inline or Off_inline state.



Document number RM-4707-002