[testsuite] Fix false Fortran regressions with recent gcc
Commit Message
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
> 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.
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
@@ -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"
@@ -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)