PR 39654 FTELL intrinsic function return type.

frontend ChangeLog:

2012-06-21  Janne Blomqvist  <jb@gcc.gnu.org>

	PR fortran/39654
	* iresolve.c (gfc_resolve_ftell): Fix result kind and use new
	library function.


library ChangeLog:

2012-06-21  Janne Blomqvist  <jb@gcc.gnu.org>

	PR fortran/39654
	* io/intrinsics.c (ftell2): New function.
	* gfortran.map (_gfortran_ftell2): Export function.

From-SVN: r188858
This commit is contained in:
Janne Blomqvist 2012-06-21 21:47:01 +03:00
parent 5175cbafd2
commit 67eb28c8b8
5 changed files with 39 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2012-06-21 Janne Blomqvist <jb@gcc.gnu.org>
PR fortran/39654
* iresolve.c (gfc_resolve_ftell): Fix result kind and use new
library function.
2012-06-18 Tobias Burnus <burnus@net-b.de> 2012-06-18 Tobias Burnus <burnus@net-b.de>
* intrinsic.h (gfc_resolve_rank): New prototype. * intrinsic.h (gfc_resolve_rank): New prototype.

View File

@ -2480,7 +2480,7 @@ gfc_resolve_ftell (gfc_expr *f, gfc_expr *u)
gfc_clear_ts (&ts); gfc_clear_ts (&ts);
f->ts.type = BT_INTEGER; f->ts.type = BT_INTEGER;
f->ts.kind = gfc_index_integer_kind; f->ts.kind = gfc_intio_kind;
if (u->ts.kind != gfc_c_int_kind) if (u->ts.kind != gfc_c_int_kind)
{ {
ts.type = BT_INTEGER; ts.type = BT_INTEGER;
@ -2490,7 +2490,7 @@ gfc_resolve_ftell (gfc_expr *f, gfc_expr *u)
gfc_convert_type (u, &ts, 2); gfc_convert_type (u, &ts, 2);
} }
f->value.function.name = gfc_get_string (PREFIX ("ftell")); f->value.function.name = gfc_get_string (PREFIX ("ftell2"));
} }

View File

@ -1,3 +1,9 @@
2012-06-21 Janne Blomqvist <jb@gcc.gnu.org>
PR fortran/39654
* io/intrinsics.c (ftell2): New function.
* gfortran.map (_gfortran_ftell2): Export function.
2012-06-04 Robert Mason <rbmj@verizon.net> 2012-06-04 Robert Mason <rbmj@verizon.net>
Janne Blomqvist <jb@gcc.gnu.org> Janne Blomqvist <jb@gcc.gnu.org>

View File

@ -1189,6 +1189,11 @@ GFORTRAN_1.4 {
_gfortran_eoshift2_16_char4; _gfortran_eoshift2_16_char4;
} GFORTRAN_1.3; } GFORTRAN_1.3;
GFORTRAN_1.5 {
global:
_gfortran_ftell2;
} GFORTRAN_1.4;
F2C_1.0 { F2C_1.0 {
global: global:
_gfortran_f2c_specific__abs_c4; _gfortran_f2c_specific__abs_c4;

View File

@ -272,6 +272,10 @@ gf_ftell (int unit)
return ret; return ret;
} }
/* Here is the ftell function with an incorrect return type; retained
due to ABI compatibility. */
extern size_t PREFIX(ftell) (int *); extern size_t PREFIX(ftell) (int *);
export_proto_np(PREFIX(ftell)); export_proto_np(PREFIX(ftell));
@ -281,6 +285,22 @@ PREFIX(ftell) (int * unit)
return gf_ftell (*unit); return gf_ftell (*unit);
} }
/* Here is the ftell function with the correct return type, ensuring
that large files can be supported as long as the target supports
large integers; as of 4.8 the FTELL intrinsic function will call
this one instead of the old ftell above. */
extern GFC_IO_INT PREFIX(ftell2) (int *);
export_proto_np(PREFIX(ftell2));
GFC_IO_INT
PREFIX(ftell2) (int * unit)
{
return gf_ftell (*unit);
}
#define FTELL_SUB(kind) \ #define FTELL_SUB(kind) \
extern void ftell_i ## kind ## _sub (int *, GFC_INTEGER_ ## kind *); \ extern void ftell_i ## kind ## _sub (int *, GFC_INTEGER_ ## kind *); \
export_proto(ftell_i ## kind ## _sub); \ export_proto(ftell_i ## kind ## _sub); \