Closed awvwgk closed 2 years ago
Seems like the Intel compiler can almost compile minpack, except for one of the examples
❯ ifx -V Intel(R) Fortran Compiler for applications running on Intel(R) 64, Version 2022.0.0 Build 20211123 Copyright (C) 1985-2021 Intel Corporation. All rights reserved. ❯ fpm test --compiler ifx minpack.f90 done. minpack_testing.f90 done. example_hybrd1.f90 done. example_lmdif1.f90 done. example_hybrd.f90 done. example_lmder1.f90 done. example_primes.f90 failed. test_chkder.f90 done. test_hybrd.f90 done. test_hybrj.f90 done. [ 38%]Compiling... examples/example_primes.f90: remark #5415: Feature not yet implemented: Some 'check' options temporarily disabled. #0 0x0000000001084382 (/opt/intel/oneapi/compiler/2022.0.2/linux/bin-llvm/xfortcom+0x1084382) #1 0x0000000001084356 (/opt/intel/oneapi/compiler/2022.0.2/linux/bin-llvm/xfortcom+0x1084356) #2 0x0000000000fdf5b6 (/opt/intel/oneapi/compiler/2022.0.2/linux/bin-llvm/xfortcom+0xfdf5b6) #3 0x000000000100082a (/opt/intel/oneapi/compiler/2022.0.2/linux/bin-llvm/xfortcom+0x100082a) #4 0x0000000000ffec51 (/opt/intel/oneapi/compiler/2022.0.2/linux/bin-llvm/xfortcom+0xffec51) #5 0x0000000000fe1e3d (/opt/intel/oneapi/compiler/2022.0.2/linux/bin-llvm/xfortcom+0xfe1e3d) #6 0x000000000105bc37 (/opt/intel/oneapi/compiler/2022.0.2/linux/bin-llvm/xfortcom+0x105bc37) #7 0x000000000105e391 (/opt/intel/oneapi/compiler/2022.0.2/linux/bin-llvm/xfortcom+0x105e391) #8 0x000000000105f5d8 (/opt/intel/oneapi/compiler/2022.0.2/linux/bin-llvm/xfortcom+0x105f5d8) #9 0x00000000010d1e75 (/opt/intel/oneapi/compiler/2022.0.2/linux/bin-llvm/xfortcom+0x10d1e75) #10 0x00000000010cfae2 (/opt/intel/oneapi/compiler/2022.0.2/linux/bin-llvm/xfortcom+0x10cfae2) #11 0x00000000010d01b2 (/opt/intel/oneapi/compiler/2022.0.2/linux/bin-llvm/xfortcom+0x10d01b2) #12 0x00000000010cd9a2 (/opt/intel/oneapi/compiler/2022.0.2/linux/bin-llvm/xfortcom+0x10cd9a2) #13 0x00000000010cfae2 (/opt/intel/oneapi/compiler/2022.0.2/linux/bin-llvm/xfortcom+0x10cfae2) #14 0x00000000010cd05a (/opt/intel/oneapi/compiler/2022.0.2/linux/bin-llvm/xfortcom+0x10cd05a) #15 0x00000000010cfae2 (/opt/intel/oneapi/compiler/2022.0.2/linux/bin-llvm/xfortcom+0x10cfae2) #16 0x0000000000f9d436 (/opt/intel/oneapi/compiler/2022.0.2/linux/bin-llvm/xfortcom+0xf9d436) #17 0x0000000000f9cb71 (/opt/intel/oneapi/compiler/2022.0.2/linux/bin-llvm/xfortcom+0xf9cb71) #18 0x0000000001116541 (/opt/intel/oneapi/compiler/2022.0.2/linux/bin-llvm/xfortcom+0x1116541) #19 0x00007fc61d475b25 __libc_start_main (/usr/lib/libc.so.6+0x27b25) #20 0x0000000000de27a9 (/opt/intel/oneapi/compiler/2022.0.2/linux/bin-llvm/xfortcom+0xde27a9) examples/example_primes.f90(31): error #5533: Feature found on this line is not yet supported in ifx function expr(x, pars) result(y) -------------^ compilation aborted for examples/example_primes.f90 (code 3) <ERROR> Compilation failed for object " examples_example_primes.f90.o " <ERROR>stopping due to failed compilation STOP 1
But passes with a small workaround
diff --git a/examples/example_primes.f90 b/examples/example_primes.f90 index c014bd3..57b2531 100644 --- a/examples/example_primes.f90 +++ b/examples/example_primes.f90 @@ -18,6 +18,14 @@ implicit none private public find_fit +interface + function expr_interface(x, pars) result(y) + use types, only: dp + implicit none + real(dp), intent(in) :: x(:), pars(:) + real(dp) :: y(size(x)) + end function +end interface contains subroutine find_fit(data_x, data_y, expr, pars) @@ -27,15 +35,8 @@ subroutine find_fit(data_x, data_y, expr, pars) ! array 'x'. The arrays 'data_x' and 'data_y' must have the same ! length. real(dp), intent(in) :: data_x(:), data_y(:) -interface - function expr(x, pars) result(y) - use types, only: dp - implicit none - real(dp), intent(in) :: x(:), pars(:) - real(dp) :: y(size(x)) - end function -end interface real(dp), intent(inout) :: pars(:) +procedure(expr_interface) :: expr real(dp) :: tol, fvec(size(data_x)) integer :: iwa(size(pars)), info, m, n
This is resolved with the refactoring of the examples.
Seems like the Intel compiler can almost compile minpack, except for one of the examples
But passes with a small workaround