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

Roland Haas trac-noreply at einsteintoolkit.org
Fri Aug 6 13:30:32 CDT 2021

#974: Compilation problem in LoopControl with xlc compiler

 Reporter: Wolfgang Kastaun
   Status: new
  Version: development version
     Type: bug
 Priority: minor
Component: Carpet

Changes (by Roland Haas):

assignee: Roland Haas (was Erik Schnetter)
responsible: [] (was [])

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://bitbucket.org/einsteintoolkit/tickets/issues/974/compilation-problem-in-loopcontrol-with
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.einsteintoolkit.org/pipermail/trac/attachments/20210806/cf2cfcf7/attachment.html 

More information about the Trac mailing list