tree-optimization/111950 - vectorizer loop copying
[official-gcc.git] / libgfortran / ChangeLog-2007
blob11f9df093557a80b0b939dcab8c43b7034887a59
1 2007-12-27  Thomas Koenig  <tkoenig@gcc.gnu.org>
3         PR libfortran/22423
4         * intrinsics/pack_generic.c (pack): Change type of mask argument
5         to gfc_array_l1 * in prototype and function.
6         (pack_char):  Likewise.
7         * intrinsics/unpack_generic.c (unpack1):  Likewise.
8         (unpack1_char):  Likewise.
9         (unpack0):  Likewise.
10         (unpack0_char):  Likewise.
12 2007-12-27  Thomas Koenig  <tkoenig@gcc.gnu.org>
14         PR libfortran/34594
15         * runtime/error.c: If there was a previous error, don't
16         mask it with another error mesage, EOF or EOR condition.
18 2007-12-25  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
20         PR libfortran/34560
21         * io/transfer.c (read_sf): Check if readlen was less than the requested
22         number of bytes to read and if so, generate error.
24 2007-12-25  Daniel Franke  <franke.daniel@gmail.com>
26         PR fortran/34533
27         * intrinsics/cpu_time.c: Moved code commonly usable for CPU_TIME,
28         DTIME and ETIME to ...
29         * intrinsics/time_1.h: ... here.
30         * intrinsics/dtime.c: New file.
31         * intrinsics/etime.c: Newly implemented using the common 
32         time-aquisition function from time_1.h.
33         * gfortran.map (_gfortran_dtime, _gfortran_dtime_sub): New.
34         * Makefile.am: Added new file.
35         * Makefile.in: Regenerated.
36         * configure: Regenerated.
38 2007-12-25  Thomas Koenig  <tkoenig@gcc.gnu.org>
40         PR libfortran/34566
41         * m4/matmull.m4:  Multiply xstride and ystride by correct kind.
42         * generated/matmul_l4.c:  Regenerated.
43         * generated/matmul_l8.c:  Regenerated.
44         * generated/matmul_l16.c:  Regenerated.
46 2007-12-19  Tobias Burnus  <burnus@net-b.de>
48         PR fortran/34530
49         * io/list_read.c (eat_line): Move up in the file.
50         (eat_separator): In namelist mode, skip over comment lines.
52 2007-12-16  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
54         PR fortran/34427
55         * io/list_read.c (read_real): Handle intervening line ends and spaces.
56         (get_name): Don't push separators to saved_string.
57         (eat_separator): If in namelist mode eat spaces and line ends as well.
59 2007-12-13  Thomas Koenig  <tkoenig@gcc.gnu.org>
61         PR libfortran/34370
62         PR libfortran/34323
63         PR libfortran/34405
64         * io/io.h:  Add previous_nonadvancing_write to gfc_unit.
65         Add prototype for finish_last_advance_record.
66         * io/file_pos.c (st_backspace):  Generate error if backspace is
67         attempted for direct access or unformatted stream.
68         If there are bytes left from a previous ADVANCE="no", write
69         them out before performing the backspace.
70         (st_endfile):  Generate error if endfile is attempted for
71         direct access.
72         If there are bytes left from a previous ADVANCE="no", write
73         them out before performing the endfile.
74         (st_rewind):  Generate error if rewind is attempted for
75         direct access.
76         * unit.c (close_unit_1):  Move functionality to write
77         previously written bytes to...
78         (finish_last_advance_record):  ... here.
79         * transfer.c (data_transfer_init):  If reading, reset
80         previous_nonadvancing_write.
81         (finalize_transfer):  Set the previous_noadvancing_write
82         flag if we are writing and ADVANCE="no" was specified.
83         Only call next_record() if advance="no" wasn't specified.
85 2007-12-13  Tobias Burnus  <burnus@net-b.de>
87         PR fortran/34427
88         * io/list_read.c (read_real): Fix unwinding for namelists.
90 2007-12-10  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
92         PR libfortran/34411
93         * io/read.c (convert_real, read_l, read_decimal, read_radix, read_f):
94         Call next_record after bad read or overflow error.
96 2007-12-09  Tobias Burnus  <burnus@net-b.de>
98         PR fortran/34404
99         * io/list_read.c (parse_real): Remove superfluous "goto bad;".
101 2007-12-08  Tobias Burnus  <burnus@net-b.de>
103         PR fortran/34319
104         * io/list_read.c (parse_real, read_real): Support NaN/Infinity.
106 2007-12-02  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
107             Thomas Koenig  <tkoenig@gcc.gnu.org>
109         PR libfortran/33985
110         * io/transfer.c (read_block, read_block_direct, write_block, write_buf):
111         Don't seek if file position is already there for STREAM I/O.
112         (finalize_transfer): For STREAM I/O don't flush unless the file position
113         has moved past the start position before the transfer.
115 2007-12-01  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
117         * intrinsic/stat.c (stat_i4_sub_0, stat_i8_sub_0): Mark parameter
118         with unused attribute.
119         * intrinsics/system_clock.c (system_clock_4, system_clock_8):
120         Remove unused variable.
121         * intrinsics/umask.c: Include unistd.h.
123 2007-11-30  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
125         PR libfortran/34291
126         * io/list_read.c (read_character): When reading an unquoted string,
127         return if special characters that could signify the end of the namelist
128         read are encountered.
130 2007-11-29  Steven G. Kargl  <kargls@comcast.net>
132         PR libfortran/33583
133         * libgfortran/gfortran.map: Add tgammaf, tgamma, lgamma, and lgammaf.
134         * gfortran.dg/gamma_5.f90: Remove xfail.
136 2007-11-16  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
138         PR libfortran/33583
139         PR libfortran/33698
140         * intrinsics/c99_functions.c (tgamma, tgammaf, lgamma, lgammaf):
141         New fallback functions.
142         * c99_protos.h (tgamma, tgammaf, lgamma, lgammaf): New prototypes.
143         * configure.ac: Add checks for tgamma, tgammaf, tgammal, lgamma,
144         lgammaf and lgammal.
145         * config.h.in: Regenerate.
146         * configure: Regenerate.
148 2007-11-08  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
150         * mk-kinds-h.sh: Change sed syntax.
152 2007-11-06  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
154         PR libfortran/33985
155         * io/transfer.c (finalize_transfer): Revert previous patch.
156         
157 2007-11-03  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
159         PR libfortran/33985
160         * io/transfer.c (finalize_transfer): Do not flush for
161         unformatted STREAM I/O.
163 2007-10-27  Tobias Burnus  <burnus@net-b.de>
165         * mk-kinds-h.sh: Change LANG=C to LC_ALL=C.
167 2007-10-26  Tobias Burnus  <burnus@net-b.de>
169         * mk-kinds-h.sh: Add "LANG=C".
171 2007-10-26  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
173         * libgfortran.h (GFC_REAL_*_HUGE, GFC_REAL_*_DIGITS,
174         GFC_REAL_*_RADIX): Remove.
175         * mk-kinds-h.sh: Define GFC_REAL_*_HUGE, GFC_REAL_*_DIGITS and
176         GFC_REAL_*_RADIX. Don't define GFC_REAL_LARGEST_FORMAT and
177         GFC_REAL_LARGEST.
179 2007-10-19  Ben Elliston  <bje@au.ibm.com>
181         * intrinsics/signal.c (alarm_sub_i4): Mark conditionally unused
182         parameters with __attribute__ ((unused)).
183         (alarm_sub_i8): Likewise.
184         (alarm_sub_int_i4): Likewise.
185         (alarm_sub_int_i8): Likewise.
187 2007-10-18  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
188             Jerry DeLisle  <jvdelisle@gcc.gnu.org>
190         PR libfortran/33795
191         * libgfortran.h: Add unbuffered_preconnected.
192         * io/unix.c (output_stream): Set stream unbuffered flag if
193         options.unbuffered_preconnected has been set.
194         (error_stream): Ditto.
195         * runtime/environ.c (variable_table): Add to environment variable table
196         the entry: GFORTRAN_UNBUFFERED_PRECONNECTED. 
197         
198 2007-10-18  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
200         PR libfortran/32021
201         * runtime/backtrace.c (local_strcasestr): Protect by appropriate
202         macros.
203         * runtime/main.c (cleanup): Cast argument to free.
204         * intrinsics/spread_generic.c (spread_internal): Match runtime_error
205         arguments and format.
206         * intrinsics/signal.c (alarm_sub_int_i4, alarm_sub_int_i8): Cast
207         pointers to avoid warnings.
209 2007-10-18  Ben Elliston  <bje@au.ibm.com>
211         * runtime/environ.c (init_choice): Remove unused function.
212         (show_choice): Likewise.
213         (choice): Remove.
214         (FP_ROUND_NEAREST, FP_ROUND_UP, FP_ROUND_DOWN, FP_ROUND_ZERO):
215         Remove.
216         (precision, signal_choices): Remove.
218 2007-10-15 Christopher D. Rickett <crickett@lanl.gov>
220         PR fortran/32600
221         * libgfortran/intrinsics/iso_c_binding.c: Remove c_associated_1
222         and c_associated_2.
223         * libgfortran/intrinsics/iso_c_binding.h: Ditto.
224         * libgfortran/gfortran.map: Ditto.
226 2007-10-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
228         PR libfortran/33055
229         * io/inquire.c (inquire_via_unit):  If inquiring by unit, check for
230         an error condition from the IOSTAT variable and set EXIST to false if
231         there was a bad unit number.
233 2007-10-14  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
235         PR libfortran/33672
236         * io/list_read.c (nml_parse_qualifier): Add character specific error
237         messages.  Check for proper form of sub-string qualifiers.  Return the
238         parsed_rank flag indicating a non-zero rank qualifier.
239         (nml_get_obj_data):  Count the instances of non-zero rank qualifiers.
240         Issue an error if more that one non-zero rank qualifier is found.
242 2007-10-04  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
244         PR libfortran/33253
245         * io/list_read.c (read_character): Use line_buffer to scan ahead for
246         object name or string when no delimiter is found.
248 2007-10-04  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
250         PR libfortran/32021
251         * runtime/environ.c (init_mem, show_mem, init_round, show_round,
252         init_precision, show_precision, init_signal, show_signal): Remove.
253         (variable_table): Remove GFORTRAN_MEM_INIT, GFORTRAN_MEM_CHECK,
254         GFORTRAN_SIGHUP, GFORTRAN_SIGINT, GFORTRAN_FPU_ROUND and
255         GFORTRAN_FPU_PRECISION.
256         * libgfortran.h (options_t): Remove mem_check, fpu_round,
257         fpu_precision, sighup, sigint, allocate_init_flag and
258         allocate_init_value.
260 2007-10-02  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
262         PR libfortran/33253
263         * io/list_read.c (read_character): Use DELIM_APOSTROPHE and DELIM_QUOTE
264         and quote value in check of first character in string.
266 2007-10-02  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
268         PR fortran/33469
269         * io/write.c (write_real): Widen the default formats.
271 2007-09-28  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
273         PR libfortran/33400
274         * io/list_read.c (next_char): Interpret encountering the end of file the
275         first time as an end of line.  Subsequent reads give EOF error.
277 2007-09-27  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
279         PR libfortran/33421
280         * io/list_read.c (read_character): Revert r128057.
282 2007-09-21  Bernhard Fischer  <aldot>
284         PR fortran/31546
285         * (configure.ac): Add --enable-intermodule for onestep build.
286         * (Makefile.am): Handle onestep build.
287         * (configure, Makefile.in): Regenerate.
289 2007-09-21  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
291         PR libfortran/26253
292         * intrinsics/c99_functions.c (scalbn): Use ldexp if appopriate.
294 2007-09-21  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
296         PR libfortran/23272
297         * io/unix.c (id_from_handle, id_from_path, id_from_fd): New
298         functions.
299         (compare_file_filename, find_file, find_file0): Use the new
300         functions above.
302 2007-09-21  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
304         * acinclude.m4 (LIBGFOR_TARGET_ILP32): Remove test.
305         * configure.ac: Don't call LIBGFOR_TARGET_ILP32.
306         * configure: Regenerate.
307         * config.h.in: Regenerate.
309 2007-09-15  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
311         PR libfortran/21185
312         * runtime/compile_options.c (set_options): Fix typo.
313         * runtime/main.c (store_exe_path): If getcwd is not available,
314         don't use it.
315         * intrinsics/getcwd.c: Same thing here.
316         * io/unix.c (fallback_access): New fallback function for access.
317         (fix_fd): Don't use dup if it's not available.
318         * configure.ac: Check for dup and getcwd.
319         * configure: Regenerate.
320         * config.h.in: Regenerate.
322 2007-09-12  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
324         * io/io.h: Include libgfortran.h first.
326 2007-09-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
328         PR libfortran/33386
329         * runtime/select.c (select_string): Initialize default_jump.
331 2007-09-07  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
333         PR libfortran/33307
334         * io/filepos.c (st_backspace): Don't truncate when already at the end
335         of the file.
336         
337 2007-09-07  Uros Bizjak  <ubizjak@gmail.com>
339         * config/fpu-387.h: Include cpuid.h.
340         (set_fpu): Use __get_cpuid to check for SSE.
342 2007-09-06  Thomas Koenig  <tkoenig@gcc.gnu.org>
344         PR fortran/33298
345         * intrinsics/spread_generic.c(spread_internal): Enable
346         bounds checking by comparing extents if the bounds_check
347         option has been set.  If any extent is <=0, return early.
349 2007-09-06  David Edelsohn  <edelsohn@gnu.org>
351         * libgfortran.h: Include config.h first.
352         * io/io.h (struct stream): Rename truncate to trunc.
353         * io/unix.c (fd_open): Same.
354         (open_internal): Same.
356 2007-09-05  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
358         PR libfortran/33253
359         * io/write.c (nml_write_obj): Set the delimiter correctly before
360         calling write_character. (namelist_write): Clean up the code a little
361         and add comments to clarify what its doing.
363 2007-09-04  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
365         PR libfortran/33225
366         * io/write.c (stdbool.h): Add include. (sign_t): Move typedef to
367         new file write_float.def. Include write_float.def.
368         (extract_real): Delete. (calculate_sign): Delete.
369         (calculate_exp): Delete. (calculate_G_format): Delete.
370         (output_float): Delete. (write_float): Delete.
371         * io/write_float.def (calculate_sign): Added.
372         (output_float): Refactored to be independent of kind and added to this
373         file for inclusion. (write_infnan): New function to write "Infinite"
374         or "NaN" depending on flags passed, independent of kind.
375         (CALCULATE_EXP): New macro to build kind specific functions. Use it.
376         (OUTPUT_FLOAT_FMT_G): New macro, likewise. Use it.
377         (DTOA, DTOAL): Macros to implement "decimal to ascii".
378         (WRITE_FLOAT): New macro for kind specific write_float functions.
379         (write_float): Revised function to determine kind and use WRITE_FLOAT
380         to implement kind specific output.
382 2007-09-03  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
384         PR libfortran/33253
385         * io/list_read.c (read_character): Use DELIM_APOSTROPHE and
386         DELIM_QUOTE in check of first character in string. 
388 2007-09-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
390         PR fortran/31675
391         * libgfortran.h: Include gcc/fortran/libgfortran.h.
392         Remove M_PI, GFC_MAX_DIMENSIONS, GFC_DTYPE_*, GFC_NUM_RANK_BITS,
393         error_codes, GFC_STD_*, GFC_FPE_* and unit_convert.
394         * runtime/environ.c (variable_table): Use GFC_*_UNIT_NUMBER instead
395         of hardcoded constants.
396         (do_parse, init_unformatted): Use GFC_CONVERT_* macros instead of
397         CONVERT_*.
398         * runtime/string.c (find_option): Use LIBERROR_BAD_OPTION instead
399         of ERROR_BAD_OPTION.
400         * runtime/error.c (translate_error, generate_error): Use
401         LIBERROR_* macros instead of ERROR_*.
402         * io/file_pos.c (formatted_backspace, unformatted_backspace,
403         st_backspace, st_rewind, st_flush): Rename macros.
404         * io/open.c (convert_opt, edit_modes, new_unit, already_open,
405         st_open): Likewise.
406         * io/close.c (st_close): Likewise.
407         * io/list_read.c (next_char, convert_integer, parse_repeat,
408         read_logical, read_integer, read_character, parse_real,
409         check_type, list_formatted_read_scalar, namelist_read,
410         nml_err_ret): Likewise.
411         * io/read.c (convert_real, read_l, read_decimal, read_radix,
412         read_f): Likewise.
413         * io/inquire.c (inquire_via_unit): Likewise.
414         * io/unit.c (get_internal_unit): Likewise.
415         * io/transfer.c (read_sf, read_block, read_block_direct,
416         write_block, write_buf, unformatted_read, unformatted_write,
417         formatted_transfer_scalar, us_read, us_write, data_transfer_init,
418         skip_record, next_record_r, write_us_marker, next_record_w_unf,
419         next_record_w, finalize_transfer, st_read, st_write_done):
420         Likewise.
421         * io/format.c (format_error): Likewise.
423 2007-08-31  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
425         * m4/minloc1.m4: Update copyright year and ajust headers order.
426         * m4/maxloc1.m4: Likewise.
427         * m4/in_pack.m4: Likewise.
428         * m4/sum.m4: Likewise.
429         * m4/fraction.m4: Likewise.
430         * m4/all.m4: Likewise.
431         * m4/set_exponent.m4: Likewise.
432         * m4/transpose.m4: Likewise.
433         * m4/eoshift1.m4: Likewise.
434         * m4/spacing.m4: Likewise.
435         * m4/eoshift3.m4: Likewise.
436         * m4/minval.m4: Likewise.
437         * m4/count.m4: Likewise.
438         * m4/maxval.m4: Likewise.
439         * m4/exponent.m4: Likewise.
440         * m4/shape.m4: Likewise.
441         * m4/head.m4: Likewise.
442         * m4/cshift1.m4: Likewise.
443         * m4/minloc0.m4: Likewise.
444         * m4/nearest.m4: Likewise.
445         * m4/maxloc0.m4: Likewise.
446         * m4/pow.m4: Likewise.
447         * m4/in_unpack.m4: Likewise.
448         * m4/matmull.m4: Likewise.
449         * m4/product.m4: Likewise.
450         * m4/reshape.m4: Likewise.
451         * m4/any.m4: Likewise.
452         * m4/rrspacing.m4: Likewise.
453         * m4/matmul.m4: Likewise.
454         * runtime/backtrace.c: Likewise.
455         * runtime/environ.c: Likewise.
456         * runtime/in_pack_generic.c: Likewise.
457         * runtime/compile_options.c: Likewise.
458         * runtime/in_unpack_generic.c: Likewise.
459         * runtime/main.c: Likewise.
460         * runtime/stop.c: Likewise.
461         * runtime/string.c: Likewise.
462         * runtime/memory.c: Likewise.
463         * runtime/error.c: Likewise.
464         * runtime/pause.c: Likewise.
465         * intrinsics/ierrno.c: Likewise.
466         * intrinsics/system_clock.c: Likewise.
467         * intrinsics/cshift0.c: Likewise.
468         * intrinsics/unlink.c: Likewise.
469         * intrinsics/ctime.c: Likewise.
470         * intrinsics/etime.c: Likewise.
471         * intrinsics/cpu_time.c: Likewise.
472         * intrinsics/malloc.c: Likewise.
473         * intrinsics/hostnm.c: Likewise.
474         * intrinsics/sleep.c: Likewise.
475         * intrinsics/exit.c: Likewise.
476         * intrinsics/perror.c: Likewise.
477         * intrinsics/transpose_generic.c: Likewise.
478         * intrinsics/pack_generic.c: Likewise.
479         * intrinsics/spread_generic.c: Likewise.
480         * intrinsics/stat.c: Likewise.
481         * intrinsics/string_intrinsics.c: Likewise.
482         * intrinsics/getcwd.c: Likewise.
483         * intrinsics/date_and_time.c: Likewise.
484         * intrinsics/unpack_generic.c: Likewise.
485         * intrinsics/move_alloc.c: Likewise.
486         * intrinsics/getlog.c: Likewise.
487         * intrinsics/eoshift0.c: Likewise.
488         * intrinsics/eoshift2.c: Likewise.
489         * intrinsics/reshape_generic.c: Likewise.
490         * intrinsics/system.c: Likewise.
491         * intrinsics/iso_c_binding.c: Likewise.
492         * intrinsics/env.c: Likewise.
493         * intrinsics/kill.c: Likewise.
494         * intrinsics/reshape_packed.c: Likewise.
495         * intrinsics/time.c: Likewise.
496         * intrinsics/gerror.c: Likewise.
497         * intrinsics/access.c: Likewise.
498         * intrinsics/fnum.c: Likewise.
499         * intrinsics/abort.c: Likewise.
500         * intrinsics/rename.c: Likewise.
501         * intrinsics/signal.c: Likewise.
502         * intrinsics/symlnk.c: Likewise.
503         * intrinsics/random.c: Likewise.
504         * intrinsics/umask.c: Likewise.
505         * intrinsics/getXid.c: Likewise.
506         * intrinsics/rand.c: Likewise.
507         * intrinsics/chdir.c: Likewise.
508         * intrinsics/chmod.c: Likewise.
509         * intrinsics/clock.c: Likewise.
510         * intrinsics/args.c: Likewise.
511         * intrinsics/link.c: Likewise.
512         * c99_protos.h: Likewise.
513         * config/fpu-387.h: Likewise.
514         * config/fpu-aix.h: Likewise.
515         * config/fpu-sysv.h: Likewise.
516         * config/fpu-generic.h: Likewise.
517         * config/fpu-glibc.h: Likewise.
518         * io/file_pos.c: Likewise.
519         * io/open.c: Likewise.
520         * io/size_from_kind.c: Likewise.
521         * io/close.c: Likewise.
522         * io/list_read.c: Likewise.
523         * io/read.c: Likewise.
524         * io/inquire.c: Likewise.
525         * io/unit.c: Likewise.
526         * io/unix.c: Likewise.
527         * io/transfer.c: Likewise.
528         * io/intrinsics.c: Likewise.
529         * io/format.c: Likewise.
530         * io/lock.c: Likewise.
531         * io/write.c: Likewise.
532         * io/write_float.def: Likewise.
533         * fmain.c: Likewise.
534         * generated/minval_r8.c: Regenerate.
535         * generated/minloc1_16_r16.c: Regenerate.
536         * generated/maxloc1_4_r8.c: Regenerate.
537         * generated/sum_i8.c: Regenerate.
538         * generated/eoshift3_4.c: Regenerate.
539         * generated/transpose_c8.c: Regenerate.
540         * generated/any_l16.c: Regenerate.
541         * generated/eoshift1_8.c: Regenerate.
542         * generated/pow_r8_i8.c: Regenerate.
543         * generated/reshape_r16.c: Regenerate.
544         * generated/pow_i4_i16.c: Regenerate.
545         * generated/maxval_i2.c: Regenerate.
546         * generated/product_r4.c: Regenerate.
547         * generated/maxloc1_8_i4.c: Regenerate.
548         * generated/exponent_r16.c: Regenerate.
549         * generated/maxloc0_4_r4.c: Regenerate.
550         * generated/fraction_r16.c: Regenerate.
551         * generated/in_unpack_i8.c: Regenerate.
552         * generated/matmul_r8.c: Regenerate.
553         * generated/product_i2.c: Regenerate.
554         * generated/fraction_r4.c: Regenerate.
555         * generated/minloc0_4_r16.c: Regenerate.
556         * generated/reshape_c4.c: Regenerate.
557         * generated/minloc0_4_i1.c: Regenerate.
558         * generated/maxloc0_4_r16.c: Regenerate.
559         * generated/maxloc0_4_i2.c: Regenerate.
560         * generated/minloc1_8_r16.c: Regenerate.
561         * generated/maxloc1_8_r16.c: Regenerate.
562         * generated/set_exponent_r8.c: Regenerate.
563         * generated/in_unpack_i16.c: Regenerate.
564         * generated/transpose_c16.c: Regenerate.
565         * generated/maxloc0_8_i8.c: Regenerate.
566         * generated/pow_c4_i8.c: Regenerate.
567         * generated/sum_r16.c: Regenerate.
568         * generated/sum_i1.c: Regenerate.
569         * generated/minloc1_4_r8.c: Regenerate.
570         * generated/transpose_r10.c: Regenerate.
571         * generated/pow_i8_i4.c: Regenerate.
572         * generated/maxloc1_16_r16.c: Regenerate.
573         * generated/minloc1_16_i4.c: Regenerate.
574         * generated/maxloc1_16_i4.c: Regenerate.
575         * generated/minloc0_16_i8.c: Regenerate.
576         * generated/maxloc0_16_i8.c: Regenerate.
577         * generated/nearest_r8.c: Regenerate.
578         * generated/spacing_r16.c: Regenerate.
579         * generated/transpose_i8.c: Regenerate.
580         * generated/count_16_l16.c: Regenerate.
581         * generated/maxval_r16.c: Regenerate.
582         * generated/count_8_l8.c: Regenerate.
583         * generated/product_c10.c: Regenerate.
584         * generated/minloc1_8_i4.c: Regenerate.
585         * generated/minloc0_16_i16.c: Regenerate.
586         * generated/matmul_r16.c: Regenerate.
587         * generated/eoshift1_16.c: Regenerate.
588         * generated/minloc0_4_r4.c: Regenerate.
589         * generated/pow_c16_i16.c: Regenerate.
590         * generated/set_exponent_r10.c: Regenerate.
591         * generated/pow_i16_i16.c: Regenerate.
592         * generated/product_c4.c: Regenerate.
593         * generated/sum_r4.c: Regenerate.
594         * generated/pow_c16_i4.c: Regenerate.
595         * generated/rrspacing_r10.c: Regenerate.
596         * generated/in_pack_c16.c: Regenerate.
597         * generated/minloc0_4_i2.c: Regenerate.
598         * generated/maxloc0_8_i1.c: Regenerate.
599         * generated/reshape_i4.c: Regenerate.
600         * generated/minloc0_8_i8.c: Regenerate.
601         * generated/matmul_c8.c: Regenerate.
602         * generated/spacing_r4.c: Regenerate.
603         * generated/in_pack_c4.c: Regenerate.
604         * generated/all_l16.c: Regenerate.
605         * generated/minloc1_16_r10.c: Regenerate.
606         * generated/sum_i2.c: Regenerate.
607         * generated/minloc0_16_i1.c: Regenerate.
608         * generated/reshape_c16.c: Regenerate.
609         * generated/maxloc0_16_i1.c: Regenerate.
610         * generated/maxloc1_8_r8.c: Regenerate.
611         * generated/minval_i16.c: Regenerate.
612         * generated/reshape_r10.c: Regenerate.
613         * generated/exponent_r10.c: Regenerate.
614         * generated/maxval_i4.c: Regenerate.
615         * generated/any_l4.c: Regenerate.
616         * generated/minval_i8.c: Regenerate.
617         * generated/maxloc1_4_i8.c: Regenerate.
618         * generated/fraction_r10.c: Regenerate.
619         * generated/maxloc0_16_i16.c: Regenerate.
620         * generated/shape_i4.c: Regenerate.
621         * generated/pow_r16_i8.c: Regenerate.
622         * generated/maxloc0_8_r4.c: Regenerate.
623         * generated/rrspacing_r8.c: Regenerate.
624         * generated/pow_c10_i4.c: Regenerate.
625         * generated/minloc1_4_i16.c: Regenerate.
626         * generated/minloc0_4_r10.c: Regenerate.
627         * generated/maxloc1_4_i16.c: Regenerate.
628         * generated/minloc0_8_i16.c: Regenerate.
629         * generated/maxloc0_4_r10.c: Regenerate.
630         * generated/maxloc0_8_i16.c: Regenerate.
631         * generated/minloc1_8_r10.c: Regenerate.
632         * generated/product_i4.c: Regenerate.
633         * generated/minloc0_16_r4.c: Regenerate.
634         * generated/sum_c16.c: Regenerate.
635         * generated/maxloc1_8_r10.c: Regenerate.
636         * generated/maxloc0_16_r4.c: Regenerate.
637         * generated/transpose_c10.c: Regenerate.
638         * generated/minloc1_16_r8.c: Regenerate.
639         * generated/minloc0_8_i1.c: Regenerate.
640         * generated/maxloc0_4_i4.c: Regenerate.
641         * generated/transpose_r4.c: Regenerate.
642         * generated/maxloc1_16_r8.c: Regenerate.
643         * generated/pow_i16_i8.c: Regenerate.
644         * generated/cshift1_4.c: Regenerate.
645         * generated/maxloc0_8_i2.c: Regenerate.
646         * generated/sum_r10.c: Regenerate.
647         * generated/nearest_r16.c: Regenerate.
648         * generated/sum_c4.c: Regenerate.
649         * generated/maxloc1_16_r10.c: Regenerate.
650         * generated/count_4_l16.c: Regenerate.
651         * generated/pow_c8_i8.c: Regenerate.
652         * generated/matmul_i8.c: Regenerate.
653         * generated/in_pack_i4.c: Regenerate.
654         * generated/pow_i4_i8.c: Regenerate.
655         * generated/minloc0_16_i2.c: Regenerate.
656         * generated/minloc1_8_r8.c: Regenerate.
657         * generated/maxloc0_16_i2.c: Regenerate.
658         * generated/exponent_r4.c: Regenerate.
659         * generated/spacing_r10.c: Regenerate.
660         * generated/matmul_c16.c: Regenerate.
661         * generated/pow_c4_i16.c: Regenerate.
662         * generated/maxval_r10.c: Regenerate.
663         * generated/count_4_l4.c: Regenerate.
664         * generated/shape_i16.c: Regenerate.
665         * generated/minval_i1.c: Regenerate.
666         * generated/maxloc1_4_i1.c: Regenerate.
667         * generated/matmul_r10.c: Regenerate.
668         * generated/minloc1_4_i8.c: Regenerate.
669         * generated/pow_r10_i8.c: Regenerate.
670         * generated/minloc0_8_r4.c: Regenerate.
671         * generated/in_unpack_c4.c: Regenerate.
672         * generated/matmul_l4.c: Regenerate.
673         * generated/product_i16.c: Regenerate.
674         * generated/minloc0_16_r16.c: Regenerate.
675         * generated/reshape_r8.c: Regenerate.
676         * generated/pow_r10_i16.c: Regenerate.
677         * generated/all_l4.c: Regenerate.
678         * generated/in_pack_c10.c: Regenerate.
679         * generated/minloc0_4_i4.c: Regenerate.
680         * generated/minloc0_8_i2.c: Regenerate.
681         * generated/matmul_i1.c: Regenerate.
682         * generated/reshape_c10.c: Regenerate.
683         * generated/minval_r4.c: Regenerate.
684         * generated/maxloc1_4_r4.c: Regenerate.
685         * generated/pow_r8_i16.c: Regenerate.
686         * generated/sum_i4.c: Regenerate.
687         * generated/maxval_r8.c: Regenerate.
688         * generated/count_16_l8.c: Regenerate.
689         * generated/transpose_c4.c: Regenerate.
690         * generated/eoshift1_4.c: Regenerate.
691         * generated/eoshift3_8.c: Regenerate.
692         * generated/minval_r16.c: Regenerate.
693         * generated/minloc1_4_i1.c: Regenerate.
694         * generated/minval_i2.c: Regenerate.
695         * generated/maxloc1_4_i2.c: Regenerate.
696         * generated/pow_i8_i16.c: Regenerate.
697         * generated/product_r8.c: Regenerate.
698         * generated/maxloc1_8_i8.c: Regenerate.
699         * generated/maxloc0_4_r8.c: Regenerate.
700         * generated/maxloc0_16_r16.c: Regenerate.
701         * generated/in_unpack_i4.c: Regenerate.
702         * generated/matmul_r4.c: Regenerate.
703         * generated/sum_c10.c: Regenerate.
704         * generated/minloc1_4_r16.c: Regenerate.
705         * generated/fraction_r8.c: Regenerate.
706         * generated/maxloc1_4_r16.c: Regenerate.
707         * generated/set_exponent_r4.c: Regenerate.
708         * generated/minloc0_8_r16.c: Regenerate.
709         * generated/in_unpack_c16.c: Regenerate.
710         * generated/reshape_c8.c: Regenerate.
711         * generated/maxloc0_8_r16.c: Regenerate.
712         * generated/nearest_r10.c: Regenerate.
713         * generated/maxloc0_8_i4.c: Regenerate.
714         * generated/pow_c4_i4.c: Regenerate.
715         * generated/matmul_i2.c: Regenerate.
716         * generated/minloc1_4_r4.c: Regenerate.
717         * generated/transpose_i16.c: Regenerate.
718         * generated/matmul_c10.c: Regenerate.
719         * generated/minloc0_16_i4.c: Regenerate.
720         * generated/maxloc0_16_i4.c: Regenerate.
721         * generated/pow_i8_i8.c: Regenerate.
722         * generated/nearest_r4.c: Regenerate.
723         * generated/minloc1_16_i8.c: Regenerate.
724         * generated/maxloc1_16_i8.c: Regenerate.
725         * generated/transpose_i4.c: Regenerate.
726         * generated/count_8_l4.c: Regenerate.
727         * generated/minloc1_4_i2.c: Regenerate.
728         * generated/matmul_l16.c: Regenerate.
729         * generated/maxloc1_8_i1.c: Regenerate.
730         * generated/minloc0_16_r10.c: Regenerate.
731         * generated/minloc1_8_i8.c: Regenerate.
732         * generated/minloc0_4_r8.c: Regenerate.
733         * generated/product_r16.c: Regenerate.
734         * generated/product_c8.c: Regenerate.
735         * generated/pow_r16_i16.c: Regenerate.
736         * generated/sum_r8.c: Regenerate.
737         * generated/pow_c16_i8.c: Regenerate.
738         * generated/in_pack_i16.c: Regenerate.
739         * generated/minloc0_8_i4.c: Regenerate.
740         * generated/matmul_c4.c: Regenerate.
741         * generated/minloc1_16_i16.c: Regenerate.
742         * generated/reshape_i8.c: Regenerate.
743         * generated/spacing_r8.c: Regenerate.
744         * generated/in_pack_c8.c: Regenerate.
745         * generated/maxloc1_8_r4.c: Regenerate.
746         * generated/minloc1_16_i1.c: Regenerate.
747         * generated/maxloc1_16_i1.c: Regenerate.
748         * generated/reshape_i16.c: Regenerate.
749         * generated/minval_r10.c: Regenerate.
750         * generated/pow_r4_i8.c: Regenerate.
751         * generated/minloc1_8_i1.c: Regenerate.
752         * generated/minval_i4.c: Regenerate.
753         * generated/maxloc1_4_i4.c: Regenerate.
754         * generated/maxloc1_8_i2.c: Regenerate.
755         * generated/maxval_i8.c: Regenerate.
756         * generated/eoshift3_16.c: Regenerate.
757         * generated/any_l8.c: Regenerate.
758         * generated/maxloc0_16_r10.c: Regenerate.
759         * generated/rrspacing_r4.c: Regenerate.
760         * generated/shape_i8.c: Regenerate.
761         * generated/maxloc0_8_r8.c: Regenerate.
762         * generated/minloc0_4_i16.c: Regenerate.
763         * generated/maxloc0_4_i16.c: Regenerate.
764         * generated/minloc1_4_r10.c: Regenerate.
765         * generated/minloc1_8_i16.c: Regenerate.
766         * generated/pow_c10_i8.c: Regenerate.
767         * generated/maxloc1_4_r10.c: Regenerate.
768         * generated/maxloc1_8_i16.c: Regenerate.
769         * generated/in_unpack_c10.c: Regenerate.
770         * generated/minloc0_8_r10.c: Regenerate.
771         * generated/maxloc0_8_r10.c: Regenerate.
772         * generated/minloc1_16_r4.c: Regenerate.
773         * generated/maxloc1_16_r4.c: Regenerate.
774         * generated/minloc0_16_r8.c: Regenerate.
775         * generated/pow_i16_i4.c: Regenerate.
776         * generated/product_i8.c: Regenerate.
777         * generated/maxloc0_16_r8.c: Regenerate.
778         * generated/sum_i16.c: Regenerate.
779         * generated/maxloc0_4_i8.c: Regenerate.
780         * generated/transpose_r8.c: Regenerate.
781         * generated/cshift1_8.c: Regenerate.
782         * generated/maxloc1_16_i16.c: Regenerate.
783         * generated/matmul_i4.c: Regenerate.
784         * generated/pow_c8_i4.c: Regenerate.
785         * generated/pow_i4_i4.c: Regenerate.
786         * generated/minloc1_8_r4.c: Regenerate.
787         * generated/sum_c8.c: Regenerate.
788         * generated/count_8_l16.c: Regenerate.
789         * generated/minloc1_16_i2.c: Regenerate.
790         * generated/maxloc1_16_i2.c: Regenerate.
791         * generated/in_pack_i8.c: Regenerate.
792         * generated/transpose_r16.c: Regenerate.
793         * generated/maxval_i16.c: Regenerate.
794         * generated/exponent_r8.c: Regenerate.
795         * generated/matmul_i16.c: Regenerate.
796         * generated/count_4_l8.c: Regenerate.
797         * generated/pow_c8_i16.c: Regenerate.
798         * generated/maxval_i1.c: Regenerate.
799         * generated/minloc1_4_i4.c: Regenerate.
800         * generated/minloc1_8_i2.c: Regenerate.
801         * generated/pow_c10_i16.c: Regenerate.
802         * generated/product_c16.c: Regenerate.
803         * generated/reshape_r4.c: Regenerate.
804         * generated/in_unpack_c8.c: Regenerate.
805         * generated/minloc0_8_r8.c: Regenerate.
806         * generated/matmul_l8.c: Regenerate.
807         * generated/product_r10.c: Regenerate.
808         * generated/set_exponent_r16.c: Regenerate.
809         * generated/cshift1_16.c: Regenerate.
810         * generated/product_i1.c: Regenerate.
811         * generated/all_l8.c: Regenerate.
812         * generated/maxloc0_4_i1.c: Regenerate.
813         * generated/rrspacing_r16.c: Regenerate.
814         * generated/minloc0_4_i8.c: Regenerate.
815         * generated/pow_r4_i16.c: Regenerate.
816         * generated/count_16_l4.c: Regenerate.
817         * generated/maxval_r4.c: Regenerate.
819 2007-08-30  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
821         PR libfortran/33225
822         * io/write.c: Revert changes from patch of 2007-08-27.
823         * io/write_float.def: Remove file, reverting addition.
825 2007-08-29  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
827         * runtime/memory.c (internal_realloc, allocate, allocate_array,
828         deallocate): Remove functions.
829         * gfortran.map (_gfortran_allocate, _gfortran_allocate_array,
830         _gfortran_deallocate, _gfortran_internal_realloc): Remove symbols.
831         * libgfortran.h (error_codes): Add comment.
833 2007-08-28  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
835         PR libfortran/33055
836         Revert previous patch.
838 2007-08-27  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
840         * io/write.c (stdbool.h): Add include. (sign_t): Move typedef to
841         new file write_float.def. Include write_float.def.
842         (extract_real): Delete. (calculate_sign): Delete.
843         (calculate_exp): Delete. (calculate_G_format): Delete.
844         (output_float): Delete. (write_float): Delete.
845         * io/write_float.def (calculate_sign): Added.
846         (output_float): Refactored to be independent of kind and added to this
847         file for inclusion. (write_infnan): New function to write "Infinite"
848         or "NaN" depending on flags passed, independent of kind.
849         (CALCULATE_EXP): New macro to build kind specific functions. Use it.
850         (OUTPUT_FLOAT_FMT_G): New macro, likewise. Use it.
851         (DTOA, DTOAL): Macros to implement "decimal to ascii".
852         (WRITE_FLOAT): New macro for kind specific write_float functions.
853         (write_float): Revised function to determine kind and use WRITE_FLOAT
854         to implement kind specific output.
856 2007-08-26  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
858         PR libfortran/33055
859         * io/inquire.c (inquire_via_unit):  If inquiring by unit, check for 
860         an error condition from the IOSTAT variable and set EXIST to false if
861         there was a bad unit number.
863 2007-08-24  Thomas Koenig  <tkoenig@gcc.gnu.org>
865         PR fortran/32972
866         * libgfortran.h:  Remove GFOR_POINTER_L8_TO_L4 macro.
867         Add GFOR_POINTER_TO_L1 macro.
868         * m4/iforeach.m4(`m'name`'rtype_qual`_'atype_code):
869         Change argument 'mask' to gfc_array_l1.  Adjust prototype.
870         Change mask pointer to GFC_LOGICAL_1.  Multiply strides
871         by kind of mask
872         * m4/ifunction.m4:  Likewise.
873         * intrinsics/pack_generic.c(pack_internal):  Likewise.
874         * intrinsics/unpack_generic.c(unpack_internal):  Likewise.
875         * m4/matmull.m4:  Switch to GFC_LOGICAL_1.  Multiply strides by
876         kind of logical arguments a and b.
877         * generated/matmul_l16.c: Regenerated.
878         * generated/matmul_l4.c: Regenerated.
879         * generated/matmul_l8.c: Regenerated.
880         * generated/maxloc0_16_i1.c: Regenerated.
881         * generated/maxloc0_16_i16.c: Regenerated.
882         * generated/maxloc0_16_i2.c: Regenerated.
883         * generated/maxloc0_16_i4.c: Regenerated.
884         * generated/maxloc0_16_i8.c: Regenerated.
885         * generated/maxloc0_16_r10.c: Regenerated.
886         * generated/maxloc0_16_r16.c: Regenerated.
887         * generated/maxloc0_16_r4.c: Regenerated.
888         * generated/maxloc0_16_r8.c: Regenerated.
889         * generated/maxloc0_4_i1.c: Regenerated.
890         * generated/maxloc0_4_i16.c: Regenerated.
891         * generated/maxloc0_4_i2.c: Regenerated.
892         * generated/maxloc0_4_i4.c: Regenerated.
893         * generated/maxloc0_4_i8.c: Regenerated.
894         * generated/maxloc0_4_r10.c: Regenerated.
895         * generated/maxloc0_4_r16.c: Regenerated.
896         * generated/maxloc0_4_r4.c: Regenerated.
897         * generated/maxloc0_4_r8.c: Regenerated.
898         * generated/maxloc0_8_i1.c: Regenerated.
899         * generated/maxloc0_8_i16.c: Regenerated.
900         * generated/maxloc0_8_i2.c: Regenerated.
901         * generated/maxloc0_8_i4.c: Regenerated.
902         * generated/maxloc0_8_i8.c: Regenerated.
903         * generated/maxloc0_8_r10.c: Regenerated.
904         * generated/maxloc0_8_r16.c: Regenerated.
905         * generated/maxloc0_8_r4.c: Regenerated.
906         * generated/maxloc0_8_r8.c: Regenerated.
907         * generated/maxloc1_16_i1.c: Regenerated.
908         * generated/maxloc1_16_i16.c: Regenerated.
909         * generated/maxloc1_16_i2.c: Regenerated.
910         * generated/maxloc1_16_i4.c: Regenerated.
911         * generated/maxloc1_16_i8.c: Regenerated.
912         * generated/maxloc1_16_r10.c: Regenerated.
913         * generated/maxloc1_16_r16.c: Regenerated.
914         * generated/maxloc1_16_r4.c: Regenerated.
915         * generated/maxloc1_16_r8.c: Regenerated.
916         * generated/maxloc1_4_i1.c: Regenerated.
917         * generated/maxloc1_4_i16.c: Regenerated.
918         * generated/maxloc1_4_i2.c: Regenerated.
919         * generated/maxloc1_4_i4.c: Regenerated.
920         * generated/maxloc1_4_i8.c: Regenerated.
921         * generated/maxloc1_4_r10.c: Regenerated.
922         * generated/maxloc1_4_r16.c: Regenerated.
923         * generated/maxloc1_4_r4.c: Regenerated.
924         * generated/maxloc1_4_r8.c: Regenerated.
925         * generated/maxloc1_8_i1.c: Regenerated.
926         * generated/maxloc1_8_i16.c: Regenerated.
927         * generated/maxloc1_8_i2.c: Regenerated.
928         * generated/maxloc1_8_i4.c: Regenerated.
929         * generated/maxloc1_8_i8.c: Regenerated.
930         * generated/maxloc1_8_r10.c: Regenerated.
931         * generated/maxloc1_8_r16.c: Regenerated.
932         * generated/maxloc1_8_r4.c: Regenerated.
933         * generated/maxloc1_8_r8.c: Regenerated.
934         * generated/maxval_i1.c: Regenerated.
935         * generated/maxval_i16.c: Regenerated.
936         * generated/maxval_i2.c: Regenerated.
937         * generated/maxval_i4.c: Regenerated.
938         * generated/maxval_i8.c: Regenerated.
939         * generated/maxval_r10.c: Regenerated.
940         * generated/maxval_r16.c: Regenerated.
941         * generated/maxval_r4.c: Regenerated.
942         * generated/maxval_r8.c: Regenerated.
943         * generated/minloc0_16_i1.c: Regenerated.
944         * generated/minloc0_16_i16.c: Regenerated.
945         * generated/minloc0_16_i2.c: Regenerated.
946         * generated/minloc0_16_i4.c: Regenerated.
947         * generated/minloc0_16_i8.c: Regenerated.
948         * generated/minloc0_16_r10.c: Regenerated.
949         * generated/minloc0_16_r16.c: Regenerated.
950         * generated/minloc0_16_r4.c: Regenerated.
951         * generated/minloc0_16_r8.c: Regenerated.
952         * generated/minloc0_4_i1.c: Regenerated.
953         * generated/minloc0_4_i16.c: Regenerated.
954         * generated/minloc0_4_i2.c: Regenerated.
955         * generated/minloc0_4_i4.c: Regenerated.
956         * generated/minloc0_4_i8.c: Regenerated.
957         * generated/minloc0_4_r10.c: Regenerated.
958         * generated/minloc0_4_r16.c: Regenerated.
959         * generated/minloc0_4_r4.c: Regenerated.
960         * generated/minloc0_4_r8.c: Regenerated.
961         * generated/minloc0_8_i1.c: Regenerated.
962         * generated/minloc0_8_i16.c: Regenerated.
963         * generated/minloc0_8_i2.c: Regenerated.
964         * generated/minloc0_8_i4.c: Regenerated.
965         * generated/minloc0_8_i8.c: Regenerated.
966         * generated/minloc0_8_r10.c: Regenerated.
967         * generated/minloc0_8_r16.c: Regenerated.
968         * generated/minloc0_8_r4.c: Regenerated.
969         * generated/minloc0_8_r8.c: Regenerated.
970         * generated/minloc1_16_i1.c: Regenerated.
971         * generated/minloc1_16_i16.c: Regenerated.
972         * generated/minloc1_16_i2.c: Regenerated.
973         * generated/minloc1_16_i4.c: Regenerated.
974         * generated/minloc1_16_i8.c: Regenerated.
975         * generated/minloc1_16_r10.c: Regenerated.
976         * generated/minloc1_16_r16.c: Regenerated.
977         * generated/minloc1_16_r4.c: Regenerated.
978         * generated/minloc1_16_r8.c: Regenerated.
979         * generated/minloc1_4_i1.c: Regenerated.
980         * generated/minloc1_4_i16.c: Regenerated.
981         * generated/minloc1_4_i2.c: Regenerated.
982         * generated/minloc1_4_i4.c: Regenerated.
983         * generated/minloc1_4_i8.c: Regenerated.
984         * generated/minloc1_4_r10.c: Regenerated.
985         * generated/minloc1_4_r16.c: Regenerated.
986         * generated/minloc1_4_r4.c: Regenerated.
987         * generated/minloc1_4_r8.c: Regenerated.
988         * generated/minloc1_8_i1.c: Regenerated.
989         * generated/minloc1_8_i16.c: Regenerated.
990         * generated/minloc1_8_i2.c: Regenerated.
991         * generated/minloc1_8_i4.c: Regenerated.
992         * generated/minloc1_8_i8.c: Regenerated.
993         * generated/minloc1_8_r10.c: Regenerated.
994         * generated/minloc1_8_r16.c: Regenerated.
995         * generated/minloc1_8_r4.c: Regenerated.
996         * generated/minloc1_8_r8.c: Regenerated.
997         * generated/minval_i1.c: Regenerated.
998         * generated/minval_i16.c: Regenerated.
999         * generated/minval_i2.c: Regenerated.
1000         * generated/minval_i4.c: Regenerated.
1001         * generated/minval_i8.c: Regenerated.
1002         * generated/minval_r10.c: Regenerated.
1003         * generated/minval_r16.c: Regenerated.
1004         * generated/minval_r4.c: Regenerated.
1005         * generated/minval_r8.c: Regenerated.
1006         * generated/product_c10.c: Regenerated.
1007         * generated/product_c16.c: Regenerated.
1008         * generated/product_c4.c: Regenerated.
1009         * generated/product_c8.c: Regenerated.
1010         * generated/product_i1.c: Regenerated.
1011         * generated/product_i16.c: Regenerated.
1012         * generated/product_i2.c: Regenerated.
1013         * generated/product_i4.c: Regenerated.
1014         * generated/product_i8.c: Regenerated.
1015         * generated/product_r10.c: Regenerated.
1016         * generated/product_r16.c: Regenerated.
1017         * generated/product_r4.c: Regenerated.
1018         * generated/product_r8.c: Regenerated.
1019         * generated/sum_c10.c: Regenerated.
1020         * generated/sum_c16.c: Regenerated.
1021         * generated/sum_c4.c: Regenerated.
1022         * generated/sum_c8.c: Regenerated.
1023         * generated/sum_i1.c: Regenerated.
1024         * generated/sum_i16.c: Regenerated.
1025         * generated/sum_i2.c: Regenerated.
1026         * generated/sum_i4.c: Regenerated.
1027         * generated/sum_i8.c: Regenerated.
1028         * generated/sum_r10.c: Regenerated.
1029         * generated/sum_r16.c: Regenerated.
1030         * generated/sum_r4.c: Regenerated.
1031         * generated/sum_r8.c: Regenerated.
1032         
1033 2007-08-23  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1035         PR libfortran/23138
1036         * acinclude.m4 (LIBGFOR_CHECK_MINGW_SNPRINTF): New check.
1037         * configure.ac: Use LIBGFOR_CHECK_MINGW_SNPRINTF.
1038         * libgfortran.h: If HAVE_MINGW_SNPRINTF is true, use __mingw_snprintf
1039         instead of snprintf.
1040         * config.h.in: Regenerate.
1041         * configure: Regenerate.
1043 2007-08-22  Bernhard Fischer  <rep.dot.nop@gmail.com>
1045         * libgfortran/Makefile.am (AM_CPPFLAGS): Commentary typo fix.
1047 2007-08-17  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1049         PR fortran/33079
1050         * intrinsics/string_intrinsics.c (string_trim, string_minmax): Fix
1051         the zero-length result case.
1053 2007-08-15  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1055         PR fortran/33077
1056         * intrinsics/random.c (random_seed_i8): Fix code logic.
1058 2007-08-13  Danny Smith  <dannysmit@users.sourceforge.net>
1060         * acinclude.m4 (GTHREAD_USE_WEAK) Define to 0 for mingw32.
1061         * configure: Regenerate.
1063 2007-08-12  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1065         PR fortran/30964
1066         PR fortran/33054
1067         * intrinsics/random.c (random_seed): Rename into random_seed_i4.
1068         (random_seed_i8): New function.
1069         * gfortran.map (GFORTRAN_1.0): Remove _gfortran_random_seed,
1070         add _gfortran_random_seed_i4 and _gfortran_random_seed_i8.
1071         * libgfortran.h (iexport_proto): Replace random_seed by
1072         random_seed_i4 and random_seed_i8.
1073         * runtime/main.c (init): Call the new random_seed_i4.
1075 2007-08-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1076             Tobias Burnus  <burnus@gcc.gnu.org>
1078         PR fortran/31189
1079         * runtime/backtrace.c (show_backtrace): Skip _gfortrani_handler
1080         when displaying backtrace.
1081         * runtime/compile_options.c: Include <signal.h>.
1082         (handler): New function.
1083         (set_options): Set signal handlers for backtrace.
1084         * libgfortran.h (handler): Add prototype.
1086 2007-08-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1088         * intrinsics/string_intrinsics.c (compare_string): Return an int.
1089         * libgfortran.h (compare_string): Likewise.
1091 2007-08-10  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1093         PR fortran/31270
1094         * runtime/error.c (runtime_error_at): Add a variable number of
1095         arguments.
1096         * libgfortran.h (runtime_error_at): Update prototype.
1098 2007-08-10  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1100         PR fortran/32933
1101         * intrinsics/associated.c: Change return type of associated into
1102         a C int.
1104 2007-08-10  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1106         PR libfortran/33039
1107         * io/list_read.c (find_nml_name): Check for a space after a namelist
1108         name match.
1110 2007-08-09  Tobias Burnus  <burnus@net-b.de>
1112         PR fortran/32987
1113         * io/format.c (next_char): Treat '\t' as ' ' in format specification.
1115 2007-08-06  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1117         PR fortran/30947
1118         * intrinsics/signal.c: Create specific versions of alarm_sub and
1119         alarm_sub_int according to the integer kind of the last argument.
1120         * gfortran.map (GFORTRAN_1.0): Remove _gfortran_alarm_sub and
1121         _gfortran_alarm_sub_int, add _gfortran_alarm_sub_i4,
1122         _gfortran_alarm_sub_i8, _gfortran_alarm_sub_int_i4 and
1123         _gfortran_alarm_sub_int_i8.
1125 2007-08-06  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1127         PR fortran/29828
1128         * intrinsics/string_intrinsics.c (string_minmax): New function
1129         and prototype.
1130         * gfortran.map (GFORTRAN_1.0): Add _gfortran_string_minmax
1132 2007-08-05  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1134         PR fortran/31202
1135         * intrinsics/c99_functions.c (roundl): Provide fallback
1136         implementation for systems without ceill.
1137         * c99_protos.h (roundl): Define prototype in all cases.
1139 2007-08-03  Thomas Koenig  <tkoenig@gcc.gnu.org>
1141         PR libfortran/32977
1142         * io/unix.c:  If there is no vsnprintf, use vsprintf and issue
1143         a fatal error when a buffer overrun occurs.
1145 2007-08-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1147         PR fortran/31202
1148         * intrinsics/c99_functions.c (roundl,lroundf,lround,lroundl,
1149         llroundf,llround,llroundl): New functions.
1150         * c99_protos.h (roundl,lroundf,lround,lroundl,llroundf,llround,
1151         llroundl): New prototypes.
1152         * configure.ac: Check for lroundf, lround, lroundl, llroundf,
1153         llround and llroundl.
1154         * configure: Regenerate.
1155         * Makefile.in: Regenerate.
1156         * config.h.in: Regenerate.
1158 2007-07-30  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1160         * libgfortran.h: Include <stdarg.h>.
1162 2007-07-29  Thomas Koenig  <tkoenig@gcc.gnu.org>
1164         PR libfortran/32858
1165         PR libfortran/30814
1166         * configure.ac:  Added checks for presence of stdio.h and
1167         stdarg.h.  Test presence of vsnprintf().
1168         * configure: Regenerated.
1169         * config.h.in:  Regenerated.
1170         * libgfortran.h:  Include <stdio.h>.  Add printf attribute to
1171         prototype of runtime_error.  Remove prototype for st_sprintf.
1172         Add prototype for st_vprintf.
1173         * runtime/main.c (store_exec_path):  Replace st_sprintf by sprintf.
1174         * runtime/error.c (st_sprintf):  Remove.
1175         (runtime_error):  Rewrite as a variadic function.  Call
1176         st_vprintf().
1177         * intrinsics/pack_generic.c:  Output extents of LHS and RHS for
1178         bounds error.
1179         * io/open.c (new_unit):  Replace st_sprintf by sprintf.
1180         * io/list_read.c (convert_integer):  Likewise.
1181         (parse_repeat):  Likewise.
1182         (read_logical):  Likewise.
1183         (read_character):  Likewise.
1184         (parse_real):  Likewise.
1185         (read_real):  Likewise.
1186         (check_type):  Likewise.
1187         (nml_parse_qualifyer):  Likewise.
1188         (nml_read_obj):  Likewise.
1189         (nml_get_ojb_data):  Likewise.
1190         * io/unix.c (init_error_stream):  Remove.
1191         (tempfile):  Replace st_sprintf by sprintf.
1192         (st_vprintf):  New function.
1193         (st_printf):  Rewrite to call st_vprintf.
1194         * io/transfer.c (require_type):  Replace st_sprintf by sprintf.
1195         * io/format.c (format_error):  Likewise.
1196         * io/write.c (nml_write_obj):  Likewise.
1198 2007-07-27  Janne Blomqvist  <jb@gcc.gnu.org>
1200         * io/transfer.c (st_set_nml_var_dim): Use index_type instead of
1201         GFC_INTEGER_4 for array descriptor triplets.
1203 2007-07-27  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1205         * io/unix.c (stream_ttyname): Mark argument as potentialy unused.
1207 2007-07-27  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1209         PR fortran/32035
1210         * runtime/select.c (select_string): Adjust prototype and function
1211         so that the return value is an integer, not a pointer.
1213 2007-07-24  Tobias Burnus  <burnus@net-b.de>
1215         * libgfortran.h:  Add bounds_check to compile_options_t.
1217 2007-07-24  Thomas Koenig  <tkoenig@gcc.gnu.org>
1219         PR fortran/30814
1220         * libgfortran.h:  Add bounds_check to compile_options_t.
1221         * runtime/compile_options.c (set_options):  Add handling
1222         of compile_options.bounds_check.
1223         * intrinsics/pack_generic.c (pack_internal):  Also determine
1224         the number of elements if compile_options.bounds_check is
1225         true.  Raise runtime error if a different array shape is
1226         detected.
1228 2007-07-23  Christopher D. Rickett  <crickett@lanl.gov>
1230         PR fortran/32600
1231         * intrinsics/iso_c_binding.c (c_funloc): Remove.
1232         * intrinsics/iso_c_binding.h: Remove c_funloc.
1233         * gfortran.map: Ditto.
1235 2007-07-22  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1237         * io/read.c (convert_real): Generate error only on EINVAL.
1239 2007-07-21  Christopher D. Rickett  <crickett@lanl.gov>
1241         PR fortran/32627
1242         * libgfortran/intrinsics/iso_c_generated_procs.c: Add c_f_pointer
1243         for character/string arguments.
1244         * libgfortran/intrinsic/iso_c_binding.c (c_f_pointer_u0): Allow
1245         the optional SHAPE arg to be any valid integer kind.
1246         * libgfortran/gfortran.map: Add c_f_pointer_s0.
1247         * libgfortran/mk-kinds-h.sh: Save smallest integer kind as default
1248         character kind.
1249         * libgfortran/intrinsics/iso_c_generated_procs.c: Add versions of
1250         c_f_pointer for complex and logical types.
1251         * libgfortran/gfortran.map: Add c_f_pointer versions for logical
1252         and complex types.
1254 2007-07-19  Christopher D. Rickett  <crickett@lanl.gov>
1256         PR fortran/32600
1257         * libgfortran/intrinsics/iso_c_binding.c: Remove C_LOC.
1258         * libgfortran/intrinsics/iso_c_binding.h: Ditto.
1259         * libgfortran/gfortran.map: Ditto.
1261 2007-07-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1262             Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1264         PR fortran/32611
1265         * runtime/compile_options.c (set_std): Remove.
1266         (set_options): New function.
1267         (init_compile_options): Add initialization for -fsign-zero option.
1268         * gfortran.map (GFORTRAN_1.0): Rename _gfortran_set_std into
1269         _gfortran_set_options.
1270         * libgfortran.h (compile_options_t): Add sign_zero field.
1271         * io/write.c (output_float): Use the sign bit of the value to determine
1272         if a negative sign should be emitted for zero values.  Do not emit the
1273         negative sign for zero if -fno-sign-zero was set during compile.
1274         
1275 2007-07-14  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1277         PR libgfortran/32752
1278         * io/unix.c (unix_stream): Move buffer pointer adjacent to
1279         small_buffer.
1280         * io/transfer.c (formatted_transfer_scalar): If stream I/O, set
1281         bytes_used to zero. Fix off by one error in calculation of pos and
1282         skips. Eliminate duplicate pending_spaces check.
1284 2007-07-15  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1286         PR fortran/32357
1287         * intrinsics/mvbits.c: Change prototype so that FROMPOS, LEN and
1288         TOPOS arguments are C int.
1290 2007-07-09  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1292         PR libgfortran/32702
1293         * io/unix.c (unix_stream): Restore buffer pointer and small_buffer.
1294         (fd_alloc): If the number of bytes needed is greater than the default
1295         BUFFER_SIZE, allocate a new buffer large enough.  Free the old buffer
1296         if necessary. (fd_sfree): Restore use of buffer pointer.
1297         (fd_close): Likewise. (fd_open): Likewise.
1298         (init_error_stream): Likewise.
1299         
1300 2007-07-09  Thomas Koenig  <tkoenig@gcc.gnu.org>
1302         PR libfortran/32336
1303         * m4/matmul.m4:  When the dimension of b is incorrect,
1304         raise a runtime error instead of a failed assertion.
1305         * generated/matmul_i1.c:  Regenerated.
1306         * generated/matmul_i2.c:  Regenerated.
1307         * generated/matmul_i4.c:  Regenerated.
1308         * generated/matmul_i8.c:  Regenerated.
1309         * generated/matmul_i16.c:  Regenerated.
1310         * generated/matmul_r4.c:  Regenerated.
1311         * generated/matmul_r8.c:  Regenerated.
1312         * generated/matmul_r10.c:  Regenerated.
1313         * generated/matmul_r16.c:  Regenerated.
1315 2007-07-08  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1317         PR libgfortran/32678
1318         * io/transfer.c (formatted_transfer_scalar): Don't allow
1319         pending_spaces to go negative.
1321 2007-07-08  Thomas Koenig  <tkoenig@gcc.gnu.org>
1323         PR libfortran/32217
1324         * intrinsics/unpack_generic.c:  If the destination array is
1325         empty, return early.
1327 2007-07-05  H.J. Lu  <hongjiu.lu@intel.com>
1329         * aclocal.m4: Regenerated.
1331 2007-07-04  David Edelsohn  <edelsohn@gnu.org>
1333         * configure.ac: SUBST CFLAGS.
1334         * configure: Regenerate.
1336 2007-07-03  Janne Blomqvist  <jb@gcc.gnu.org>
1338         * libgfortran.h: Mark internal_malloc_size as a malloc function.
1339         * runtime/memory.c (internal_realloc_size): Remove.
1340         (internal_realloc): Call realloc directly instead of
1341         internal_realloc_size.
1342         (allocate_size): Remove.
1343         (allocate): Call malloc directly instead of allocate_size, mark as
1344         malloc function.
1346 2007-07-02  Steven G. Kargl  <kargl@gcc.gnu.org>
1348         Restore collateral damage from ISO C Binding merge.
1350 2007-06-29  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1352         PR libgfortran/32456
1353         * io/unit.c (filename_from_unit): Don't use find_unit, instead search
1354         for unit directly.
1356 2007-07-02  Steven G. Kargl  <kargl@gcc.gnu.org>
1358         * Makefile.in:  Regenerated with automake 1.9.6.
1360 2007-07-02  Steven G. Kargl  <kargl@gcc.gnu.org>
1362         * Makefile.in:  Remove extraneous kill.lo rule.
1364 2007-07-02  Janne Blomqvist  <jb@gcc.gnu.org>
1366         PR fortran/32239
1367         * generated/pow_r*_i4.c: Removed.
1369 2007-07-01  Christopher D. Rickett  <crickett@lanl.gov>
1371         * Makefile.in: Add support for iso_c_generated_procs.c and
1372         iso_c_binding.c.
1373         * Makefile.am: Ditto.
1374         * intrinsics/iso_c_generated_procs.c: New file containing helper
1375         functions.
1376         * intrinsics/iso_c_binding.c: Ditto.
1377         * intrinsics/iso_c_binding.h: New file
1378         * gfortran.map: Include the __iso_c_binding_c_* functions.
1379         * libgfortran.h: define GFC_NUM_RANK_BITS.
1381 2007-07-01  Janne Blomqvist  <jb@gcc.gnu.org>
1383         PR fortran/32239
1384         * Makefile.am: Don't generate real**int4 pow functions.
1385         * gfortran.map: Remove real**int4 pow symbols.
1386         * Makefile.in: Regenerated.
1388 2007-07-01  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1390         PR libgfortran/32554
1391         * io/write.c (output_float): Set edigits to a fixed size, avoiding
1392         variation in field width calculation and eliminate buffer overrun.
1394 2007-07-01  Janne Blomqvist  <jb@gcc.gnu.org>
1396         * runtime/memory.c (internal_realloc): Use index_type for size
1397         argument instead of GFC_INTEGER_4.
1398         (allocate_array): Likewise.
1399         (allocate): Likewise, add ifdef around unnecessary check.
1400         (internal_reallo64): Remove.
1401         (allocate_array64): Remove.
1402         (allocate64): Remove.
1403         * gfortran.map: Remove symbols for 64-bit allocation functions.
1405 2007-06-29  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1407         PR libgfortran/32456
1408         * io/unit.c (filename_from_unit): Don't use find_unit, instead search
1409         for unit directly.
1411 2007-06-24  Adam Nemet  <anemet@caviumnetworks.com>
1413         PR libfortran/32495
1414         * runtime/backtrace.c (local_strcasestr): Rename from strcasestr.
1415         (show_backtrace): Rename strcasestr to local_strcasestr.
1417 2007-06-24  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1419         PR libgfortran/32456
1420         * runtime/error.c (show_locus): Update to emit the unit number
1421         and file name involved with the error.  Use new function
1422         filename_from_unit.
1423         * libgfortran.h (filename_from_unit): Declare new function.
1424         * io/unit.c (init_units): Set the unit file name for stdin, stdout,
1425         and stderr for use later in error reporting.
1426         (filename_from_unit): Add this new function.
1428 2007-06-24  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1430         PR libgfortran/32446
1431         * io/write.c (output_float): Calculate ndigits correctly for large
1432         numbered formats that must pad zeros before the decimal point.
1434 2007-06-15  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
1436         PR libfortran/32345
1437         * runtime/backtrace.c (show_backtrace): Only use snprintf if
1438         available.
1440 2007-06-10  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1442         PR libgfortran/32235
1443         * io/transfer.c (st_read): Remove test for end of file condition.
1444         (next_record_r): Add test for end of file condition.
1446 2007-06-02  Paolo Bonzini  <bonzini@gnu.org>
1448         * configure: Regenerate.
1450 2007-05-28  Tobias Burnus  <burnus@net-b.de>
1452         PR fortran/32124
1453         * runtime/memory.c (allocate_size): Use ERROR_ALLOCATION.
1454         (allocate,allocate64): Use stat variable if present.
1456 2007-05-27  Janne Blomqvist  <jb@gcc.gnu.org>
1458         * runtime/string.c (compare0): Use gfc_charlen_type instead of
1459         int.
1460         (fstrlen): Likewise.
1461         (find_option): Likewise.
1462         (fstrcpy): Use gfc_charlen_type instead of int, return length.
1463         (cf_strcpy): Likewise.
1464         * libgfortran.h: Change string prototypes to use gfc_charlen_type.
1465         * io/open.c (new_unit): Use snprintf if available.
1466         * io/list_read.c (nml_touch_nodes): Use memcpy instead of
1467         strcpy/strcat.
1468         (nml_read_obj): Likewise.
1469         * io/transfer.c (st_set_nml_var): Likewise.
1470         * io/write.c (output_float): Use snprintf if available.
1471         (nml_write_obj) Use memcpy instead of strcpy/strcat.
1473 2007-05-26  Janne Blomqvist  <jb@gcc.gnu.org>
1475         * io/unix.c (unix_stream): Rearrange struct members, remove
1476         small_buffer.
1477         (int_stream): New struct.
1478         (fd_alloc): Always use existing buffer, never reallocate.
1479         (fd_sfree): Remove check for buffer != small_buffer.
1480         (fd_close): Likewise.
1481         (mem_alloc_r_at): Change to use int_stream.
1482         (mem_alloc_w_at): Likewise.
1483         (mem_read): Likewise.
1484         (mem_write): Likewise.
1485         (mem_set): Likewise.
1486         (mem_truncate): Likewise.
1487         (mem_close): Likewise.
1488         (mem_sfree): Likewise.
1489         (empty_internal_buffer): Likewise.
1490         (open_internal): Likewise.
1491         
1492 2007-05-25  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1494         * io/transfer.c (unformatted_read): Use size from front end
1495         eliminating use of size_from_real_kind.
1496         (unformatted_write): Ditto.
1498 2007-05-23  Steve Ellcey  <sje@cup.hp.com>
1500         * Makefile.in: Regenerate.
1501         * configure: Regenerate.
1502         * aclocal.m4: Regenerate.
1504 2007-05-22  Tobias Burnus  <burnus@net-b.de>
1506         * libgfortran.h: Mark stop_numeric as noreturn.
1508 2007-05-22  Tobias Burnus  <burnus@net-b.de>
1510         PR libgfortran/31295
1511         * intrinsics/eoshift0.c (eoshift0): Silence uninitialized warning.
1512         * intrinsics/eoshift2.c (eoshift2): Ditto.
1514 2007-05-18  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1516         PR libfortran/31964
1517         * intrinsics/ishftc.c (ishftc4, ishftc8, ishftc16): Fix mask to handle
1518         shift of bit-size number of bits.
1520 2007-05-17  Tobias Burnus <burnus@net-b.de>
1522         PR fortran/31917
1523         * runtime/environ.c (mark_range): Fix setting default convert unit.
1525 2007-05-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1527         PR libfortran/31922
1528         * intrinsics/string_intrinsics.c (string_trim): Set result to null if
1529         string length is zero.
1531 2007-05-15  Tobias Burnus  <burnus@net-b.de>
1533         PR libfortran/31915
1534         * io/transfer.c (unformatted_read): Use proper size for real(10).
1535           (unformatted_write): Ditto.
1537 2007-05-14  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1539         PR fortran/30723
1540         * runtime/memory.c (internal_malloc, internal_malloc64,
1541         internal_free): Remove.
1542         * runtime/error.c (os_error): Export function.
1543         * intrinsics/move_alloc.c: Include stdlib.h.
1544         (move_alloc): Call free instead of internal_free.
1545         (move_alloc_c): Wrap long lines.
1546         * libgfortran.h (os_error): Export prototype.
1547         (internal_free): Remove prototype.
1548         * gfortran.map (GFORTRAN_1.0): Remove _gfortran_internal_free,
1549         _gfortran_internal_malloc and _gfortran_internal_malloc64.
1550         Add _gfortran_os_error.
1552 2007-05-09  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1554         PR libfortran/31880
1555         * io/unix.c (fd_alloc_r_at): Fix calculation of physical offset.
1557 2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1559         PR libfortran/31607
1560         * intrinsics/system.c (system_sub): Call flush_all_units.
1561         * io/io.h (flush_all_units): Move prototype to libgfortran.h.
1562         * libgfortran.h (flush_all_units): Add prototype.
1564 2007-05-06  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1566         PR libfortran/31201
1567         * runtime/error.c (runtime_error_at): New function.
1568         (generate_error): Export this function.
1569         * gfortran.map: Add _gfortran_generate_error and
1570         _gfortran_runtime_error_at.
1571         * libgfortran.h: Add comment to reference error codes in front end.
1572         (library_start): Locate prototype with library_end macro and add
1573         a new comment.  Add prototype for runtime_error_at. Export prototype
1574         for generate_error.
1575         * io/lock.c (library_start): Fix check for error condition.
1576         * io/transfer.c (data_transfer_init): Add library check.
1578 2007-05-04  Daniel Franke  <franke.daniel@gmail.com>
1580         PR fortran/22359
1581         * io/intrinsics.c (fseek_sub): New.
1582         * io/unix.c (fd_fseek): Change logical and physical offsets only
1583         if seek succeeds.
1584         * gfortran.map (fseek_sub): New.
1586 2007-05-04  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1588         PR libfortran/31210
1589         * io/transfer.c (transfer_character): Avoid passing a NULL
1590         pointer as source to the transfer routines, if the string length
1591         is zero.
1593 2007-04-28  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1595         PR libfortran/31501
1596         * io/list_read.c (next_char): Fix whitespace.
1597         * io/io.h: Remove prototypes and define macros for is_array_io,
1598         is_stream_io, and is_internal_unit.
1599         * io/unit.c (is_array_io), (is_internal_unit), (is_stream_io): Delete
1600         these functions.
1601         * io/transfer.c (read_sf): Change handling of internal_unit to make a
1602         single call to salloc_r and use memcpy to transfer the data. 
1604 2007-04-27  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1606         PR libfortran/31532
1607         * io/file_pos.c (st_backspace): Set flags.position for end of file
1608         condition and use new function update_position.
1609         (st_endfile): Use new function update_position.
1610         * io/io.h: Add prototype for new function.
1611         * io/inquire.c (inquire_via_unit): If not direct access, set NEXTREC
1612         to zero.
1613         * io/unit.c (update_position): New function to update position info
1614         used by inquire.
1615         * io/transfer.c (next_record): Fix typo and use new function.
1617 2007-04-25  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1619         PR libfortran/31299
1620         * intrinsics/getlog.c: Use getpwuid and geteuid instead of
1621         getlogin if they are available.
1622         * configure.ac: Add checks for getpwuid and geteuid.
1623         * configure: Regenerate.
1624         * config.h.in: Regenerate.
1626 2007-04-25  Janne Blomqvist  <jb@gcc.gnu.org>
1628         * configure: Regenerate using autoconf 2.59.
1629         * Makefile.in: Likewise.  
1630         * config.h.in: Likewise.
1632 2007-04-24  Janne Blomqvist  <jb@gcc.gnu.org>
1634         PR libfortran/27740
1635         * configure.ac: New test to determine if symbol versioning is
1636         supported.
1637         * Makefile.am: Use result of above test to add appropriate linker
1638         flags.
1639         * gfortran.map: New file.
1640         * configure: Regenerated.
1641         * Makefile.in: Regenerated.
1642         * config.h.in: Regenerated.
1644 2007-04-23  Thomas Koenig  <tkoenig@gcc.gnu.org>
1646         PR fortran/31618
1647         * io/transfer.c (read_block_direct):  Instead of calling us_read,
1648         set dtp->u.p.current_unit->current_record = 0 so that pre_position
1649         will read the record marker.
1650         (data_transfer_init):  For different error conditions, call
1651         generate_error, then return.
1653 2007-04-19  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1655         * runtime/main.c (please_free_exe_path_when_done): New variable.
1656         (store_exe_path): Initialize character buffer, and mark whether
1657         exe_path should be free'd by the library destructor function.
1658         (cleanup): Only free exe_path if needed.
1660 2007-04-18  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1661             Tobias Burnus  <burnus@net-b.de>
1663         PR libfortran/31286
1664         PR libfortran/31296
1665         * intrinsics/cshift0.c (cshift0): Initialize sstride[0] and rstride[0].
1666         * intrinsics/unpack_generic.c (unpack0, unpack0_char): Zero the
1667         array structures we pass to unpack_internal.
1669 2007-04-14  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1671         * io/open.c (test_endfile): Revert changes for 31052, restoring this
1672         function. 
1674 2007-04-14  Steve Ellcey  <sje@cup.hp.com>
1676         * Makefile.am: Add -I .. to ACLOCAL_AMFLAGS.  Add libgfortran_la_LINK.
1677         * Makefile.in: Regenerate.
1679 2007-04-11  Kai Tietz  <kai.tietz@onevision.com>
1681         * configure: Regenerate.
1683 2007-04-06  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1685         * intrinsics/cpu_time.c: Don't include headers already included
1686         by libgfortran.h. Protect inclusion of sys/times.h.
1687         * configure.ac: Remove unneeded checks for finit, stdio.h,
1688         stddef.h, math.h and sys/params.h.
1689         * config/fpu-aix.h: Don't include headers already included by
1690         libgfortran.h.
1691         * config/fpu-sysv.h: Likewise.
1692         * io/write.c: Likewise.
1693         * m4/minloc1.m4: Likewise.
1694         * m4/maxloc1.m4: Likewise.
1695         * m4/fraction.m4: Likewise.
1696         * m4/set_exponent.m4: Likewise.
1697         * m4/spacing.m4: Likewise.
1698         * m4/minval.m4: Likewise.
1699         * m4/maxval.m4: Likewise.
1700         * m4/exponent.m4: Likewise.
1701         * m4/nearest.m4: Likewise.
1702         * m4/minloc0.m4: Likewise.
1703         * m4/maxloc0.m4: Likewise.
1704         * m4/rrspacing.m4: Likewise.
1705         * runtime/main.c: Likewise.
1706         * runtime/error.c: Likewise.
1707         * intrinsics/system_clock.c: Likewise.
1708         * intrinsics/etime.c: Likewise.
1709         * intrinsics/stat.c: Likewise.
1710         * intrinsics/date_and_time.c: Likewise.
1711         * intrinsics/env.c: Likewise.
1712         * intrinsics/kill.c: Likewise.
1713         * intrinsics/getXid.c: Likewise.
1714         * intrinsics/chmod.c: Likewise.
1715         * intrinsics/args.c: Likewise.
1716         * intrinsics/c99_functions.c: Likewise.
1717         * generated/minval_r8.c: Regenerate.
1718         * generated/maxloc1_4_r8.c: Regenerate.
1719         * generated/minloc1_16_r16.c: Regenerate.
1720         * generated/maxval_i2.c: Regenerate.
1721         * generated/maxloc1_8_i4.c: Regenerate.
1722         * generated/exponent_r16.c: Regenerate.
1723         * generated/maxloc0_4_r4.c: Regenerate.
1724         * generated/fraction_r16.c: Regenerate.
1725         * generated/fraction_r4.c: Regenerate.
1726         * generated/minloc0_4_r16.c: Regenerate.
1727         * generated/minloc0_4_i1.c: Regenerate.
1728         * generated/maxloc0_4_r16.c: Regenerate.
1729         * generated/maxloc0_4_i2.c: Regenerate.
1730         * generated/minloc1_8_r16.c: Regenerate.
1731         * generated/maxloc1_8_r16.c: Regenerate.
1732         * generated/set_exponent_r8.c: Regenerate.
1733         * generated/maxloc0_8_i8.c: Regenerate.
1734         * generated/minloc1_4_r8.c: Regenerate.
1735         * generated/maxloc1_16_r16.c: Regenerate.
1736         * generated/minloc1_16_i4.c: Regenerate.
1737         * generated/maxloc1_16_i4.c: Regenerate.
1738         * generated/minloc0_16_i8.c: Regenerate.
1739         * generated/maxloc0_16_i8.c: Regenerate.
1740         * generated/nearest_r8.c: Regenerate.
1741         * generated/spacing_r16.c: Regenerate.
1742         * generated/maxval_r16.c: Regenerate.
1743         * generated/minloc1_8_i4.c: Regenerate.
1744         * generated/minloc0_16_i16.c: Regenerate.
1745         * generated/minloc0_4_r4.c: Regenerate.
1746         * generated/set_exponent_r10.c: Regenerate.
1747         * generated/rrspacing_r10.c: Regenerate.
1748         * generated/minloc0_4_i2.c: Regenerate.
1749         * generated/maxloc0_8_i1.c: Regenerate.
1750         * generated/minloc0_8_i8.c: Regenerate.
1751         * generated/spacing_r4.c: Regenerate.
1752         * generated/minloc1_16_r10.c: Regenerate.
1753         * generated/minloc0_16_i1.c: Regenerate.
1754         * generated/maxloc0_16_i1.c: Regenerate.
1755         * generated/maxloc1_8_r8.c: Regenerate.
1756         * generated/minval_i16.c: Regenerate.
1757         * generated/exponent_r10.c: Regenerate.
1758         * generated/maxval_i4.c: Regenerate.
1759         * generated/minval_i8.c: Regenerate.
1760         * generated/maxloc1_4_i8.c: Regenerate.
1761         * generated/fraction_r10.c: Regenerate.
1762         * generated/maxloc0_16_i16.c: Regenerate.
1763         * generated/maxloc0_8_r4.c: Regenerate.
1764         * generated/rrspacing_r8.c: Regenerate.
1765         * generated/minloc1_4_i16.c: Regenerate.
1766         * generated/minloc0_4_r10.c: Regenerate.
1767         * generated/maxloc1_4_i16.c: Regenerate.
1768         * generated/minloc0_8_i16.c: Regenerate.
1769         * generated/maxloc0_4_r10.c: Regenerate.
1770         * generated/maxloc0_8_i16.c: Regenerate.
1771         * generated/minloc1_8_r10.c: Regenerate.
1772         * generated/minloc0_16_r4.c: Regenerate.
1773         * generated/maxloc1_8_r10.c: Regenerate.
1774         * generated/maxloc0_16_r4.c: Regenerate.
1775         * generated/minloc1_16_r8.c: Regenerate.
1776         * generated/minloc0_8_i1.c: Regenerate.
1777         * generated/maxloc0_4_i4.c: Regenerate.
1778         * generated/maxloc1_16_r8.c: Regenerate.
1779         * generated/maxloc0_8_i2.c: Regenerate.
1780         * generated/nearest_r16.c: Regenerate.
1781         * generated/maxloc1_16_r10.c: Regenerate.
1782         * generated/minloc0_16_i2.c: Regenerate.
1783         * generated/minloc1_8_r8.c: Regenerate.
1784         * generated/maxloc0_16_i2.c: Regenerate.
1785         * generated/exponent_r4.c: Regenerate.
1786         * generated/spacing_r10.c: Regenerate.
1787         * generated/maxval_r10.c: Regenerate.
1788         * generated/minval_i1.c: Regenerate.
1789         * generated/maxloc1_4_i1.c: Regenerate.
1790         * generated/minloc1_4_i8.c: Regenerate.
1791         * generated/minloc0_8_r4.c: Regenerate.
1792         * generated/minloc0_16_r16.c: Regenerate.
1793         * generated/minloc0_4_i4.c: Regenerate.
1794         * generated/minloc0_8_i2.c: Regenerate.
1795         * generated/minval_r4.c: Regenerate.
1796         * generated/maxloc1_4_r4.c: Regenerate.
1797         * generated/maxval_r8.c: Regenerate.
1798         * generated/minval_r16.c: Regenerate.
1799         * generated/minloc1_4_i1.c: Regenerate.
1800         * generated/minval_i2.c: Regenerate.
1801         * generated/maxloc1_4_i2.c: Regenerate.
1802         * generated/maxloc1_8_i8.c: Regenerate.
1803         * generated/maxloc0_4_r8.c: Regenerate.
1804         * generated/maxloc0_16_r16.c: Regenerate.
1805         * generated/minloc1_4_r16.c: Regenerate.
1806         * generated/fraction_r8.c: Regenerate.
1807         * generated/maxloc1_4_r16.c: Regenerate.
1808         * generated/set_exponent_r4.c: Regenerate.
1809         * generated/minloc0_8_r16.c: Regenerate.
1810         * generated/maxloc0_8_r16.c: Regenerate.
1811         * generated/nearest_r10.c: Regenerate.
1812         * generated/maxloc0_8_i4.c: Regenerate.
1813         * generated/minloc1_4_r4.c: Regenerate.
1814         * generated/minloc0_16_i4.c: Regenerate.
1815         * generated/maxloc0_16_i4.c: Regenerate.
1816         * generated/nearest_r4.c: Regenerate.
1817         * generated/minloc1_16_i8.c: Regenerate.
1818         * generated/maxloc1_16_i8.c: Regenerate.
1819         * generated/minloc1_4_i2.c: Regenerate.
1820         * generated/maxloc1_8_i1.c: Regenerate.
1821         * generated/minloc0_16_r10.c: Regenerate.
1822         * generated/minloc1_8_i8.c: Regenerate.
1823         * generated/minloc0_4_r8.c: Regenerate.
1824         * generated/minloc0_8_i4.c: Regenerate.
1825         * generated/minloc1_16_i16.c: Regenerate.
1826         * generated/spacing_r8.c: Regenerate.
1827         * generated/maxloc1_8_r4.c: Regenerate.
1828         * generated/minloc1_16_i1.c: Regenerate.
1829         * generated/maxloc1_16_i1.c: Regenerate.
1830         * generated/minval_r10.c: Regenerate.
1831         * generated/minval_i4.c: Regenerate.
1832         * generated/minloc1_8_i1.c: Regenerate.
1833         * generated/maxloc1_4_i4.c: Regenerate.
1834         * generated/maxloc1_8_i2.c: Regenerate.
1835         * generated/maxval_i8.c: Regenerate.
1836         * generated/maxloc0_16_r10.c: Regenerate.
1837         * generated/rrspacing_r4.c: Regenerate.
1838         * generated/minloc0_4_i16.c: Regenerate.
1839         * generated/maxloc0_8_r8.c: Regenerate.
1840         * generated/maxloc0_4_i16.c: Regenerate.
1841         * generated/minloc1_4_r10.c: Regenerate.
1842         * generated/minloc1_8_i16.c: Regenerate.
1843         * generated/maxloc1_4_r10.c: Regenerate.
1844         * generated/minloc0_8_r10.c: Regenerate.
1845         * generated/maxloc1_8_i16.c: Regenerate.
1846         * generated/maxloc0_8_r10.c: Regenerate.
1847         * generated/minloc1_16_r4.c: Regenerate.
1848         * generated/maxloc1_16_r4.c: Regenerate.
1849         * generated/minloc0_16_r8.c: Regenerate.
1850         * generated/maxloc0_16_r8.c: Regenerate.
1851         * generated/maxloc0_4_i8.c: Regenerate.
1852         * generated/maxloc1_16_i16.c: Regenerate.
1853         * generated/minloc1_8_r4.c: Regenerate.
1854         * generated/minloc1_16_i2.c: Regenerate.
1855         * generated/maxloc1_16_i2.c: Regenerate.
1856         * generated/maxval_i16.c: Regenerate.
1857         * generated/exponent_r8.c: Regenerate.
1858         * generated/minloc1_4_i4.c: Regenerate.
1859         * generated/maxval_i1.c: Regenerate.
1860         * generated/minloc1_8_i2.c: Regenerate.
1861         * generated/minloc0_8_r8.c: Regenerate.
1862         * generated/set_exponent_r16.c: Regenerate.
1863         * generated/maxloc0_4_i1.c: Regenerate.
1864         * generated/rrspacing_r16.c: Regenerate.
1865         * generated/minloc0_4_i8.c: Regenerate.
1866         * generated/maxval_r4.c: Regenerate.
1867         * configure: Regenerate.
1868         * config.h.in: Regenerate.
1870 2007-04-06  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1872         PR libfortran/31395
1873         * io/format.c (parse_format_list): Fix parsing.
1875 2007-04-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1877         PR fortran/31304
1878         intrinsics/string_intrinsics.c (string_repeat): Remove.
1880 2007-04-01  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1882         PR libfortran/31052
1883         * io/open.c (test_endfile): Delete this function.
1884         (edit_modes): Delete call to test_endfile.
1885         (new_unit): Likewise.
1886         * io/io.h: Delete prototype for test_endfile.
1887         * io/transfer.c (next_record_r): Remove use of test_endfile.
1888         (st_read):  Add test for end file condition and adjust status. 
1890 2007-04-01  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1892         PR libfortran/31366
1893         * io/transfer.c (read_block_direct): Do not generate error when reading
1894         past EOF on a short record that is less than the RECL= specified.
1895         
1896 2007-04-01  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1898         PR libfortran/31207
1899         * io/unit.c (close_unit_1): If there are bytes previously written from
1900         ADVANCE="no", move to the end before closing.
1902 2007-03-31  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1904         PR libfortran/31335
1905         * intrinsics/stat.c: Only provide STAT and FSTAT library routines
1906         if stat() and fstat() library functions are available. When lstat()
1907         is not available, use stat() instead.
1908         * configure.ac: Add checks for stat, fstat and lstat.
1909         * configure: Regenerate.
1910         * config.h.in: Regenerate.
1912 2007-03-27  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1914         PR libfortran/31052
1915         * io/transfer.c (next_record_r): Do not call test_endfile if in
1916         namelist mode.
1918 2007-03-25  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1920         PR libfortran/31199
1921         * io/io.h: Add saved_pos to gfc_unit structure.
1922         * io/open.c (new_unit): Initialize saved_pos.
1923         * io/transfer.c (data_transfer_init): Set max_pos to value in
1924         saved_pos.
1925         (next_record_w): Fix whitespace.
1926         (finalze_transfer): Calculate max_pos for ADVANCE="no" and save it for
1927         later use.  If not ADVANCE="no" set saved_pos to zero.
1929 2007-03-25  Thomas Koenig  <tkoenig@gcc.gnu.org>
1931         PR libfortran/31196
1932         * intrinsics/reshape_generic.c (reshape_internal):  Increment
1933         correct variable.
1935 2007-03-22  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1937         PR libfortran/31052
1938         * file_pos.c: Update Copyright year.
1939         * io/open.c (test_endfile): Restore test_endfile to fix SPEC
1940         regression.  Update Copyright year.
1941         * io/io.h: Same.
1942         * io/unix.c (is_special): Add missing type for this function.
1943         Update Copyright year.
1944         * io/transfer.c (next_record_r): Restore test_endfile.
1945         (st_read): Fix whitespace.  Update Copyright year
1947 2007-03-20  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1949         * configure.ac: Add missing check for gettimeofday.
1950         * config.h.in: Renegerate.
1951         * configure: Regenerate.
1953 2007-03-18  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1955         PR libfortran/31052
1956         * io/file_position (st_rewind): Fix comments. Remove use of
1957         test_endfile. Don't seek if already at 0 position.  Use new is_special
1958         function to set endfile state.
1959         * io/open.c (test_endfile): Delete this function.
1960         * io/io.h: Delete prototype for test_endfile.  Add prototype
1961         for is_special.
1962         * io/unix.c (is_special): New function. Fix whitespace.
1963         * io/transfer.c (next_record_r): Remove use of test_endfile.
1965 2007-03-16  David Edelsohn  <edelsohn@gnu.org>
1967         * runtime/main.c: Include "config.h" first.
1969 2007-03-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1971         PR libfortran/31099
1972         * io/file_pos.c (st_rewind): Don't set bytes_left to zero.
1974 2007-03-15  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
1976         * runtime/backtrace.c: New file.
1977         * runtime/environ.c (variable_table): New GFORTRAN_ERROR_BACKTRACE
1978         environment variable.
1979         * runtime/compile_options.c (set_std): Add new argument.
1980         * runtime/main.c (store_exe_path, full_exe_path): New functions.
1981         * runtime/error.c (sys_exit): Add call to show_backtrace.
1982         * libgfortran.h (options_t): New backtrace field.
1983         (store_exe_path, full_exe_path, show_backtrace): New prototypes.
1984         * configure.ac: Add checks for execinfo.h, execvp, pipe, dup2,
1985         close, fdopen, strcasestr, getrlimit, backtrace, backtrace_symbols
1986         and getppid.
1987         * Makefile.am: Add runtime/backtrace.c.
1988         * fmain.c (main): Add call to store_exe_path.
1989         * Makefile.in: Renegerate.
1990         * config.h.in: Renegerate.
1991         * configure: Regenerate.
1993 2007-03-14  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
1995         PR libfortran/31051
1996         * io/transfer.c (formatted_transfer_scalar): Adjust position for
1997         pending spaces when in writing mode.  Clean up some formatting.
1999 2007-03-14  Thomas Koenig  <Thomas.Koenig@online.de>
2001         PR libfortran/30690
2002         * all.m4: Quote everything, except for m4 macros.
2003         * any.m4: Likewise.
2004         * count.m4: Likewise.
2005         * cshift1.m4: Likewise.
2006         * eoshift1.m4: Likewise.
2007         * eoshift3.m4: Likewise.
2008         * exponent.m4: Likewise.
2009         * fraction.m4: Likewise.
2010         * in_pack.m4: Likewise.
2011         * in_unpack.m4: Likewise.
2012         * matmul.m4: Likewise.
2013         * matmull.m4: Likewise.
2014         * nearest.m4: Likewise.
2015         * pow.m4: Likewise.
2016         * product.m4: Likewise.
2017         * reshape.m4: Likewise.
2018         * rrspacing.m4: Likewise.
2019         * set_exponent.m4: Likewise.
2020         * shape.m4: Likewise.
2021         * spacing.m4: Likewise.
2022         * transpose.m4: Likewise.
2024 2007-03-14  Jakub Jelinek  <jakub@redhat.com>
2026         * io/unix.c (regular_file): For ACTION_UNSPECIFIED retry with
2027         O_RDONLY even if errno is EROFS.
2029 2007-03-09  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
2031         PR libfortran/31099
2032         * io/open.c (new_unit): Initialize bytes_left and recl_subrecord.
2033         * io/transfer.c (next_record_w): Set bytes left to record length for
2034         sequential unformatted I/O.
2035         (next_record_r): Ditto.
2036         (read_block_direct): Fix test for exceeding bytes_left.
2038 2007-03-08  Daniel Franke  <franke.daniel@gmail.com>
2040         PR fortran/30947
2041         * intrinsics/signal.c (alarm_sub_int): Avoid SEGFAULT with 
2042         integer arguments.
2044 2007-03-04  Thomas Koenig  <Thomas.Koenig@online.de>
2046         PR libfortran/30981
2047         * m4/pow_m4: Use appropriate unsigned int type for u.
2048         * generated/pow_c10_i16.c: Regenerated.
2049         * generated/pow_c10_i4.c: Regenerated.
2050         * generated/pow_c10_i8.c: Regenerated.
2051         * generated/pow_c16_i16.c: Regenerated.
2052         * generated/pow_c16_i4.c: Regenerated.
2053         * generated/pow_c16_i8.c: Regenerated.
2054         * generated/pow_c4_i16.c: Regenerated.
2055         * generated/pow_c4_i4.c: Regenerated.
2056         * generated/pow_c4_i8.c: Regenerated.
2057         * generated/pow_c8_i16.c: Regenerated.
2058         * generated/pow_c8_i4.c: Regenerated.
2059         * generated/pow_c8_i8.c: Regenerated.
2060         * generated/pow_i16_i16.c: Regenerated.
2061         * generated/pow_i16_i4.c: Regenerated.
2062         * generated/pow_i16_i8.c: Regenerated.
2063         * generated/pow_i4_i16.c: Regenerated.
2064         * generated/pow_i4_i4.c: Regenerated.
2065         * generated/pow_i4_i8.c: Regenerated.
2066         * generated/pow_i8_i16.c: Regenerated.
2067         * generated/pow_i8_i4.c: Regenerated.
2068         * generated/pow_i8_i8.c: Regenerated.
2069         * generated/pow_r10_i16.c: Regenerated.
2070         * generated/pow_r10_i4.c: Regenerated.
2071         * generated/pow_r10_i8.c: Regenerated.
2072         * generated/pow_r16_i16.c: Regenerated.
2073         * generated/pow_r16_i4.c: Regenerated.
2074         * generated/pow_r16_i8.c: Regenerated.
2075         * generated/pow_r4_i16.c: Regenerated.
2076         * generated/pow_r4_i4.c: Regenerated.
2077         * generated/pow_r4_i8.c: Regenerated.
2078         * generated/pow_r8_i16.c: Regenerated.
2079         * generated/pow_r8_i4.c: Regenerated.
2080         * generated/pow_r8_i8.c: Regenerated.
2082 2007-03-03  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
2084         PR libfortran/31001
2085         * intrinsics/pack_generic.c (pack_internal): Add special checks
2086         for zero-sized arrays.
2088 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
2090         * Makefile.am: Add dummy install-pdf target.
2091         * Makefile.in: Regenerate
2093 2007-02-24  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
2095         PR libfortran/30918
2096         * io/listread.c (namelist_read): Eat comment line.
2098 2007-02-22  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
2100         PR libfortran/30910
2101         * io/write.c (output_float): Add condition of format F only for
2102         special case rounding with zero precision.
2104 2007-02-19  Thomas Koenig  <Thomas.Koenig@online.de>
2106         PR libfortran/30533
2107         PR libfortran/30765
2108         * Makefile.am: Add $(srcdir) too all files in generated/.
2109         (i_maxloc0_c): Add maxloc0_4_i1.c, maxloc0_8_i1.c,
2110         maxloc0_16_i1.c, maxloc0_4_i2.c, maxloc0_8_i2.c and
2111         maxloc0_16_i2.c.
2112         (i_maxloc1_c): Add maxloc1_4_i1.c, maxloc1_8_i1.c,
2113         maxloc1_16_i1.c, maxloc1_4_i2.c, maxloc1_8_i2.c and
2114         maxloc1_16_i2.c.
2115         (i_maxval_c): Add maxval_i1.c and maxval_i2.c.
2116         (i_minloc0_c):  Add minloc0_4_i1.c, minloc0_8_i1.c,
2117         minloc0_16_i1.c, minloc0_4_i2.c, minloc0_8_i2.c and
2118         minloc0_16_i2.c.
2119         (i_minloc_1.c): Add minloc1_4_i1.c, minloc1_8_i1.c,
2120         minloc1_16_i1.c, minloc1_4_i2.c, minloc1_8_i2.c and
2121         minloc1_16_i2.c.
2122         (i_minval_c):  Add minval_i1.c and minval_i2.c.
2123         (i_sum_c):  Add sum_i1.c and sum_i2.c.
2124         (i_product_c):  Add product_i1.c and product_i2.c.
2125         (i_matmul_c):  Add matmul_i1.c and matmul_i2.c.
2126         (gfor_built_specific_src):  Remove $(srcdir) from target.
2127         (gfor_bulit_specific2_src):  Likewise.
2128         Makefile.in:  Regenerated.
2129         libgfortran.h:  Add GFC_INTEGER_1_HUGE and GFC_INTEGER_2_HUGE.
2130         Add gfc_array_i1 and gfc_array_i2.
2131         * generated/matmul_i1.c: New file.
2132         * generated/matmul_i2.c: New file.
2133         * generated/maxloc0_16_i1.c: New file.
2134         * generated/maxloc0_16_i2.c: New file.
2135         * generated/maxloc0_4_i1.c: New file.
2136         * generated/maxloc0_4_i2.c: New file.
2137         * generated/maxloc0_8_i1.c: New file.
2138         * generated/maxloc0_8_i2.c: New file.
2139         * generated/maxloc1_16_i1.c: New file.
2140         * generated/maxloc1_16_i2.c: New file.
2141         * generated/maxloc1_4_i1.c: New file.
2142         * generated/maxloc1_4_i2.c: New file.
2143         * generated/maxloc1_8_i1.c: New file.
2144         * generated/maxloc1_8_i2.c: New file.
2145         * generated/maxval_i1.c: New file.
2146         * generated/maxval_i2.c: New file.
2147         * generated/minloc0_16_i1.c: New file.
2148         * generated/minloc0_16_i2.c: New file.
2149         * generated/minloc0_4_i1.c: New file.
2150         * generated/minloc0_4_i2.c: New file.
2151         * generated/minloc0_8_i1.c: New file.
2152         * generated/minloc0_8_i2.c: New file.
2153         * generated/minloc1_16_i1.c: New file.
2154         * generated/minloc1_16_i2.c: New file.
2155         * generated/minloc1_4_i1.c: New file.
2156         * generated/minloc1_4_i2.c: New file.
2157         * generated/minloc1_8_i1.c: New file.
2158         * generated/minloc1_8_i2.c: New file.
2159         * generated/minval_i1.c: New file.
2160         * generated/minval_i2.c: New file.
2161         * generated/product_i1.c: New file.
2162         * generated/product_i2.c: New file.
2163         * generated/sum_i1.c: New file.
2164         * generated/sum_i2.c: New file.
2166 2007-02-16  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
2168         * runtime/memory.c (deallocate): Correct comment.
2170 2007-02-10  Thomas Koenig  <Thomas.Koenig@online.de>
2172         * Makefile.am:  Use $(M4) instead of m4.
2173         * Makefile.in:  Regenerate.
2175 2007-02-10  Thomas Koenig  <Thomas.Koenig@online.de>
2177         * Makefile.am: Remove $(srcdir) from assorted targets
2178         in maintainer mode.
2179         * Makefile.in: Regenerate.
2181 2007-02-09  Thomas Koenig  <Thomas.Koenig@online.de>
2182             Tobias Burnus  <burnus@net-b.de>
2184         PR fortran/30512
2185         * m4/iparm.m4: Use HUGE-1 for most negative integer.
2186         * generated/maxloc1_8_i4.c: Regenerate.
2187         * generated/maxloc0_8_i8.c: Regenerate.
2188         * generated/maxloc1_16_i4.c: Regenerate.
2189         * generated/maxloc0_16_i8.c: Regenerate.
2190         * generated/maxval_i4.c: Regenerate.
2191         * generated/maxloc1_4_i8.c: Regenerate.
2192         * generated/maxloc0_16_i16.c: Regenerate.
2193         * generated/maxloc1_4_i16.c: Regenerate.
2194         * generated/maxloc0_8_i16.c: Regenerate.
2195         * generated/maxloc0_4_i4.c: Regenerate.
2196         * generated/maxloc1_8_i8.c: Regenerate.
2197         * generated/maxloc0_8_i4.c: Regenerate.
2198         * generated/maxloc0_16_i4.c: Regenerate.
2199         * generated/maxloc1_16_i8.c: Regenerate.
2200         * generated/maxloc1_4_i4.c: Regenerate.
2201         * generated/maxval_i8.c: Regenerate.
2202         * generated/maxloc0_4_i16.c: Regenerate.
2203         * generated/maxloc1_8_i16.c: Regenerate.
2204         * generated/maxloc0_4_i8.c: Regenerate.
2205         * generated/maxloc1_16_i16.c: Regenerate.
2206         * generated/maxval_i16.c: Regenerate.
2208 2007-02-04  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
2210         PR fortran/30611
2211         * intrinsics/string_intrinsics.c (string_repeat): Don't check
2212         if ncopies is negative.
2214 2007-02-04  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
2216         PR libfortran/30007
2217         * libgfortran.h: Do not prefix symbol name with
2218         __USER_LABEL_PREFIX__ when used in __attribute__((__alias__(...))).
2220 2007-02-02  Paul Thomas  <pault@gcc.gnu.org>
2222         PR fortran/30284
2223         PR fortran/30626
2224         * io/transfer.c (init_loop_spec, next_array_record): Change to
2225         lbound rather than unity base.
2227 2007-01-21  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
2229         * runtime/error.c: Include sys/time.h before sys/resource.h.
2231 2007-01-21  Thomas Koenig  <Thomas.Koenig@online.de>
2233         PR libfortran/30525
2234         * intrinsics/string_intrinsics.c(compare_string):  Make
2235         sure that comparisons are done unsigned.
2237 2007-01-21  Tobias Burnus  <burnus@net-b.de>
2239         PR libfortran/30015
2240         * intrinsics/date_and_time.c (date_and_time): Fix case where time
2241           can go backwards.
2242         * configure.ac: Remove AC_TRY_RUN test for timezone in
2243           gettimeofday.
2244         * acinclude.m4: Ditto.
2245         * configure: Regenerate.
2246         * config.h.in: Regenerate.
2248 2007-01-20  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
2250         * m4/misc_specifics.m4: Add _gfortran prefix to specific names.
2251         * m4/specific2.m4: Likewise.
2252         * m4/specific.m4: Likewise.
2253         * intrinsics/f2c_specifics.F90: Likewise.
2254         * intrinsics/selected_int_kind.f90: Add _gfortran prefix.
2255         * intrinsics/selected_real_kind.f90: Likewise.
2256         * intrinsics/dprod_r8.f90: Likewise.
2257         * Makefile.am: Add -fallow-leading-underscore to the
2258         gfor_specific_src files, as well as selected_real_kind.F90
2259         and selected_int_kind.F90
2260         * Makefile.in: Regenerate.
2261         * generated/_sqrt_c8.F90: Regenerate.
2262         * generated/_sign_r16.F90: Regenerate.
2263         * generated/_log_c16.F90: Regenerate.
2264         * generated/_sin_c10.F90: Regenerate.
2265         * generated/_tanh_r4.F90: Regenerate.
2266         * generated/_tanh_r8.F90: Regenerate.
2267         * generated/_log10_r10.F90: Regenerate.
2268         * generated/_aimag_c4.F90: Regenerate.
2269         * generated/_sign_r4.F90: Regenerate.
2270         * generated/_aimag_c8.F90: Regenerate.
2271         * generated/_sign_r8.F90: Regenerate.
2272         * generated/_mod_i4.F90: Regenerate.
2273         * generated/_cos_r16.F90: Regenerate.
2274         * generated/_aint_r10.F90: Regenerate.
2275         * generated/_mod_i8.F90: Regenerate.
2276         * generated/_abs_i16.F90: Regenerate.
2277         * generated/_sqrt_c10.F90: Regenerate.
2278         * generated/_atan2_r4.F90: Regenerate.
2279         * generated/_cos_c4.F90: Regenerate.
2280         * generated/_atan_r16.F90: Regenerate.
2281         * generated/_tanh_r10.F90: Regenerate.
2282         * generated/_atan2_r8.F90: Regenerate.
2283         * generated/_cos_c8.F90: Regenerate.
2284         * generated/_exp_r4.F90: Regenerate.
2285         * generated/_log_r10.F90: Regenerate.
2286         * generated/_exp_r8.F90: Regenerate.
2287         * generated/_abs_r4.F90: Regenerate.
2288         * generated/_abs_r8.F90: Regenerate.
2289         * generated/_sin_r16.F90: Regenerate.
2290         * generated/_tan_r4.F90: Regenerate.
2291         * generated/_tan_r8.F90: Regenerate.
2292         * generated/_sign_i4.F90: Regenerate.
2293         * generated/_sign_i8.F90: Regenerate.
2294         * generated/_exp_c16.F90: Regenerate.
2295         * generated/_sqrt_r16.F90: Regenerate.
2296         * generated/_conjg_c4.F90: Regenerate.
2297         * generated/_conjg_c8.F90: Regenerate.
2298         * generated/_dim_r16.F90: Regenerate.
2299         * generated/_mod_r10.F90: Regenerate.
2300         * generated/_abs_c10.F90: Regenerate.
2301         * generated/_conjg_c16.F90: Regenerate.
2302         * generated/_tan_r16.F90: Regenerate.
2303         * generated/_asinh_r10.F90: Regenerate.
2304         * generated/_abs_i4.F90: Regenerate.
2305         * generated/_abs_i8.F90: Regenerate.
2306         * generated/_acos_r10.F90: Regenerate.
2307         * generated/_exp_r10.F90: Regenerate.
2308         * generated/_acosh_r16.F90: Regenerate.
2309         * generated/_atan2_r16.F90: Regenerate.
2310         * generated/_cos_c16.F90: Regenerate.
2311         * generated/_mod_i16.F90: Regenerate.
2312         * generated/_asin_r4.F90: Regenerate.
2313         * generated/_anint_r16.F90: Regenerate.
2314         * generated/_asin_r8.F90: Regenerate.
2315         * generated/_aimag_c10.F90: Regenerate.
2316         * generated/_exp_c4.F90: Regenerate.
2317         * generated/_sinh_r10.F90: Regenerate.
2318         * generated/_exp_c8.F90: Regenerate.
2319         * generated/_log10_r4.F90: Regenerate.
2320         * generated/_log10_r8.F90: Regenerate.
2321         * generated/_abs_c4.F90: Regenerate.
2322         * generated/_abs_r16.F90: Regenerate.
2323         * generated/_abs_c8.F90: Regenerate.
2324         * generated/_asin_r10.F90: Regenerate.
2325         * generated/_sign_r10.F90: Regenerate.
2326         * generated/_atanh_r16.F90: Regenerate.
2327         * generated/_log_c10.F90: Regenerate.
2328         * generated/_cosh_r16.F90: Regenerate.
2329         * generated/_sin_c16.F90: Regenerate.
2330         * generated/_cos_r10.F90: Regenerate.
2331         * generated/_log10_r16.F90: Regenerate.
2332         * generated/_aint_r16.F90: Regenerate.
2333         * generated/_acos_r4.F90: Regenerate.
2334         * generated/_acos_r8.F90: Regenerate.
2335         * generated/_sqrt_c16.F90: Regenerate.
2336         * generated/_acosh_r4.F90: Regenerate.
2337         * generated/_atan_r10.F90: Regenerate.
2338         * generated/_acosh_r8.F90: Regenerate.
2339         * generated/_sign_i16.F90: Regenerate.
2340         * generated/_tanh_r16.F90: Regenerate.
2341         * generated/_log_r4.F90: Regenerate.
2342         * generated/_log_r8.F90: Regenerate.
2343         * generated/_sin_r4.F90: Regenerate.
2344         * generated/_sin_r8.F90: Regenerate.
2345         * generated/_log_r16.F90: Regenerate.
2346         * generated/_sin_r10.F90: Regenerate.
2347         * generated/_sqrt_r4.F90: Regenerate.
2348         * generated/_exp_c10.F90: Regenerate.
2349         * generated/_sqrt_r8.F90: Regenerate.
2350         * generated/_asinh_r4.F90: Regenerate.
2351         * generated/_sqrt_r10.F90: Regenerate.
2352         * generated/_asinh_r8.F90: Regenerate.
2353         * generated/_dim_r4.F90: Regenerate.
2354         * generated/_dim_r8.F90: Regenerate.
2355         * generated/_dim_r10.F90: Regenerate.
2356         * generated/_cosh_r4.F90: Regenerate.
2357         * generated/_conjg_c10.F90: Regenerate.
2358         * generated/_tan_r10.F90: Regenerate.
2359         * generated/_cosh_r8.F90: Regenerate.
2360         * generated/_mod_r16.F90: Regenerate.
2361         * generated/_abs_c16.F90: Regenerate.
2362         * generated/_cos_r4.F90: Regenerate.
2363         * generated/_asinh_r16.F90: Regenerate.
2364         * generated/_cos_r8.F90: Regenerate.
2365         * generated/_atanh_r4.F90: Regenerate.
2366         * generated/_atanh_r8.F90: Regenerate.
2367         * generated/_acos_r16.F90: Regenerate.
2368         * generated/_anint_r4.F90: Regenerate.
2369         * generated/_acosh_r10.F90: Regenerate.
2370         * generated/_anint_r8.F90: Regenerate.
2371         * generated/_exp_r16.F90: Regenerate.
2372         * generated/_mod_r4.F90: Regenerate.
2373         * generated/_cos_c10.F90: Regenerate.
2374         * generated/_atan2_r10.F90: Regenerate.
2375         * generated/_dim_i16.F90: Regenerate.
2376         * generated/_mod_r8.F90: Regenerate.
2377         * generated/_anint_r10.F90: Regenerate.
2378         * generated/_aint_r4.F90: Regenerate.
2379         * generated/_aint_r8.F90: Regenerate.
2380         * generated/_dim_i4.F90: Regenerate.
2381         * generated/_sinh_r4.F90: Regenerate.
2382         * generated/_log_c4.F90: Regenerate.
2383         * generated/_dim_i8.F90: Regenerate.
2384         * generated/_sinh_r8.F90: Regenerate.
2385         * generated/_log_c8.F90: Regenerate.
2386         * generated/_sin_c4.F90: Regenerate.
2387         * generated/_sin_c8.F90: Regenerate.
2388         * generated/misc_specifics.F90: Regenerate.
2389         * generated/_abs_r10.F90: Regenerate.
2390         * generated/_aimag_c16.F90: Regenerate.
2391         * generated/_atan_r4.F90: Regenerate.
2392         * generated/_sinh_r16.F90: Regenerate.
2393         * generated/_atan_r8.F90: Regenerate.
2394         * generated/_atanh_r10.F90: Regenerate.
2395         * generated/_cosh_r10.F90: Regenerate.
2396         * generated/_sqrt_c4.F90: Regenerate.
2397         * generated/_asin_r16.F90: Regenerate.
2399 2007-01-19  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
2401         PR libfortran/26893
2402         * acinclude.m4 (LIBGFOR_WORKING_GFORTRAN): New check.
2403         * configure.ac: Add call to LIBGFOR_WORKING_GFORTRAN.
2404         * configure: Regenerate.
2405         * config.h.in: Regenerate because it was forgottent in the last
2406         commit.
2408 2007-01-18  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
2409             Tobias Burnus  <burnus@net-b.de>
2411         PR libfortran/29649
2412         * runtime/environ.c (variable_table): New GFORTRAN_ERROR_DUMPCORE
2413         environment variable.
2414         * runtime/compile_options.c (set_std): Add new argument.
2415         * runtime/error.c (sys_exit): Move from io/unix.c. Add coredump
2416         functionality.
2417         * libgfortran.h (options_t): New dump_core and backtrace members.
2418         (sys_exit): Move prototype.
2419         * io/unix.c (sys_exit): Move to runtime/error.c.
2420         * configure.ac: Add check for getrlimit.
2421         * configure: Regenerate.
2423 2007-01-17  Tom Tromey  <tromey@redhat.com>
2425         PR libfortran/27107:
2426         * aclocal.m4, configure, Makefile.in: Rebuilt.
2427         * configure.ac: Enable automake dependency tracking.  Update
2428         minimum automake version.
2430 2007-01-17  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
2432         PR libfortran/27107
2433         * runtime/environ.c: Don't include io/io.h.
2434         * runtime/string.c: Don't include io/io.h.
2435         (compare0): Add cast to avoid warning.
2436         * runtime/error.c: Don't include io/io.h.
2437         (st_printf): Move to io/unix.c.
2438         * intrinsics/flush.c: Delete, contents moved to io/intrinsics.c.
2439         * intrinsics/fget.c: Likewise.
2440         * intrinsics/ftell.c: Likewise.
2441         * intrinsics/tty.c: Likewise.
2442         * libgfortran.h (DEFAULT_RECL, notification_std,
2443         get_unformatted_convert, IOPARM_*, st_parameter_common, unit_convert,
2444         DEFAULT_TEMPDIR): New declarations.
2445         * io/io.h (DEFAULT_RECL, notification_std, get_unformatted_convert,
2446         IOPARM_*, st_parameter_common, unit_convert, DEFAULT_TEMPDIR):
2447         Move to libgfortran.h.
2448         * io/unix.c: Add io/unix.h content.
2449         (st_printf): New function.
2450         * io/intrinsics.c: New file.
2451         * io/unix.h: Remove, contents moved into unix.c.
2452         * libtool-version: Update library version to 3.0.0.
2453         * configure.ac: Update library version to 0.3.
2454         * Makefile.am (intrinsics/fget.c, intrinsics/flush.c,
2455         intrinsics/ftell.c, intrinsics/tty.c, libgfortran.h): Remove targets.
2456         * Makefile.in: Regenerate.
2457         * configure: Regenerate.
2459 2007-01-12  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
2461         PR libfortran/30435
2462         * io/list_read.c (finish_separator): Don't call next_record.
2463         (list_formatted_read_scalar): Clean up some comments and whitespace.
2464         (nml_read_obj): Whitespace fix.
2466 2007-01-05  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
2468         PR libfortran/30162
2469         * io/unix.c (fd_flush): Don't seek if file is not seekable, defined as
2470         s->file_length == -1.
2471         (fd_alloc_w_at): Do not adjust file_length if file is not seekable.
2472         (fd_seek): If not seekable, just return success.
2473         (fd_truncate): If not seekable, no need to truncate.  Return failure
2474         if seek fails and the stream is not a pipe.
2475         (fd_to_stream): Make test for non-seekable file more robust.
2477 2007-01-01  Steven G. Kargl  <kargls@comcast.net>
2479         * ChangeLog: Copied to ...
2480         * ChangeLog-2006: here.
2483 Copyright (C) 2007 Free Software Foundation, Inc.
2485 Copying and distribution of this file, with or without modification,
2486 are permitted in any medium without royalty provided the copyright
2487 notice and this notice are preserved.