Skip to content

Commit a12c961

Browse files
committed
eigenvalues, cholesky: gcc-15 fix
1 parent 3bb74d6 commit a12c961

File tree

2 files changed

+49
-11
lines changed

2 files changed

+49
-11
lines changed

test/linalg/test_linalg_cholesky.fypp

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ module test_linalg_cholesky
2222
allocate(tests(0))
2323

2424
#:for rk,rt,ri in RC_KINDS_TYPES
25-
tests = [tests,new_unittest("least_cholesky_${ri}$",test_cholesky_${ri}$)]
25+
call add_test(tests,new_unittest("least_cholesky_${ri}$",test_cholesky_${ri}$))
2626
#:endfor
2727

2828
end subroutine test_cholesky_factorization
@@ -66,6 +66,26 @@ module test_linalg_cholesky
6666

6767
#:endfor
6868

69+
! gcc-15 bugfix utility
70+
subroutine add_test(tests,new_test)
71+
type(unittest_type), allocatable, intent(inout) :: tests(:)
72+
type(unittest_type), intent(in) :: new_test
73+
74+
integer :: n
75+
type(unittest_type), allocatable :: new_tests(:)
76+
77+
if (allocated(tests)) then
78+
n = size(tests)
79+
else
80+
n = 0
81+
end if
82+
83+
allocate(new_tests(n+1))
84+
if (n>0) new_tests(1:n) = tests(1:n)
85+
new_tests(1+n) = new_test
86+
call move_alloc(from=new_tests,to=tests)
87+
88+
end subroutine add_test
6989

7090
end module test_linalg_cholesky
7191

test/linalg/test_linalg_eigenvalues.fypp

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,17 @@ module test_linalg_eigenvalues
2121
allocate(tests(0))
2222

2323
#:for rk,rt,ri in REAL_KINDS_TYPES
24-
tests = [tests,new_unittest("test_eig_real_${ri}$",test_eig_real_${ri}$), &
25-
new_unittest("test_eigvals_identity_${ri}$",test_eigvals_identity_${ri}$), &
26-
new_unittest("test_eigvals_diagonal_B_${ri}$",test_eigvals_diagonal_B_${ri}$), &
27-
new_unittest("test_eigvals_nondiagonal_B_${ri}$",test_eigvals_nondiagonal_B_${ri}$), &
28-
new_unittest("test_eigh_real_${ri}$",test_eigh_real_${ri}$)]
24+
call add_test(tests,new_unittest("test_eig_real_${ri}$",test_eig_real_${ri}$))
25+
call add_test(tests,new_unittest("test_eigvals_identity_${ri}$",test_eigvals_identity_${ri}$))
26+
call add_test(tests,new_unittest("test_eigvals_diagonal_B_${ri}$",test_eigvals_diagonal_B_${ri}$))
27+
call add_test(tests,new_unittest("test_eigvals_nondiagonal_B_${ri}$",test_eigvals_nondiagonal_B_${ri}$))
28+
call add_test(tests,new_unittest("test_eigh_real_${ri}$",test_eigh_real_${ri}$))
2929
#: endfor
3030

3131
#:for ck,ct,ci in CMPLX_KINDS_TYPES
32-
tests = [tests,new_unittest("test_eig_complex_${ci}$",test_eig_complex_${ci}$), &
33-
new_unittest("test_eig_generalized_complex_${ci}$",test_eigvals_generalized_complex_${ci}$), &
34-
new_unittest("test_eig_issue_927_${ci}$",test_issue_927_${ci}$)]
32+
call add_test(tests,new_unittest("test_eig_complex_${ci}$",test_eig_complex_${ci}$))
33+
call add_test(tests,new_unittest("test_eig_generalized_complex_${ci}$",test_eigvals_generalized_complex_${ci}$))
34+
call add_test(tests,new_unittest("test_eig_issue_927_${ci}$",test_issue_927_${ci}$))
3535
#: endfor
3636

3737
end subroutine test_eig_eigh
@@ -347,8 +347,26 @@ module test_linalg_eigenvalues
347347

348348
#:endfor
349349

350-
351-
350+
! gcc-15 bugfix utility
351+
subroutine add_test(tests,new_test)
352+
type(unittest_type), allocatable, intent(inout) :: tests(:)
353+
type(unittest_type), intent(in) :: new_test
354+
355+
integer :: n
356+
type(unittest_type), allocatable :: new_tests(:)
357+
358+
if (allocated(tests)) then
359+
n = size(tests)
360+
else
361+
n = 0
362+
end if
363+
364+
allocate(new_tests(n+1))
365+
if (n>0) new_tests(1:n) = tests(1:n)
366+
new_tests(1+n) = new_test
367+
call move_alloc(from=new_tests,to=tests)
368+
369+
end subroutine add_test
352370

353371
end module test_linalg_eigenvalues
354372

0 commit comments

Comments
 (0)