NOAA-EMC / NCEPLIBS

Top level repo containing submodules for NCEPLIBS and associated dependencies for superproject builds
Other
42 stars 18 forks source link

Error with -127_8 integer #192

Closed afernandezody closed 3 years ago

afernandezody commented 3 years ago

Hello, The compilation with GNU 11.1.0 is producing the following error:

$sudo make

-- Build files have been written to: /opt/prae/NCEPLIBS/build
[centos@ip-172-31-20-40 build]$ sudo make
[  0%] Built target prep2deploy
[  0%] Creating directories for 'w3nco'
[  1%] Performing download step (git clone) for 'w3nco'
Cloning into 'nceplibs-w3nco'...
HEAD is now at 068435b Merge pull request #16 from NOAA-EMC/gcc-10-settable-flags
[  2%] Performing update step for 'w3nco'
[  3%] No patch step for 'w3nco'
[  3%] Performing configure step for 'w3nco'
-- The C compiler identification is GNU 11.1.0
-- The Fortran compiler identification is GNU 11.1.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /opt/prae/openmpi/bin/mpicc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting Fortran compiler ABI info
-- Detecting Fortran compiler ABI info - done
-- Check for working Fortran compiler: /opt/prae/openmpi/bin/mpif90 - skipped
-- Checking whether /opt/prae/openmpi/bin/mpif90 supports Fortran 90
-- Checking whether /opt/prae/openmpi/bin/mpif90 supports Fortran 90 - yes
-- Setting build type to 'Release' as none was specified.
-- Configuring done
-- Generating done
CMake Warning:
  Manually-specified variables were not used by the project:

    OPENMP

