Fortran: allocate()d memory is uninitialized
authorJan Kratochvil <jan.kratochvil@redhat.com>
Wed, 4 Nov 2015 14:52:41 +0000 (15:52 +0100)
committerJan Kratochvil <jan.kratochvil@redhat.com>
Wed, 4 Nov 2015 14:52:41 +0000 (15:52 +0100)
  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.

Joel Brobecker wrote:
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".

gdb/testsuite/ChangeLog
2015-11-03  Jan Kratochvil  <jan.kratochvil@redhat.com>
    Joel Brobecker  <brobecker@adacore.com>

* gdb.mi/mi-vla-fortran.exp (evaluate allocated vla): Permit any data.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.mi/mi-vla-fortran.exp

index 6d70c76438474eba087b45c76c83776bc6d34b66..3476c864dd3de6355bdb0c0b74ac6c682883c84d 100644 (file)
@@ -1,3 +1,8 @@
+2015-11-03  Jan Kratochvil  <jan.kratochvil@redhat.com>
+           Joel Brobecker  <brobecker@adacore.com>
+
+       * gdb.mi/mi-vla-fortran.exp (evaluate allocated vla): Permit any data.
+
 2015-11-04  Marcin Koƛcielnicki  <koriakin@0x04.net>
 
        * gdb.reverse/s390-mvcle.c: New test.
index d1916237dfc4863eac35765551a60224711cb020..8902ecbc9cf68b17c4c1db2f5f7307f4ff2afc19 100644 (file)
@@ -69,7 +69,7 @@ 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"
+  "510\\^done,value=\"\\(.*\\)\"" "evaluate allocated vla"
 
 mi_create_varobj_checked vla1_allocated vla1 "real\\\(kind=4\\\) \\\(5\\\)" \
   "create local variable vla1_allocated"