summaryrefslogtreecommitdiff
path: root/libgfortran/intrinsics/unpack_generic.c
diff options
context:
space:
mode:
Diffstat (limited to 'libgfortran/intrinsics/unpack_generic.c')
-rw-r--r--libgfortran/intrinsics/unpack_generic.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/libgfortran/intrinsics/unpack_generic.c b/libgfortran/intrinsics/unpack_generic.c
index 82607bd5897..86cef6725d2 100644
--- a/libgfortran/intrinsics/unpack_generic.c
+++ b/libgfortran/intrinsics/unpack_generic.c
@@ -335,6 +335,7 @@ unpack1 (gfc_array_char *ret, const gfc_array_char *vector,
GFC_DESCRIPTOR_SIZE (field));
}
+
extern void unpack1_char (gfc_array_char *, GFC_INTEGER_4,
const gfc_array_char *, const gfc_array_l1 *,
const gfc_array_char *, GFC_INTEGER_4,
@@ -351,6 +352,26 @@ unpack1_char (gfc_array_char *ret,
unpack_internal (ret, vector, mask, field, vector_length, field_length);
}
+
+extern void unpack1_char4 (gfc_array_char *, GFC_INTEGER_4,
+ const gfc_array_char *, const gfc_array_l1 *,
+ const gfc_array_char *, GFC_INTEGER_4,
+ GFC_INTEGER_4);
+export_proto(unpack1_char4);
+
+void
+unpack1_char4 (gfc_array_char *ret,
+ GFC_INTEGER_4 ret_length __attribute__((unused)),
+ const gfc_array_char *vector, const gfc_array_l1 *mask,
+ const gfc_array_char *field, GFC_INTEGER_4 vector_length,
+ GFC_INTEGER_4 field_length)
+{
+ unpack_internal (ret, vector, mask, field,
+ vector_length * sizeof (gfc_char4_t),
+ field_length * sizeof (gfc_char4_t));
+}
+
+
extern void unpack0 (gfc_array_char *, const gfc_array_char *,
const gfc_array_l1 *, char *);
export_proto(unpack0);
@@ -500,6 +521,7 @@ unpack0 (gfc_array_char *ret, const gfc_array_char *vector,
unpack_internal (ret, vector, mask, &tmp, GFC_DESCRIPTOR_SIZE (vector), 0);
}
+
extern void unpack0_char (gfc_array_char *, GFC_INTEGER_4,
const gfc_array_char *, const gfc_array_l1 *,
char *, GFC_INTEGER_4, GFC_INTEGER_4);
@@ -519,3 +541,25 @@ unpack0_char (gfc_array_char *ret,
tmp.data = field;
unpack_internal (ret, vector, mask, &tmp, vector_length, 0);
}
+
+
+extern void unpack0_char4 (gfc_array_char *, GFC_INTEGER_4,
+ const gfc_array_char *, const gfc_array_l1 *,
+ char *, GFC_INTEGER_4, GFC_INTEGER_4);
+export_proto(unpack0_char4);
+
+void
+unpack0_char4 (gfc_array_char *ret,
+ GFC_INTEGER_4 ret_length __attribute__((unused)),
+ const gfc_array_char *vector, const gfc_array_l1 *mask,
+ char *field, GFC_INTEGER_4 vector_length,
+ GFC_INTEGER_4 field_length __attribute__((unused)))
+{
+ gfc_array_char tmp;
+
+ memset (&tmp, 0, sizeof (tmp));
+ tmp.dtype = 0;
+ tmp.data = field;
+ unpack_internal (ret, vector, mask, &tmp,
+ vector_length * sizeof (gfc_char4_t), 0);
+}