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 + -
显示快捷键?