The mms default call to cc is like this:
cc /def=("FEAT_NORMAL","HAVE_CONFIG_H","FEAT_GUI_MOTIF" )
/opt/prefix=all
/include=([.proto],decw$include:) BUFFER.C
Hopefully, it should be possible to get MMS to not optimise when compiling
blowfish.c and sha256.c and to optimise when doing the other compilations.
I am not familiar enough with MMS to know how to do this.
Alternatively, if you compile the two files involved outside of MMS, you will
also need to perform the link step afterwards.
Interestingls help cc/opt onli has those documented options:
CC
/OPTIMIZE
/OPTIMIZE[=option] (D)
/NOOPTIMIZE
Controls whether or not the compiler performs code optimization.
/OPTIMIZE has the following options:
[NO]DISJOINT Directs the compiler to optimize the generated
machine code.
[NO]INLINE Specifies whether the compiler is allowed to perform
the function inline optimization.
So my question is, what should /opt/prefix=all so in this case?
/prefix=all is not related to optimisation - the author has just put the
two qualifiers next to each other. /prefix=all directs the compiler add the
prefix "decc$" in front of the names of all runtime library functions.
I have tested further and it appears that /optimise=disjoint is triggering
the problem.
Yes, I have compiled the entire source with the crypto features commented
out, and yes I can compile blowfish.c with that cmdline:
$ cc /def=("FEAT_NORMAL","HAVE_CONFIG_H","FEAT_GUI_MOTIF" )
/NOOPT
/include=([.proto],decw$include:) BLOWFISH.C
..and it compiles sha256.c too.
Great. You may need to compile them with /prefix=all added to the command line
if problems show up with names of runtime library functions at link time.
However, I suspect that /prefix=all is probably the default anyway.
You should be able to use a command line like:
$ cc /def=("FEAT_NORMAL","HAVE_CONFIG_H","FEAT_GUI_MOTIF" )
/prefix=all
/include=([.proto],decw$include:) /optimise=(inline,nodisjoint) BLOWFISH.C
Is there further documentation about the compiler optimizations somwhere
available?
There could be slightly more detail about optimisation in the compiler manual
but it is highly unlightly that the manual would list additional command line
qualifiers that are not documented in the online help. The online help comes
with the compiler and normally documents all the available qualifiers.
The alpha (and presumably ia64) compilers are quite different to the VAX
compilers internally and may have different options relating to optimisation
so it is important to consult the correct manual.
Regards,
Peter Coghlan.