Commit e2cad04b by Richard Henderson Committed by Richard Henderson

Make-lang.in (fortran/f95-lang.o): Update dependencies.

        * Make-lang.in (fortran/f95-lang.o): Update dependencies.
        (fortran/trans-decl.o, fortran/trans-types.o): Likewise.
        * gfortran.h (gfc_integer_info): Add c_char, c_short, c_int,
        c_long, c_long_long.
        (gfc_logical_info): Add c_bool.
        (gfc_real_info): Add mode_precision, c_float, c_double, c_long_double.
        * trans-array.c (gfc_array_allocate): Use TYPE_PRECISION
        rather than gfc_int[48]_type_node for allocate choice.
        * trans-decl.c (gfc_build_intrinsic_function_decls): Cache
        local copies of some kind type nodes.
        (gfc_build_builtin_function_decls): Likewise.
        * trans-expr.c (gfc_conv_power_op): Likewise.
        * trans-intrinsic.c (gfc_conv_intrinsic_index,
        gfc_conv_intrinsic_scan, gfc_conv_intrinsic_verify,
        gfc_conv_intrinsic_trim, gfc_conv_intrinsic_repeat): Likewise.
        * trans-stmt.c (gfc_trans_pause, gfc_trans_stop,
        gfc_trans_character_select, gfc_trans_allocate): Likewise.
        * trans-io.c (gfc_pint4_type_node): Move into ...
        (gfc_build_io_library_fndecls): ... here.  Cache local copies of
        some kind type nodes.
        * trans-types.c (gfc_type_nodes): Remove.
        (gfc_character1_type_node, gfc_strlen_type_node): New.
        (gfc_integer_types, gfc_logical_types): New.
        (gfc_real_types, gfc_complex_types): New.
        (gfc_init_kinds): Fill in real mode_precision.
        (gfc_build_int_type, gfc_build_real_type): New.
        (gfc_build_complex_type, gfc_build_logical_type): New.
        (c_size_t_size): New.
        (gfc_init_types): Loop over kinds.
        (gfc_get_int_type, gfc_get_real_type): Use gfc_validate_kind.
        (gfc_get_complex_type, gfc_get_logical_type): Likewise.
        (gfc_get_character_type_len): Likewise.
        (gfc_type_for_size): Loop over kinds; use a reduced set of
        unsigned type nodes.
        (gfc_type_for_mode): Loop over kinds.
        (gfc_signed_or_unsigned_type): Use gfc_type_for_size.
        (gfc_unsigned_type, gfc_signed_type): Use gfc_signed_or_unsigned_type.
        * trans-types.h (F95_INT1_TYPE, F95_INT2_TYPE, F95_INT4_TYPE,
        F95_INT8_TYPE, F95_INT16_TYPE, F95_REAL4_TYPE, F95_REAL8_TYPE,
        F95_REAl16_TYPE, F95_COMPLEX4_TYPE, F95_COMPLEX8_TYPE,
        F95_COMPLEX16_TYPE, F95_LOGICAL1_TYPE, F95_LOGICAL2_TYPE,
        F95_LOGICAL4_TYPE, F95_LOGICAL8_TYPE, F95_LOGICAL16_TYPE,
        F95_CHARACTER1_TYPE, NUM_F95_TYPES, gfc_type_nodes,
        gfc_int1_type_node, gfc_int2_type_node, gfc_int4_type_node,
        gfc_int8_type_node, gfc_int16_type_node, gfc_real4_type_node,
        gfc_real8_type_node, gfc_real16_type_node, gfc_complex4_type_node,
        gfc_complex8_type_node, gfc_complex16_type_node,
        gfc_logical1_type_node, gfc_logical2_type_node,
        gfc_logical4_type_node, gfc_logical8_type_node,
        gfc_logical16_type_node, gfc_strlen_kind): Remove.
        (gfc_character1_type_node): Turn in to a variable.
        (gfc_strlen_type_node): Likewise.

