Dear Listers,
I am looking to optimizing as much as possible a number of C DLLs. So, I
started out by #including the <string.h> in order to make sure the compiler
will generate the builtin version of the string manipulation functions (strcpy,
strncpy, strcmp). Then I set the OPT(3), ARCH(9), TUNE(9), HOT,
INLINE(AUTO,REPORT,250,1500) and LIBANSI parameters. So far so good. Macro
expansion shows indeed the __strncpy builtin substitute being used.
Now, as I have several compilation units, I want to optimize even further by
using IPA. Indeed, there are function calls across the different compilation
units that could benefit from inlining. So I add
IPA(NOOBJECT,ATTR,LEVEL(2),NOUPCASE,MAP,CONTROL) to my options and bring in the
extra IPA LINK step. The inlining report does indeed show that several function
calls indeed get inlined, just as I was expecting.
However, something worrying shows up in the output of the prelinker:
WARNING EDC4015: Unresolved references are detected:
CEESTART @@TRGLOC @@GETFN @@TRGLOR strncpy
The CEESTART, @@TRGLOC, @@GETFN and @@TRGLOR I was expecting -- I am seeing
those all the time -- and they get resolved by the automatic library call
options of the link step that follows. What I am not expecting at all is to see
strncpy appear. This would mean there is a call to this function that is not
being replaced by its builtin version. Now I checked and double-checked: the
#include <string.h> is there in all the compilation units involved. What am I
not seeing?
Thanks and very best regards,
Jantje.
P.S. This is z/OS 2.1.
The options of the compile step:
5650ZOS V2.1 z/OS XL C 'JMO2659.FRM800.C(THADDR)'
07/06/2015 16:36:11 Page 1
* * * * * P R O L O G * * * * *
Compile Time Library . . . . . . : 42010000
Command options:
Program name. . . . . . . . . : 'JMO2659.FRM800.C(THADDR)'
Compiler options. . . . . . . : *NOGONUMBER *NOALIAS *RENT
*TERMINAL *NOUPCONV *SOURCE *NOLIST
: *NOXREF *NOAGG *NOPPONLY
*NOEXPMAC *NOSHOWINC *NOOFFSET *MEMORY *SSCOMM
: *NOSHOWMACROS *SKIPSRC(SHOW)
*NOREPORT *NOMAKEDEP *PREFETCH *NOTHREADED
: *LONGNAME *START *EXECOPS
*ARGPARSE *EXPORTALL *DLL(NOCALLBACKANY)
: *LIBANSI *NOWSIZEOF *REDIR
*ANSIALIAS *NODIGRAPH *NOROCONST *NOROSTRING
: *TUNE(9) *ARCH(9) *SPILL(128)
*MAXMEM(2097152) *NOCOMPACT
: *TARGET(LE,CURRENT) *FLAG(I)
*NOTEST(NOSYM,NOBLOCK,NOLINE,NOPATH,NOHOOK) *OPTIMIZE(3)
: *INLINE(AUTO,REPORT,250,1500)
*NESTINC(255) *BITFIELD(UNSIGNED)
: *NOINFO
: *NODFP
: *FLOAT(HEX,FOLD,MAF,AFP(NOVOLATILE))
: *NOSTRICT
: *NOCOMPRESS *NOSTRICT_INDUCTION
*AGGRCOPY(NOOVERLAP) *CHARS(UNSIGNED)
: *NOIGNERRNO
: *NOINITAUTO
: *NOCSECT
: *NOEVENTS
: *ASSERT(RESTRICT)
: *NORESTRICT
: *OBJECT
: *NOGENASM
: *OPTFILE(DD:OPTS)
: *NOSERVICE
: *NOOE
:
*IPA(NOLINK,NOOBJECT,COMPRESS,OPTIMIZE,NOLIST,NOGONUMBER,ATTRIBUTE,NOXREF,NOPDF1,NOPDF2)
: *SEARCH(//'CEE.SCEEH.+')
: *NOLSEARCH
: *NOLOCALE *HALT(16) *PLIST(HOST)
: *NOCONVLIT
: *NOASCII
: *NOGOFF *ILP32 *NOWARN64 *NOHGPR
*HOT *NOMETAL *NOARMODE
:
*NOXPLINK(NOBACKCHAIN,NOSTOREARGS,NOCALLBACK,GUARD,OSCALL(NOSTACK))
: *ENUMSIZE(SMALL)
: *NOHALTONMSG
: *NOSUPPRESS
: *NORTCHECK
: *NODEBUG
: *NOSQL
: *NOCICS
: *UNROLL(AUTO)
: *KEYWORD()
: *NOKEYWORD(typeof)
: *NOSEVERITY
: *NODSAUSER
: *NOINCLUDE
: *NOSMP
: *SYSSTATE(NOASCENV,OSREL(NONE))
: *NOFUNCEVENT
: DEFINE(NS_MVS=1)
: DEFINE(NOT_AGF=1)
Version Macros. . . . . . . . : __COMPILER_VER__=0x42010000
__LIBREL__=0x42010000 __TARGET_LIB__=0x42010000
Language level. . . . . . . . : *EXTENDED:NOTEXTAFTERENDIF
5650ZOS V2.1 z/OS XL C 'JMO2659.FRM800.C(THADDR)'
07/06/2015 16:36:11 Page 2
* * * * * P R O L O G * * * * *
Source margins. . . . . . . . :
Varying length. . . . . . . : 1 - 80
Fixed length. . . . . . . . : 1 - 80
Sequence columns. . . . . . . :
Varying length. . . . . . . : none
Fixed length. . . . . . . . : none
* * * * * E N D O F P R O L O G * * * * *
The options of the IPA LINK step:
5650-ZOS V2.1 z/OS XL C/C++ IPA DD:SYSIN
07/07/2015 09:25:23 Page 1
* * * * * P R O L O G * * * * *
Compile Time Library . . . . . . : 42010000
Command options:
Primary input name. . . . . . : DD:SYSIN
Compiler options. . . . . . . :
*IPA(LINK,MAP,LEVEL(2),DUP,ER,NONCAL,NOUPCASE,NOPDF1,NOPDF2,NOPDFNAME,CONTROL(//DD:IPACNTL))
: *NOGONUMBER *HOT *NOALIAS
*TERMINAL *NOLIST *NOXREF *NOATTR
: *NOOFFSET *MEMORY *NOCSECT
*NODFP *NOSTRICT *LIBANSI *TUNE(9)
: *ARCH(9) *FLAG(I)
*NOTEST(NOSYM,NOBLOCK,NOLINE,NOPATH,NOHOOK) *OPTIMIZE(3)
: *INLINE(AUTO,REPORT,250,1500)
*OPTFILE(DD:OPTS) *NOSERVICE *NOOE
: *NOLOCALE *HALT(16) *NOGOFF
*NOSPLITLIST
* * * * * E N D O F P R O L O G * * * * *
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN