Thomas Pfau <[EMAIL PROTECTED]> wrote
> Vorländer wrote:
>> John E. Malmberg <[EMAIL PROTECTED]> wrote:
>>> That sounds like a known bug in the VAX DECC optimizer, PYTHON on VAX 
>>> has a similar problem.  If we can find the offending routine, it may be 
>>> possible to put a VAX specific DECC pragma around it to disable 
>>> optimization for that routine to fix it.

IIRC, it were some of the nested macros in that module that blew the optimizer.

>> For the time being, a workaround would be to break out of the build,
>> compile SHA.C by hand with /NOOPTIMIZE, and restart the build.
>> I remember doing exactly that at some time to get perl to build.
>
> I compiled it manually with /NOOPTIMIZE and it completed 
> fairly quickly.
> 
> I don't see any #pragma directives that control optimization in the
> compiler help.  How do you turn optimization on and off?

$ cc/version
Compaq C V6.5-001 on OpenVMS Alpha V7.3-2  
$ help cc lang preproc #pragma
...
#pragma optimize[_m|_nm]

    Sets the optimization characteristics of function definitions
    that follow the directive.  It allows optimization-control
    options that are normally set on the command line for the
    entire compilation to be specified in the source file for
    individual functions.

    Syntax:

         #pragma optimize <settings>
         #pragma optimize save
         #pragma optimize restore
         #pragma optimize command_line

    Where <settings> is any combination of the following:

     o  <level settings>

        Set the optimization level.  Specify as:

         level=n

    Where n is an integer from 0 to 5.

 o  <unroll settings>

    Control loop unrolling.  Specify as:

         unroll=n

    Where n is a nonnegative integer.

 o  <ansi-alias settings>

    Control ansi-alias assumptions.  Specify one of the following:

         ansi_alias=on
         ansi_alias=off


 o  <intrinsic settings>

    Control recognition of intrinsics.  Specify one of the
    following:

         intrinsics=on
         intrinsics=off


    Use the save, restore, and command_line keywords as follows:

     o  save -- Saves the current pointer size

     o  restore -- Restores the current pointer size to its last
        saved state

     o  command_line -- Sets the optimization settings to what was
        specified on the command line


    Example:

         #pragma optimize level=5 unroll=6

    Usage Notes:

     o  If the level=0 clause is present, it must be the only
        clause present.

     o  The #pragma optimize directive must appear at file scope,
        outside any function body.

     o  The #pragma environment save and restore operations include
        the optimization state.

     o  The #pragma environment command_line directive resets the
        optimization state to that specified on the command line.

     o  If #pragma optimize does not specify a setting for one of
        the optimization states, that state remains unchanged.

     o  When a function definition is encountered, it is compiled
        using the optimization settings that are current at that
        point in the source.

     o  When a function is compiled under level=0, the compiler
        will not inline that function.  In general, when functions
        are inlined, the inlined code is optimized using the
        optimization controls in effect at the call site instead of
        using the optimization controls specified for the function
        being inlined.

     o  When the OpenVMS command line specifies /NOOPT (or
        /OPTIMIZE=LEVEL=0), the #pragma optimize directive has no
        effect (except that its arguments are still validated).
...

cu,
  Martin
-- 
 Your mouse has moved.      | Martin Vorlaender  |  OpenVMS rules!
 Windows must be restarted  | work: [EMAIL PROTECTED]
 for the change to take     |   http://www.pdv-systeme.de/users/martinv/
 effect. Reboot now? [OK]   | home: [EMAIL PROTECTED]

Reply via email to