From-SVN: r86806
parent bc482be4
2004-08-30 Richard Henderson <rth@redhat.com>
* Make-lang.in (fortran/f95-lang.o): Update dependencies.
(fortran/trans-decl.o, fortran/trans-types.o): Likewise.
* gfortran.h (gfc_integer_info): Add c_char, c_short, c_int,
c_long, c_long_long.
(gfc_logical_info): Add c_bool.
(gfc_real_info): Add mode_precision, c_float, c_double, c_long_double.
* trans-array.c (gfc_array_allocate): Use TYPE_PRECISION
rather than gfc_int[48]_type_node for allocate choice.
* trans-decl.c (gfc_build_intrinsic_function_decls): Cache
local copies of some kind type nodes.
(gfc_build_builtin_function_decls): Likewise.
* trans-expr.c (gfc_conv_power_op): Likewise.
* trans-intrinsic.c (gfc_conv_intrinsic_index,
gfc_conv_intrinsic_scan, gfc_conv_intrinsic_verify,
gfc_conv_intrinsic_trim, gfc_conv_intrinsic_repeat): Likewise.
* trans-stmt.c (gfc_trans_pause, gfc_trans_stop,
gfc_trans_character_select, gfc_trans_allocate): Likewise.
* trans-io.c (gfc_pint4_type_node): Move into ...
(gfc_build_io_library_fndecls): ... here. Cache local copies of
some kind type nodes.
* trans-types.c (gfc_type_nodes): Remove.
(gfc_character1_type_node, gfc_strlen_type_node): New.
(gfc_integer_types, gfc_logical_types): New.
(gfc_real_types, gfc_complex_types): New.
(gfc_init_kinds): Fill in real mode_precision.
(gfc_build_int_type, gfc_build_real_type): New.
(gfc_build_complex_type, gfc_build_logical_type): New.
(c_size_t_size): New.
(gfc_init_types): Loop over kinds.
(gfc_get_int_type, gfc_get_real_type): Use gfc_validate_kind.
(gfc_get_complex_type, gfc_get_logical_type): Likewise.
(gfc_get_character_type_len): Likewise.
(gfc_type_for_size): Loop over kinds; use a reduced set of
unsigned type nodes.
(gfc_type_for_mode): Loop over kinds.
(gfc_signed_or_unsigned_type): Use gfc_type_for_size.
(gfc_unsigned_type, gfc_signed_type): Use gfc_signed_or_unsigned_type.
* trans-types.h (F95_INT1_TYPE, F95_INT2_TYPE, F95_INT4_TYPE,
F95_INT8_TYPE, F95_INT16_TYPE, F95_REAL4_TYPE, F95_REAL8_TYPE,
F95_REAl16_TYPE, F95_COMPLEX4_TYPE, F95_COMPLEX8_TYPE,
F95_COMPLEX16_TYPE, F95_LOGICAL1_TYPE, F95_LOGICAL2_TYPE,
F95_LOGICAL4_TYPE, F95_LOGICAL8_TYPE, F95_LOGICAL16_TYPE,
F95_CHARACTER1_TYPE, NUM_F95_TYPES, gfc_type_nodes,
gfc_int1_type_node, gfc_int2_type_node, gfc_int4_type_node,
gfc_int8_type_node, gfc_int16_type_node, gfc_real4_type_node,
gfc_real8_type_node, gfc_real16_type_node, gfc_complex4_type_node,
gfc_complex8_type_node, gfc_complex16_type_node,
gfc_logical1_type_node, gfc_logical2_type_node,
gfc_logical4_type_node, gfc_logical8_type_node,
gfc_logical16_type_node, gfc_strlen_kind): Remove.
(gfc_character1_type_node): Turn in to a variable.
(gfc_strlen_type_node): Likewise.
2004-08-30 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de> 2004-08-30 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de>
* gfortran.h (gfc_namespace): Add new field is_block_data. * gfortran.h (gfc_namespace): Add new field is_block_data.
......
...@@ -278,14 +278,17 @@ $(F95_PARSER_OBJS): fortran/gfortran.h fortran/intrinsic.h fortran/match.h \ ...@@ -278,14 +278,17 @@ $(F95_PARSER_OBJS): fortran/gfortran.h fortran/intrinsic.h fortran/match.h \
GFORTRAN_TRANS_DEPS = fortran/gfortran.h fortran/intrinsic.h fortran/trans-array.h \ GFORTRAN_TRANS_DEPS = fortran/gfortran.h fortran/intrinsic.h fortran/trans-array.h \
fortran/trans-const.h fortran/trans-const.h fortran/trans.h \ fortran/trans-const.h fortran/trans-const.h fortran/trans.h \
fortran/trans-stmt.h fortran/trans-types.h \ fortran/trans-stmt.h fortran/trans-types.h \
$(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(TM_H) coretypes.h $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(TM_H) coretypes.h $(GGC_H)
fortran/f95-lang.o: $(GFORTRAN_TRANS_DEPS) fortran/mathbuiltins.def \ fortran/f95-lang.o: $(GFORTRAN_TRANS_DEPS) fortran/mathbuiltins.def \
gt-fortran-f95-lang.h gtype-fortran.h cgraph.h gt-fortran-f95-lang.h gtype-fortran.h cgraph.h $(TARGET_H)
fortran/convert.o: $(GFORTRAN_TRANS_DEPS) fortran/convert.o: $(GFORTRAN_TRANS_DEPS)
fortran/trans.o: $(GFORTRAN_TRANS_DEPS) fortran/trans.o: $(GFORTRAN_TRANS_DEPS)
fortran/trans-decl.o: $(GFORTRAN_TRANS_DEPS) gt-fortran-trans-decl.h cgraph.h fortran/trans-decl.o: $(GFORTRAN_TRANS_DEPS) gt-fortran-trans-decl.h \
fortran/trans-types.o: $(GFORTRAN_TRANS_DEPS) gt-fortran-trans-types.h cgraph.h $(TARGET_H) function.h errors.h $(FLAGS_H) tree-gimple.h \
tree-dump.h
fortran/trans-types.o: $(GFORTRAN_TRANS_DEPS) gt-fortran-trans-types.h \
real.h toplev.h $(TARGET_H)
fortran/trans-const.o: $(GFORTRAN_TRANS_DEPS) fortran/trans-const.o: $(GFORTRAN_TRANS_DEPS)
fortran/trans-expr.o: $(GFORTRAN_TRANS_DEPS) fortran/trans-expr.o: $(GFORTRAN_TRANS_DEPS)
fortran/trans-stmt.o: $(GFORTRAN_TRANS_DEPS) fortran/trans-stmt.o: $(GFORTRAN_TRANS_DEPS)
......
...@@ -1090,12 +1090,18 @@ gfc_expr; ...@@ -1090,12 +1090,18 @@ gfc_expr;
typedef struct typedef struct
{ {
int kind, radix, digits, bit_size; /* Values really representable by the target. */
mpz_t huge, min_int, max_int;
int range;
mpz_t huge; int kind, radix, digits, bit_size, range;
mpz_t min_int, max_int; /* Values really representable by the target */ /* True if the C type of the given name maps to this precision.
Note that more than one bit can be set. */
unsigned int c_char : 1;
unsigned int c_short : 1;
unsigned int c_int : 1;
unsigned int c_long : 1;
unsigned int c_long_long : 1;
} }
gfc_integer_info; gfc_integer_info;
...@@ -1106,6 +1112,8 @@ typedef struct ...@@ -1106,6 +1112,8 @@ typedef struct
{ {
int kind, bit_size; int kind, bit_size;
/* True if the C++ type bool, C99 type _Bool, maps to this precision. */
unsigned int c_bool : 1;
} }
gfc_logical_info; gfc_logical_info;
...@@ -1114,10 +1122,18 @@ extern gfc_logical_info gfc_logical_kinds[]; ...@@ -1114,10 +1122,18 @@ extern gfc_logical_info gfc_logical_kinds[];
typedef struct typedef struct
{ {
mpfr_t epsilon, huge, tiny;
int kind, radix, digits, min_exponent, max_exponent; int kind, radix, digits, min_exponent, max_exponent;
int range, precision; int range, precision;
mpfr_t epsilon, huge, tiny;
/* The precision of the type as reported by GET_MODE_PRECISION. */
int mode_precision;
/* True if the C type of the given name maps to this precision.
Note that more than one bit can be set. */
unsigned int c_float : 1;
unsigned int c_double : 1;
unsigned int c_long_double : 1;
} }
gfc_real_info; gfc_real_info;
......
...@@ -2784,9 +2784,9 @@ gfc_array_allocate (gfc_se * se, gfc_ref * ref, tree pstat) ...@@ -2784,9 +2784,9 @@ gfc_array_allocate (gfc_se * se, gfc_ref * ref, tree pstat)
pointer = gfc_build_addr_expr (NULL, tmp); pointer = gfc_build_addr_expr (NULL, tmp);
pointer = gfc_evaluate_now (pointer, &se->pre); pointer = gfc_evaluate_now (pointer, &se->pre);
if (gfc_array_index_type == gfc_int4_type_node) if (TYPE_PRECISION (gfc_array_index_type) == 32)
allocate = gfor_fndecl_allocate; allocate = gfor_fndecl_allocate;
else if (gfc_array_index_type == gfc_int8_type_node) else if (TYPE_PRECISION (gfc_array_index_type) == 64)
allocate = gfor_fndecl_allocate64; allocate = gfor_fndecl_allocate64;
else else
abort (); abort ();
......
...@@ -1559,6 +1559,14 @@ gfc_build_library_function_decl (tree name, tree rettype, int nargs, ...) ...@@ -1559,6 +1559,14 @@ gfc_build_library_function_decl (tree name, tree rettype, int nargs, ...)
static void static void
gfc_build_intrinsic_function_decls (void) gfc_build_intrinsic_function_decls (void)
{ {
tree gfc_int4_type_node = gfc_get_int_type (4);
tree gfc_int8_type_node = gfc_get_int_type (8);
tree gfc_logical4_type_node = gfc_get_logical_type (4);
tree gfc_real4_type_node = gfc_get_real_type (4);
tree gfc_real8_type_node = gfc_get_real_type (8);
tree gfc_complex4_type_node = gfc_get_complex_type (4);
tree gfc_complex8_type_node = gfc_get_complex_type (8);
/* String functions. */ /* String functions. */
gfor_fndecl_copy_string = gfor_fndecl_copy_string =
gfc_build_library_function_decl (get_identifier (PREFIX("copy_string")), gfc_build_library_function_decl (get_identifier (PREFIX("copy_string")),
...@@ -1738,6 +1746,10 @@ gfc_build_intrinsic_function_decls (void) ...@@ -1738,6 +1746,10 @@ gfc_build_intrinsic_function_decls (void)
void void
gfc_build_builtin_function_decls (void) gfc_build_builtin_function_decls (void)
{ {
tree gfc_int4_type_node = gfc_get_int_type (4);
tree gfc_int8_type_node = gfc_get_int_type (8);
tree gfc_logical4_type_node = gfc_get_logical_type (4);
gfor_fndecl_internal_malloc = gfor_fndecl_internal_malloc =
gfc_build_library_function_decl (get_identifier (PREFIX("internal_malloc")), gfc_build_library_function_decl (get_identifier (PREFIX("internal_malloc")),
pvoid_type_node, 1, gfc_int4_type_node); pvoid_type_node, 1, gfc_int4_type_node);
......
...@@ -553,6 +553,7 @@ gfc_conv_cst_int_power (gfc_se * se, tree lhs, tree rhs) ...@@ -553,6 +553,7 @@ gfc_conv_cst_int_power (gfc_se * se, tree lhs, tree rhs)
static void static void
gfc_conv_power_op (gfc_se * se, gfc_expr * expr) gfc_conv_power_op (gfc_se * se, gfc_expr * expr)
{ {
tree gfc_int4_type_node;
int kind; int kind;
int ikind; int ikind;
gfc_se lse; gfc_se lse;
...@@ -573,6 +574,8 @@ gfc_conv_power_op (gfc_se * se, gfc_expr * expr) ...@@ -573,6 +574,8 @@ gfc_conv_power_op (gfc_se * se, gfc_expr * expr)
if (gfc_conv_cst_int_power (se, lse.expr, rse.expr)) if (gfc_conv_cst_int_power (se, lse.expr, rse.expr))
return; return;
gfc_int4_type_node = gfc_get_int_type (4);
kind = expr->op1->ts.kind; kind = expr->op1->ts.kind;
switch (expr->op2->ts.type) switch (expr->op2->ts.type)
{ {
......
...@@ -1945,6 +1945,7 @@ gfc_conv_intrinsic_len_trim (gfc_se * se, gfc_expr * expr) ...@@ -1945,6 +1945,7 @@ gfc_conv_intrinsic_len_trim (gfc_se * se, gfc_expr * expr)
static void static void
gfc_conv_intrinsic_index (gfc_se * se, gfc_expr * expr) gfc_conv_intrinsic_index (gfc_se * se, gfc_expr * expr)
{ {
tree gfc_logical4_type_node = gfc_get_logical_type (4);
tree args; tree args;
tree back; tree back;
tree type; tree type;
...@@ -2245,6 +2246,7 @@ gfc_conv_associated (gfc_se *se, gfc_expr *expr) ...@@ -2245,6 +2246,7 @@ gfc_conv_associated (gfc_se *se, gfc_expr *expr)
static void static void
gfc_conv_intrinsic_scan (gfc_se * se, gfc_expr * expr) gfc_conv_intrinsic_scan (gfc_se * se, gfc_expr * expr)
{ {
tree gfc_logical4_type_node = gfc_get_logical_type (4);
tree args; tree args;
tree back; tree back;
tree type; tree type;
...@@ -2277,6 +2279,7 @@ gfc_conv_intrinsic_scan (gfc_se * se, gfc_expr * expr) ...@@ -2277,6 +2279,7 @@ gfc_conv_intrinsic_scan (gfc_se * se, gfc_expr * expr)
static void static void
gfc_conv_intrinsic_verify (gfc_se * se, gfc_expr * expr) gfc_conv_intrinsic_verify (gfc_se * se, gfc_expr * expr)
{ {
tree gfc_logical4_type_node = gfc_get_logical_type (4);
tree args; tree args;
tree back; tree back;
tree type; tree type;
...@@ -2529,6 +2532,7 @@ gfc_conv_intrinsic_sr_kind (gfc_se * se, gfc_expr * expr) ...@@ -2529,6 +2532,7 @@ gfc_conv_intrinsic_sr_kind (gfc_se * se, gfc_expr * expr)
static void static void
gfc_conv_intrinsic_trim (gfc_se * se, gfc_expr * expr) gfc_conv_intrinsic_trim (gfc_se * se, gfc_expr * expr)
{ {
tree gfc_int4_type_node = gfc_get_int_type (4);
tree var; tree var;
tree len; tree len;
tree addr; tree addr;
...@@ -2570,6 +2574,7 @@ gfc_conv_intrinsic_trim (gfc_se * se, gfc_expr * expr) ...@@ -2570,6 +2574,7 @@ gfc_conv_intrinsic_trim (gfc_se * se, gfc_expr * expr)
static void static void
gfc_conv_intrinsic_repeat (gfc_se * se, gfc_expr * expr) gfc_conv_intrinsic_repeat (gfc_se * se, gfc_expr * expr)
{ {
tree gfc_int4_type_node = gfc_get_int_type (4);
tree tmp; tree tmp;
tree len; tree len;
tree args; tree args;
......
...@@ -39,8 +39,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA ...@@ -39,8 +39,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "trans-const.h" #include "trans-const.h"
static GTY(()) tree gfc_pint4_type_node;
/* Members of the ioparm structure. */ /* Members of the ioparm structure. */
static GTY(()) tree ioparm_unit; static GTY(()) tree ioparm_unit;
...@@ -160,11 +158,14 @@ static enum { READ, WRITE, IOLENGTH } last_dt; ...@@ -160,11 +158,14 @@ static enum { READ, WRITE, IOLENGTH } last_dt;
void void
gfc_build_io_library_fndecls (void) gfc_build_io_library_fndecls (void)
{ {
tree gfc_int4_type_node;
tree gfc_pint4_type_node;
tree ioparm_type; tree ioparm_type;
gfc_int4_type_node = gfc_get_int_type (4);
gfc_pint4_type_node = build_pointer_type (gfc_int4_type_node); gfc_pint4_type_node = build_pointer_type (gfc_int4_type_node);
/* Build the st_parameter structure. Information associated with I/O /* Build the st_parameter structure. Information associated with I/O
calls are transferred here. This must match the one defined in the calls are transferred here. This must match the one defined in the
library exactly. */ library exactly. */
......
...@@ -275,6 +275,7 @@ gfc_trans_return (gfc_code * code ATTRIBUTE_UNUSED) ...@@ -275,6 +275,7 @@ gfc_trans_return (gfc_code * code ATTRIBUTE_UNUSED)
tree tree
gfc_trans_pause (gfc_code * code) gfc_trans_pause (gfc_code * code)
{ {
tree gfc_int4_type_node = gfc_get_int_type (4);
gfc_se se; gfc_se se;
tree args; tree args;
tree tmp; tree tmp;
...@@ -314,6 +315,7 @@ gfc_trans_pause (gfc_code * code) ...@@ -314,6 +315,7 @@ gfc_trans_pause (gfc_code * code)
tree tree
gfc_trans_stop (gfc_code * code) gfc_trans_stop (gfc_code * code)
{ {
tree gfc_int4_type_node = gfc_get_int_type (4);
gfc_se se; gfc_se se;
tree args; tree args;
tree tmp; tree tmp;
...@@ -991,6 +993,8 @@ gfc_trans_character_select (gfc_code *code) ...@@ -991,6 +993,8 @@ gfc_trans_character_select (gfc_code *code)
if (select_struct == NULL) if (select_struct == NULL)
{ {
tree gfc_int4_type_node = gfc_get_int_type (4);
select_struct = make_node (RECORD_TYPE); select_struct = make_node (RECORD_TYPE);
TYPE_NAME (select_struct) = get_identifier ("_jump_struct"); TYPE_NAME (select_struct) = get_identifier ("_jump_struct");
...@@ -3016,6 +3020,8 @@ gfc_trans_allocate (gfc_code * code) ...@@ -3016,6 +3020,8 @@ gfc_trans_allocate (gfc_code * code)
if (code->expr) if (code->expr)
{ {
tree gfc_int4_type_node = gfc_get_int_type (4);
stat = gfc_create_var (gfc_int4_type_node, "stat"); stat = gfc_create_var (gfc_int4_type_node, "stat");
pstat = gfc_build_addr_expr (NULL, stat); pstat = gfc_build_addr_expr (NULL, stat);
......
...@@ -24,28 +24,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA ...@@ -24,28 +24,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#ifndef GFC_BACKEND_H #ifndef GFC_BACKEND_H
#define GFC_BACKEND_H #define GFC_BACKEND_H
enum
{
F95_INT1_TYPE,
F95_INT2_TYPE,
F95_INT4_TYPE,
F95_INT8_TYPE,
F95_INT16_TYPE,
F95_REAL4_TYPE,
F95_REAL8_TYPE,
F95_REAl16_TYPE,
F95_COMPLEX4_TYPE,
F95_COMPLEX8_TYPE,
F95_COMPLEX16_TYPE,
F95_LOGICAL1_TYPE,
F95_LOGICAL2_TYPE,
F95_LOGICAL4_TYPE,
F95_LOGICAL8_TYPE,
F95_LOGICAL16_TYPE,
F95_CHARACTER1_TYPE,
NUM_F95_TYPES
};
#define GFC_DTYPE_RANK_MASK 0x07 #define GFC_DTYPE_RANK_MASK 0x07
#define GFC_DTYPE_TYPE_SHIFT 3 #define GFC_DTYPE_TYPE_SHIFT 3
#define GFC_DTYPE_TYPE_MASK 0x38 #define GFC_DTYPE_TYPE_MASK 0x38
...@@ -62,37 +40,12 @@ enum ...@@ -62,37 +40,12 @@ enum
GFC_DTYPE_CHARACTER GFC_DTYPE_CHARACTER
}; };
extern GTY(()) tree gfc_type_nodes[NUM_F95_TYPES];
extern GTY(()) tree gfc_array_index_type; extern GTY(()) tree gfc_array_index_type;
extern GTY(()) tree gfc_character1_type_node;
extern GTY(()) tree ppvoid_type_node; extern GTY(()) tree ppvoid_type_node;
extern GTY(()) tree pvoid_type_node; extern GTY(()) tree pvoid_type_node;
extern GTY(()) tree pchar_type_node; extern GTY(()) tree pchar_type_node;
extern GTY(()) tree gfc_strlen_type_node;
#define gfc_int1_type_node gfc_type_nodes[F95_INT1_TYPE]
#define gfc_int2_type_node gfc_type_nodes[F95_INT2_TYPE]
#define gfc_int4_type_node gfc_type_nodes[F95_INT4_TYPE]
#define gfc_int8_type_node gfc_type_nodes[F95_INT8_TYPE]
#define gfc_int16_type_node gfc_type_nodes[F95_INT16_TYPE]
#define gfc_real4_type_node gfc_type_nodes[F95_REAL4_TYPE]
#define gfc_real8_type_node gfc_type_nodes[F95_REAL8_TYPE]
#define gfc_real16_type_node gfc_type_nodes[F95_REAL16_TYPE]
#define gfc_complex4_type_node gfc_type_nodes[F95_COMPLEX4_TYPE]
#define gfc_complex8_type_node gfc_type_nodes[F95_COMPLEX8_TYPE]
#define gfc_complex16_type_node gfc_type_nodes[F95_COMPLEX16_TYPE]
#define gfc_logical1_type_node gfc_type_nodes[F95_LOGICAL1_TYPE]
#define gfc_logical2_type_node gfc_type_nodes[F95_LOGICAL2_TYPE]
#define gfc_logical4_type_node gfc_type_nodes[F95_LOGICAL4_TYPE]
#define gfc_logical8_type_node gfc_type_nodes[F95_LOGICAL8_TYPE]
#define gfc_logical16_type_node gfc_type_nodes[F95_LOGICAL16_TYPE]
#define gfc_character1_type_node gfc_type_nodes[F95_CHARACTER1_TYPE]
#define gfc_strlen_kind 4
#define gfc_strlen_type_node gfc_int4_type_node
/* These C-specific types are used while building builtin function decls. /* These C-specific types are used while building builtin function decls.
For now it doesn't really matter what these are defined to as we don't For now it doesn't really matter what these are defined to as we don't
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment