On Mon, Jan 03, 2022 at 06:03:41PM +0100, Thomas Koenig wrote: > On 03.01.22 17:26, Jakub Jelinek wrote: > > > so we could similarly have something like: > > #if !(defined(__powerpc64__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ > > && __SIZEOF_LONG_DOUBLE__ == 16) > > _gfortran_transfer_complex128; > > _gfortran_transfer_complex128_write; > > #endif > > ... > > #if !(defined(__powerpc64__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ > > && __SIZEOF_LONG_DOUBLE__ == 16) > > _gfortran_transfer_real128; > > _gfortran_transfer_real128_write; > > #endif > > ... > > #if defined(__powerpc64__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ && > > __SIZEOF_LONG_DOUBLE__ == 16 > > _gfortran_transfer_complex128; > > _gfortran_transfer_complex128_write; > > _gfortran_transfer_real128; > > _gfortran_transfer_real128_write; > > #endif > > That would also work for me. > > > or make that dependent on HAVE_GFC_REAL_17 or whatever else (with suitable > > includes that only define macros and not actual C code). > > With my most recent commit, HAVE_GFC_REAL_17 can now be found in > kinds.inc if all of the macros above are defined, that should > be suitable. > > I found that __powerpc64__ is not defined when compiling *.F90 files > (which is why I added them by hand). Not sure how the preprocessor is > invoked on gfortran.map, but if things don't work, this could be > related :-) > > So, it's OK either way with me. What do others think?
Here is an updated patch that does that (and now includes also the gcc/fortran part, since it makes no sense to split the two). I've run make check-fortran both normally and with RUNTESTFLAGS='--target_board=unix\{-mabi=ieeelongdouble\}' The former has: FAIL: gfortran.dg/reshape_shape_2.f90 -O (internal compiler error) FAIL: gfortran.dg/reshape_shape_2.f90 -O (test for errors, line 6) FAIL: gfortran.dg/reshape_shape_2.f90 -O (test for excess errors) FAIL: gfortran.dg/vector_subscript_1.f90 -O1 execution test FAIL: gfortran.dg/vector_subscript_1.f90 -O2 execution test FAIL: gfortran.dg/vector_subscript_1.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions execution test FAIL: gfortran.dg/vector_subscript_1.f90 -O3 -g execution test FAIL: gfortran.dg/vector_subscript_1.f90 -Os execution test FAIL: gfortran.dg/ieee/large_2.f90 -O0 execution test FAIL: gfortran.dg/ieee/large_2.f90 -O1 execution test FAIL: gfortran.dg/ieee/large_2.f90 -O2 execution test FAIL: gfortran.dg/ieee/large_2.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions execution test FAIL: gfortran.dg/ieee/large_2.f90 -O3 -g execution test FAIL: gfortran.dg/ieee/large_2.f90 -Os execution test and the latter has: FAIL: gfortran.dg/dec_math.f90 -O0 execution test FAIL: gfortran.dg/dec_math.f90 -O1 execution test FAIL: gfortran.dg/dec_math.f90 -O2 execution test FAIL: gfortran.dg/dec_math.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions execution test FAIL: gfortran.dg/dec_math.f90 -O3 -g execution test FAIL: gfortran.dg/dec_math.f90 -Os execution test FAIL: gfortran.dg/fmt_en.f90 -O0 output pattern test FAIL: gfortran.dg/fmt_en.f90 -O1 output pattern test FAIL: gfortran.dg/fmt_en.f90 -O2 output pattern test FAIL: gfortran.dg/fmt_en.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions output pattern test FAIL: gfortran.dg/fmt_en.f90 -O3 -g output pattern test FAIL: gfortran.dg/fmt_en.f90 -Os output pattern test FAIL: gfortran.dg/fmt_en_rd.f90 -O0 output pattern test FAIL: gfortran.dg/fmt_en_rd.f90 -O1 output pattern test FAIL: gfortran.dg/fmt_pf.f90 -O0 output pattern test FAIL: gfortran.dg/fmt_en_rd.f90 -O2 output pattern test FAIL: gfortran.dg/fmt_pf.f90 -O1 output pattern test FAIL: gfortran.dg/fmt_en_rd.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions output pattern test FAIL: gfortran.dg/fmt_pf.f90 -O2 output pattern test FAIL: gfortran.dg/fmt_g0_7.f08 -O0 execution test FAIL: gfortran.dg/fmt_g0_7.f08 -O1 execution test FAIL: gfortran.dg/fmt_g0_7.f08 -O2 execution test FAIL: gfortran.dg/fmt_en_rd.f90 -O3 -g output pattern test FAIL: gfortran.dg/fmt_pf.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions output pattern test FAIL: gfortran.dg/fmt_g0_7.f08 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions execution test FAIL: gfortran.dg/fmt_g0_7.f08 -O3 -g execution test FAIL: gfortran.dg/fmt_en_rd.f90 -Os output pattern test FAIL: gfortran.dg/fmt_g0_7.f08 -Os execution test FAIL: gfortran.dg/fmt_en_rn.f90 -O0 output pattern test FAIL: gfortran.dg/fmt_pf.f90 -O3 -g output pattern test FAIL: gfortran.dg/fmt_en_rn.f90 -O1 output pattern test FAIL: gfortran.dg/fmt_pf.f90 -Os output pattern test FAIL: gfortran.dg/fmt_en_rn.f90 -O2 output pattern test FAIL: gfortran.dg/fmt_en_rn.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions output pattern test FAIL: gfortran.dg/fmt_en_rn.f90 -O3 -g output pattern test FAIL: gfortran.dg/fmt_en_rn.f90 -Os output pattern test FAIL: gfortran.dg/fmt_en_ru.f90 -O0 output pattern test FAIL: gfortran.dg/fmt_en_ru.f90 -O1 output pattern test FAIL: gfortran.dg/fmt_en_ru.f90 -O2 output pattern test FAIL: gfortran.dg/fmt_en_ru.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions output pattern test FAIL: gfortran.dg/fmt_en_ru.f90 -O3 -g output pattern test FAIL: gfortran.dg/fmt_en_ru.f90 -Os output pattern test FAIL: gfortran.dg/fmt_en_rz.f90 -O0 output pattern test FAIL: gfortran.dg/fmt_en_rz.f90 -O1 output pattern test FAIL: gfortran.dg/fmt_en_rz.f90 -O2 output pattern test FAIL: gfortran.dg/fmt_en_rz.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions output pattern test FAIL: gfortran.dg/fmt_en_rz.f90 -O3 -g output pattern test FAIL: gfortran.dg/fmt_en_rz.f90 -Os output pattern test FAIL: gfortran.dg/intrinsic_spread_2.f90 -O0 execution test FAIL: gfortran.dg/intrinsic_spread_2.f90 -O1 execution test FAIL: gfortran.dg/intrinsic_spread_2.f90 -O2 execution test FAIL: gfortran.dg/intrinsic_unpack_2.f90 -O0 execution test FAIL: gfortran.dg/intrinsic_spread_2.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions execution test FAIL: gfortran.dg/intrinsic_unpack_2.f90 -O1 execution test FAIL: gfortran.dg/intrinsic_spread_2.f90 -O3 -g execution test FAIL: gfortran.dg/intrinsic_unpack_2.f90 -O2 execution test FAIL: gfortran.dg/intrinsic_spread_2.f90 -Os execution test FAIL: gfortran.dg/intrinsic_unpack_2.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions execution test FAIL: gfortran.dg/intrinsic_unpack_2.f90 -O3 -g execution test FAIL: gfortran.dg/intrinsic_unpack_2.f90 -Os execution test FAIL: gfortran.dg/large_real_kind_1.f90 -O0 execution test FAIL: gfortran.dg/large_real_kind_1.f90 -O1 execution test FAIL: gfortran.dg/large_real_kind_1.f90 -O2 execution test FAIL: gfortran.dg/large_real_kind_1.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions execution test FAIL: gfortran.dg/large_real_kind_1.f90 -O3 -g execution test FAIL: gfortran.dg/large_real_kind_1.f90 -Os execution test FAIL: gfortran.dg/large_real_kind_form_io_1.f90 -O0 execution test FAIL: gfortran.dg/large_real_kind_form_io_1.f90 -O1 execution test FAIL: gfortran.dg/large_real_kind_form_io_1.f90 -O2 execution test FAIL: gfortran.dg/large_real_kind_form_io_1.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions execution test FAIL: gfortran.dg/large_real_kind_form_io_1.f90 -O3 -g execution test FAIL: gfortran.dg/large_real_kind_form_io_1.f90 -Os execution test FAIL: gfortran.dg/pr47614.f -O0 (test for excess errors) FAIL: gfortran.dg/pr47614.f -O1 (test for excess errors) FAIL: gfortran.dg/pr47614.f -O2 (test for excess errors) FAIL: gfortran.dg/pr47614.f -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (test for excess errors) FAIL: gfortran.dg/pr47614.f -O3 -g (test for excess errors) FAIL: gfortran.dg/pr47614.f -Os (test for excess errors) FAIL: gfortran.dg/pr71526.f90 -O (test for excess errors) FAIL: gfortran.dg/quad_2.f90 -O0 execution test FAIL: gfortran.dg/quad_2.f90 -O1 execution test FAIL: gfortran.dg/quad_2.f90 -O2 execution test FAIL: gfortran.dg/quad_2.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions execution test FAIL: gfortran.dg/quad_2.f90 -O3 -g execution test FAIL: gfortran.dg/quad_2.f90 -Os execution test FAIL: gfortran.dg/save_6.f90 -O0 (test for excess errors) FAIL: gfortran.dg/save_6.f90 -O1 (test for excess errors) FAIL: gfortran.dg/save_6.f90 -O2 (test for excess errors) FAIL: gfortran.dg/save_6.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (test for excess errors) FAIL: gfortran.dg/save_6.f90 -O3 -g (test for excess errors) FAIL: gfortran.dg/save_6.f90 -Os (test for excess errors) FAIL: gfortran.dg/reshape_shape_2.f90 -O (internal compiler error) FAIL: gfortran.dg/reshape_shape_2.f90 -O (test for errors, line 6) FAIL: gfortran.dg/reshape_shape_2.f90 -O (test for excess errors) FAIL: gfortran.dg/shape_9.f90 -O (test for excess errors) FAIL: gfortran.dg/submodule_6.f08 -O0 (test for excess errors) FAIL: gfortran.dg/submodule_6.f08 -O1 (test for excess errors) FAIL: gfortran.dg/submodule_6.f08 -O2 (test for excess errors) FAIL: gfortran.dg/submodule_6.f08 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (test for excess errors) FAIL: gfortran.dg/submodule_6.f08 -O3 -g (test for excess errors) FAIL: gfortran.dg/submodule_6.f08 -Os (test for excess errors) FAIL: gfortran.dg/vector_subscript_1.f90 -O1 execution test FAIL: gfortran.dg/vector_subscript_1.f90 -O2 execution test FAIL: gfortran.dg/vector_subscript_1.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions execution test FAIL: gfortran.dg/vector_subscript_1.f90 -O3 -g execution test FAIL: gfortran.dg/vector_subscript_1.f90 -Os execution test FAIL: gfortran.dg/ieee/large_1.f90 -O0 execution test FAIL: gfortran.dg/ieee/large_1.f90 -O1 execution test FAIL: gfortran.dg/lto/20091028-1 f_lto_20091028-1_0.o-f_lto_20091028-1_1.o link, -O0 -flto -flto-partition=none FAIL: gfortran.dg/lto/pr46036 f_lto_pr46036_0.o-f_lto_pr46036_0.o link, -O -flto -ftree-vectorize FAIL: gfortran.dg/lto/bind_c-5 f_lto_bind_c-5_0.o-f_lto_bind_c-5_1.o link, -O3 -flto FAIL: gfortran.dg/lto/20091028-1 f_lto_20091028-1_0.o-f_lto_20091028-1_1.o link, -O2 -flto -flto-partition=none FAIL: gfortran.dg/ieee/large_1.f90 -O2 execution test FAIL: gfortran.dg/lto/pr46911 f_lto_pr46911_0.o-f_lto_pr46911_0.o link, -O2 -flto -g FAIL: gfortran.dg/lto/bind_c-6 f_lto_bind_c-6_0.o-f_lto_bind_c-6_1.o link, -O3 -flto FAIL: gfortran.dg/lto/20091028-1 f_lto_20091028-1_0.o-f_lto_20091028-1_1.o link, -O0 -flto -flto-partition=1to1 FAIL: gfortran.dg/lto/pr47839 f_lto_pr47839_0.o-f_lto_pr47839_1.o link, -g -flto FAIL: gfortran.dg/ieee/large_1.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions execution test FAIL: gfortran.dg/lto/pr40724 f_lto_pr40724_0.o-f_lto_pr40724_1.o link, -O0 -flto -flto-partition=none FAIL: gfortran.dg/lto/20091028-1 f_lto_20091028-1_0.o-f_lto_20091028-1_1.o link, -O2 -flto -flto-partition=1to1 FAIL: gfortran.dg/ieee/large_1.f90 -O3 -g execution test FAIL: gfortran.dg/lto/pr40724 f_lto_pr40724_0.o-f_lto_pr40724_1.o link, -O2 -flto -flto-partition=none FAIL: gfortran.dg/lto/20091028-1 f_lto_20091028-1_0.o-f_lto_20091028-1_1.o link, -O0 -flto FAIL: gfortran.dg/lto/pr84645 f_lto_pr84645_0.o-f_lto_pr84645_0.o link, -flto -g0 FAIL: gfortran.dg/lto/20091028-1 f_lto_20091028-1_0.o-f_lto_20091028-1_1.o link, -O2 -flto FAIL: gfortran.dg/lto/pr40724 f_lto_pr40724_0.o-f_lto_pr40724_1.o link, -O0 -flto -flto-partition=1to1 FAIL: gfortran.dg/ieee/large_1.f90 -Os execution test FAIL: gfortran.dg/lto/pr87689 f_lto_pr87689_0.o-f_lto_pr87689_1.o link, -O0 -flto -flto-partition=none FAIL: gfortran.dg/lto/20091028-2 f_lto_20091028-2_0.o-f_lto_20091028-2_1.o link, -O0 -flto -flto-partition=none FAIL: gfortran.dg/lto/pr40724 f_lto_pr40724_0.o-f_lto_pr40724_1.o link, -O2 -flto -flto-partition=1to1 FAIL: gfortran.dg/lto/pr87689 f_lto_pr87689_0.o-f_lto_pr87689_1.o link, -O2 -flto -flto-partition=none FAIL: gfortran.dg/lto/pr40724 f_lto_pr40724_0.o-f_lto_pr40724_1.o link, -O0 -flto FAIL: gfortran.dg/lto/20091028-2 f_lto_20091028-2_0.o-f_lto_20091028-2_1.o link, -O2 -flto -flto-partition=none FAIL: gfortran.dg/lto/pr87689 f_lto_pr87689_0.o-f_lto_pr87689_1.o link, -O0 -flto -flto-partition=1to1 FAIL: gfortran.dg/lto/20091028-2 f_lto_20091028-2_0.o-f_lto_20091028-2_1.o link, -O0 -flto -flto-partition=1to1 FAIL: gfortran.dg/lto/pr40724 f_lto_pr40724_0.o-f_lto_pr40724_1.o link, -O2 -flto FAIL: gfortran.dg/lto/pr87689 f_lto_pr87689_0.o-f_lto_pr87689_1.o link, -O2 -flto -flto-partition=1to1 FAIL: gfortran.dg/lto/pr40725 f_lto_pr40725_0.o-f_lto_pr40725_1.o link, -O0 -flto -flto-partition=none FAIL: gfortran.dg/lto/20091028-2 f_lto_20091028-2_0.o-f_lto_20091028-2_1.o link, -O2 -flto -flto-partition=1to1 FAIL: gfortran.dg/lto/pr87689 f_lto_pr87689_0.o-f_lto_pr87689_1.o link, -O0 -flto FAIL: gfortran.dg/lto/pr40725 f_lto_pr40725_0.o-f_lto_pr40725_1.o link, -O2 -flto -flto-partition=none FAIL: gfortran.dg/lto/20091028-2 f_lto_20091028-2_0.o-f_lto_20091028-2_1.o link, -O0 -flto FAIL: gfortran.dg/lto/pr87689 f_lto_pr87689_0.o-f_lto_pr87689_1.o link, -O2 -flto FAIL: gfortran.dg/lto/pr40725 f_lto_pr40725_0.o-f_lto_pr40725_1.o link, -O0 -flto -flto-partition=1to1 FAIL: gfortran.dg/lto/20091028-2 f_lto_20091028-2_0.o-f_lto_20091028-2_1.o link, -O2 -flto FAIL: gfortran.dg/lto/pr89084 f_lto_pr89084_0.o-f_lto_pr89084_0.o link, -O0 -flto FAIL: gfortran.dg/lto/pr40725 f_lto_pr40725_0.o-f_lto_pr40725_1.o link, -O2 -flto -flto-partition=1to1 FAIL: gfortran.dg/lto/20100110-1 f_lto_20100110-1_0.o-f_lto_20100110-1_0.o link, -flto FAIL: gfortran.dg/lto/pr40725 f_lto_pr40725_0.o-f_lto_pr40725_1.o link, -O0 -flto FAIL: gfortran.dg/lto/20100222-1 f_lto_20100222-1_0.o-f_lto_20100222-1_1.o link, -O0 -flto -flto-partition=none FAIL: gfortran.dg/lto/pr40725 f_lto_pr40725_0.o-f_lto_pr40725_1.o link, -O2 -flto FAIL: gfortran.dg/lto/20100222-1 f_lto_20100222-1_0.o-f_lto_20100222-1_1.o link, -O2 -flto -flto-partition=none FAIL: gfortran.dg/lto/pr41069 f_lto_pr41069_0.o-f_lto_pr41069_2.o link, -O0 -flto -flto-partition=none FAIL: gfortran.dg/lto/20100222-1 f_lto_20100222-1_0.o-f_lto_20100222-1_1.o link, -O0 -flto -flto-partition=1to1 FAIL: gfortran.dg/lto/pr41069 f_lto_pr41069_0.o-f_lto_pr41069_2.o link, -O2 -flto -flto-partition=none FAIL: gfortran.dg/lto/20100222-1 f_lto_20100222-1_0.o-f_lto_20100222-1_1.o link, -O2 -flto -flto-partition=1to1 FAIL: gfortran.dg/lto/pr41069 f_lto_pr41069_0.o-f_lto_pr41069_2.o link, -O0 -flto -flto-partition=1to1 FAIL: gfortran.dg/lto/20100222-1 f_lto_20100222-1_0.o-f_lto_20100222-1_1.o link, -O0 -flto FAIL: gfortran.dg/lto/pr41069 f_lto_pr41069_0.o-f_lto_pr41069_2.o link, -O2 -flto -flto-partition=1to1 FAIL: gfortran.dg/lto/20100222-1 f_lto_20100222-1_0.o-f_lto_20100222-1_1.o link, -O2 -flto FAIL: gfortran.dg/lto/bind-c-char f_lto_bind-c-char_0.o-f_lto_bind-c-char_0.o link, -O0 -flto FAIL: gfortran.dg/lto/pr41069 f_lto_pr41069_0.o-f_lto_pr41069_2.o link, -O0 -flto FAIL: gfortran.dg/lto/bind_c-1 f_lto_bind_c-1_0.o-f_lto_bind_c-1_1.o link, -O3 -flto FAIL: gfortran.dg/lto/pr41069 f_lto_pr41069_0.o-f_lto_pr41069_2.o link, -O2 -flto FAIL: gfortran.dg/lto/bind_c-2 f_lto_bind_c-2_0.o-f_lto_bind_c-2_1.o link, -O3 -flto FAIL: gfortran.dg/lto/pr41521 f_lto_pr41521_0.o-f_lto_pr41521_1.o link, -g -flto -Wno-lto-type-mismatch FAIL: gfortran.dg/lto/bind_c-2b f_lto_bind_c-2b_0.o-f_lto_bind_c-2b_1.o link, -O3 -flto FAIL: gfortran.dg/lto/pr41521 f_lto_pr41521_0.o-f_lto_pr41521_1.o link, -g -O -flto -Wno-lto-type-mismatch FAIL: gfortran.dg/lto/pr41576 f_lto_pr41576_0.o-f_lto_pr41576_1.o link, -O2 -flto -Werror -Wno-lto-type-mismatch FAIL: gfortran.dg/lto/bind_c-3 f_lto_bind_c-3_0.o-f_lto_bind_c-3_1.o link, -O3 -flto FAIL: gfortran.dg/lto/pr41764 f_lto_pr41764_0.o-f_lto_pr41764_0.o link, -O0 -flto -flto-partition=none FAIL: gfortran.dg/lto/pr41764 f_lto_pr41764_0.o-f_lto_pr41764_0.o link, -O2 -flto -flto-partition=none FAIL: gfortran.dg/lto/bind_c-4 f_lto_bind_c-4_0.o-f_lto_bind_c-4_1.o link, -O3 -flto FAIL: gfortran.dg/lto/pr41764 f_lto_pr41764_0.o-f_lto_pr41764_0.o link, -O0 -flto -flto-partition=1to1 FAIL: gfortran.dg/lto/pr41764 f_lto_pr41764_0.o-f_lto_pr41764_0.o link, -O2 -flto -flto-partition=1to1 FAIL: gfortran.dg/lto/pr41764 f_lto_pr41764_0.o-f_lto_pr41764_0.o link, -O0 -flto FAIL: gfortran.dg/lto/pr41764 f_lto_pr41764_0.o-f_lto_pr41764_0.o link, -O2 -flto FAIL: gfortran.dg/lto/pr45586-2 f_lto_pr45586-2_0.o-f_lto_pr45586-2_0.o link, -O0 -flto -flto-partition=none FAIL: gfortran.dg/lto/pr45586-2 f_lto_pr45586-2_0.o-f_lto_pr45586-2_0.o link, -O2 -flto -flto-partition=none FAIL: gfortran.dg/lto/pr45586-2 f_lto_pr45586-2_0.o-f_lto_pr45586-2_0.o link, -O0 -flto -flto-partition=1to1 FAIL: gfortran.dg/lto/pr45586-2 f_lto_pr45586-2_0.o-f_lto_pr45586-2_0.o link, -O2 -flto -flto-partition=1to1 FAIL: gfortran.dg/ieee/dec_math_1.f90 -O0 execution test FAIL: gfortran.dg/lto/pr45586-2 f_lto_pr45586-2_0.o-f_lto_pr45586-2_0.o link, -O0 -flto FAIL: gfortran.dg/lto/pr45586-2 f_lto_pr45586-2_0.o-f_lto_pr45586-2_0.o link, -O2 -flto FAIL: gfortran.dg/ieee/dec_math_1.f90 -O1 execution test FAIL: gfortran.dg/lto/pr45586 f_lto_pr45586_0.o-f_lto_pr45586_0.o link, -O0 -flto -flto-partition=none FAIL: gfortran.dg/lto/pr45586 f_lto_pr45586_0.o-f_lto_pr45586_0.o link, -O2 -flto -flto-partition=none FAIL: gfortran.dg/ieee/dec_math_1.f90 -O2 execution test FAIL: gfortran.dg/lto/pr45586 f_lto_pr45586_0.o-f_lto_pr45586_0.o link, -O0 -flto -flto-partition=1to1 FAIL: gfortran.dg/lto/pr45586 f_lto_pr45586_0.o-f_lto_pr45586_0.o link, -O2 -flto -flto-partition=1to1 FAIL: gfortran.dg/lto/pr45586 f_lto_pr45586_0.o-f_lto_pr45586_0.o link, -O0 -flto FAIL: gfortran.dg/ieee/dec_math_1.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions execution test FAIL: gfortran.dg/lto/pr45586 f_lto_pr45586_0.o-f_lto_pr45586_0.o link, -O2 -flto FAIL: gfortran.dg/ieee/dec_math_1.f90 -O3 -g execution test FAIL: gfortran.dg/ieee/dec_math_1.f90 -Os execution test FAIL: gfortran.dg/lto/20091016-1 f_lto_20091016-1_0.o-f_lto_20091016-1_0.o link, -flto -g -fPIC -r FAIL: gfortran.dg/lto/20091016-1 f_lto_20091016-1_0.o-f_lto_20091016-1_0.o link, -O -flto -g -fPIC -r so clearly there is still work to fix (but seems e.g. most of the lto tests are related to the gnu attributes stuff :( ). Ok? 2022-01-03 Jakub Jelinek <ja...@redhat.com> gcc/fortran/ * trans-io.c (transfer_namelist_element): Use gfc_type_abi_kind, formatting fixes. (transfer_expr): Use gfc_type_abi_kind, use *REAL128* APIs even for abi_kind == 17. libgfortran/ * libgfortran.h (__acoshieee128, __acosieee128, __asinhieee128, __asinieee128, __atan2ieee128, __atanhieee128, __atanieee128, __coshieee128, __cosieee128, __erfieee128, __expieee128, __fabsieee128, __jnieee128, __log10ieee128, __logieee128, __powieee128, __sinhieee128, __sinieee128, __sqrtieee128, __tanhieee128, __tanieee128, __ynieee128): Formatting fixes. (__strtoieee128, __snprintfieee128): Declare. * io/io.h (default_width_for_float, default_precision_for_float): Handle kind == 17. * io/size_from_kind.c (size_from_real_kind, size_from_complex_kind): Likewise. * io/read.c (set_integer, si_max, convert_real, convert_infnan, read_f): Likewise. * io/write.c (extract_uint, size_from_kind, set_fnode_default): Likewise. * io/write_float.def (DTOA2Q, FDTOA2Q): Define for HAVE_GFC_REAL_17. (determine_en_precision, get_float_string): Handle kind == 17. * io/transfer128.c: Use also for HAVE_GFC_REAL_17, but don't drag in libquadmath if POWER_IEEE128. * Makefile.am (comma, PREPROCESS): New variables. (gfortran.ver): New goal. (version_arg, version_dep): Use gfortran.ver instead of $(srcdir)/gfortran.map. (gfortran.map-sun): Depend on and use gfortran.ver instead of $(srcdir)/gfortran.map. (BUILT_SOURCES): Add $(version_dep). * Makefile.in: Regenerated. * gfortran.map (GFORTRAN_8): Don't export _gfortran_transfer_complex128, _gfortran_transfer_complex128_write, _gfortran_transfer_real128 and _gfortran_transfer_real128_write if HAVE_GFC_REAL_17 is defined. (GFORTRAN_12): Export those here instead. --- gcc/fortran/trans-io.c.jj 2021-12-31 11:00:15.052190585 +0000 +++ gcc/fortran/trans-io.c 2022-01-03 14:20:55.238159269 +0000 @@ -1765,18 +1765,17 @@ transfer_namelist_element (stmtblock_t * else tmp = build_int_cst (gfc_charlen_type_node, 0); + int abi_kind = gfc_type_abi_kind (ts); if (dtio_proc == null_pointer_node) - tmp = build_call_expr_loc (input_location, - iocall[IOCALL_SET_NML_VAL], 6, - dt_parm_addr, addr_expr, string, - build_int_cst (gfc_int4_type_node, ts->kind), - tmp, dtype); + tmp = build_call_expr_loc (input_location, iocall[IOCALL_SET_NML_VAL], 6, + dt_parm_addr, addr_expr, string, + build_int_cst (gfc_int4_type_node, abi_kind), + tmp, dtype); else - tmp = build_call_expr_loc (input_location, - iocall[IOCALL_SET_NML_DTIO_VAL], 8, - dt_parm_addr, addr_expr, string, - build_int_cst (gfc_int4_type_node, ts->kind), - tmp, dtype, dtio_proc, vtable); + tmp = build_call_expr_loc (input_location, iocall[IOCALL_SET_NML_DTIO_VAL], + 8, dt_parm_addr, addr_expr, string, + build_int_cst (gfc_int4_type_node, abi_kind), + tmp, dtype, dtio_proc, vtable); gfc_add_expr_to_block (block, tmp); /* If the object is an array, transfer rank times: @@ -2298,7 +2297,7 @@ transfer_expr (gfc_se * se, gfc_typespec ts->kind = gfc_index_integer_kind; } - kind = ts->kind; + kind = gfc_type_abi_kind (ts); function = NULL; arg2 = NULL; arg3 = NULL; @@ -2318,14 +2317,14 @@ transfer_expr (gfc_se * se, gfc_typespec arg2 = build_int_cst (integer_type_node, kind); if (last_dt == READ) { - if (gfc_real16_is_float128 && ts->kind == 16) + if ((gfc_real16_is_float128 && kind == 16) || kind == 17) function = iocall[IOCALL_X_REAL128]; else function = iocall[IOCALL_X_REAL]; } else { - if (gfc_real16_is_float128 && ts->kind == 16) + if ((gfc_real16_is_float128 && kind == 16) || kind == 17) function = iocall[IOCALL_X_REAL128_WRITE]; else function = iocall[IOCALL_X_REAL_WRITE]; @@ -2337,14 +2336,14 @@ transfer_expr (gfc_se * se, gfc_typespec arg2 = build_int_cst (integer_type_node, kind); if (last_dt == READ) { - if (gfc_real16_is_float128 && ts->kind == 16) + if ((gfc_real16_is_float128 && kind == 16) || kind == 17) function = iocall[IOCALL_X_COMPLEX128]; else function = iocall[IOCALL_X_COMPLEX]; } else { - if (gfc_real16_is_float128 && ts->kind == 16) + if ((gfc_real16_is_float128 && kind == 16) || kind == 17) function = iocall[IOCALL_X_COMPLEX128_WRITE]; else function = iocall[IOCALL_X_COMPLEX_WRITE]; --- libgfortran/io/size_from_kind.c.jj 2021-12-31 11:00:58.083137032 +0000 +++ libgfortran/io/size_from_kind.c 2021-12-31 16:19:50.182058780 +0000 @@ -49,6 +49,10 @@ size_from_real_kind (int kind) case 16: return sizeof (GFC_REAL_16); #endif +#ifdef HAVE_GFC_REAL_17 + case 17: + return sizeof (GFC_REAL_17); +#endif default: return kind; } @@ -76,6 +80,10 @@ size_from_complex_kind (int kind) case 16: return sizeof (GFC_COMPLEX_16); #endif +#ifdef HAVE_GFC_COMPLEX_17 + case 17: + return sizeof (GFC_COMPLEX_17); +#endif default: return 2 * kind; } --- libgfortran/io/io.h.jj 2021-12-31 11:00:58.083137032 +0000 +++ libgfortran/io/io.h 2021-12-31 16:26:44.181125298 +0000 @@ -1063,7 +1063,8 @@ default_width_for_float (int kind) { case 4: return 15; case 8: return 25; - case 16: return 42; + case 16: + case 17: return 42; default: return 0; } } @@ -1075,7 +1076,8 @@ default_precision_for_float (int kind) { case 4: return 7; case 8: return 16; - case 16: return 33; + case 16: + case 17: return 33; default: return 0; } } --- libgfortran/io/read.c.jj 2021-12-31 11:08:19.052835974 +0000 +++ libgfortran/io/read.c 2022-01-03 12:12:19.999171427 +0000 @@ -47,6 +47,14 @@ set_integer (void *dest, GFC_INTEGER_LAR switch (length) { #ifdef HAVE_GFC_INTEGER_16 +#ifdef HAVE_GFC_REAL_17 + case 17: + { + GFC_INTEGER_16 tmp = value; + memcpy (dest, (void *) &tmp, 16); + } + break; +#endif /* length=10 comes about for kind=10 real/complex BOZ, cf. PR41711. */ case 10: case 16: @@ -96,7 +104,14 @@ si_max (int length) #endif switch (length) - { + { +#if defined HAVE_GFC_REAL_17 + case 17: + value = 1; + for (int n = 1; n < 4 * 16; n++) + value = (value << 2) + 3; + return value; +#endif #if defined HAVE_GFC_REAL_16 || defined HAVE_GFC_REAL_10 case 16: case 10: @@ -181,6 +196,15 @@ convert_real (st_parameter_dt *dtp, void # endif #endif +#if defined(HAVE_GFC_REAL_17) + case 17: +# if defined(POWER_IEEE128) + *((GFC_REAL_17*) dest) = __strtoieee128 (buffer, &endptr); +# else + *((GFC_REAL_17*) dest) = __qmath_(strtoflt128) (buffer, &endptr); +# endif +#endif + default: internal_error (&dtp->common, "Unsupported real kind during IO"); } @@ -260,6 +284,15 @@ convert_infnan (st_parameter_dt *dtp, vo # endif #endif +#if defined(HAVE_GFC_REAL_17) + case 17: + if (is_inf) + *((GFC_REAL_17*) dest) = plus ? __builtin_infl () : -__builtin_infl (); + else + *((GFC_REAL_17*) dest) = plus ? __builtin_nanl ("") : -__builtin_nanl (""); + break; +#endif + default: internal_error (&dtp->common, "Unsupported real kind during IO"); } @@ -1225,6 +1258,12 @@ zero: break; #endif +#ifdef HAVE_GFC_REAL_17 + case 17: + *((GFC_REAL_17 *) dest) = 0.0; + break; +#endif + default: internal_error (&dtp->common, "Unsupported real kind during IO"); } --- libgfortran/io/write.c.jj 2021-12-31 11:08:19.052835974 +0000 +++ libgfortran/io/write.c 2022-01-03 13:28:40.269478670 +0000 @@ -649,6 +649,15 @@ extract_uint (const void *p, int len) i = (GFC_UINTEGER_16) tmp; } break; +# ifdef HAVE_GFC_REAL_17 + case 17: + { + GFC_INTEGER_16 tmp = 0; + memcpy ((void *) &tmp, p, 16); + i = (GFC_UINTEGER_16) tmp; + } + break; +# endif #endif default: internal_error (NULL, "bad integer kind"); @@ -1518,6 +1527,9 @@ size_from_kind (st_parameter_dt *dtp, co size = 4932 + 3; break; case 16: +#ifdef HAVE_GFC_REAL_17 + case 17: +#endif size = 4932 + 3; break; default: @@ -1674,6 +1686,13 @@ set_fnode_default (st_parameter_dt *dtp, f->u.real.e = 4; #endif break; +#ifdef HAVE_GFC_REAL_17 + case 17: + f->u.real.w = 45; + f->u.real.d = 36; + f->u.real.e = 4; + break; +#endif default: internal_error (&dtp->common, "bad real kind"); break; --- libgfortran/io/write_float.def.jj 2021-12-31 11:00:58.093137252 +0000 +++ libgfortran/io/write_float.def 2022-01-03 14:33:12.694336419 +0000 @@ -834,8 +834,16 @@ snprintf (buffer, size, "%+-#.*e", (prec snprintf (buffer, size, "%+-#.*Le", (prec), (val)) -#if defined(GFC_REAL_16_IS_FLOAT128) -#define DTOA2Q(prec,val) \ +#if defined(HAVE_GFC_REAL_17) +# if defined(POWER_IEEE128) +# define DTOA2Q(prec,val) \ +__snprintfieee128 (buffer, size, "%+-#.*Le", (prec), (val)) +# else +# define DTOA2Q(prec,val) \ +quadmath_snprintf (buffer, size, "%+-#.*Qe", (prec), (val)) +# endif +#elif defined(GFC_REAL_16_IS_FLOAT128) +# define DTOA2Q(prec,val) \ quadmath_snprintf (buffer, size, "%+-#.*Qe", (prec), (val)) #endif @@ -849,10 +857,17 @@ snprintf (buffer, size, "%+-#.*f", (prec snprintf (buffer, size, "%+-#.*Lf", (prec), (val)) -#if defined(GFC_REAL_16_IS_FLOAT128) -#define FDTOA2Q(prec,val) \ -quadmath_snprintf (buffer, size, "%+-#.*Qf", \ - (prec), (val)) +#if defined(HAVE_GFC_REAL_17) +# if defined(POWER_IEEE128) +# define FDTOA2Q(prec,val) \ +__snprintfieee128 (buffer, size, "%+-#.*Lf", (prec), (val)) +# else +# define FDTOA2Q(prec,val) \ +quadmath_snprintf (buffer, size, "%+-#.*Qf", (prec), (val)) +# endif +#elif defined(GFC_REAL_16_IS_FLOAT128) +# define FDTOA2Q(prec,val) \ +quadmath_snprintf (buffer, size, "%+-#.*Qf", (prec), (val)) #endif @@ -925,6 +940,11 @@ determine_en_precision (st_parameter_dt # endif break; #endif +#ifdef HAVE_GFC_REAL_17 + case 17: + EN_PREC(16,Q) +#endif + break; default: internal_error (NULL, "bad real kind"); } @@ -1128,6 +1148,11 @@ get_float_string (st_parameter_dt *dtp, # endif break; #endif +#ifdef HAVE_GFC_REAL_17 + case 17: + FORMAT_FLOAT(16,Q) + break; +#endif default: internal_error (NULL, "bad real kind"); } --- libgfortran/io/transfer128.c.jj 2021-12-31 11:00:58.083137032 +0000 +++ libgfortran/io/transfer128.c 2022-01-03 14:40:41.734177007 +0000 @@ -28,7 +28,7 @@ see the files COPYING3 and COPYING.RUNTI #include "io.h" -#if defined(GFC_REAL_16_IS_FLOAT128) +#if defined(GFC_REAL_16_IS_FLOAT128) || defined(HAVE_GFC_REAL_17) /* The prototypes for the called procedures in transfer.c. */ @@ -65,8 +65,10 @@ export_proto(transfer_complex128_write); write_float; the pointer assignment with USED attribute make sure that there is a non-weakref dependence if the quadmath functions are used. That avoids segfault when libquadmath is statically linked. */ +# if !defined(HAVE_GFC_REAL_17) || !defined(POWER_IEEE128) static void __attribute__((used)) *tmp1 = strtoflt128; static void __attribute__((used)) *tmp2 = quadmath_snprintf; +# endif void transfer_real128 (st_parameter_dt *dtp, void *p, int kind) --- libgfortran/libgfortran.h.jj 2021-12-31 11:45:06.121158716 +0000 +++ libgfortran/libgfortran.h 2022-01-03 14:32:45.063730903 +0000 @@ -1936,28 +1936,54 @@ internal_proto(cshift1_16_c17); /* Prototypes for the POWER __ieee128 functions. */ #ifdef POWER_IEEE128 -extern __float128 __acoshieee128 (__float128) __attribute__ ((__nothrow__, __leaf__)); -extern __float128 __acosieee128 (__float128) __attribute__ ((__nothrow__, __leaf__)); -extern __float128 __asinhieee128 (__float128) __attribute__ ((__nothrow__, __leaf__)); -extern __float128 __asinieee128 (__float128) __attribute__ ((__nothrow__, __leaf__)); -extern __float128 __atan2ieee128 (__float128) __attribute__ ((__nothrow__, __leaf__)); -extern __float128 __atanhieee128 (__float128) __attribute__ ((__nothrow__, __leaf__)); -extern __float128 __atanieee128 (__float128) __attribute__ ((__nothrow__, __leaf__)); -extern __float128 __coshieee128 (__float128) __attribute__ ((__nothrow__, __leaf__)); -extern __float128 __cosieee128 (__float128) __attribute__ ((__nothrow__, __leaf__)); -extern __float128 __erfieee128 (__float128) __attribute__ ((__nothrow__, __leaf__)); -extern __float128 __expieee128 (__float128) __attribute__ ((__nothrow__, __leaf__)); -extern __float128 __fabsieee128 (__float128) __attribute__ ((__nothrow__, __leaf__)); -extern __float128 __jnieee128 (int, __float128) __attribute__ ((__nothrow__, __leaf__)); -extern __float128 __log10ieee128 (__float128) __attribute__ ((__nothrow__, __leaf__)); -extern __float128 __logieee128 (__float128) __attribute__ ((__nothrow__, __leaf__)); -extern __float128 __powieee128 (__float128) __attribute__ ((__nothrow__, __leaf__)); -extern __float128 __sinhieee128 (__float128) __attribute__ ((__nothrow__, __leaf__)); -extern __float128 __sinieee128 (__float128) __attribute__ ((__nothrow__, __leaf__)); -extern __float128 __sqrtieee128 (__float128) __attribute__ ((__nothrow__, __leaf__)); -extern __float128 __tanhieee128 (__float128) __attribute__ ((__nothrow__, __leaf__)); -extern __float128 __tanieee128 (__float128) __attribute__ ((__nothrow__, __leaf__)); -extern __float128 __ynieee128 (int , __float128) __attribute__ ((__nothrow__, __leaf__)); +extern __float128 __acoshieee128 (__float128) + __attribute__ ((__nothrow__, __leaf__)); +extern __float128 __acosieee128 (__float128) + __attribute__ ((__nothrow__, __leaf__)); +extern __float128 __asinhieee128 (__float128) + __attribute__ ((__nothrow__, __leaf__)); +extern __float128 __asinieee128 (__float128) + __attribute__ ((__nothrow__, __leaf__)); +extern __float128 __atan2ieee128 (__float128) + __attribute__ ((__nothrow__, __leaf__)); +extern __float128 __atanhieee128 (__float128) + __attribute__ ((__nothrow__, __leaf__)); +extern __float128 __atanieee128 (__float128) + __attribute__ ((__nothrow__, __leaf__)); +extern __float128 __coshieee128 (__float128) + __attribute__ ((__nothrow__, __leaf__)); +extern __float128 __cosieee128 (__float128) + __attribute__ ((__nothrow__, __leaf__)); +extern __float128 __erfieee128 (__float128) + __attribute__ ((__nothrow__, __leaf__)); +extern __float128 __expieee128 (__float128) + __attribute__ ((__nothrow__, __leaf__)); +extern __float128 __fabsieee128 (__float128) + __attribute__ ((__nothrow__, __leaf__)); +extern __float128 __jnieee128 (int, __float128) + __attribute__ ((__nothrow__, __leaf__)); +extern __float128 __log10ieee128 (__float128) + __attribute__ ((__nothrow__, __leaf__)); +extern __float128 __logieee128 (__float128) + __attribute__ ((__nothrow__, __leaf__)); +extern __float128 __powieee128 (__float128) + __attribute__ ((__nothrow__, __leaf__)); +extern __float128 __sinhieee128 (__float128) + __attribute__ ((__nothrow__, __leaf__)); +extern __float128 __sinieee128 (__float128) + __attribute__ ((__nothrow__, __leaf__)); +extern __float128 __sqrtieee128 (__float128) + __attribute__ ((__nothrow__, __leaf__)); +extern __float128 __tanhieee128 (__float128) + __attribute__ ((__nothrow__, __leaf__)); +extern __float128 __tanieee128 (__float128) + __attribute__ ((__nothrow__, __leaf__)); +extern __float128 __ynieee128 (int , __float128) + __attribute__ ((__nothrow__, __leaf__)); +extern __float128 __strtoieee128 (const char *, char **) + __attribute__ ((__nothrow__, __leaf__)); +extern int __snprintfieee128 (char *, size_t, const char *, ...) + __attribute__ ((__nothrow__)); #endif --- libgfortran/Makefile.am.jj 2021-12-31 11:08:19.032835533 +0000 +++ libgfortran/Makefile.am 2022-01-03 19:00:55.266791438 +0000 @@ -8,18 +8,26 @@ gcc_version := $(shell @get_gcc_base_ver ## Symbol versioning (copied from libssp). if LIBGFOR_USE_SYMVER +# -Wc is only a libtool option. +comma = , +PREPROCESS = $(subst -Wc$(comma), , $(COMPILE)) -E + +gfortran.ver: $(srcdir)/gfortran.map kinds.inc + $(EGREP) -v '#(#| |$$)' $< | \ + $(PREPROCESS) -P -include config.h -include kinds.inc - > $@ || (rm -f $@ ; exit 1) + if LIBGFOR_USE_SYMVER_GNU -version_arg = -Wl,--version-script=$(srcdir)/gfortran.map -version_dep = $(srcdir)/gfortran.map +version_arg = -Wl,--version-script=gfortran.ver +version_dep = gfortran.ver endif if LIBGFOR_USE_SYMVER_SUN -version_arg = -Wl,-M,gfortran.map-sun -version_dep = gfortran.map-sun -gfortran.map-sun : $(srcdir)/gfortran.map \ +version_arg = -Wl,-M,gfortran.ver-sun +version_dep = gfortran.ver-sun gfortran.ver +gfortran.map-sun : gfortran.ver \ $(top_srcdir)/../contrib/make_sunver.pl \ $(libgfortran_la_OBJECTS) $(libgfortran_la_LIBADD) perl $(top_srcdir)/../contrib/make_sunver.pl \ - $(srcdir)/gfortran.map \ + gfortran.ver \ $(libgfortran_la_OBJECTS:%.lo=.libs/%.o) \ `echo $(libgfortran_la_LIBADD) | \ sed 's,/\([^/.]*\)\.la,/.libs/\1.a,g'` \ @@ -1103,7 +1111,7 @@ ieee_arithmetic.mod: ieee_arithmetic.lo : BUILT_SOURCES=$(gfor_built_src) $(gfor_built_specific_src) \ - $(gfor_built_specific2_src) $(gfor_misc_specifics) + $(gfor_built_specific2_src) $(gfor_misc_specifics) $(version_dep) prereq_SRC = $(gfor_src) $(gfor_built_src) $(gfor_io_src) \ $(gfor_helper_src) $(gfor_ieee_src) $(gfor_io_headers) $(gfor_specific_src) --- libgfortran/Makefile.in.jj 2021-12-31 11:08:19.032835533 +0000 +++ libgfortran/Makefile.in 2022-01-03 19:01:42.907836363 +0000 @@ -739,12 +739,16 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I .. -I ../config gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) + +# -Wc is only a libtool option. +@LIBGFOR_USE_SYMVER_TRUE@comma = , +@LIBGFOR_USE_SYMVER_TRUE@PREPROCESS = $(subst -Wc$(comma), , $(COMPILE)) -E @LIBGFOR_USE_SYMVER_FALSE@version_arg = -@LIBGFOR_USE_SYMVER_GNU_TRUE@@LIBGFOR_USE_SYMVER_TRUE@version_arg = -Wl,--version-script=$(srcdir)/gfortran.map -@LIBGFOR_USE_SYMVER_SUN_TRUE@@LIBGFOR_USE_SYMVER_TRUE@version_arg = -Wl,-M,gfortran.map-sun +@LIBGFOR_USE_SYMVER_GNU_TRUE@@LIBGFOR_USE_SYMVER_TRUE@version_arg = -Wl,--version-script=gfortran.ver +@LIBGFOR_USE_SYMVER_SUN_TRUE@@LIBGFOR_USE_SYMVER_TRUE@version_arg = -Wl,-M,gfortran.ver-sun @LIBGFOR_USE_SYMVER_FALSE@version_dep = -@LIBGFOR_USE_SYMVER_GNU_TRUE@@LIBGFOR_USE_SYMVER_TRUE@version_dep = $(srcdir)/gfortran.map -@LIBGFOR_USE_SYMVER_SUN_TRUE@@LIBGFOR_USE_SYMVER_TRUE@version_dep = gfortran.map-sun +@LIBGFOR_USE_SYMVER_GNU_TRUE@@LIBGFOR_USE_SYMVER_TRUE@version_dep = gfortran.ver +@LIBGFOR_USE_SYMVER_SUN_TRUE@@LIBGFOR_USE_SYMVER_TRUE@version_dep = gfortran.ver-sun gfortran.ver gfor_c_HEADERS = ISO_Fortran_binding.h gfor_cdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) \ @@ -1648,7 +1652,7 @@ intrinsics/random_init.f90 BUILT_SOURCES = $(gfor_built_src) $(gfor_built_specific_src) \ $(gfor_built_specific2_src) $(gfor_misc_specifics) \ - $(am__append_7) + $(version_dep) $(am__append_7) prereq_SRC = $(gfor_src) $(gfor_built_src) $(gfor_io_src) \ $(gfor_helper_src) $(gfor_ieee_src) $(gfor_io_headers) $(gfor_specific_src) @@ -7607,11 +7611,15 @@ uninstall-am: uninstall-cafexeclibLTLIBR .PRECIOUS: Makefile -@LIBGFOR_USE_SYMVER_SUN_TRUE@@libgfor_use_symver_t...@gfortran.map-sun : $(srcdir)/gfortran.map \ + +@libgfor_use_symver_t...@gfortran.ver: $(srcdir)/gfortran.map kinds.inc +@LIBGFOR_USE_SYMVER_TRUE@ $(EGREP) -v '#(#| |$$)' $< | \ +@LIBGFOR_USE_SYMVER_TRUE@ $(PREPROCESS) -P -include config.h -include kinds.inc - > $@ || (rm -f $@ ; exit 1) +@LIBGFOR_USE_SYMVER_SUN_TRUE@@libgfor_use_symver_t...@gfortran.map-sun : gfortran.ver \ @LIBGFOR_USE_SYMVER_SUN_TRUE@@LIBGFOR_USE_SYMVER_TRUE@ $(top_srcdir)/../contrib/make_sunver.pl \ @LIBGFOR_USE_SYMVER_SUN_TRUE@@LIBGFOR_USE_SYMVER_TRUE@ $(libgfortran_la_OBJECTS) $(libgfortran_la_LIBADD) @LIBGFOR_USE_SYMVER_SUN_TRUE@@LIBGFOR_USE_SYMVER_TRUE@ perl $(top_srcdir)/../contrib/make_sunver.pl \ -@LIBGFOR_USE_SYMVER_SUN_TRUE@@LIBGFOR_USE_SYMVER_TRUE@ $(srcdir)/gfortran.map \ +@LIBGFOR_USE_SYMVER_SUN_TRUE@@LIBGFOR_USE_SYMVER_TRUE@ gfortran.ver \ @LIBGFOR_USE_SYMVER_SUN_TRUE@@LIBGFOR_USE_SYMVER_TRUE@ $(libgfortran_la_OBJECTS:%.lo=.libs/%.o) \ @LIBGFOR_USE_SYMVER_SUN_TRUE@@LIBGFOR_USE_SYMVER_TRUE@ `echo $(libgfortran_la_LIBADD) | \ @LIBGFOR_USE_SYMVER_SUN_TRUE@@LIBGFOR_USE_SYMVER_TRUE@ sed 's,/\([^/.]*\)\.la,/.libs/\1.a,g'` \ --- libgfortran/gfortran.map.jj 2021-12-31 11:31:12.142891971 +0000 +++ libgfortran/gfortran.map 2022-01-03 19:00:02.285629389 +0000 @@ -1295,8 +1295,10 @@ GFORTRAN_8 { _gfortran_transfer_character_wide; _gfortran_transfer_character_wide_write; _gfortran_transfer_character_write; +#ifndef HAVE_GFC_REAL_17 _gfortran_transfer_complex128; _gfortran_transfer_complex128_write; +#endif _gfortran_transfer_complex; _gfortran_transfer_complex_write; _gfortran_transfer_derived; @@ -1304,8 +1306,10 @@ GFORTRAN_8 { _gfortran_transfer_integer_write; _gfortran_transfer_logical; _gfortran_transfer_logical_write; +#ifndef HAVE_GFC_REAL_17 _gfortran_transfer_real128; _gfortran_transfer_real128_write; +#endif _gfortran_transfer_real; _gfortran_transfer_real_write; _gfortran_ttynam; @@ -1748,4 +1752,10 @@ GFORTRAN_12 { _gfortran_sproduct_c17; _gfortran_ssum_c17; _gfortran_sum_c17; +#ifdef HAVE_GFC_REAL_17 + _gfortran_transfer_complex128; + _gfortran_transfer_complex128_write; + _gfortran_transfer_real128; + _gfortran_transfer_real128_write; +#endif } GFORTRAN_10.2; Jakub