gdb/fortran: add support for legacy .xor. operator

gfortran supports .xor. as an alias for .neqv., see:

  https://gcc.gnu.org/onlinedocs/gfortran/_002eXOR_002e-operator.html

this commit adds support for this operator to GDB.

gdb/ChangeLog:

	* f-exp.y (fortran_operators): Add ".xor.".

gdb/testsuite/ChangeLog:

	* gdb.fortran/dot-ops.exp (dot_operations): Test ".xor.".
This commit is contained in:
Andrew Burgess
2021-02-24 17:35:18 +00:00
parent bbaddd4bbe
commit 170f4b23b6
4 changed files with 17 additions and 0 deletions

View File

@ -1,3 +1,7 @@
2021-02-25 Andrew Burgess <andrew.burgess@embecosm.com>
* f-exp.y (fortran_operators): Add ".xor.".
2021-02-24 Tom de Vries <tdevries@suse.de> 2021-02-24 Tom de Vries <tdevries@suse.de>
PR symtab/27336 PR symtab/27336

View File

@ -982,6 +982,7 @@ static const struct token fortran_operators[] =
{ ".eq.", EQUAL, BINOP_END, false }, { ".eq.", EQUAL, BINOP_END, false },
{ ".eqv.", EQUAL, BINOP_END, false }, { ".eqv.", EQUAL, BINOP_END, false },
{ ".neqv.", NOTEQUAL, BINOP_END, false }, { ".neqv.", NOTEQUAL, BINOP_END, false },
{ ".xor.", NOTEQUAL, BINOP_END, false },
{ "==", EQUAL, BINOP_END, false }, { "==", EQUAL, BINOP_END, false },
{ ".ne.", NOTEQUAL, BINOP_END, false }, { ".ne.", NOTEQUAL, BINOP_END, false },
{ "/=", NOTEQUAL, BINOP_END, false }, { "/=", NOTEQUAL, BINOP_END, false },

View File

@ -1,3 +1,7 @@
2021-02-25 Andrew Burgess <andrew.burgess@embecosm.com>
* gdb.fortran/dot-ops.exp (dot_operations): Test ".xor.".
2021-02-24 Andrew Burgess <andrew.burgess@embecosm.com> 2021-02-24 Andrew Burgess <andrew.burgess@embecosm.com>
* gdb.base/sect-cmd.exp: Update expected results. * gdb.base/sect-cmd.exp: Update expected results.

View File

@ -31,6 +31,7 @@ proc test_dot_operations {} {
set not ".NOT." set not ".NOT."
set eqv ".EQV." set eqv ".EQV."
set neqv ".NEQV." set neqv ".NEQV."
set xor ".XOR."
set eq ".EQ." set eq ".EQ."
set ne ".NE." set ne ".NE."
set le ".LE." set le ".LE."
@ -45,6 +46,7 @@ proc test_dot_operations {} {
set not ".not." set not ".not."
set eqv ".eqv." set eqv ".eqv."
set neqv ".neqv." set neqv ".neqv."
set xor ".xor."
set eq ".eq." set eq ".eq."
set ne ".ne." set ne ".ne."
set le ".le." set le ".le."
@ -81,6 +83,12 @@ proc test_dot_operations {} {
gdb_test "p $false $neqv $true" " = .TRUE." gdb_test "p $false $neqv $true" " = .TRUE."
gdb_test "p $false $neqv $false" " = .FALSE." gdb_test "p $false $neqv $false" " = .FALSE."
# And the legacy alias for NEQV, XOR
gdb_test "p $true $xor $true" " = .FALSE."
gdb_test "p $true $xor $false" " = .TRUE."
gdb_test "p $false $xor $true" " = .TRUE."
gdb_test "p $false $xor $false" " = .FALSE."
# Arithmetic EQ # Arithmetic EQ
gdb_test "p 5 $eq 4" " = .FALSE." gdb_test "p 5 $eq 4" " = .FALSE."
gdb_test "p 4 $eq 4" " = .TRUE." gdb_test "p 4 $eq 4" " = .TRUE."