used_interface_ref.f90
来自「用于进行gcc测试」· F90 代码 · 共 48 行
F90
48 行
! { dg-do run }! Tests the fix for PR26393, in which an ICE would occur in trans-decl.c! (gfc_get_symbol_decl) because anzKomponenten is not referenced in the! interface for solveCConvert. The solution was to assert that the symbol! is either referenced or in an interface body.!! Based on the testcase in the PR.! MODULE MODULE_CONC INTEGER, SAVE :: anzKomponenten = 2 END MODULE MODULE_CONC MODULE MODULE_THERMOCALC INTERFACE FUNCTION solveCConvert () USE MODULE_CONC, ONLY: anzKomponenten REAL :: solveCConvert(1:anzKomponenten) END FUNCTION solveCConvert END INTERFACE END MODULE MODULE_THERMOCALC SUBROUTINE outDiffKoeff USE MODULE_CONC USE MODULE_THERMOCALC REAL :: buffer_conc(1:anzKomponenten) buffer_conc = solveCConvert () if (any(buffer_conc .ne. (/(real(i), i = 1, anzKomponenten)/))) & call abort () END SUBROUTINE outDiffKoeff program missing_ref USE MODULE_CONC call outDiffKoeff! Now set anzKomponenten to a value that would cause a segfault if! buffer_conc and solveCConvert did not have the correct allocation! of memory. anzKomponenten = 5000 call outDiffKoeff end program missing_ref FUNCTION solveCConvert () USE MODULE_CONC, ONLY: anzKomponenten REAL :: solveCConvert(1:anzKomponenten) solveCConvert = (/(real(i), i = 1, anzKomponenten)/) END FUNCTION solveCConvert! { dg-final { cleanup-modules "MODULE_CONC MODULE_THERMOCALC" } }
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?