From 9610ba7b6ff88c1c9b4fba232458e9397cc71a02 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 5 Dec 2023 22:56:41 +0100 Subject: [PATCH] libgfortran: Fix -Wincompatible-pointer-types errors As reported, libgfortran fails to build on targets where int32_t and int are different types, because it uses int vs. GFC_INTEGER_4 (under hood int32_t) interchangeably. The following patch fixes that. 2023-12-05 Florian Weimer Jakub Jelinek * io/list_read.c (list_formatted_read_scalar) : Change types of unit and noiostat to GFC_INTEGER_4 from int, change type of child_iostat from to GFC_INTEGER_4 * from int *, formatting fixes. (nml_read_obj): Likewise. * io/write.c (list_formatted_write_scalar) : Likewise. (nml_write_obj): Likewise. * io/transfer.c (unformatted_read, unformatted_write): Likewise. --- libgfortran/io/list_read.c | 20 ++++++++--------- libgfortran/io/transfer.c | 44 +++++++++++++++++++------------------- libgfortran/io/write.c | 20 ++++++++--------- 3 files changed, 42 insertions(+), 42 deletions(-) diff --git a/libgfortran/io/list_read.c b/libgfortran/io/list_read.c index db3330060ce..765f8d7fb37 100644 --- a/libgfortran/io/list_read.c +++ b/libgfortran/io/list_read.c @@ -2189,14 +2189,14 @@ list_formatted_read_scalar (st_parameter_dt *dtp, bt type, void *p, break; case BT_CLASS: { - int unit = dtp->u.p.current_unit->unit_number; + GFC_INTEGER_4 unit = dtp->u.p.current_unit->unit_number; char iotype[] = "LISTDIRECTED"; gfc_charlen_type iotype_len = 12; char tmp_iomsg[IOMSG_LEN] = ""; char *child_iomsg; gfc_charlen_type child_iomsg_len; - int noiostat; - int *child_iostat = NULL; + GFC_INTEGER_4 noiostat; + GFC_INTEGER_4 *child_iostat = NULL; gfc_full_array_i4 vlist; GFC_DESCRIPTOR_DATA(&vlist) = NULL; @@ -2204,8 +2204,8 @@ list_formatted_read_scalar (st_parameter_dt *dtp, bt type, void *p, /* Set iostat, intent(out). */ noiostat = 0; - child_iostat = (dtp->common.flags & IOPARM_HAS_IOSTAT) ? - dtp->common.iostat : &noiostat; + child_iostat = ((dtp->common.flags & IOPARM_HAS_IOSTAT) + ? dtp->common.iostat : &noiostat); /* Set iomsge, intent(inout). */ if (dtp->common.flags & IOPARM_HAS_IOMSG) @@ -2987,14 +2987,14 @@ nml_read_obj (st_parameter_dt *dtp, namelist_info *nl, index_type offset, /* If this object has a User Defined procedure, call it. */ if (nl->dtio_sub != NULL) { - int unit = dtp->u.p.current_unit->unit_number; + GFC_INTEGER_4 unit = dtp->u.p.current_unit->unit_number; char iotype[] = "NAMELIST"; gfc_charlen_type iotype_len = 8; char tmp_iomsg[IOMSG_LEN] = ""; char *child_iomsg; gfc_charlen_type child_iomsg_len; - int noiostat; - int *child_iostat = NULL; + GFC_INTEGER_4 noiostat; + GFC_INTEGER_4 *child_iostat = NULL; gfc_full_array_i4 vlist; formatted_dtio dtio_ptr = (formatted_dtio)nl->dtio_sub; @@ -3006,8 +3006,8 @@ nml_read_obj (st_parameter_dt *dtp, namelist_info *nl, index_type offset, /* Set iostat, intent(out). */ noiostat = 0; - child_iostat = (dtp->common.flags & IOPARM_HAS_IOSTAT) ? - dtp->common.iostat : &noiostat; + child_iostat = ((dtp->common.flags & IOPARM_HAS_IOSTAT) + ? dtp->common.iostat : &noiostat); /* Set iomsg, intent(inout). */ if (dtp->common.flags & IOPARM_HAS_IOMSG) diff --git a/libgfortran/io/transfer.c b/libgfortran/io/transfer.c index 0104f6ccd69..500db90c828 100644 --- a/libgfortran/io/transfer.c +++ b/libgfortran/io/transfer.c @@ -1092,17 +1092,17 @@ unformatted_read (st_parameter_dt *dtp, bt type, if (type == BT_CLASS) { - int unit = dtp->u.p.current_unit->unit_number; + GFC_INTEGER_4 unit = dtp->u.p.current_unit->unit_number; char tmp_iomsg[IOMSG_LEN] = ""; char *child_iomsg; gfc_charlen_type child_iomsg_len; - int noiostat; - int *child_iostat = NULL; + GFC_INTEGER_4 noiostat; + GFC_INTEGER_4 *child_iostat = NULL; /* Set iostat, intent(out). */ noiostat = 0; - child_iostat = (dtp->common.flags & IOPARM_HAS_IOSTAT) ? - dtp->common.iostat : &noiostat; + child_iostat = ((dtp->common.flags & IOPARM_HAS_IOSTAT) + ? dtp->common.iostat : &noiostat); /* Set iomsg, intent(inout). */ if (dtp->common.flags & IOPARM_HAS_IOMSG) @@ -1119,7 +1119,7 @@ unformatted_read (st_parameter_dt *dtp, bt type, /* Call the user defined unformatted READ procedure. */ dtp->u.p.current_unit->child_dtio++; dtp->u.p.ufdtio_ptr (dest, &unit, child_iostat, child_iomsg, - child_iomsg_len); + child_iomsg_len); dtp->u.p.current_unit->child_dtio--; return; } @@ -1222,17 +1222,17 @@ unformatted_write (st_parameter_dt *dtp, bt type, if (type == BT_CLASS) { - int unit = dtp->u.p.current_unit->unit_number; + GFC_INTEGER_4 unit = dtp->u.p.current_unit->unit_number; char tmp_iomsg[IOMSG_LEN] = ""; char *child_iomsg; gfc_charlen_type child_iomsg_len; - int noiostat; - int *child_iostat = NULL; + GFC_INTEGER_4 noiostat; + GFC_INTEGER_4 *child_iostat = NULL; /* Set iostat, intent(out). */ noiostat = 0; - child_iostat = (dtp->common.flags & IOPARM_HAS_IOSTAT) ? - dtp->common.iostat : &noiostat; + child_iostat = ((dtp->common.flags & IOPARM_HAS_IOSTAT) + ? dtp->common.iostat : &noiostat); /* Set iomsg, intent(inout). */ if (dtp->common.flags & IOPARM_HAS_IOMSG) @@ -1249,7 +1249,7 @@ unformatted_write (st_parameter_dt *dtp, bt type, /* Call the user defined unformatted WRITE procedure. */ dtp->u.p.current_unit->child_dtio++; dtp->u.p.ufdtio_ptr (source, &unit, child_iostat, child_iomsg, - child_iomsg_len); + child_iomsg_len); dtp->u.p.current_unit->child_dtio--; return; } @@ -1688,13 +1688,13 @@ formatted_transfer_scalar_read (st_parameter_dt *dtp, bt type, void *p, int kind return; if (require_type (dtp, BT_CLASS, type, f)) return; - int unit = dtp->u.p.current_unit->unit_number; + GFC_INTEGER_4 unit = dtp->u.p.current_unit->unit_number; char dt[] = "DT"; char tmp_iomsg[IOMSG_LEN] = ""; char *child_iomsg; gfc_charlen_type child_iomsg_len; - int noiostat; - int *child_iostat = NULL; + GFC_INTEGER_4 noiostat; + GFC_INTEGER_4 *child_iostat = NULL; char *iotype; gfc_charlen_type iotype_len = f->u.udf.string_len; @@ -1709,8 +1709,8 @@ formatted_transfer_scalar_read (st_parameter_dt *dtp, bt type, void *p, int kind /* Set iostat, intent(out). */ noiostat = 0; - child_iostat = (dtp->common.flags & IOPARM_HAS_IOSTAT) ? - dtp->common.iostat : &noiostat; + child_iostat = ((dtp->common.flags & IOPARM_HAS_IOSTAT) + ? dtp->common.iostat : &noiostat); /* Set iomsg, intent(inout). */ if (dtp->common.flags & IOPARM_HAS_IOMSG) @@ -2169,13 +2169,13 @@ formatted_transfer_scalar_write (st_parameter_dt *dtp, bt type, void *p, int kin case FMT_DT: if (n == 0) goto need_data; - int unit = dtp->u.p.current_unit->unit_number; + GFC_INTEGER_4 unit = dtp->u.p.current_unit->unit_number; char dt[] = "DT"; char tmp_iomsg[IOMSG_LEN] = ""; char *child_iomsg; gfc_charlen_type child_iomsg_len; - int noiostat; - int *child_iostat = NULL; + GFC_INTEGER_4 noiostat; + GFC_INTEGER_4 *child_iostat = NULL; char *iotype; gfc_charlen_type iotype_len = f->u.udf.string_len; @@ -2190,8 +2190,8 @@ formatted_transfer_scalar_write (st_parameter_dt *dtp, bt type, void *p, int kin /* Set iostat, intent(out). */ noiostat = 0; - child_iostat = (dtp->common.flags & IOPARM_HAS_IOSTAT) ? - dtp->common.iostat : &noiostat; + child_iostat = ((dtp->common.flags & IOPARM_HAS_IOSTAT) + ? dtp->common.iostat : &noiostat); /* Set iomsg, intent(inout). */ if (dtp->common.flags & IOPARM_HAS_IOMSG) diff --git a/libgfortran/io/write.c b/libgfortran/io/write.c index 00c8fd2e288..f94e180ba33 100644 --- a/libgfortran/io/write.c +++ b/libgfortran/io/write.c @@ -1952,14 +1952,14 @@ list_formatted_write_scalar (st_parameter_dt *dtp, bt type, void *p, int kind, break; case BT_CLASS: { - int unit = dtp->u.p.current_unit->unit_number; + GFC_INTEGER_4 unit = dtp->u.p.current_unit->unit_number; char iotype[] = "LISTDIRECTED"; gfc_charlen_type iotype_len = 12; char tmp_iomsg[IOMSG_LEN] = ""; char *child_iomsg; gfc_charlen_type child_iomsg_len; - int noiostat; - int *child_iostat = NULL; + GFC_INTEGER_4 noiostat; + GFC_INTEGER_4 *child_iostat = NULL; gfc_full_array_i4 vlist; GFC_DESCRIPTOR_DATA(&vlist) = NULL; @@ -1967,8 +1967,8 @@ list_formatted_write_scalar (st_parameter_dt *dtp, bt type, void *p, int kind, /* Set iostat, intent(out). */ noiostat = 0; - child_iostat = (dtp->common.flags & IOPARM_HAS_IOSTAT) ? - dtp->common.iostat : &noiostat; + child_iostat = ((dtp->common.flags & IOPARM_HAS_IOSTAT) + ? dtp->common.iostat : &noiostat); /* Set iomsge, intent(inout). */ if (dtp->common.flags & IOPARM_HAS_IOMSG) @@ -2277,14 +2277,14 @@ nml_write_obj (st_parameter_dt *dtp, namelist_info *obj, index_type offset, /* First ext_name => get length of all possible components */ if (obj->dtio_sub != NULL) { - int unit = dtp->u.p.current_unit->unit_number; + GFC_INTEGER_4 unit = dtp->u.p.current_unit->unit_number; char iotype[] = "NAMELIST"; gfc_charlen_type iotype_len = 8; char tmp_iomsg[IOMSG_LEN] = ""; char *child_iomsg; gfc_charlen_type child_iomsg_len; - int noiostat; - int *child_iostat = NULL; + GFC_INTEGER_4 noiostat; + GFC_INTEGER_4 *child_iostat = NULL; gfc_full_array_i4 vlist; formatted_dtio dtio_ptr = (formatted_dtio)obj->dtio_sub; @@ -2292,8 +2292,8 @@ nml_write_obj (st_parameter_dt *dtp, namelist_info *obj, index_type offset, /* Set iostat, intent(out). */ noiostat = 0; - child_iostat = (dtp->common.flags & IOPARM_HAS_IOSTAT) ? - dtp->common.iostat : &noiostat; + child_iostat = ((dtp->common.flags & IOPARM_HAS_IOSTAT) + ? dtp->common.iostat : &noiostat); /* Set iomsg, intent(inout). */ if (dtp->common.flags & IOPARM_HAS_IOMSG)