alloc_comp_auto_array_1.f90
来自「用于进行gcc测试」· F90 代码 · 共 43 行
F90
43 行
! { dg-do run }! Fix for PR29699 - see below for details.!! Contributed by Tobias Burnus <burnus@gcc.gnu.org>!PROGRAM vocabulary_word_count IMPLICIT NONE TYPE VARYING_STRING CHARACTER,DIMENSION(:),ALLOCATABLE :: chars ENDTYPE VARYING_STRING INTEGER :: list_size=200 call extend_lists2CONTAINS! First the original problem: vocab_swap not being referenced caused! an ICE because default initialization is used, which results in a! call to gfc_conv_variable, which calls gfc_get_symbol_decl. SUBROUTINE extend_lists1 type(VARYING_STRING),DIMENSION(list_size) :: vocab_swap ENDSUBROUTINE extend_lists1! Curing this then uncovered two more problems: If vocab_swap were! actually referenced, an ICE occurred in the gimplifier because! the declaration for this automatic array is presented as a! pointer to the array, rather than the array. Curing this allows! the code to compile but it bombed out at run time because the! malloc/free occurred in the wrong order with respect to the! nullify/deallocate of the allocatable components. SUBROUTINE extend_lists2 type(VARYING_STRING),DIMENSION(list_size) :: vocab_swap allocate (vocab_swap(1)%chars(10)) if (.not.allocated(vocab_swap(1)%chars)) call abort () if (allocated(vocab_swap(10)%chars)) call abort () ENDSUBROUTINE extend_lists2 ENDPROGRAM vocabulary_word_count
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?