-- Build files have been written to: /opt/prae/NCEPLIBS/build/w3nco/src/w3nco-build
[  4%] Performing build step for 'w3nco'
Scanning dependencies of target w3nco_4_f
[  1%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/aea.f.o
[  1%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/errexit.f.o
[  1%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/errmsg.f.o
[  2%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/fparsei.f.o
[  2%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/fparser.f.o
[  2%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/gbytec.f.o
[  2%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/gbyte.f.o
[  3%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/gbytesc.f.o
[  3%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/gbytes.f.o
[  3%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/getbit.f.o
[  4%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/getgb1.f.o
[  4%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/getgb1re.f.o
[  4%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/getgb1r.f.o
[  5%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/getgb1s.f.o
[  5%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/getgbe.f.o
[  5%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/getgbeh.f.o
[  5%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/getgbem.f.o
[  6%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/getgbemh.f.o
[  6%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/getgbemn.f.o
[  6%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/getgbemp.f.o
[  7%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/getgbep.f.o
[  7%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/getgbex.f.o
[  7%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/getgbexm.f.o
[  8%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/getgb.f.o
[  8%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/getgbh.f.o
[  8%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/getgbm.f.o
[  8%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/getgbmh.f.o
[  9%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/getgbmp.f.o
[  9%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/getgbp.f.o
[  9%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/getgi.f.o
[ 10%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/getgir.f.o
[ 10%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/gtbits.f.o
[ 10%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/idsdef.f.o
[ 11%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/instrument.f.o
[ 11%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/iw3jdn.f.o
[ 11%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/iw3pds.f.o
[ 11%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/iw3unp29.f.o
[ 12%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/ixgb.f.o
[ 12%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/lengds.f.o
[ 12%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/makwmo.f.o
[ 13%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/mkfldsep.f.o
[ 13%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/pdsens.f.o
[ 13%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/pdseup.f.o
[ 13%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/putgbe.f.o
[ 14%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/putgben.f.o
[ 14%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/putgbex.f.o
[ 14%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/putgb.f.o
[ 15%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/putgbn.f.o
[ 15%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/q9ie32.f.o
[ 15%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/r63w72.f.o
[ 16%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/sbytec.f.o
[ 16%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/sbyte.f.o
[ 16%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/sbytesc.f.o
[ 16%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/sbytes.f.o
[ 17%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/skgb.f.o
[ 17%] Building Fortran object src/CMakeFiles/w3nco_4_f.dir/w3ai00.f.o
during RTL pass: expand
/opt/prae/NCEPLIBS/download/nceplibs-w3nco/src/w3ai00.f:168:72:

  168 |            N = MAX0(-127_8,MIN0(127_8,N))
      |                                                                        ^
internal compiler error: in expand_fix, at optabs.c:5532
0xbacc6f expand_fix(rtx_def*, rtx_def*, int)
        ../../gcc-11.1.0/gcc/optabs.c:5532
0x9b4b3b expand_expr_real_2(separate_ops*, rtx_def*, machine_mode, expand_modifier)
        ../../gcc-11.1.0/gcc/expr.c:9304
0x9ba283 expand_expr_real_1(tree_node*, rtx_def*, machine_mode, expand_modifier, rtx_def**, bool)
        ../../gcc-11.1.0/gcc/expr.c:10210
0x9b3713 expand_expr_real(tree_node*, rtx_def*, machine_mode, expand_modifier, rtx_def**, bool)
        ../../gcc-11.1.0/gcc/expr.c:8519
0x9b3713 expand_expr
        ../../gcc-11.1.0/gcc/expr.h:282
0x9b3713 expand_expr_real_2(separate_ops*, rtx_def*, machine_mode, expand_modifier)
        ../../gcc-11.1.0/gcc/expr.c:8802
0x9ba283 expand_expr_real_1(tree_node*, rtx_def*, machine_mode, expand_modifier, rtx_def**, bool)
        ../../gcc-11.1.0/gcc/expr.c:10210
0x9bba37 expand_expr_real(tree_node*, rtx_def*, machine_mode, expand_modifier, rtx_def**, bool)
        ../../gcc-11.1.0/gcc/expr.c:8519
0x9bba37 expand_expr
        ../../gcc-11.1.0/gcc/expr.h:282
0x9bba37 expand_operands(tree_node*, tree_node*, rtx_def*, rtx_def**, rtx_def**, expand_modifier)
        ../../gcc-11.1.0/gcc/expr.c:8110
0x9b3b7b expand_expr_real_2(separate_ops*, rtx_def*, machine_mode, expand_modifier)
        ../../gcc-11.1.0/gcc/expr.c:9361
0x9ba283 expand_expr_real_1(tree_node*, rtx_def*, machine_mode, expand_modifier, rtx_def**, bool)
        ../../gcc-11.1.0/gcc/expr.c:10210
0x9b4b23 expand_expr_real(tree_node*, rtx_def*, machine_mode, expand_modifier, rtx_def**, bool)
        ../../gcc-11.1.0/gcc/expr.c:8519
0x9b4b23 expand_normal
        ../../gcc-11.1.0/gcc/expr.h:288
0x9b4b23 expand_expr_real_2(separate_ops*, rtx_def*, machine_mode, expand_modifier)
        ../../gcc-11.1.0/gcc/expr.c:9301
0x9ba283 expand_expr_real_1(tree_node*, rtx_def*, machine_mode, expand_modifier, rtx_def**, bool)
        ../../gcc-11.1.0/gcc/expr.c:10210
0x9b3713 expand_expr_real(tree_node*, rtx_def*, machine_mode, expand_modifier, rtx_def**, bool)
        ../../gcc-11.1.0/gcc/expr.c:8519
0x9b3713 expand_expr
        ../../gcc-11.1.0/gcc/expr.h:282
0x9b3713 expand_expr_real_2(separate_ops*, rtx_def*, machine_mode, expand_modifier)
        ../../gcc-11.1.0/gcc/expr.c:8802
0x8bbe5b expand_gimple_stmt_1
        ../../gcc-11.1.0/gcc/cfgexpand.c:3947
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.
make[5]: *** [src/CMakeFiles/w3nco_4_f.dir/build.make:790: src/CMakeFiles/w3nco_4_f.dir/w3ai00.f.o] Error 1
make[4]: *** [CMakeFiles/Makefile2:114: src/CMakeFiles/w3nco_4_f.dir/all] Error 2
make[3]: *** [Makefile:136: all] Error 2
make[2]: *** [CMakeFiles/w3nco.dir/build.make:86: w3nco/src/w3nco-stamp/w3nco-build] Error 2
make[1]: *** [CMakeFiles/Makefile2:643: CMakeFiles/w3nco.dir/all] Error 2
make: *** [Makefile:91: all] Error 2

I used cmake 3.20.2 for configuration before running make. Ealier GCC versions compiled w/o this issue. A bit of research points to "127_8" not being a default integer kind and that accepting non-default integers is an extension (maybe the GNU Team is deprecating it from v11 on). Thank you.

kgerheiser commented 3 years ago

Thanks for the bug report. I think you're the first one to try using GNU 11.

afernandezody commented 3 years ago

If I find the w3ai00.f file in the Github repository, I will push a PR this evening.

edwardhartnett commented 3 years ago

@afernandezody it is here: https://github.com/NOAA-EMC/NCEPLIBS-w3emc/blob/develop/src/w3ai00.f

afernandezody commented 3 years ago

Hi @edwardhartnett, I might have chosen the wrong title. My objective here is simply to compile UPP so I'm unsure which is better either the regular NCEPLIBS or the NCEPLIBS-w3emc version. Said that, the issue is simply that MIN0 and MAX0 were long phased out and GCC11 doesn't accept them anymore. I'll submit the PRs and close the issue. Best.

afernandezody commented 3 years ago

I submitted the PR from the coder account. Not sure if for my purposes, I should simply go with wrf_io.

kgerheiser commented 3 years ago

Thanks for the PR. I have approved it. This won't reflect immediately when building NCEPLIBS though as we have to tag a release and update the version here.