[testsuite] Fortran: allocate()d memory is uninitialized
Commit Message
Hi,
allocate (vla1 (5)) ! vla1-not-allocated
l = allocated(vla1) ! vla1-allocated <------------------
Expecting: ^(510-data-evaluate-expression vla1[^M
]+)?(510\^done,value="\(0, 0, 0, 0, 0\)"[^M
]+[(]gdb[)] ^M
[ ]*)
510-data-evaluate-expression vla1^M
510^done,value="(1.82987403e-09, 7.8472714e-44, 1.82987403e-09, 7.8472714e-44, 2.67929926e+20)"^M
(gdb) ^M
FAIL: gdb.mi/mi-vla-fortran.exp: evaluate allocated vla
gcc-4.9.2-6.fc21.x86_64
I think some older gfortran did initialize allocated memory but that is an
unspecified behavior. I haven't found any initialization mentioned
in Fortran 90 standard (draft) and it is also clearly stated here:
https://software.intel.com/en-us/forums/intel-fortran-compiler-for-linux-and-mac-os-x/topic/268786
Initialization to 0 of allocated arrays (of integers) is an
implementation issue. i.e. do not rely on it.
OK for check-in?
Jan
gdb/testsuite/ChangeLog
2015-11-03 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.mi/mi-vla-fortran.exp (evaluate allocated vla): Remove test.
Comments
On Tue, Nov 03, 2015 at 09:22:14PM +0100, Jan Kratochvil wrote:
> Hi,
>
> allocate (vla1 (5)) ! vla1-not-allocated
> l = allocated(vla1) ! vla1-allocated <------------------
>
> Expecting: ^(510-data-evaluate-expression vla1[^M
> ]+)?(510\^done,value="\(0, 0, 0, 0, 0\)"[^M
> ]+[(]gdb[)] ^M
> [ ]*)
> 510-data-evaluate-expression vla1^M
> 510^done,value="(1.82987403e-09, 7.8472714e-44, 1.82987403e-09, 7.8472714e-44, 2.67929926e+20)"^M
> (gdb) ^M
> FAIL: gdb.mi/mi-vla-fortran.exp: evaluate allocated vla
>
> gcc-4.9.2-6.fc21.x86_64
>
> I think some older gfortran did initialize allocated memory but that is an
> unspecified behavior. I haven't found any initialization mentioned
> in Fortran 90 standard (draft) and it is also clearly stated here:
> https://software.intel.com/en-us/forums/intel-fortran-compiler-for-linux-and-mac-os-x/topic/268786
> Initialization to 0 of allocated arrays (of integers) is an
> implementation issue. i.e. do not rely on it.
>
> OK for check-in?
>
>
> Jan
> gdb/testsuite/ChangeLog
> 2015-11-03 Jan Kratochvil <jan.kratochvil@redhat.com>
>
> * gdb.mi/mi-vla-fortran.exp (evaluate allocated vla): Remove test.
No objection, but I am wondering if it might be better to just
relax instead the regexp to allow any number rather than just
remove the test altogether. The test allows us to verify that,
as soon as we're past the "allocate" call, we no longer say "not
allocated".
Your choice, though. I really don't know Fortran at all...
@@ -68,8 +68,6 @@ mi_create_breakpoint "-t vla.f90:$bp_lineno" 2 "del" "vla" ".*vla.f90" \
mi_run_cmd
mi_expect_stop "breakpoint-hit" "vla" "" ".*vla.f90" "$bp_lineno" \
{ "" "disp=\"del\"" } "run to breakpoint at line $bp_lineno"
-mi_gdb_test "510-data-evaluate-expression vla1" \
- "510\\^done,value=\"\\(0, 0, 0, 0, 0\\)\"" "evaluate allocated vla"
mi_create_varobj_checked vla1_allocated vla1 "real\\\(kind=4\\\) \\\(5\\\)" \
"create local variable vla1_allocated"