[testsuite] Fix false Fortran regressions with recent gcc

Message ID 20160213203716.GA22912@host1.jankratochvil.net
State New, archived
Headers

Commit Message

Jan Kratochvil Feb. 13, 2016, 8:37 p.m. UTC
  Hi,

gcc-4.9.2-6.fc21.x86_64 -> gcc-5.3.1-2.fc23.x86_64

-PASS: gdb.fortran/vla-ptype.exp: ptype pvla not initialized
+FAIL: gdb.fortran/vla-ptype.exp: ptype pvla not initialized
-PASS: gdb.fortran/vla-history.exp: print vla1 allocated
+FAIL: gdb.fortran/vla-history.exp: print vla1 allocated
-PASS: gdb.fortran/vla-history.exp: print $2
+FAIL: gdb.fortran/vla-history.exp: print $2
-PASS: gdb.fortran/vla-value.exp: print undefined pvla
+FAIL: gdb.fortran/vla-value.exp: print undefined pvla
-PASS: gdb.fortran/vla-value.exp: print non-associated &pvla
+FAIL: gdb.fortran/vla-value.exp: print non-associated &pvla
-PASS: gdb.fortran/vla-value.exp: print undefined pvla(1,3,8)
+FAIL: gdb.fortran/vla-value.exp: print undefined pvla(1,3,8)

These issues get fixed (or removed if no longer applicable) by attached patch.

It is based on Googled:
	http://www.cs.rpi.edu/~szymansk/OOF90/bugs.html#5
	When a pointer is declared its status is undefined, and cannot be
	safely queried with the associated intrinsic.
	-> nullify(VARNAME)
+
	https://software.intel.com/en-us/forums/intel-fortran-compiler-for-linux-and-mac-os-x/topic/268786
	ALLOCATE is not supposed to initialize the array.
	-> Remove checks like an initial print is: \\( *0, *0, *0...\\)

These regressions remain:
	-PASS: gdb.fortran/library-module.exp: print var_i in lib
	+FAIL: gdb.fortran/library-module.exp: print var_i in lib
	-PASS: gdb.fortran/library-module.exp: print var_i in main
	+FAIL: gdb.fortran/library-module.exp: print var_i in main
I believe it is more a GDB bug (in a code contributed by me), filed:
	gdb.fortran/library-module.exp false regression on GCC upgrade
	https://sourceware.org/bugzilla/show_bug.cgi?id=19635

OK for check-in?


Thanks,
Jan
gdb/testsuite/ChangeLog
2016-02-13  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix compatibility with recent gfortran-5.3.1.
	* gdb.fortran/vla-history.exp (print vla1 allocated)
	(print vla2 allocated, print $2, print $3): Remove
	(print $4): Rename to ...
	(print $2): ... here.
	(print $9): Rename to ...
	(print $5): ... here.
	(print $10): Rename to ...
	(print $6): ... here.
	* gdb.fortran/vla.f90: Add pvla initialization.
  

Comments

Joel Brobecker Feb. 14, 2016, 4:36 a.m. UTC | #1
> gdb/testsuite/ChangeLog
> 2016-02-13  Jan Kratochvil  <jan.kratochvil@redhat.com>
> 
> 	Fix compatibility with recent gfortran-5.3.1.
> 	* gdb.fortran/vla-history.exp (print vla1 allocated)
> 	(print vla2 allocated, print $2, print $3): Remove
> 	(print $4): Rename to ...
> 	(print $2): ... here.
> 	(print $9): Rename to ...
> 	(print $5): ... here.
> 	(print $10): Rename to ...
> 	(print $6): ... here.
> 	* gdb.fortran/vla.f90: Add pvla initialization.

Thanks for doing this. Looks good to me, so go ahead and push.
But adding Christoph in Cc, in case he has any feedback on this
patch.
  
Jan Kratochvil Feb. 14, 2016, 8:26 a.m. UTC | #2
On Sun, 14 Feb 2016 05:36:52 +0100, Joel Brobecker wrote:
> Thanks for doing this. Looks good to me, so go ahead and push.

Checked in:
	ba881f505ba211ffee59e68617cd1a02a7b4737b
And for 7.11:
	46e42194d8d2585b6860b1267c2b3e24ba9c589c


Jan
  

Patch

diff --git a/gdb/testsuite/gdb.fortran/vla-history.exp b/gdb/testsuite/gdb.fortran/vla-history.exp
index 315c61a..1478e6b 100644
--- a/gdb/testsuite/gdb.fortran/vla-history.exp
+++ b/gdb/testsuite/gdb.fortran/vla-history.exp
@@ -32,10 +32,6 @@  gdb_test "print vla1" " = <not allocated>" "print non-allocated vla1"
 
 gdb_breakpoint [gdb_get_line_number "vla2-allocated"]
 gdb_continue_to_breakpoint "vla2-allocated"
-gdb_test "print vla1" " = \\( *\\( *\\( *0, *0, *0,\[()0, .\]*\\)" \
-  "print vla1 allocated"
-gdb_test "print vla2" " = \\( *\\( *\\( *0, *0, *0,\[()0, .\]*\\)" \
-  "print vla2 allocated"
 
 gdb_breakpoint [gdb_get_line_number "vla1-filled"]
 gdb_continue_to_breakpoint "vla1-filled"
@@ -45,12 +41,8 @@  gdb_test "print vla1" \
 
 # Try to access history values for full vla prints.
 gdb_test "print \$1" " = <not allocated>" "print \$1"
-gdb_test "print \$2" " = \\( *\\( *\\( *0, *0, *0,\[()0, .\]*\\)" \
-  "print \$2"
-gdb_test "print \$3" " = \\( *\\( *\\( *0, *0, *0,\[()0, .\]*\\)" \
-  "print \$3"
-gdb_test "print \$4" \
-  " = \\( *\\( *\\( *1311, *1311, *1311,\[()1311, .\]*\\)" "print \$4"
+gdb_test "print \$2" \
+  " = \\( *\\( *\\( *1311, *1311, *1311,\[()1311, .\]*\\)" "print \$2"
 
 gdb_breakpoint [gdb_get_line_number "vla2-filled"]
 gdb_continue_to_breakpoint "vla2-filled"
@@ -58,5 +50,5 @@  gdb_test "print vla2(1,43,20)" " = 1311" "print vla2(1,43,20)"
 gdb_test "print vla1(1,3,8)" " = 1001" "print vla2(1,3,8)"
 
 # Try to access history values for vla values.
-gdb_test "print \$9" " = 1311" "print \$9"
-gdb_test "print \$10" " = 1001" "print \$10"
+gdb_test "print \$5" " = 1311" "print \$5"
+gdb_test "print \$6" " = 1001" "print \$6"
diff --git a/gdb/testsuite/gdb.fortran/vla.f90 b/gdb/testsuite/gdb.fortran/vla.f90
index 6a96635..c76d24c 100644
--- a/gdb/testsuite/gdb.fortran/vla.f90
+++ b/gdb/testsuite/gdb.fortran/vla.f90
@@ -19,6 +19,7 @@  program vla
   real, target, allocatable :: vla3 (:, :)
   real, pointer :: pvla (:, :, :)
   logical :: l
+  nullify(pvla)
 
   allocate (vla1 (10,10,10))          ! vla1-init
   l = allocated(vla1)