[testsuite] Fortran: allocate()d memory is uninitialized

Message ID 20151103202214.GA30688@host1.jankratochvil.net
State New, archived
Headers

Commit Message

Jan Kratochvil Nov. 3, 2015, 8:22 p.m. UTC
  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

Joel Brobecker Nov. 4, 2015, 2:40 p.m. UTC | #1
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...
  

Patch

diff --git a/gdb/testsuite/gdb.mi/mi-vla-fortran.exp b/gdb/testsuite/gdb.mi/mi-vla-fortran.exp
index d191623..baee7f8 100644
--- a/gdb/testsuite/gdb.mi/mi-vla-fortran.exp
+++ b/gdb/testsuite/gdb.mi/mi-vla-fortran.exp
@@ -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"