[ET Trac] [Einstein Toolkit] #974: Compilation problem in LoopControl with xlc compiler

Einstein Toolkit trac-noreply at einsteintoolkit.org
Wed Jul 11 10:16:58 CDT 2012


#974: Compilation problem in LoopControl with xlc compiler
-----------------------------------------+----------------------------------
 Reporter:  wolfgang.kastaun@…           |       Owner:  eschnett           
     Type:  defect                       |      Status:  new                
 Priority:  major                        |   Milestone:                     
Component:  Carpet                       |     Version:  development version
 Keywords:                               |  
-----------------------------------------+----------------------------------
 I was trying to compile ET on MareNostrum (BSC) using the xlc/xlC/xlf
 compiler suite version 10.01 and failed. The first relevant error reads:

 "/gpfs/home/uv08/uv08986/source/Cactus/configs/z4pisky_std/build/LoopControl/loopcontrol.c",
 line 1371.1: 1506-343 (S) Redeclaration of lc_statmap_init differs from
 previous declaration on line 631 of
 "/gpfs/home/uv08/uv08986/source/Cactus/configs/z4pisky_std/build/LoopControl/loopcontrol.c".
 "/gpfs/home/uv08/uv08986/source/Cactus/configs/z4pisky_std/build/LoopControl/loopcontrol.c",
 line 1371.1: 1506-376 (I) Redeclaration of lc_statmap_init has a different
 number of fixed parameters than the previous declaration.
 "/gpfs/home/uv08/uv08986/source/Cactus/configs/z4pisky_std/build/LoopControl/loopcontrol.c",
 line 1371.1: 1506-377 (I) The type "char*" of parameter 3 differs from the
 previous type "const char* restrict const".

 The fist declaration reads:

     630 void
     631 lc_statmap_init (int * restrict const initialised,
     632                  lc_statmap_t * restrict const lm,
     633                  char const * restrict const name)
     634 {

 while the second is

    1374 CCTK_FCALL
    1375 void
    1376 lc_statmap_init (int * restrict const initialised,
    1377                               lc_statmap_t * restrict const lm,
    1378                               ONE_FORTSTRING_ARG)
    1379 {

 From the compiler message, I guess ONE_FORTSTRING_ARG expanded to
 something of type char*

 It seems the idea here is to provide a version of a C function callable
 from Fortran. However, it ends up having the same name and argument types
 (apart from const-ness), which is forbidden. From the Cactus manual I
 would guess one needs to wrap the second declaration inside a CCTK_FNAME
 macro, like

 void CCTK_FCALL CCTK_FNAME(lc_statmap_init)(int * restrict const
 initialised, lc_statmap_t * restrict const lm, ONE_FORTSTRING_ARG) {

-- 
Ticket URL: <https://trac.einsteintoolkit.org/ticket/974>
Einstein Toolkit <http://einsteintoolkit.org>
The Einstein Toolkit


More information about the Trac mailing list