OSDN Git Service

2008-04-13 Thomas Koenig <tkoenig@gcc.gnu.org>
[pf3gnuchains/gcc-fork.git] / libgfortran / ChangeLog
1 2008-04-13  Thomas Koenig  <tkoenig@gcc.gnu.org>
2         Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
3
4         PR libfortran/32972
5         PR libfortran/32512
6         configure.ac:  Add test for uintptr_t.
7         configure:  Regenerated.
8         config.h.in:  Regenerated.
9         * libgfortran.h: GFC_DTYPE_DERIVED_1:  New macro.
10         GFC_DTYPE_DERIVED_2:  New macro.
11         GFC_DTYPE_DERIVED_4:  New macro.
12         GFC_DTYPE_DERIVED_8:  New macro.
13         GFC_DTYPE_DERIVED_16:  New macro.
14         GFC_UNALIGNED_2:  New macro.
15         GFC_UNALIGNED_4:  New macro.
16         GFC_UNALIGNED_8:  New macro.
17         GFC_UNALIGNED_16:  New macro.
18         intptr_t:  Define if we don't have it.
19         uintptr_t:  Likewise.
20         * runtime/backtrace.c (show_backtrace):  Use intptr_t.
21         * intrinsics/signal.c (signal_sub):  Likewise.
22         (signal_sub_int):  Likewise.
23         (alarm_sub_int_i4):  Likewise.
24         * intrinsics/spread_generic.c (spread):  Use the integer
25         routines for handling derived types of sizes 1, 2, 4, 8 and 16
26         if the alignment of all pointers is correct.
27         (spread_scalar):  Likewise.
28         * intrinsics/pack_generic.c (pack):  Likewise.
29         Use GFD_DTYPE_TYPE_SIZE to avoid nested switch statements.
30         * intrinsics/unpack_generic.c (unpack1):  Likewise.
31         (unpack0):  Likewise.
32         * runtime/in_pack_generic.c (internal_pack):  Likewise.
33         * runtime/in_unpack_generic.c (internal_unpack):  Likewise.
34
35 2008-04-09  Jakub Jelinek  <jakub@redhat.com>
36
37         * io/list_read.c (snprintf): Define if HAVE_SNPRINTF isn't defined.
38         (nml_read_obj): Add nml_err_msg_size argument.  Pass it down to
39         recursive call.  Use snprintf instead of sprintf when %s nl->var_name
40         is used.
41         (nml_get_obj_data): Add nml_err_msg_size argument.  Pass it down to
42         nml_read_obj call.  Use snprintf instead of sprintf when %s
43         nl->var_name is used.  Pass nml_err_msg to nml_parse_qualifier instead
44         of parse_err_msg array.  Append " for namelist variable " and
45         nl->var_name to it.
46         (namelist_read): Increase size of nml_err_msg array to 200.  Pass
47         sizeof nml_err_msg as extra argument to nml_get_obj_data.
48
49 2008-04-07  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
50
51         PR fortran/25829 28655
52         * io/open.c (edit_modes): Set flags.async. (new_unit) Set flags.async
53         and flags.status. (st_open): Initialize flags.async.
54         * io/list_read.c (read_charactor): Use delim_status instead of
55         flags.delim.
56         * io/read.c (read_x): Use pad_status instead of flags.pad.
57         * io/inquire.c (inquire_via_unit): Add new checks.
58         (inquire_via_filename): Likewise.
59         * io/io.h (st_parameter_inquire): Add new flags.
60         (st_parameter_dt): Likewise.
61         * io/unit.c (get_internal_unit): Set flags.async. (init_units): Set
62         flags.async.
63         * io/transfer.c: Add delim and pad option arrays. (read_sf): Use
64         pad_status instead of flags.pad. (read_block): Likewise.
65         (data_transfer_init): Set flags.async and add checks.
66         * io/write.c (write_character): Use delim_status.
67         (list_formatted_write_scalar): Likewise. (nml_write_obj): Likewise.
68         (namelist_write): Likewise.
69
70 2008-04-05  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
71
72         PR fortran/25829 28655
73         * gfortran.map: Add new symbol, _gfortran_st_wait.
74         * libgfortran.h (st_paramter_common): Add new I/O parameters.
75         * open.c (st_option decimal_opt[], st_option encoding_opt[],
76         st_option round_opt[], st_option sign_opt[], st_option async_opt[]): New
77         parameter option arrays. (edit_modes): Add checks for new parameters.
78         (new_unit): Likewise. (st_open): Likewise.
79         * list_read.c (CASE_SEPERATORS): Add ';' as a valid separator.
80         (eat_separator): Handle deimal comma. (read_logical): Fix whitespace.
81         (parse_real): Handle decimal comma. (read_real): Handle decimal comma.
82         * read.c (read_a): Use decimal status flag to allow comma in place of a
83         decimal point. (read_f): Allow comma as acceptable character in float.
84         According to decimal flag, substitute a period for a comma.
85         (read_x): If decimal status flag is comma, disable the read_comma flag,
86         not allowing comma as a delimiter, an extension otherwise.
87         * io.h: (unit_decimal, unit_encoding, unit_round, unit_sign,
88         unit_async): New enumerators. Add all new I/O parameters.
89         * unix.c (unix_stream, int_stream): Add io_mode asychronous I/O control.
90         (move_pos_offset, fd_alloc_w_at): Fix some whitespace.
91         (fd_sfree): Use new enumerator. (fd_read): Likewise.
92         (fd_write): Likewise. (fd_close): Fix whitespace.
93         (fd_open): Use new enumertors. (tempfile, regular_file,
94         open_external): Fix whitespace. (output_stream, error_stream): Set
95         method. (stream_offset): Fix whitespace.
96         * transfer.c: (st_option decimal_opt[], sign_opt[], blank_opt[]): New
97         option arrays.  (formatted_transfer_scalar): Set sf_read_comma flag
98         based on new decimal_status flag. (data_transfer_init): Initialize new
99         parameters. Add checks for decimal, sign, and blank. (st_wait): New stub.
100         * format.c: (format_lex): Add format specifiers DP, DC, and D.
101         (parse_format_list): Parse the new specifiers.
102         * write.c (write_decimal): Use new sign enumerators to set the sign.
103         (write_complex): Handle decimal comma and semi-colon separator.
104         (nml_write_obj): Likewise.
105         * write_float.def: Revise sign enumerators. (calculate_sign): Use new
106         sign enumerators. (output_float): Likewise. Use new decimal_status flag
107         to set the decimal character to a point or a comma.
108         
109 2008-03-28  Thomas Koenig  <tkoenig@gcc.gnu.org>
110
111         PR libfortran/32972
112         PR libfortran/32512
113         * Makefile.am:  Add new variable, i_spread_c, containing
114         pack_i1.c, pack_i2.c, pack_i4.c, pack_i8.c, spread_i16.c,
115         spread_r4.c, spread_r8.c, spread_r10.c, spread_r16.c,
116         spread_c4.c, spread_c8.c, spread_c10.c, spread_c16.c.
117         * Makefile.in:  Regenerated.
118         * libgfortran.h:  Add prototypes for spread_i1, spread_i2,
119         spread_i4, spread_i8, spread_i16, spread_r4, spread_r8,
120         spread_c4, spread_c8, spread_c10, spread_c16,
121         spread_scalar_i1, spread_scalar_i2, spread_scalar_i4,
122         spread_scalar_i8, spread_scalar_i16, spread_scalar_r4
123         spread_scalar_r8, spread_scalar_c4, spread_scalar_c8,
124         spread_scalar_c10 and spread_scalar_c16.
125         Add macros to isolate both type and size information
126         from array descriptors with a single mask operation.
127         * intrinsics/spread_generic.c:  Add calls to specific
128         spread functions.
129         * m4/spread.m4:  New file.
130         * generated/spread_i1.c:  New file.
131         * generated/spread_i2.c:  New file.
132         * generated/spread_i4.c:  New file.
133         * generated/spread_i8.c:  New file.
134         * generated/spread_i16.c:  New file.
135         * generated/spread_r4.c:  New file.
136         * generated/spread_r8.c:  New file.
137         * generated/spread_r10.c:  New file.
138         * generated/spread_r16.c:  New file.
139         * generated/spread_c4.c:  New file.
140         * generated/spread_c8.c:  New file.
141         * generated/spread_c10.c:  New file.
142         * generated/spread_c16.c:  New file.
143
144 2008-03-28  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
145
146         PR libfortran/35699
147         * io/transfer.c (write_buf):  Don't pad the record, just return if the
148         data is NULL.  (next_record_w): If there are bytes left in the record
149         for unformatted direct I/O, pad out the record with zero bytes.
150
151 2008-03-28  Tobias Burnus  <burnus@net-b.de>
152
153         PR fortran/35721
154         * intrinsics/associated.c (associated): Ignore different
155         stride of pointer vs. target if only one element is referred.
156
157 2008-03-26  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
158
159         * io/unix.c (fd_close):  Do not close STDIN.
160
161 2007-03-23  Thomas Koenig  <tkoenig@gcc.gnu.org
162
163         PR libfortran/32972
164         * Makefile.am:  Add new variable, i_unpack_c, containing
165         unpack_i1.c, unpack_i2.c, unpack_i4.c, unpack_i8.c,
166         unpack_i16.c, unpack_r4.c, unpack_r8.c, unpack_r10.c,
167         unpack_r16.c, unpack_c4.c, unpack_c8.c, unpack_c10.c
168         and unpack_c16.c
169         Add i_unpack_c to gfor_built_src.
170         Add rule to generate i_unpack_c from m4/unpack.m4.
171         * Makefile.in:  Regenerated.
172         * libgfortran.h: Add prototypes for unpack0_i1, unpack0_i2,
173         unpack0_i4, unpack0_i8, unpack0_i16, unpack0_r4, unpack0_r8,
174         unpack0_r10, unpack0_r16, unpack0_c4, unpack0_c8, unpack0_c10,
175         unpack0_c16, unpack1_i1, unpack1_i2, unpack1_i4, unpack1_i8,
176         unpack1_i16, unpack1_r4, unpack1_r8, unpack1_r10, unpack1_r16,
177         unpack1_c4, unpack1_c8, unpack1_c10 and unpack1_c16.
178         * intrinsics/pack_generic.c (unpack1):  Add calls to specific
179         unpack1 functions.
180         (unpack0):  Add calls to specific unpack0 functions.
181         * m4/unpack.m4:  New file.
182         * generated/unpack_i1.c:  New file.
183         * generated/unpack_i2.c:  New file.
184         * generated/unpack_i4.c:  New file.
185         * generated/unpack_i8.c:  New file.
186         * generated/unpack_i16.c:  New file.
187         * generated/unpack_r4.c:  New file.
188         * generated/unpack_r8.c:  New file.
189         * generated/unpack_r10.c:  New file.
190         * generated/unpack_r16.c:  New file.
191         * generated/unpack_c4.c:  New file.
192         * generated/unpack_c8.c:  New file.
193         * generated/unpack_c10.c:  New file.
194         * generated/unpack_c16.c:  New file.
195
196 2008-03-22  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
197
198         PR libfortran/35632
199         * io/transfer.c (data_transfer_init):  Fix whitespace.
200         (next_record_w): Truncate the file only if the stream
201         position is short of the file end.
202
203 2008-03-21  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
204
205         * intrinsics/pack_generic.c:  Fix typo.
206
207 2008-03-21  Janne Blomqvist  <jb@gcc.gnu.org>
208
209         * gfortran.map: Move erfc_scaled symbols to new symbol node
210         GFORTRAN_1.1, thereby fixing ABI bug introduced in r132846.
211
212 2008-03-21  Thomas Koenig  <tkoenig@gcc.gnu.org>
213
214         PR libfortran/32972
215         * runtime/in_pack_generic.c (internal_pack):  Call correct
216         function, pack_i16, for GFC_INTEGER_16.
217
218 2008-03-21  Thomas Koenig  <tkoenig@gcc.gnu.org>
219
220         PR libfortran/32972
221         * Makefile.am:  Add new variable, i_pack_c, containing
222         pack_i1.c, pack_i2.c, pack_i4.c, pack_i8.c, pack_i16.c,
223         pack_r4.c, pack_r8.c, pack_r10.c, pack_r16.c, pack_c4.c,
224         pack_c8.c, pack_c10.c, pack_c16.c.
225         Add m4/pack.m4 to m4_files.
226         Add i_pack_c to gfor_built_src.
227         Add rule to generate i_pack_c from m4/pack.m4.
228         * Makefile.in:  Regenerated.
229         * libgfortran.h: Add prototypes for pack_i1, pack_i2, pack_i4,
230         pack_i8, pack_i16, pack_r4, pack_r8, pack_c4, pack_c8,
231         pack_c10, pack_c16.
232         * intrinsics/pack_generic.c:  Add calls to specific
233         pack functions.
234         * m4/pack.m4:  New file.
235         * generated/pack_i1.c:  New file.
236         * generated/pack_i2.c:  New file.
237         * generated/pack_i4.c:  New file.
238         * generated/pack_i8.c:  New file.
239         * generated/pack_i16.c:  New file.
240         * generated/pack_r4.c:  New file.
241         * generated/pack_r8.c:  New file.
242         * generated/pack_r10.c:  New file.
243         * generated/pack_r16.c:  New file.
244         * generated/pack_c4.c:  New file.
245         * generated/pack_c8.c:  New file.
246         * generated/pack_c10.c:  New file.
247         * generated/pack_c16.c:  New file.
248
249 2008-03-19  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
250
251         PR libfortran/35627
252         * io/list_read.c (free_line): Clear the line buffer enable flag and
253         reset the index into line_buffer, aka item_count.
254         (next_char): Cleanup whitespace.
255         (read_logical): Use unget_char to assure that the first character of the
256         bad logical is saved in case it is part of an object name. Remove the
257         clearing of index and flag that is now in free_line.
258         (read_real): Likewise.
259
260 2008-03-19  Thomas Koenig  <tkoenig@gcc.gnu.org>
261
262         PR libfortran/32972
263         * runtime/in_pack_generic.c (internal_pack):  Fix typo in
264         last commit.
265
266 2008-03-19  Thomas Koenig  <tkoenig@gcc.gnu.org>
267
268         PR libfortran/32972
269         * Makefile.am (in_pack_c): Add in_pack_i1.c, in_pack_i2.c,
270         in_pack_r4.c, in_pack_r8.c, in_pack_r10.c and in_pack_r16.c.
271         (in_unpack_c): Add in_unpack_i1.c, in_unpack_i2.c,
272         in_unpack_r4.c, in_unpack_r8.c, in_unpack_r10.c and
273         in_unpack_r16.c.
274         * Makefile.in: Regenerate.
275         * libgfortran.h:  Add prototypes for internal_pack_1,
276         internal_pack_2, internal_pack_16, internal_pack_r4,
277         internal_pack_r8, internal_pack_r10, internal_pack_r16,
278         internal_pack_c10 and internal_pack_c16.  Add prototypes for
279         internal_unpack_1, internal_unpack_2, internal_unpack_16,
280         internal_unpack_r4, internal_unpack_r8, internal_unpack_r10,
281         internal_unpack_r16, internal_unpack_c10 and
282         internal_unpack_c16.
283         * runtime/in_pack_generic.c (internal_pack): Use sizeof instead
284         of hardwired sizes.
285         Add calls to internal_pack_1, internal_pack_2,
286         internal_pack_16, internal_pack_r4, internal_pack_r8,
287         internal_pack_r10, internal_pack_r16, internal_pack_c10 and
288         internal_pack_c16.
289         * runtime/in_unpack_generic.c (internal_unpack):  Use sizeof
290         instead of hardwired sizes.
291         Add calls to internal_unpack_1, internal_unpack_2,
292         internal_unpack_16, internal_unpack_r4, internal_unpack_r8,
293         internal_unpack_r10, internal_unpack_r16, internal_unpack_c10
294         and internal_unpack_c16.
295         * generated/in_pack_r4.c:  New file.
296         * generated/in_pack_i2.c:  New file.
297         * generated/in_unpack_i1.c:  New file.
298         * generated/in_pack_r10.c:  New file.
299         * generated/in_unpack_r4.c:  New file.
300         * generated/in_unpack_i2.c:  New file.
301         * generated/in_unpack_r16.c:  New file.
302         * generated/in_pack_r8.c:  New file.
303         * generated/in_unpack_r10.c:  New file.
304         * generated/in_unpack_r8.c:  New file.
305         * generated/in_pack_r16.c:  New file.
306         * generated/in_pack_i1.c:  New file.
307
308 2008-03-17  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
309
310         PR libfortran/35617
311         * io/list_read.c (eat_separator): If next character after eatline is '!'
312         then eatline again. 
313
314 2008-03-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
315
316         * aclocal.m4: Regenerate.
317         * configure: Likewise.
318         * Makefile.in: Likewise.
319
320 2008-03-12  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
321
322         PR libfortran/35524
323         * intrinsics/erfc_scaled_inc.c: Only define the long double
324         variant of erfc_scaled if expl is available.
325
326 2008-03-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
327
328         PR libfortran/32812
329         * intrinsics/random.c (scramble_seed, unscramble_seed): New
330         functions.
331         (random_seed_i4): Scramble the seed the user gives us before
332         storing it, and unscramble it when we return it back later.
333
334 2008-03-05  Hans-Peter Nilsson  <hp@axis.com>
335
336         PR libfortran/35293
337         * io/unix.c (fd_truncate): Fold s->special_file case into
338         success case of ftruncate/chsize call instead of the failure case.
339         Make failure case actually return failure.  Properly update stream
340         pointers on failure.  Call runtime_error for targets without
341         neither ftruncate nor chsize where such a call would be needed.
342
343 2008-03-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
344
345         PR fortran/33197
346         * intrinsics/erfc_scaled_inc.c: New file.
347         * intrinsics/erfc_scaled.c: New file.
348         * gfortran.map (GFORTRAN_1.0): Add _gfortran_erfc_scaled_r*.
349         * Makefile.am: Add intrinsics/erfc_scaled.c.
350         * config.h.in: Regenerate.
351         * configure: Regenerate.
352         * Makefile.in: Regenerate.
353
354 2008-03-01  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
355
356         PR libfortran/35355
357         * intrinsics/time_1.h (__time_1): Fix calculation of user_usec
358         for mingw.
359
360 2008-03-01  Janne Blomqvist  <jb@gcc.gnu.org>
361
362         PR libfortran/35063
363         * io/unit.c (destroy_unit_mutex): Call __gthread_mutex_destroy
364         instead of macro kludge.
365         
366 2008-02-25  Janne Blomqvist  <jb@gcc.gnu.org>
367
368         PR fortran/29549
369         * Makefile.am: Add -fcx-fortran-rules to AM_CFLAGS for all of
370         libgfortran.
371         * Makefile.in: Regenerated.
372
373 2008-02-25  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
374
375         * m4/ifunction_logical.m4: Add casts to get rid of warnings.
376         * generated/all_l1.c: Regenerate.
377         * generated/all_l2.c: Regenerate.
378         * generated/all_l4.c: Regenerate.
379         * generated/all_l8.c: Regenerate.
380         * generated/all_l16.c: Regenerate.
381         * generated/any_l1.c: Regenerate.
382         * generated/any_l2.c: Regenerate.
383         * generated/any_l4.c: Regenerate.
384         * generated/any_l8.c: Regenerate.
385         * generated/any_l16.c: Regenerate.
386         * generated/count_1_l.c: Regenerate.
387         * generated/count_2_l.c: Regenerate.
388         * generated/count_4_l.c: Regenerate.
389         * generated/count_8_l.c: Regenerate.
390         * generated/count_16_l.c: Regenerate.
391
392 2008-02-24  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
393
394         PR libfortran/32841
395         * acinclude.m4: Don't use HAVE_MATH_H.
396         * configure: Regenerate.
397
398 2008-02-20  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
399
400         PR libfortran/35132
401         * io/transfer.c (next_record_w): Truncate after the last record for
402         STREAM I/O.
403
404         PR libfortran/34954
405         * io/transfer.c (data_transfer_init): Initialize dtp->rec if writing.
406
407         PR libfortran/34974
408         * io/transfer.c (formatted_transfer_scalar): Flush the buffer if skips
409         is less than zero. (next_record_w): Use sseek to position the file to
410         the max position reached.
411
412 2008-02-20  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
413
414         PR libfortran/35036
415         * write_float.def (output_float):  Add error checks for zero digits
416         after decimal point in E and D format specifiers.
417         
418 2008-02-10  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
419
420         PR libfortran/35063
421         * io/unit.c (destroy_unit_mutex): New function that uses
422         __gthread_mutex_destroy_function or pthread_mutex_destroy after
423         unlocking and before free_mem for final closure of I/O unit.
424         (delete_root): Use new function.
425         (free_internal_unit): Likewise.
426         (close_unit_1): Likewise.
427
428 2008-02-02  Thomas Koenig  <tkoenig@gcc.gnu.org>
429
430         PR libfortran/35001
431         * m4/shape.m4:  Return 0 for extents <= 0.
432         * generated/shape_i4.c:  Regenerated.
433         * generated/shape_i8.c:  Regenerated.
434         * generated/shape_i16.c:  Regenerated.
435
436 2008-01-27  Thomas Koenig  <tkoenig@gcc.gnu.org>
437
438         PR libfortran/34980
439         * m4/shape.m4:  If return array is empty, return early.
440         * generated/shape_i4.c:  Regenerated.
441         * generated/shape_i8.c:  Regenerated.
442         * generated/shape_i16.c:  Regenerated.
443
444 2008-01-26  Thomas Koenig  <tkoenig@gcc.gnu.org>
445
446         PR libfofortran/34887
447         * io/transfer.c (next_record_w): Always move to the farthest
448         position when completing the record (also when we are
449         processing a slash edit descriptor).
450
451 2008-01-25  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
452
453         PR libfortran/34876
454         * io/transfer.c (write_buf): Handle case of zero sized array.
455         (transfer_array): Set data pointer to NULL and size to zero.  Then
456         make a data transfer and return.
457         
458 2008-01-24  David Edelsohn  <edelsohn@gnu.org>
459
460         * configure: Regenerate.
461
462 2008-01-19  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
463
464         PR libfortran/34795
465         * io/inquire.c (inquire_via_unit): If a unit is opened, return values
466         according to the open action for DIRECT, FORMATTED, and UNFORMATTED.
467         (inquire_via_filename): Return "UNKNOWN" for SEQUENTIAL, DIRECT,
468         FORAMATTED, and UNFORMATTED inquiries.
469         * io/unix.c (inquire_sequential): Return "UNKNOWN" when appropriate
470         for files that are not opened. (inquire_direct): Same.
471         (inquire_formatted): Same.
472         
473 2008-01-18  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
474
475         PR libfortran/34782
476         * io/transfer.c (formatted_transfer_scalar): Set max_pos to the greater
477         of the current max_pos or the newly calculated position.
478
479 2008-01-18  Tobias Burnus  <burnus@net-b.de>
480
481         * io/write.c (write_real): Increase default precision
482         for REAL(16) by one.
483
484 2008-01-16  Steven Bosscher  <steven@gcc.gnu.org>
485
486         PR libfortran/34669
487         * mk-kinds-h.sh: Compile with -S to avoid calling the assembler,
488         to avoid piping the -fdump-parse-tree output to the assembler
489         when configuring with -pipe.
490         * mk-sik-inc.sh: Likewise.
491         * mk-srk-inc.sh: Likewise.
492
493 2008-01-15  Thomas Koenig  <tkoenig@gcc.gnu.org>
494
495         PR libfortran/34671
496         * gfortran.am: Added _gfortran_all_l1, _gfortran_all_l2,
497         _gfortran_any_l1, _gfortran_any_l2, -28,15 _gfortran_count_1_l,
498         _gfortran_count_16_l, _gfortran_count_2_l, _gfortran_count_4_l and
499         _gfortran_count_8_l Removed _gfortran_count_16_l16,
500         _gfortran_count_16_l4, _gfortran_count_16_l8,
501         _gfortran_count_4_l16, _gfortran_count_4_l4, _gfortran_count_4_l8,
502         _gfortran_count_8_l16, _gfortran_count_8_l4 and
503         _gfortran_count_8_l8.
504         * Makefile.am: Added generated/any_l1.c and generated/any_l2.c to
505         i_any_c.  Added generated/all_l1. and generated/all_l2.c to
506         i_all_c.  Removed generated/count_4_l4.c, generated/count_8_l4.c,
507         generated/count_16_l4.c, generated/count_4_l8.c,
508         generated/count_8_l8.c, generated/count_16_l8.c,
509         generated/count_4_l16.c, generated/count_8_l16.c, and
510         generated/count_16_l16.c from i_count_c.  Added count_1_l.c,
511         count_2_l.c, count_4_l.c, count_8_l.c and count_16_l.c to
512         i_count_c.  I_M4_DEPS2 depends on ifunction_logical.m4, for
513         any of the files generated from all.m4, any.m4 and count.m4.
514         * Makefile.in:  Regenerated.
515         * m4/ifunction_logical.m4:  New file.  Use
516         GFC_LOGICAL_1 pointer for access to source arrays.
517         * m4/any.m4:  Include ifunction_logical.m4 instead of
518         ifunction.m4.  Don't check atype_name.
519         * m4/all.m4:  Likewise.
520         * m4/count.m4:  Likewise.
521         * generated/any_l1.c:  New file.
522         * generated/any_l2.c:  New file.
523         * generated/all_l1.c:  New file.
524         * generated/count_1_l.c:  New file.
525         * generated/count_2_l.c:  New file.
526         * generated/count_4_l.c:  New file.
527         * generated/count_8_l.c:  New file.
528         * generated/count_16_l.c:  New file.
529         * generated/any_l4.c:  Regenerated.
530         * generated/any_l8.c:  Regenerated.
531         * generated/any_l16.c:  Regenerated.
532         * generated/all_l4.c: Regenerated.
533         * generated/all_l8.c: Regenerated.
534         * generated/all_l16.c: Regenerated.
535         * generated/count_4_l4.c:  Removed.
536         * generated/count_4_l8.c:  Removed.
537         * generated/count_4_l16.c:  Removed.
538         * generated/count_8_l4.c:  Removed.
539         * generated/count_8_l8.c:  Removed.
540         * generated/count_8_l16.c:  Removed.
541         * generated/count_16_l4.c:  Removed.
542         * generated/count_16_l8.c:  Removed.
543         * generated/count_16_l16.c:  Removed.
544
545 2008-01-13  Thomas Koenig  <tkoenig@gcc.gnu.org>
546
547         PR libfortran/34746
548         * m4/iforeach.m4 (name`'rtype_qual`_'atype_code):  Use %ld
549         in printf format for all bounds checking; cast all
550         integer-like arguments to runtime_error() to long int.
551         (`m'name`'rtype_qual`_'atype_code):  Likewise.
552         (`s'name`'rtype_qual`_'atype_code):  Likewise.
553         * m4/ifunction.m4 (name`'rtype_qual`_'atype_code):  Likewise.
554         (`m'name`'rtype_qual`_'atype_code):  Likewise.
555         (`s'name`'rtype_qual`_'atype_code):  Likewise.
556         * generated/all_l16.c: Regenerated.
557         * generated/all_l4.c: Regenerated.
558         * generated/all_l8.c: Regenerated.
559         * generated/any_l16.c: Regenerated.
560         * generated/any_l4.c: Regenerated.
561         * generated/any_l8.c: Regenerated.
562         * generated/count_16_l16.c: Regenerated.
563         * generated/count_16_l4.c: Regenerated.
564         * generated/count_16_l8.c: Regenerated.
565         * generated/count_4_l16.c: Regenerated.
566         * generated/count_4_l4.c: Regenerated.
567         * generated/count_4_l8.c: Regenerated.
568         * generated/count_8_l16.c: Regenerated.
569         * generated/count_8_l4.c: Regenerated.
570         * generated/count_8_l8.c: Regenerated.
571         * generated/maxloc0_16_i1.c: Regenerated.
572         * generated/maxloc0_16_i16.c: Regenerated.
573         * generated/maxloc0_16_i2.c: Regenerated.
574         * generated/maxloc0_16_i4.c: Regenerated.
575         * generated/maxloc0_16_i8.c: Regenerated.
576         * generated/maxloc0_16_r10.c: Regenerated.
577         * generated/maxloc0_16_r16.c: Regenerated.
578         * generated/maxloc0_16_r4.c: Regenerated.
579         * generated/maxloc0_16_r8.c: Regenerated.
580         * generated/maxloc0_4_i1.c: Regenerated.
581         * generated/maxloc0_4_i16.c: Regenerated.
582         * generated/maxloc0_4_i2.c: Regenerated.
583         * generated/maxloc0_4_i4.c: Regenerated.
584         * generated/maxloc0_4_i8.c: Regenerated.
585         * generated/maxloc0_4_r10.c: Regenerated.
586         * generated/maxloc0_4_r16.c: Regenerated.
587         * generated/maxloc0_4_r4.c: Regenerated.
588         * generated/maxloc0_4_r8.c: Regenerated.
589         * generated/maxloc0_8_i1.c: Regenerated.
590         * generated/maxloc0_8_i16.c: Regenerated.
591         * generated/maxloc0_8_i2.c: Regenerated.
592         * generated/maxloc0_8_i4.c: Regenerated.
593         * generated/maxloc0_8_i8.c: Regenerated.
594         * generated/maxloc0_8_r10.c: Regenerated.
595         * generated/maxloc0_8_r16.c: Regenerated.
596         * generated/maxloc0_8_r4.c: Regenerated.
597         * generated/maxloc0_8_r8.c: Regenerated.
598         * generated/maxloc1_16_i1.c: Regenerated.
599         * generated/maxloc1_16_i16.c: Regenerated.
600         * generated/maxloc1_16_i2.c: Regenerated.
601         * generated/maxloc1_16_i4.c: Regenerated.
602         * generated/maxloc1_16_i8.c: Regenerated.
603         * generated/maxloc1_16_r10.c: Regenerated.
604         * generated/maxloc1_16_r16.c: Regenerated.
605         * generated/maxloc1_16_r4.c: Regenerated.
606         * generated/maxloc1_16_r8.c: Regenerated.
607         * generated/maxloc1_4_i1.c: Regenerated.
608         * generated/maxloc1_4_i16.c: Regenerated.
609         * generated/maxloc1_4_i2.c: Regenerated.
610         * generated/maxloc1_4_i4.c: Regenerated.
611         * generated/maxloc1_4_i8.c: Regenerated.
612         * generated/maxloc1_4_r10.c: Regenerated.
613         * generated/maxloc1_4_r16.c: Regenerated.
614         * generated/maxloc1_4_r4.c: Regenerated.
615         * generated/maxloc1_4_r8.c: Regenerated.
616         * generated/maxloc1_8_i1.c: Regenerated.
617         * generated/maxloc1_8_i16.c: Regenerated.
618         * generated/maxloc1_8_i2.c: Regenerated.
619         * generated/maxloc1_8_i4.c: Regenerated.
620         * generated/maxloc1_8_i8.c: Regenerated.
621         * generated/maxloc1_8_r10.c: Regenerated.
622         * generated/maxloc1_8_r16.c: Regenerated.
623         * generated/maxloc1_8_r4.c: Regenerated.
624         * generated/maxloc1_8_r8.c: Regenerated.
625         * generated/maxval_i1.c: Regenerated.
626         * generated/maxval_i16.c: Regenerated.
627         * generated/maxval_i2.c: Regenerated.
628         * generated/maxval_i4.c: Regenerated.
629         * generated/maxval_i8.c: Regenerated.
630         * generated/maxval_r10.c: Regenerated.
631         * generated/maxval_r16.c: Regenerated.
632         * generated/maxval_r4.c: Regenerated.
633         * generated/maxval_r8.c: Regenerated.
634         * generated/minloc0_16_i1.c: Regenerated.
635         * generated/minloc0_16_i16.c: Regenerated.
636         * generated/minloc0_16_i2.c: Regenerated.
637         * generated/minloc0_16_i4.c: Regenerated.
638         * generated/minloc0_16_i8.c: Regenerated.
639         * generated/minloc0_16_r10.c: Regenerated.
640         * generated/minloc0_16_r16.c: Regenerated.
641         * generated/minloc0_16_r4.c: Regenerated.
642         * generated/minloc0_16_r8.c: Regenerated.
643         * generated/minloc0_4_i1.c: Regenerated.
644         * generated/minloc0_4_i16.c: Regenerated.
645         * generated/minloc0_4_i2.c: Regenerated.
646         * generated/minloc0_4_i4.c: Regenerated.
647         * generated/minloc0_4_i8.c: Regenerated.
648         * generated/minloc0_4_r10.c: Regenerated.
649         * generated/minloc0_4_r16.c: Regenerated.
650         * generated/minloc0_4_r4.c: Regenerated.
651         * generated/minloc0_4_r8.c: Regenerated.
652         * generated/minloc0_8_i1.c: Regenerated.
653         * generated/minloc0_8_i16.c: Regenerated.
654         * generated/minloc0_8_i2.c: Regenerated.
655         * generated/minloc0_8_i4.c: Regenerated.
656         * generated/minloc0_8_i8.c: Regenerated.
657         * generated/minloc0_8_r10.c: Regenerated.
658         * generated/minloc0_8_r16.c: Regenerated.
659         * generated/minloc0_8_r4.c: Regenerated.
660         * generated/minloc0_8_r8.c: Regenerated.
661         * generated/minloc1_16_i1.c: Regenerated.
662         * generated/minloc1_16_i16.c: Regenerated.
663         * generated/minloc1_16_i2.c: Regenerated.
664         * generated/minloc1_16_i4.c: Regenerated.
665         * generated/minloc1_16_i8.c: Regenerated.
666         * generated/minloc1_16_r10.c: Regenerated.
667         * generated/minloc1_16_r16.c: Regenerated.
668         * generated/minloc1_16_r4.c: Regenerated.
669         * generated/minloc1_16_r8.c: Regenerated.
670         * generated/minloc1_4_i1.c: Regenerated.
671         * generated/minloc1_4_i16.c: Regenerated.
672         * generated/minloc1_4_i2.c: Regenerated.
673         * generated/minloc1_4_i4.c: Regenerated.
674         * generated/minloc1_4_i8.c: Regenerated.
675         * generated/minloc1_4_r10.c: Regenerated.
676         * generated/minloc1_4_r16.c: Regenerated.
677         * generated/minloc1_4_r4.c: Regenerated.
678         * generated/minloc1_4_r8.c: Regenerated.
679         * generated/minloc1_8_i1.c: Regenerated.
680         * generated/minloc1_8_i16.c: Regenerated.
681         * generated/minloc1_8_i2.c: Regenerated.
682         * generated/minloc1_8_i4.c: Regenerated.
683         * generated/minloc1_8_i8.c: Regenerated.
684         * generated/minloc1_8_r10.c: Regenerated.
685         * generated/minloc1_8_r16.c: Regenerated.
686         * generated/minloc1_8_r4.c: Regenerated.
687         * generated/minloc1_8_r8.c: Regenerated.
688         * generated/minval_i1.c: Regenerated.
689         * generated/minval_i16.c: Regenerated.
690         * generated/minval_i2.c: Regenerated.
691         * generated/minval_i4.c: Regenerated.
692         * generated/minval_i8.c: Regenerated.
693         * generated/minval_r10.c: Regenerated.
694         * generated/minval_r16.c: Regenerated.
695         * generated/minval_r4.c: Regenerated.
696         * generated/minval_r8.c: Regenerated.
697         * generated/product_c10.c: Regenerated.
698         * generated/product_c16.c: Regenerated.
699         * generated/product_c4.c: Regenerated.
700         * generated/product_c8.c: Regenerated.
701         * generated/product_i1.c: Regenerated.
702         * generated/product_i16.c: Regenerated.
703         * generated/product_i2.c: Regenerated.
704         * generated/product_i4.c: Regenerated.
705         * generated/product_i8.c: Regenerated.
706         * generated/product_r10.c: Regenerated.
707         * generated/product_r16.c: Regenerated.
708         * generated/product_r4.c: Regenerated.
709         * generated/product_r8.c: Regenerated.
710         * generated/sum_c10.c: Regenerated.
711         * generated/sum_c16.c: Regenerated.
712         * generated/sum_c4.c: Regenerated.
713         * generated/sum_c8.c: Regenerated.
714         * generated/sum_i1.c: Regenerated.
715         * generated/sum_i16.c: Regenerated.
716         * generated/sum_i2.c: Regenerated.
717         * generated/sum_i4.c: Regenerated.
718         * generated/sum_i8.c: Regenerated.
719         * generated/sum_r10.c: Regenerated.
720         * generated/sum_r16.c: Regenerated.
721         * generated/sum_r4.c: Regenerated.
722         * generated/sum_r8.c: Regenerated.
723
724 2008-01-11  Thomas Koenig  <tkoenig@gcc.gnu.org>
725
726         PR libfortran/34670
727         * m4/iparm.m4 (upcase):  New macro (copied from the m4 manual).
728         (u_name):  New macro for the upper case name of the intrinsic.
729         * m4/iforeach.m4 (name`'rtype_qual`_'atype_code):  Add
730         bounds checking and rank check, depending on
731         compile_options.bounds_check.
732         (`m'name`'rtype_qual`_'atype_code):  Likewise.
733         (`s'name`'rtype_qual`_'atype_code):  Likewise.
734         * m4/ifunction.m4 (name`'rtype_qual`_'atype_code):  Add
735         bounds checking and rank check, depending on
736         compile_options.bounds_check.
737         (`m'name`'rtype_qual`_'atype_code):  Likewise.
738         (`s'name`'rtype_qual`_'atype_code):  Likewise.
739         * generated/all_l16.c: Regenerated.
740         * generated/all_l4.c: Regenerated.
741         * generated/all_l8.c: Regenerated.
742         * generated/any_l16.c: Regenerated.
743         * generated/any_l4.c: Regenerated.
744         * generated/any_l8.c: Regenerated.
745         * generated/count_16_l16.c: Regenerated.
746         * generated/count_16_l4.c: Regenerated.
747         * generated/count_16_l8.c: Regenerated.
748         * generated/count_4_l16.c: Regenerated.
749         * generated/count_4_l4.c: Regenerated.
750         * generated/count_4_l8.c: Regenerated.
751         * generated/count_8_l16.c: Regenerated.
752         * generated/count_8_l4.c: Regenerated.
753         * generated/count_8_l8.c: Regenerated.
754         * generated/maxloc0_16_i1.c: Regenerated.
755         * generated/maxloc0_16_i16.c: Regenerated.
756         * generated/maxloc0_16_i2.c: Regenerated.
757         * generated/maxloc0_16_i4.c: Regenerated.
758         * generated/maxloc0_16_i8.c: Regenerated.
759         * generated/maxloc0_16_r10.c: Regenerated.
760         * generated/maxloc0_16_r16.c: Regenerated.
761         * generated/maxloc0_16_r4.c: Regenerated.
762         * generated/maxloc0_16_r8.c: Regenerated.
763         * generated/maxloc0_4_i1.c: Regenerated.
764         * generated/maxloc0_4_i16.c: Regenerated.
765         * generated/maxloc0_4_i2.c: Regenerated.
766         * generated/maxloc0_4_i4.c: Regenerated.
767         * generated/maxloc0_4_i8.c: Regenerated.
768         * generated/maxloc0_4_r10.c: Regenerated.
769         * generated/maxloc0_4_r16.c: Regenerated.
770         * generated/maxloc0_4_r4.c: Regenerated.
771         * generated/maxloc0_4_r8.c: Regenerated.
772         * generated/maxloc0_8_i1.c: Regenerated.
773         * generated/maxloc0_8_i16.c: Regenerated.
774         * generated/maxloc0_8_i2.c: Regenerated.
775         * generated/maxloc0_8_i4.c: Regenerated.
776         * generated/maxloc0_8_i8.c: Regenerated.
777         * generated/maxloc0_8_r10.c: Regenerated.
778         * generated/maxloc0_8_r16.c: Regenerated.
779         * generated/maxloc0_8_r4.c: Regenerated.
780         * generated/maxloc0_8_r8.c: Regenerated.
781         * generated/maxloc1_16_i1.c: Regenerated.
782         * generated/maxloc1_16_i16.c: Regenerated.
783         * generated/maxloc1_16_i2.c: Regenerated.
784         * generated/maxloc1_16_i4.c: Regenerated.
785         * generated/maxloc1_16_i8.c: Regenerated.
786         * generated/maxloc1_16_r10.c: Regenerated.
787         * generated/maxloc1_16_r16.c: Regenerated.
788         * generated/maxloc1_16_r4.c: Regenerated.
789         * generated/maxloc1_16_r8.c: Regenerated.
790         * generated/maxloc1_4_i1.c: Regenerated.
791         * generated/maxloc1_4_i16.c: Regenerated.
792         * generated/maxloc1_4_i2.c: Regenerated.
793         * generated/maxloc1_4_i4.c: Regenerated.
794         * generated/maxloc1_4_i8.c: Regenerated.
795         * generated/maxloc1_4_r10.c: Regenerated.
796         * generated/maxloc1_4_r16.c: Regenerated.
797         * generated/maxloc1_4_r4.c: Regenerated.
798         * generated/maxloc1_4_r8.c: Regenerated.
799         * generated/maxloc1_8_i1.c: Regenerated.
800         * generated/maxloc1_8_i16.c: Regenerated.
801         * generated/maxloc1_8_i2.c: Regenerated.
802         * generated/maxloc1_8_i4.c: Regenerated.
803         * generated/maxloc1_8_i8.c: Regenerated.
804         * generated/maxloc1_8_r10.c: Regenerated.
805         * generated/maxloc1_8_r16.c: Regenerated.
806         * generated/maxloc1_8_r4.c: Regenerated.
807         * generated/maxloc1_8_r8.c: Regenerated.
808         * generated/maxval_i1.c: Regenerated.
809         * generated/maxval_i16.c: Regenerated.
810         * generated/maxval_i2.c: Regenerated.
811         * generated/maxval_i4.c: Regenerated.
812         * generated/maxval_i8.c: Regenerated.
813         * generated/maxval_r10.c: Regenerated.
814         * generated/maxval_r16.c: Regenerated.
815         * generated/maxval_r4.c: Regenerated.
816         * generated/maxval_r8.c: Regenerated.
817         * generated/minloc0_16_i1.c: Regenerated.
818         * generated/minloc0_16_i16.c: Regenerated.
819         * generated/minloc0_16_i2.c: Regenerated.
820         * generated/minloc0_16_i4.c: Regenerated.
821         * generated/minloc0_16_i8.c: Regenerated.
822         * generated/minloc0_16_r10.c: Regenerated.
823         * generated/minloc0_16_r16.c: Regenerated.
824         * generated/minloc0_16_r4.c: Regenerated.
825         * generated/minloc0_16_r8.c: Regenerated.
826         * generated/minloc0_4_i1.c: Regenerated.
827         * generated/minloc0_4_i16.c: Regenerated.
828         * generated/minloc0_4_i2.c: Regenerated.
829         * generated/minloc0_4_i4.c: Regenerated.
830         * generated/minloc0_4_i8.c: Regenerated.
831         * generated/minloc0_4_r10.c: Regenerated.
832         * generated/minloc0_4_r16.c: Regenerated.
833         * generated/minloc0_4_r4.c: Regenerated.
834         * generated/minloc0_4_r8.c: Regenerated.
835         * generated/minloc0_8_i1.c: Regenerated.
836         * generated/minloc0_8_i16.c: Regenerated.
837         * generated/minloc0_8_i2.c: Regenerated.
838         * generated/minloc0_8_i4.c: Regenerated.
839         * generated/minloc0_8_i8.c: Regenerated.
840         * generated/minloc0_8_r10.c: Regenerated.
841         * generated/minloc0_8_r16.c: Regenerated.
842         * generated/minloc0_8_r4.c: Regenerated.
843         * generated/minloc0_8_r8.c: Regenerated.
844         * generated/minloc1_16_i1.c: Regenerated.
845         * generated/minloc1_16_i16.c: Regenerated.
846         * generated/minloc1_16_i2.c: Regenerated.
847         * generated/minloc1_16_i4.c: Regenerated.
848         * generated/minloc1_16_i8.c: Regenerated.
849         * generated/minloc1_16_r10.c: Regenerated.
850         * generated/minloc1_16_r16.c: Regenerated.
851         * generated/minloc1_16_r4.c: Regenerated.
852         * generated/minloc1_16_r8.c: Regenerated.
853         * generated/minloc1_4_i1.c: Regenerated.
854         * generated/minloc1_4_i16.c: Regenerated.
855         * generated/minloc1_4_i2.c: Regenerated.
856         * generated/minloc1_4_i4.c: Regenerated.
857         * generated/minloc1_4_i8.c: Regenerated.
858         * generated/minloc1_4_r10.c: Regenerated.
859         * generated/minloc1_4_r16.c: Regenerated.
860         * generated/minloc1_4_r4.c: Regenerated.
861         * generated/minloc1_4_r8.c: Regenerated.
862         * generated/minloc1_8_i1.c: Regenerated.
863         * generated/minloc1_8_i16.c: Regenerated.
864         * generated/minloc1_8_i2.c: Regenerated.
865         * generated/minloc1_8_i4.c: Regenerated.
866         * generated/minloc1_8_i8.c: Regenerated.
867         * generated/minloc1_8_r10.c: Regenerated.
868         * generated/minloc1_8_r16.c: Regenerated.
869         * generated/minloc1_8_r4.c: Regenerated.
870         * generated/minloc1_8_r8.c: Regenerated.
871         * generated/minval_i1.c: Regenerated.
872         * generated/minval_i16.c: Regenerated.
873         * generated/minval_i2.c: Regenerated.
874         * generated/minval_i4.c: Regenerated.
875         * generated/minval_i8.c: Regenerated.
876         * generated/minval_r10.c: Regenerated.
877         * generated/minval_r16.c: Regenerated.
878         * generated/minval_r4.c: Regenerated.
879         * generated/minval_r8.c: Regenerated.
880         * generated/product_c10.c: Regenerated.
881         * generated/product_c16.c: Regenerated.
882         * generated/product_c4.c: Regenerated.
883         * generated/product_c8.c: Regenerated.
884         * generated/product_i1.c: Regenerated.
885         * generated/product_i16.c: Regenerated.
886         * generated/product_i2.c: Regenerated.
887         * generated/product_i4.c: Regenerated.
888         * generated/product_i8.c: Regenerated.
889         * generated/product_r10.c: Regenerated.
890         * generated/product_r16.c: Regenerated.
891         * generated/product_r4.c: Regenerated.
892         * generated/product_r8.c: Regenerated.
893         * generated/sum_c10.c: Regenerated.
894         * generated/sum_c16.c: Regenerated.
895         * generated/sum_c4.c: Regenerated.
896         * generated/sum_c8.c: Regenerated.
897         * generated/sum_i1.c: Regenerated.
898         * generated/sum_i16.c: Regenerated.
899         * generated/sum_i2.c: Regenerated.
900         * generated/sum_i4.c: Regenerated.
901         * generated/sum_i8.c: Regenerated.
902         * generated/sum_r10.c: Regenerated.
903         * generated/sum_r16.c: Regenerated.
904         * generated/sum_r4.c: Regenerated.
905         * generated/sum_r8.c: Regenerated.
906
907 2008-01-05  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
908
909         PR libfortran/34676
910         * io/list_read.c (next_char): Only save the EOF condition for later if
911         advance="no".
912
913 2008-01-03  Thomas Koenig  <tkoenig@gcc.gnu.org>
914
915         PR libfortran/34565
916         * io/io.h:  Adjust protoypes for open_internal(),
917         next_array_record() and init_loop_spec().
918         * io/list_read.c (next_char):  Use argument "finished"
919         of next_array_record to check for end on internal file.
920         * io/unit.c:  Calculate the offset for an array
921         internal file and supply this informatin to open_internal().
922         * io/unix.c (open_internal):  Set the offset for the internal
923         file on open.
924         * io/transfer.c (init_loop_spec):  Calculate the starting
925         record in case of negative strides.  Return size of 0 for
926         an empty array.
927         (next_array_record):  Use an extra flag to signal that the
928         array is finished.
929         (next_record_r):  Use the new flag to next_array_record().
930         (next_record_w):  Likewise.