diff options
author | Andrew Burgess <andrew.burgess@embecosm.com> | 2019-02-13 17:10:18 +0000 |
---|---|---|
committer | Andrew Burgess <andrew.burgess@embecosm.com> | 2019-04-30 10:10:24 +0100 |
commit | b6d03bb2b65ac5c919f1d08674bbaa2a9bfb2d0c (patch) | |
tree | ba4019eaf0e387569cb2f165b226b45140fff8c3 /gdb/testsuite | |
parent | 83228e93efa82f84a132f7cec44d0e760d4ad22b (diff) | |
download | gdb-b6d03bb2b65ac5c919f1d08674bbaa2a9bfb2d0c.zip gdb-b6d03bb2b65ac5c919f1d08674bbaa2a9bfb2d0c.tar.gz gdb-b6d03bb2b65ac5c919f1d08674bbaa2a9bfb2d0c.tar.bz2 |
gdb/fortran: Additional builtin procedures
Add some additional builtin procedures for Fortran, these are MOD,
CEILING, FLOOR, MODULO, and CMPLX.
gdb/ChangeLog:
* f-exp.y (BINOP_INTRINSIC): New token.
(exp): New parser rule handling BINOP_INTRINSIC.
(f77_keywords): Add new builtin procedures.
* f-lang.c (evaluate_subexp_f): Handle BINOP_MOD, UNOP_FORTRAN_CEILING,
UNOP_FORTRAN_FLOOR, BINOP_FORTRAN_MODULO, BINOP_FORTRAN_CMPLX.
(operator_length_f): Handle UNOP_FORTRAN_CEILING,
UNOP_FORTRAN_FLOOR, BINOP_FORTRAN_MODULO, BINOP_FORTRAN_CMPLX.
(print_unop_subexp_f): New function.
(print_binop_subexp_f): New function.
(print_subexp_f): Handle UNOP_FORTRAN_CEILING, UNOP_FORTRAN_FLOOR,
BINOP_FORTRAN_MODULO, BINOP_FORTRAN_CMPLX.
(dump_subexp_body_f): Likewise.
(operator_check_f): Likewise.
* fortran-operator.def: Add UNOP_FORTRAN_CEILING, UNOP_FORTRAN_FLOOR,
BINOP_FORTRAN_MODULO, BINOP_FORTRAN_CMPLX
gdb/testsuite/ChangeLog:
* gdb.fortran/intrinsics.exp: Extend to cover MOD, CEILING, FLOOR,
MODULO, CMPLX.
Diffstat (limited to 'gdb/testsuite')
-rw-r--r-- | gdb/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.fortran/intrinsics.exp | 35 |
2 files changed, 40 insertions, 0 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 6d9ac5a..7489ab9 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2019-04-30 Andrew Burgess <andrew.burgess@embecosm.com> + + * gdb.fortran/intrinsics.exp: Extend to cover MOD, CEILING, FLOOR, + MODULO, CMPLX. + 2019-04-29 Andrew Burgess <andrew.burgess@embecosm.com> Richard Bunt <richard.bunt@arm.com> diff --git a/gdb/testsuite/gdb.fortran/intrinsics.exp b/gdb/testsuite/gdb.fortran/intrinsics.exp index 00396c7..64d9e56 100644 --- a/gdb/testsuite/gdb.fortran/intrinsics.exp +++ b/gdb/testsuite/gdb.fortran/intrinsics.exp @@ -49,3 +49,38 @@ gdb_test "p abs (11)" " = 11" # rounding, which can vary. gdb_test "p abs (-9.1)" " = 9.$decimal" gdb_test "p abs (9.1)" " = 9.$decimal" + +# Test MOD + +gdb_test "p mod (3.0, 2.0)" " = 1" +gdb_test "ptype mod (3.0, 2.0)" "type = real\\*8" +gdb_test "p mod (2.0, 3.0)" " = 2" +gdb_test "p mod (8, 5)" " = 3" +gdb_test "ptype mod (8, 5)" "type = int" +gdb_test "p mod (-8, 5)" " = -3" +gdb_test "p mod (8, -5)" " = 3" +gdb_test "p mod (-8, -5)" " = -3" + +# Test CEILING + +gdb_test "p ceiling (3.7)" " = 4" +gdb_test "p ceiling (-3.7)" " = -3" + +# Test FLOOR + +gdb_test "p floor (3.7)" " = 3" +gdb_test "p floor (-3.7)" " = -4" + +# Test MODULO + +gdb_test "p MODULO (8,5)" " = 3" +gdb_test "ptype MODULO (8,5)" "type = int" +gdb_test "p MODULO (-8,5)" " = 2" +gdb_test "p MODULO (8,-5)" " = -2" +gdb_test "p MODULO (-8,-5)" " = -3" +gdb_test "p MODULO (3.0,2.0)" " = 1" +gdb_test "ptype MODULO (3.0,2.0)" "type = real\\*8" + +# Test CMPLX + +gdb_test "p CMPLX (4.1, 2.0)" " = \\(4.$decimal,2\\)" |