I am trying to compile a large multi-language simulation, a portion of which is Fortran. I am trying to optimizea subset of this Fortran code with the IPO but am getting multiply definedcommon blockissues. I am following the rules for common block initialization so I don't understand what's wrong.
file1.f has lines:
x = A(3)*y
fileA.f has lines to initialize the tables.cmn data
! initialize tables.cmn data
DATA A /1,2,3,4/
DATA B /1,2,3,4/
tables.cmn looks like:
ifort -ipo_c file1.f file2.f file3.f file4.f -o temp.o
IPO: performing multi-file optimizations
IPO: generating object file temp.o
ifort: warning: multi-file optimation .o file produced; no link
ifort -c fileA.f -o fileA.o
ifort -c fileB.f -o fileB.o
icpc -c fileAA.cpp -o fileAA.o
icpc *.o -o simulator.exe
temp.o: (hex address) multiple definition of 'tables_'
fileA.o: first defined here
ld: Disabling relaxation: it will not work with multiple definitions
Itworks if I compile fileA.f with the command:
ifort -ipo_c -c fileA.f -o fileA.o
Unfortunately, I have about20 other files that have this same problem, and due to some post-compile object file manipulations, the solution cannot be worked in this manner.
Manual isn't clear on linking some .f with -ipo_c and some without. I am missing something?