Implement fortran_allocated_operation

This implements the Fortran ALLOCATED intrinsic.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

	* f-exp.h (eval_op_f_allocated): Declare.
	(fortran_allocated_operation): New typedef.
	* f-lang.c (eval_op_f_allocated): No longer static.
This commit is contained in:
Tom Tromey 2021-03-08 07:27:57 -07:00
parent eb4c927182
commit f403a4e4a5
3 changed files with 15 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2021-03-08 Tom Tromey <tom@tromey.com>
* f-exp.h (eval_op_f_allocated): Declare.
(fortran_allocated_operation): New typedef.
* f-lang.c (eval_op_f_allocated): No longer static.
2021-03-08 Tom Tromey <tom@tromey.com>
* f-lang.c (eval_op_f_associated): New functions.

View File

@ -1,6 +1,6 @@
/* Definitions for Fortran expressions
Copyright (C) 2020 Free Software Foundation, Inc.
Copyright (C) 2020, 2021 Free Software Foundation, Inc.
This file is part of GDB.
@ -68,6 +68,11 @@ extern struct value *eval_op_f_associated (struct type *expect_type,
enum exp_opcode opcode,
struct value *arg1,
struct value *arg2);
extern struct value * eval_op_f_allocated (struct type *expect_type,
struct expression *exp,
enum noside noside,
enum exp_opcode op,
struct value *arg1);
namespace expr
{
@ -79,6 +84,8 @@ using fortran_floor_operation = unop_operation<UNOP_FORTRAN_FLOOR,
eval_op_f_floor>;
using fortran_kind_operation = unop_operation<UNOP_FORTRAN_KIND,
eval_op_f_kind>;
using fortran_allocated_operation = unop_operation<UNOP_FORTRAN_ALLOCATED,
eval_op_f_allocated>;
using fortran_mod_operation = binop_operation<BINOP_MOD, eval_op_f_mod>;
using fortran_modulo_operation = binop_operation<BINOP_FORTRAN_MODULO,

View File

@ -1209,7 +1209,7 @@ eval_op_f_kind (struct type *expect_type, struct expression *exp,
/* A helper function for UNOP_FORTRAN_ALLOCATED. */
static struct value *
struct value *
eval_op_f_allocated (struct type *expect_type, struct expression *exp,
enum noside noside, enum exp_opcode op,
struct value *arg1)