aboutsummaryrefslogtreecommitdiff
path: root/libgfortran/io
AgeCommit message (Collapse)AuthorFilesLines
2012-10-10re PR fortran/54878 (libgfortran issues found by the Coverity scanner)Tobias Burnus1-0/+12
2012-10-10 Tobias Burnus <burnus@net-b.de> PR fortran/54878 * io/unix.c (tempfile_open): Set umask before calling mkstemp. From-SVN: r192325
2012-09-29re PR fortran/52724 (Internal read with character(kind=4) data)Thomas Koenig2-4/+11
2012-09-29 Thomas König <tkoenig@gcc.gnu.org> PR fortran/52724 * list_read.c (next_char): Handle kind=4 characters. * unix.c (open_internal4): Correct lenth of internal file. 2012-09-29 Thomas König <tkoenig@gcc.gnu.org> PR fortran/52724 * gfortran.dg/internal_readwrite_3.f90: New test. From-SVN: r191854
2012-07-25list_read.c (list_formatted_read_scalar): Fix copying real value back to ↵Andreas Schwab1-1/+1
temporary. * io/list_read.c (list_formatted_read_scalar): Fix copying real value back to temporary. From-SVN: r189856
2012-06-21PR 39654 FTELL intrinsic function return type.Janne Blomqvist1-0/+20
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
2012-06-01chmod.c (chmod_func): On MinGW, don't set is_dirTobias Burnus2-9/+14
2012-06-01 Tobias Burnus <burnus@net-b.de> * intrinsics/chmod.c (chmod_func): On MinGW, don't set is_dir * and fix octal-mode handling. * io/unit.c (get_internal_unit): Add cast. * io/unix.c (min): Undef "min" before defining it. * runtime/backtrace.c (show_backtrace): Move label into ifndef __MINGW__ block. From-SVN: r188098
2012-05-31revert: unix.c (tempfile_open): Pass mode to "open" for O_CREAT.Tobias Burnus1-2/+2
2012-05-31 Tobias Burnus <burnus@net-b.de> Revert: 2012-05-16 Tobias Burnus <burnus@net-b.de> * io/unix.c (tempfile_open): Pass mode to "open" for O_CREAT. From-SVN: r188048
2012-05-30decl.c: Fix comment typos.Tobias Burnus2-5/+5
2012-05-30 Tobias Burnus <burnus@net-b.de> * decl.c: Fix comment typos. * expr.c: Ditto. * frontend-passes.c: Ditto. * match.c: Ditto. * resolve.c: Ditto. * trans-array.c: Ditto. * trans-common.c: Ditto. * trans-intrinsic.c: Ditto. * trans-types.c: Ditto. 2012-05-30 Tobias Burnus <burnus@net-b.de> * io/io.h: Fix comment typos. * io/list_read.c: Ditto. From-SVN: r188000
2012-05-16unix.c (tempfile_open): Pass mode to "open" for O_CREAT.Tobias Burnus1-2/+2
2012-05-16 Tobias Burnus <burnus@net-b.de> * io/unix.c (tempfile_open): Pass mode to "open" for O_CREAT. From-SVN: r187604
2012-05-14PR 52428 Range checking when reading integer values.Janne Blomqvist3-36/+37
gcc/fortran ChangeLog: 2012-05-14 Janne Blomqvist <jb@gcc.gnu.org> PR fortran/52428 * gfortran.texi: Update _gfortran_set_options documentation. * invoke.texi: Remove runtime behavior description of -fno-range-check. * trans-decl.c (create_main_function): Don't pass the range-check setting to the library. libgfortran ChangeLog: 2012-05-14 Janne Blomqvist <jb@gcc.gnu.org> PR fortran/52428 * io/io.h (max_value): Rename to si_max, remove second argument. * io/list_read.c (convert_integer): Use unsigned types when parsing the digits, set max value depending on the sign. * io/read.c (max_value): Rename to si_max, remove second argument, simplify. (read_decimal): Set max value depending on sign, always check overflow. (read_radix): Calculate max unsigned value directly. * libgfortran.h (struct compile_options_t): Remove range_check field. * runtime/compile_options.c (set_options): Skip handling options[7]. (init_compile_options): Don't set removed field. gcc/testsuite ChangeLog: 2012-05-14 Janne Blomqvist <jb@gcc.gnu.org> PR fortran/52428 * gfortran.dg/int_range_io_1.f90: New test. From-SVN: r187478
2012-05-05Fix handling of temporary files.Janne Blomqvist1-47/+78
2012-05-05 Janne Blomqvist <jb@gcc.gnu.org> * gfortran.texi (GFORTRAN_TMPDIR): Rename to TMPDIR, explain algorithm for choosing temp directory. 2012-05-05 Janne Blomqvist <jb@gcc.gnu.org> * config.h.in: Regenerated. * configure: Regenerated. * configure.ac: Add checks for getegid and __secure_getenv. * io/unix.c (P_tmpdir): Fallback definition for macro. (tempfile_open): New function. (tempfile): Use secure_getenv, call tempfile_open to try each directory in turn. * libgfortran.h (DEFAULT_TMPDIR): Remove macro. (secure_getenv): New macro/prototype. * runtime/environ.c (secure_getenv): New function. (variable_table): Rename GFORTRAN_TMPDIR to TMPDIR. * runtime/main.c (find_addr2line): Use secure_getenv. From-SVN: r187190
2012-04-22re PR libfortran/53051 (I/O: Support reading floating-point numbers which ↵Tobias Burnus2-0/+8
use "Q" for the exponent) 2012-04-22 Tobias Burnus <burnus@net-b.de> PR fortran/53051 * io/list_read.c (parse_real): Support "q" for the exponential. * io/read.c (read_f): Ditto. 2012-04-22 Tobias Burnus <burnus@net-b.de> PR fortran/53051 * gfortran.dg/read_float_4.f90: New. From-SVN: r186675
2012-04-17re PR libfortran/38199 (missed optimization: I/O performance)Tobias Burnus1-1/+1
2012-04-17 Tobias Burnus <burnus@net-b.de> PR libfortran/38199 PR libfortran/50673 * io/unit.c (get_internal_unit): Properly check for the presence of the format string. From-SVN: r186548
2012-04-15re PR libfortran/38199 (missed optimization: I/O performance)Thomas Koenig2-2/+22
2012-04-15 Thomas Koenig <tkoenig@gcc.gnu.org> PR libfortran/38199 PR libfortran/50673 * intrinsics/string_intriniscs_inc.c (string_len_trim): Remove prototypes for string_len_trim and move to... * libgfortran.h (string_len_trim): ... here and (string_len_trim_char4): ...here. * io/unit.c: For non-array internal arrays where we do reading, adjust the record length to the last non-blank character. * io/unix.c: Fix typo. From-SVN: r186466
2012-03-26Combined get_mem and internal_malloc_size.Janne Blomqvist9-27/+29
2012-03-26 Janne Blomqvist <jb@gcc.gnu.org> * runtime/memory.c (get_mem): Rename to xmalloc, check for zero size. (internal_malloc_size): Remove. * libgfortran.h (get_mem): Rename to xmalloc. (internal_malloc_size): Remove prototype. * Makefile.am (i_iall_c): Fix dependency. (i_iany_c): Likewise. (i_iparity_c): Likewise. (i_norm2_c): Likewise. (i_parity_c): Likewise. * Makefile.in: Regenerated. * m4/parity.m4: Fix typo in comment. * generated/all_l1.c: Regenerated. * generated/all_l16.c: Regenerated. * generated/all_l2.c: Regenerated. * generated/all_l4.c: Regenerated. * generated/all_l8.c: Regenerated. * generated/any_l1.c: Regenerated. * generated/any_l16.c: Regenerated. * generated/any_l2.c: Regenerated. * generated/any_l4.c: Regenerated. * generated/any_l8.c: Regenerated. * generated/bessel_r10.c: Regenerated. * generated/bessel_r16.c: Regenerated. * generated/bessel_r4.c: Regenerated. * generated/bessel_r8.c: Regenerated. * generated/count_16_l.c: Regenerated. * generated/count_1_l.c: Regenerated. * generated/count_2_l.c: Regenerated. * generated/count_4_l.c: Regenerated. * generated/count_8_l.c: Regenerated. * generated/cshift1_16.c: Regenerated. * generated/cshift1_4.c: Regenerated. * generated/cshift1_8.c: Regenerated. * generated/eoshift1_16.c: Regenerated. * generated/eoshift1_4.c: Regenerated. * generated/eoshift1_8.c: Regenerated. * generated/eoshift3_16.c: Regenerated. * generated/eoshift3_4.c: Regenerated. * generated/eoshift3_8.c: Regenerated. * generated/iall_i1.c: Regenerated. * generated/iall_i16.c: Regenerated. * generated/iall_i2.c: Regenerated. * generated/iall_i4.c: Regenerated. * generated/iall_i8.c: Regenerated. * generated/iany_i1.c: Regenerated. * generated/iany_i16.c: Regenerated. * generated/iany_i2.c: Regenerated. * generated/iany_i4.c: Regenerated. * generated/iany_i8.c: Regenerated. * generated/in_pack_c10.c: Regenerated. * generated/in_pack_c16.c: Regenerated. * generated/in_pack_c4.c: Regenerated. * generated/in_pack_c8.c: Regenerated. * generated/in_pack_i1.c: Regenerated. * generated/in_pack_i16.c: Regenerated. * generated/in_pack_i2.c: Regenerated. * generated/in_pack_i4.c: Regenerated. * generated/in_pack_i8.c: Regenerated. * generated/in_pack_r10.c: Regenerated. * generated/in_pack_r16.c: Regenerated. * generated/in_pack_r4.c: Regenerated. * generated/in_pack_r8.c: Regenerated. * generated/iparity_i1.c: Regenerated. * generated/iparity_i16.c: Regenerated. * generated/iparity_i2.c: Regenerated. * generated/iparity_i4.c: Regenerated. * generated/iparity_i8.c: Regenerated. * generated/matmul_c10.c: Regenerated. * generated/matmul_c16.c: Regenerated. * generated/matmul_c4.c: Regenerated. * generated/matmul_c8.c: Regenerated. * generated/matmul_i1.c: Regenerated. * generated/matmul_i16.c: Regenerated. * generated/matmul_i2.c: Regenerated. * generated/matmul_i4.c: Regenerated. * generated/matmul_i8.c: Regenerated. * generated/matmul_l16.c: Regenerated. * generated/matmul_l4.c: Regenerated. * generated/matmul_l8.c: Regenerated. * generated/matmul_r10.c: Regenerated. * generated/matmul_r16.c: Regenerated. * generated/matmul_r4.c: Regenerated. * generated/matmul_r8.c: Regenerated. * generated/maxloc0_16_i1.c: Regenerated. * generated/maxloc0_16_i16.c: Regenerated. * generated/maxloc0_16_i2.c: Regenerated. * generated/maxloc0_16_i4.c: Regenerated. * generated/maxloc0_16_i8.c: Regenerated. * generated/maxloc0_16_r10.c: Regenerated. * generated/maxloc0_16_r16.c: Regenerated. * generated/maxloc0_16_r4.c: Regenerated. * generated/maxloc0_16_r8.c: Regenerated. * generated/maxloc0_4_i1.c: Regenerated. * generated/maxloc0_4_i16.c: Regenerated. * generated/maxloc0_4_i2.c: Regenerated. * generated/maxloc0_4_i4.c: Regenerated. * generated/maxloc0_4_i8.c: Regenerated. * generated/maxloc0_4_r10.c: Regenerated. * generated/maxloc0_4_r16.c: Regenerated. * generated/maxloc0_4_r4.c: Regenerated. * generated/maxloc0_4_r8.c: Regenerated. * generated/maxloc0_8_i1.c: Regenerated. * generated/maxloc0_8_i16.c: Regenerated. * generated/maxloc0_8_i2.c: Regenerated. * generated/maxloc0_8_i4.c: Regenerated. * generated/maxloc0_8_i8.c: Regenerated. * generated/maxloc0_8_r10.c: Regenerated. * generated/maxloc0_8_r16.c: Regenerated. * generated/maxloc0_8_r4.c: Regenerated. * generated/maxloc0_8_r8.c: Regenerated. * generated/maxloc1_16_i1.c: Regenerated. * generated/maxloc1_16_i16.c: Regenerated. * generated/maxloc1_16_i2.c: Regenerated. * generated/maxloc1_16_i4.c: Regenerated. * generated/maxloc1_16_i8.c: Regenerated. * generated/maxloc1_16_r10.c: Regenerated. * generated/maxloc1_16_r16.c: Regenerated. * generated/maxloc1_16_r4.c: Regenerated. * generated/maxloc1_16_r8.c: Regenerated. * generated/maxloc1_4_i1.c: Regenerated. * generated/maxloc1_4_i16.c: Regenerated. * generated/maxloc1_4_i2.c: Regenerated. * generated/maxloc1_4_i4.c: Regenerated. * generated/maxloc1_4_i8.c: Regenerated. * generated/maxloc1_4_r10.c: Regenerated. * generated/maxloc1_4_r16.c: Regenerated. * generated/maxloc1_4_r4.c: Regenerated. * generated/maxloc1_4_r8.c: Regenerated. * generated/maxloc1_8_i1.c: Regenerated. * generated/maxloc1_8_i16.c: Regenerated. * generated/maxloc1_8_i2.c: Regenerated. * generated/maxloc1_8_i4.c: Regenerated. * generated/maxloc1_8_i8.c: Regenerated. * generated/maxloc1_8_r10.c: Regenerated. * generated/maxloc1_8_r16.c: Regenerated. * generated/maxloc1_8_r4.c: Regenerated. * generated/maxloc1_8_r8.c: Regenerated. * generated/maxval_i1.c: Regenerated. * generated/maxval_i16.c: Regenerated. * generated/maxval_i2.c: Regenerated. * generated/maxval_i4.c: Regenerated. * generated/maxval_i8.c: Regenerated. * generated/maxval_r10.c: Regenerated. * generated/maxval_r16.c: Regenerated. * generated/maxval_r4.c: Regenerated. * generated/maxval_r8.c: Regenerated. * generated/minloc0_16_i1.c: Regenerated. * generated/minloc0_16_i16.c: Regenerated. * generated/minloc0_16_i2.c: Regenerated. * generated/minloc0_16_i4.c: Regenerated. * generated/minloc0_16_i8.c: Regenerated. * generated/minloc0_16_r10.c: Regenerated. * generated/minloc0_16_r16.c: Regenerated. * generated/minloc0_16_r4.c: Regenerated. * generated/minloc0_16_r8.c: Regenerated. * generated/minloc0_4_i1.c: Regenerated. * generated/minloc0_4_i16.c: Regenerated. * generated/minloc0_4_i2.c: Regenerated. * generated/minloc0_4_i4.c: Regenerated. * generated/minloc0_4_i8.c: Regenerated. * generated/minloc0_4_r10.c: Regenerated. * generated/minloc0_4_r16.c: Regenerated. * generated/minloc0_4_r4.c: Regenerated. * generated/minloc0_4_r8.c: Regenerated. * generated/minloc0_8_i1.c: Regenerated. * generated/minloc0_8_i16.c: Regenerated. * generated/minloc0_8_i2.c: Regenerated. * generated/minloc0_8_i4.c: Regenerated. * generated/minloc0_8_i8.c: Regenerated. * generated/minloc0_8_r10.c: Regenerated. * generated/minloc0_8_r16.c: Regenerated. * generated/minloc0_8_r4.c: Regenerated. * generated/minloc0_8_r8.c: Regenerated. * generated/minloc1_16_i1.c: Regenerated. * generated/minloc1_16_i16.c: Regenerated. * generated/minloc1_16_i2.c: Regenerated. * generated/minloc1_16_i4.c: Regenerated. * generated/minloc1_16_i8.c: Regenerated. * generated/minloc1_16_r10.c: Regenerated. * generated/minloc1_16_r16.c: Regenerated. * generated/minloc1_16_r4.c: Regenerated. * generated/minloc1_16_r8.c: Regenerated. * generated/minloc1_4_i1.c: Regenerated. * generated/minloc1_4_i16.c: Regenerated. * generated/minloc1_4_i2.c: Regenerated. * generated/minloc1_4_i4.c: Regenerated. * generated/minloc1_4_i8.c: Regenerated. * generated/minloc1_4_r10.c: Regenerated. * generated/minloc1_4_r16.c: Regenerated. * generated/minloc1_4_r4.c: Regenerated. * generated/minloc1_4_r8.c: Regenerated. * generated/minloc1_8_i1.c: Regenerated. * generated/minloc1_8_i16.c: Regenerated. * generated/minloc1_8_i2.c: Regenerated. * generated/minloc1_8_i4.c: Regenerated. * generated/minloc1_8_i8.c: Regenerated. * generated/minloc1_8_r10.c: Regenerated. * generated/minloc1_8_r16.c: Regenerated. * generated/minloc1_8_r4.c: Regenerated. * generated/minloc1_8_r8.c: Regenerated. * generated/minval_i1.c: Regenerated. * generated/minval_i16.c: Regenerated. * generated/minval_i2.c: Regenerated. * generated/minval_i4.c: Regenerated. * generated/minval_i8.c: Regenerated. * generated/minval_r10.c: Regenerated. * generated/minval_r16.c: Regenerated. * generated/minval_r4.c: Regenerated. * generated/minval_r8.c: Regenerated. * generated/norm2_r10.c: Regenerated. * generated/norm2_r16.c: Regenerated. * generated/norm2_r4.c: Regenerated. * generated/norm2_r8.c: Regenerated. * generated/pack_c10.c: Regenerated. * generated/pack_c16.c: Regenerated. * generated/pack_c4.c: Regenerated. * generated/pack_c8.c: Regenerated. * generated/pack_i1.c: Regenerated. * generated/pack_i16.c: Regenerated. * generated/pack_i2.c: Regenerated. * generated/pack_i4.c: Regenerated. * generated/pack_i8.c: Regenerated. * generated/pack_r10.c: Regenerated. * generated/pack_r16.c: Regenerated. * generated/pack_r4.c: Regenerated. * generated/pack_r8.c: Regenerated. * generated/parity_l1.c: Regenerated. * generated/parity_l16.c: Regenerated. * generated/parity_l2.c: Regenerated. * generated/parity_l4.c: Regenerated. * generated/parity_l8.c: Regenerated. * generated/product_c10.c: Regenerated. * generated/product_c16.c: Regenerated. * generated/product_c4.c: Regenerated. * generated/product_c8.c: Regenerated. * generated/product_i1.c: Regenerated. * generated/product_i16.c: Regenerated. * generated/product_i2.c: Regenerated. * generated/product_i4.c: Regenerated. * generated/product_i8.c: Regenerated. * generated/product_r10.c: Regenerated. * generated/product_r16.c: Regenerated. * generated/product_r4.c: Regenerated. * generated/product_r8.c: Regenerated. * generated/reshape_c10.c: Regenerated. * generated/reshape_c16.c: Regenerated. * generated/reshape_c4.c: Regenerated. * generated/reshape_c8.c: Regenerated. * generated/reshape_i16.c: Regenerated. * generated/reshape_i4.c: Regenerated. * generated/reshape_i8.c: Regenerated. * generated/reshape_r10.c: Regenerated. * generated/reshape_r16.c: Regenerated. * generated/reshape_r4.c: Regenerated. * generated/reshape_r8.c: Regenerated. * generated/shape_i16.c: Regenerated. * generated/shape_i4.c: Regenerated. * generated/shape_i8.c: Regenerated. * generated/spread_c10.c: Regenerated. * generated/spread_c16.c: Regenerated. * generated/spread_c4.c: Regenerated. * generated/spread_c8.c: Regenerated. * generated/spread_i1.c: Regenerated. * generated/spread_i16.c: Regenerated. * generated/spread_i2.c: Regenerated. * generated/spread_i4.c: Regenerated. * generated/spread_i8.c: Regenerated. * generated/spread_r10.c: Regenerated. * generated/spread_r16.c: Regenerated. * generated/spread_r4.c: Regenerated. * generated/spread_r8.c: Regenerated. * generated/sum_c10.c: Regenerated. * generated/sum_c16.c: Regenerated. * generated/sum_c4.c: Regenerated. * generated/sum_c8.c: Regenerated. * generated/sum_i1.c: Regenerated. * generated/sum_i16.c: Regenerated. * generated/sum_i2.c: Regenerated. * generated/sum_i4.c: Regenerated. * generated/sum_i8.c: Regenerated. * generated/sum_r10.c: Regenerated. * generated/sum_r16.c: Regenerated. * generated/sum_r4.c: Regenerated. * generated/sum_r8.c: Regenerated. * generated/transpose_c10.c: Regenerated. * generated/transpose_c16.c: Regenerated. * generated/transpose_c4.c: Regenerated. * generated/transpose_c8.c: Regenerated. * generated/transpose_i16.c: Regenerated. * generated/transpose_i4.c: Regenerated. * generated/transpose_i8.c: Regenerated. * generated/transpose_r10.c: Regenerated. * generated/transpose_r16.c: Regenerated. * generated/transpose_r4.c: Regenerated. * generated/transpose_r8.c: Regenerated. * generated/unpack_c10.c: Regenerated. * generated/unpack_c16.c: Regenerated. * generated/unpack_c4.c: Regenerated. * generated/unpack_c8.c: Regenerated. * generated/unpack_i1.c: Regenerated. * generated/unpack_i16.c: Regenerated. * generated/unpack_i2.c: Regenerated. * generated/unpack_i4.c: Regenerated. * generated/unpack_i8.c: Regenerated. * generated/unpack_r10.c: Regenerated. * generated/unpack_r16.c: Regenerated. * generated/unpack_r4.c: Regenerated. * generated/unpack_r8.c: Regenerated. * intrinsics/cshift0.c: Use xmalloc. * intrinsics/ctime.c: Likewise. * intrinsics/date_and_time.c: Likewise. * intrinsics/eoshift0.c: Likewise. * intrinsics/eoshift2.c: Likewise. * intrinsics/getlog.c: Likewise. * intrinsics/pack_generic.c: Likewise. * intrinsics/reshape_generic.c: Likewise. * intrinsics/spread_generic.c: Likewise. * intrinsics/string_intrinsics_inc.c: Likewise. * intrinsics/transpose_generic.c: Likewise. * intrinsics/unpack_generic.c: Likewise. * io/fbuf.c: Likewise. * io/format.c: Likewise. * io/intrinsics.c: Likewise. * io/list_read.c: Likewise. * io/open.c: Likewise. * io/transfer.c: Likewise. * io/unit.c: Likewise. * io/unix.c: Likewise. * io/write.c: Likewise. * m4/bessel.m4: Likewise. * m4/cshift1.m4: Likewise. * m4/eoshift1.m4: Likewise. * m4/eoshift3.m4: Likewise. * m4/iforeach.m4: Likewise. * m4/ifunction.m4: Likewise. * m4/ifunction_logical.m4: Likewise. * m4/in_pack.m4: Likewise. * m4/matmul.m4: Likewise. * m4/matmull.m4: Likewise. * m4/pack.m4: Likewise. * m4/reshape.m4: Likewise. * m4/shape.m4: Likewise. * m4/spread.m4: Likewise. * m4/transpose.m4: Likewise. * m4/unpack.m4: Likewise. * runtime/convert_char.c: Likewise. * runtime/environ.c: Likewise. * runtime/in_pack_generic.c: Likewise. From-SVN: r185806
2012-03-25Use calloc instead of malloc and memset.Janne Blomqvist3-30/+11
2012-03-25 Janne Blomqvist <jb@gcc.gnu.org> * runtime/memory.c (xcalloc): New function. * libgfortran.h (xcalloc): New prototype. * io/list_read.c (push_char): Use xcalloc instead of get_mem and memset. (l_push_char): Likewise. * io/unit.c (insert_unit): Likewise. (get_internal_unit): Likewise. * io/unix.c (open_internal): Likewise. (open_internal4): Likewise. (fd_to_stream): Likewise. From-SVN: r185773
2012-03-17PR libfortran/52608 Move the removal of initial zeros.Janne Blomqvist1-6/+7
2012-03-17 Janne Blomqvist <jb@gcc.gnu.org> PR libfortran/52608 * io/write_float.def (output_float): Move removal of initial zeros until after the scale factor has been applied. From-SVN: r185486
2012-03-16Share vtables instead of replicating them for each unit.Janne Blomqvist2-54/+72
2012-03-16 Janne Blomqvist <jb@gcc.gnu.org> * io/unix.h (struct stream): Rename to stream_vtable. (struct stream): New struct definition. (sread): Dereference vtable pointer. (swrite): Likewise. (sseek): Likewise. (struncate): Likewise. (sflush): Likewise. (sclose): Likewise. * io/unix.c (raw_vtable): New variable. (buf_vtable): Likewise. (mem_vtable): Likewise. (mem4_vtable): Likewise. (raw_init): Assign vtable pointer. (buf_init): Likewise. (open_internal): Likewise. (open_internal4): Likewise. From-SVN: r185454
2012-03-15Remove commented out debug printf:sJanne Blomqvist1-5/+0
From-SVN: r185444
2012-03-15re PR libfortran/52434 (Insufficient number of digits in floating point ↵Janne Blomqvist2-117/+316
formatting) 2012-03-15 Janne Blomqvist <jb@gcc.gnu.org> PR libfortran/52434 PR libfortran/48878 PR libfortran/38199 * io/unit.c (get_internal_unit): Default to ROUND_UNSPECIFIED. (init_units): Likewise. * io/write_float.def (determine_precision): New function. (output_float): Take into account buffer with %f format, no need for our own rounding if unspecified or processor specified rounding. (DTOA): Simplify format string, add parameters. (FDTOA): New macros similar to DTOA, but using %f format. (OUTPUT_FLOAT_FMT_G): Stack allocate newf, determine correct precision and fill buffer. (EN_PREC): New macro. (determine_en_precision): New function. (WRITE_FLOAT): For G format, move buffer filling into output_float_FMT_G, use FDTOA for F format. (write_float): Increase buffer due to F format. testsuite ChangeLog: 2012-03-15 Janne Blomqvist <jb@gcc.gnu.org> PR libfortran/52434 PR libfortran/48878 PR libfortran/38199 * gfortran.dg/edit_real_1.f90: Don't assume roundTiesToAway. * gfortran.dg/round_1.f03: Likewise. From-SVN: r185433
2011-12-22PR 51646 Use POSIX mode flags in open() argument.Janne Blomqvist1-2/+2
2011-12-22 Janne Blomqvist <jb@gcc.gnu.org> Tobias Burnus <burnus@net-b.de> PR libfortran/51646 * acinclude.m4 (LIBGFOR_CHECK_UNLINK_OPEN_FILE): Use POSIX mode flags, omit mode argument when flags argument does not have O_CREAT. * io/unix.c (tempfile): Use POSIX mode flags. * configure: Regenerate. Co-Authored-By: Tobias Burnus <burnus@net-b.de> From-SVN: r182638
2011-12-08re PR fortran/50815 (ICE on allocation of deferred length character scalar ↵Tobias Burnus1-0/+37
dummy argument when -fbounds-check) 2011-12-08 Tobias Burnus <burnus@net-b.de> PR fortran/50815 * trans-decl.c (add_argument_checking): Skip bound checking for deferred-length strings. 2011-12-08 Tobias Burnus <burnus@net-b.de> PR fortran/50815 * gfortran.dg/bounds_check_16.f90: New. From-SVN: r182134
2011-11-10Let the compiler decide whether to inline.Janne Blomqvist5-20/+14
2011-11-10 Janne Blomqvist <jb@gcc.gnu.org> * intrinsics/cpu_time.c (__cpu_time_1): Don't force inlining. * intrinsics/random.c (rnumber_4): Remove inline attribute. (rnumber_8, rnumber_10, rnumber_16): Likewise. * intrinsics/system_clock.c (gf_gettime_mono): Likewise. * intrinsics/time_1.h (ATTRIBUTE_ALWAYS_INLINE): Remove macro. (gf_cputime): Add inline attribute for MingW version. * io/format.c (format_hash): Remove inline attribute. * io/io.h (memset4): Inline function from transfer.c and write.c moved here. * io/transfer.c (min_off): Remove inline attribute. (memset4): Move to io.h. * io/write.c (memset4): Likewise. (memcpy4): Remove inline attribute. * io/write_float.def (calculate_exp): Likewise. From-SVN: r181260
2011-11-09Configure cleanup.Janne Blomqvist1-4/+1
2011-11-09 Janne Blomqvist <jb@gcc.gnu.org> * configure.ac (AC_STDC_HEADERS): Remove. (AC_HEADER_TIME): Remove. (AC_HAVE_HEADERS, AC_CHECK_HEADERS): Move into a single invocation of AC_CHECK_HEADERS_ONCE, don't check for presence of C89 headers. (AC_CHECK_MEMBERS): Use single invocation. (AC_CHECK_FUNCS): Move into single invocation of AC_CHEC_FUNCS_ONCE, don't check for presence of C89 functions. * config.h.in: Regenerate. * configure: Regenerate. * intrinsics/clock.c: Include time.h. (mclock): Assume clock() is present. (mclock8): Likewise. * intrinsics/ctime.c (strctime): Assume strftime is present. (fdate): Assume time() is present. (fdate_sub): Likewise. (ctime): Likewise. * intrinsics/date_and_time.c: Don't provide abs macro. (HAVE_NO_DATE_TIME): Remove code related to macro which is never set. * intrinsics/execute_command_line.c: Assume stdlib.h is present. * intrinsics/exit.c: Likewise. * intrinsics/extends_type_of.c: Likewise. * intrinsics/gerror.c: Assume strerror() is present. * intrinsics/kill.c: Assume signal.h is present. * intrinsics/malloc.c: Assume stdlib.h is present. * intrinsics/move_alloc.c: Likewise. * intrinsics/perror.c: Assume perror() is present. * intrinsics/signal.c: Assume signal.h is present. * intrinsics/stat.c: Assume stdlib.h is present. * intrinsics/system.c: Likewise. * intrinsics/time.c: Include time.h, assume time() is present. * intrinsics/time_1.h: Conditionally include sys/time.h, unconditionally time.h. (gf_cputime): Do division in double, fallback using clock(). (gf_gettime): Assume time() is present. * intrinsics/umask.c: Assume stdlib.h is present. * runtime/backtrace.c: Likewise. * runtime/compile_options.c: Assume signal.h is present, assume C89 signals are present. * runtime/error.c: Assume signal.h and stdlib.h are present. From-SVN: r181227
2011-11-09PR 50016 Slow I/O on MingW due to _commitJanne Blomqvist2-5/+4
frontend ChangeLog: 2011-11-09 Janne Blomqvist <jb@gcc.gnu.org> PR libfortran/50016 * gfortran.texi (Data consistency and durability): New section. testsuite ChangeLog: 2011-11-09 Janne Blomqvist <jb@gcc.gnu.org> PR libfortran/50016 * gfortran.dg/inquire_size.f90: Don't flush the unit. libgfortran ChangeLog: 2011-11-09 Janne Blomqvist <jb@gcc.gnu.org> PR libfortran/50016 * io/inquire.c (inquire_via_unit): Flush the unit and use ssize. * io/unix.c (buf_flush): Don't call _commit. From-SVN: r181207
2011-11-07Revert previous fix for PR 45723.Janne Blomqvist1-1/+1
libgfortran ChangeLog: 2011-11-07 Janne Blomqvist <jb@gcc.gnu.org> PR libfortran/45723 * io/open.c (new_unit): Don't check file size before attempting seek. testsuite ChangeLog: 2011-11-07 Janne Blomqvist <jb@gcc.gnu.org> PR libfortran/45723 * gfortran.dg/open_dev_null.F90: Remove testcase. From-SVN: r181085
2011-11-01Copyright years and whitespace fix for r180734Janne Blomqvist2-3/+4
From-SVN: r180736
2011-11-01Cleanup NEWUNIT allocation.Janne Blomqvist2-10/+8
2011-11-01 Janne Blomqvist <jb@gcc.gnu.org> * io/io.h (next_available_newunit): Remove prototype. * io/unit.h (next_available_newunit): Make variable static, initialize it. (init_units): Don't initialize next_available_newunit. (get_unique_unit_number): Use atomic builtin if available. From-SVN: r180734
2011-10-31Update file position for inquire lazily.Janne Blomqvist4-43/+33
libgfortran ChangeLog: 2011-10-31 Janne Blomqvist <jb@gcc.gnu.org> * io/inquire.c (inquire_via_unit): Check whether we're at the beginning or end if the position is unspecified. If the position is not one of the 3 standard ones, return unspecified. * io/io.h (update_position): Remove prototype. * io/transfer.c (next_record): Set the position to unspecified, letting inquire figure it out more exactly when needed. * io/unit.c (update_position): Remove function. testsuite ChangeLog: 2011-10-31 Janne Blomqvist <jb@gcc.gnu.org> * gfortran.dg/inquire_5.f90: Update testcase to match the standard and current implementation. From-SVN: r180703
2011-10-31Introduce a size member function to struct stream.Janne Blomqvist6-24/+37
2011-10-31 Janne Blomqvist <jb@gcc.gnu.org> * io/unix.h (struct stream): Add size function pointer. (ssize): New inline function. (file_length): Remove prototype. * io/unix.c (raw_size): New function. (raw_init): Initialize st.size pointer. (buf_size): New function. (buf_init): Initialize st.size pointer. (open_internal): Likewise. (open_internal4): Likewise. (file_length): Remove function. * io/file_pos.c (st_rewind): Use ssize instead of file_length. * io/open.c (test_endfile): Likewise. * io/transfer.c (data_transfer_init): Likewise. (next_record_r): Likewise. (next_record_w): Likewise. * io/unit.c (update_position): Likewise. From-SVN: r180702
2011-10-31Simplify handling of special files.Janne Blomqvist6-117/+43
2011-10-31 Janne Blomqvist <jb@gcc.gnu.org> * io/file_pos.c (st_rewind): Handle regular and special files identically. * io/intrinsics.c (fseek_sub): Don't check whether we think the file is seekable, just do what the caller says. * io/transfer.c (skip_record): First try to seek, then fallback to reading and throwing away what we read. * io/unit.c (update_position): Don't check whether file is seekable, just try to do what we're told. (unit_truncate): Likewise. * io/unix.c (struct unix_stream): Remove special_file flag. (buf_flush): Remove code for handling unseekable files. (buf_seek): Likewise. (fd_to_stream): Use buffered IO only for regular files. (file_length): Remove is_seekable() call. (is_seekable): Remove function. (is_special): Likewise. * io/unix.h: Remove prototypes for is_seekable and is_special. From-SVN: r180701
2011-08-18re PR fortran/50109 (Formatted namelist read with multiple "!" fails with: ↵Tobias Burnus1-10/+1
Cannot match namelist object name !) 2011-08-18 Tobias Burnus <burnus@net-b.de> PR fortran/50109 * io/list_read.c (eat_separator): Fix skipping over "!" lines. 2011-08-18 Tobias Burnus <burnus@net-b.de> PR fortran/50109 * gfortran.dg/namelist_73.f90: New. From-SVN: r177858
2011-07-23re PR libfortran/49791 (Formatted namelist reads fails with: Cannot match ↵Tobias Burnus1-1/+0
namelist object) 2011-07-23 Tobias Burnus <burnus@net-b.de> PR fortran/49791 * io/list_read.c (nml_parse_qualifier): Remove check to enabled extended read for another case. 2011-07-23 Tobias Burnus <burnus@net-b.de> PR fortran/49791 * gfortran.dg/namelist_72.f: New. From-SVN: r176661
2011-07-13PR 49296 List read, EOF without preceding separatorJanne Blomqvist1-6/+6
2011-07-13 Janne Blomqvist <jb@gcc.gnu.org> PR libfortran/49296 * io/list_read.c (read_logical): Don't error out if a valid value is followed by EOF instead of a normal separator. (read_integer): Likewise. testsuite: 2011-07-13 Janne Blomqvist <jb@gcc.gnu.org> PR libfortran/49296 * gfortran.dg/read_list_eof_1.f90: Add tests for integer, real, and logical reads. From-SVN: r176245
2011-06-18PR 49296 List directed read of string ending in EOF.Janne Blomqvist1-9/+9
libgfortran ChangeLog entry: 2011-06-18 Janne Blomqvist <jb@gcc.gnu.org> PR libfortran/49296 * io/list_read.c (read_character): Accept EOF as a separator when reading string. testsuite ChangeLog entry: 2011-06-18 Janne Blomqvist <jb@gcc.gnu.org> PR libfortran/48296 * gfortran.dg/read_list_eof_1.f90: New test. From-SVN: r175166
2011-06-11Return error when trying to seek a non-seekable buffered fileJanne Blomqvist1-1/+6
From-SVN: r174947
2011-06-11Figure out whether a file is seekable with lseek()Janne Blomqvist1-6/+6
From-SVN: r174946
2011-05-29PR 19155 Check for strtod failure via endptrJanne Blomqvist1-15/+23
From-SVN: r174393
2011-05-14Error printing thread safety, remove GFORTRAN_USE_STDERRJanne Blomqvist1-55/+0
From-SVN: r173749
2011-05-05re PR libfortran/48787 (Invalid UP/DOWN rounding with F editing)Jerry DeLisle1-12/+18
2011-05-04 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR libgfortran/48787 * io/write_float.def (output_float): Adjust up and down rounding for cases where 'd' = 0. Gather common code to one location. From-SVN: r173408
2011-05-01re PR libfortran/48787 (Invalid UP/DOWN rounding with F editing)Jerry DeLisle1-19/+21
2011-05-01 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR libgfortran/48787 * io/write_float.def (output_float): Gather up integer declarations and add new 'p' for scale factor. Use 'p' in place of the 'dtp' reference everywhere. For ROUND_UP scan the digit string and only perform rounding if something other than '0' is found. From-SVN: r173231
2011-04-29Fix path handlingJanne Blomqvist1-16/+26
From-SVN: r173172
2011-04-29PR 48488 TypoJanne Blomqvist1-1/+1
From-SVN: r173171
2011-04-29PR 48488 Fix commentsJanne Blomqvist1-8/+11
From-SVN: r173170
2011-04-29PR 48488 Fix commentsJanne Blomqvist1-4/+11
From-SVN: r173169
2011-04-29re PR libfortran/48488 (Wrong default format for real numbers)Jerry DeLisle2-57/+41
2011-04-29 Jerry DeLisle <jvdelisle@gcc.gnu.org> Janne Blomqvist <jb@gcc.gnu.org> PR libgfortran/48488 PR libgfortran/48602 PR libgfortran/48615 PR libgfortran/48684 PR libgfortran/48787 * io/write.c (write_d, write_e, write_f, write_en, write_es): Add precision compemsation parameter to call. (set_fnode_default): Adjust default widths to assure round trip on write and read. (write_real): Adjust call to write_float. (write_real_g0): Calculate compensation for extra precision and adjust call to write_float. * io/write_float.def (output_float_FMT_G_): Use volatile rather than asm volatile to avoid optimization issue. Correctly calculate the number of blanks (nb) to be appended and simplify calculation logic. (write_float): Increase MIN_FIELD_WIDTH by one to accomodate the new default widths. Eliminate the code that attempted to reduce the the precision used in later sprintf functions. Add call parameter to compensate for extra precision. Co-Authored-By: Janne Blomqvist <jb@gcc.gnu.org> From-SVN: r173166
2011-04-20remove useless if-before-free testsJim Meyering5-14/+7
Change "if (E) free (E);" to "free (E);" everywhere except in the libgo/, intl/, zlib/ and classpath/ directories. Also transform equivalent variants like "if (E != NULL) free (E);" and allow an extra cast on the argument to free. Otherwise, the tested and freed "E" expressions must be identical, modulo white space. From-SVN: r172785
2011-04-20re PR libfortran/48602 (Invalid F conversion of G descriptor for values ↵Jerry DeLisle1-2/+4
close to powers of 10) 2011-04-19 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR libgfortran/48602 * io/write_float.def (output_float_FMT_G): Fix reversal in conditional. Use asm volatile to mark temp variable, avoiding optimization errors. From-SVN: r172753
2011-04-18re PR libfortran/48602 (Invalid F conversion of G descriptor for values ↵Jerry DeLisle1-5/+24
close to powers of 10) 2011-04-17 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR libgfortran/48602 * io/write_float.def (output_float_FMT_G): Use current rounding mode to set the rounding parameters. (output_float): Skip rounding if value is zero. From-SVN: r172634
2011-04-16Replace sprintf with snprintfJanne Blomqvist7-94/+92
From-SVN: r172590
2011-04-15re PR libfortran/48589 (Invalid G0/G0.d editing for NaN/infinity)Jerry DeLisle1-2/+2
2011-04-15 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR libgfortran/48589 * io/write_float.def (write_infnan): Set width properly for G0. From-SVN: r172502