OSDN Git Service

8bc6c35ec4d5dd766c8239ab7c2eb5cf40a53d77
[pf3gnuchains/gcc-fork.git] / gcc / java / ChangeLog
1 2006-11-11  Richard Guenther  <rguenther@suse.de>
2
3         * check-init.c (check_init): Remove handling of FIX_CEIL_EXPR,
4         FIX_FLOOR_EXPR and FIX_ROUND_EXPR.
5
6 2006-10-23 Rafael Avila de Espindola  <rafael.espindola@gmail.com>
7
8         * decl.c: Include langhooks.h.
9         (builtin_function): Remove.
10         (java_init_decl_processing): Replace calls to builtin_function
11         with add_builtin_function.
12         * Make-lang.in (jc1$(exeext)): Depend on and link with attribs.o.
13         (java/decl.o): Depend on langhooks.h.
14         * java-tree.h (builtin_function): Remove.
15
16 2006-10-10  Brooks Moses  <bmoses@stanford.edu>
17
18         * Make-lang.in: Added "java.pdf", "gcj.pdf" target support.
19
20 2006-09-12  Tom Tromey  <tromey@redhat.com>
21
22         * expr.c (push_value): Always flush quick stack.
23
24 2006-09-12  Tom Tromey  <tromey@redhat.com>
25
26         PR java/29013:
27         * jcf-write.c (generate_bytecode_insns) <CALL_EXPR>: Always note
28         the push of the called method's return result.
29
30 2006-09-12  Tom Tromey  <tromey@redhat.com>
31
32         * jvspec.c (lang_specific_driver): Read spec file even if
33         -fsyntax-only.
34
35 2006-09-12  Tom Tromey  <tromey@redhat.com>
36
37         PR java/28754:
38         * expr.c (expand_java_field_op): Initialize field's declaring
39         interface if necessary.
40
41 2006-09-12  Tom Tromey  <tromey@redhat.com>
42
43         PR java/28892:
44         * expr.c (expand_java_field_op): No error for assignments not in
45         class initializer or constructor.
46
47 2006-08-22  Andrew Haley  <aph@redhat.com>
48
49         * decl.c (java_add_stmt): Give the statement list a type.
50
51 2006-08-16  Jakub Jelinek  <jakub@redhat.com>
52             Bryce McKinlay  <bryce@mckinlay.net.nz>
53
54         * jvspec.c (lang_specific_driver): Add -s-bc-abi when needed.
55
56 2006-08-10  Simon Martin  <simartin@users.sourceforge.net>
57
58         PR java/8923
59         * parse.y (build_incdec): Emit an error instead of an ICE if '++'
60         or '--' is used with a constant operand.
61         (java_complete_lhs): When processing a '++' or '--' expression,
62         don't call java_complete_tree but java_complete_lhs, so that a
63         static final variable operand is never replaced by its value. This
64         avoids an ICE later on.
65         (patch_unaryop): Fixed typo in comment.
66
67 2006-07-28  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
68
69         * Make-lang.in: Use $(HEADER_H) instead of header.h in dependencies.
70
71 2006-07-12  Bryce McKinlay  <mckinlay@redhat.com>
72
73         * builtins.c (check_for_builtin): If a builtin could result in a
74         direct call being generated, don't use it if flag_indirect_dispatch
75         is set.
76
77 2006-07-12  Bryce McKinlay  <mckinlay@redhat.com>
78
79         * gcj.texi (Invocation): Corrections for Invocation API example.
80
81 2006-07-04  Andrew Haley  <aph@redhat.com>
82
83         * class.c (build_fieldref_cache_entry): Set DECL_IGNORED_P on the
84         entry.
85
86 2006-06-21  Andrew Haley  <aph@redhat.com>
87
88         * java-tree.h (update_aliases): Remove
89         * expr.c (expand_iinc): Remove call to update_aliases().
90         (STORE_INTERNAL): Likewise.
91         * decl.c (update_aliases, initialize_local_variable) 
92         (maybe_pushlevels): Set DECL_VALUE_EXPR for debugging decls.
93
94 2006-06-19  Andrew Haley  <aph@redhat.com>
95
96         PR java/1305
97         PR java/27908
98         * expr.c (java_modify_addr_for_volatile): New function.
99         (expand_java_field_op): Handle volatile fields.
100         * java-gimplify.c (java_gimplify_component_ref): Call
101         java_modify_addr_for_volatile to give the field_ref the correct
102         volatile type.
103         (java_gimplify_modify_expr): Likewise.
104         * java-tree.h (java_modify_addr_for_volatile): New decl.
105
106 2006-06-17  Karl Berry  <karl@gnu.org>
107
108         * gcj.texi (@dircategory): Use "Software development" instead
109         of "Programming", following the Free Software Directory.
110
111 2006-06-16  Andrew Haley  <aph@redhat.com>
112
113         * class.c (make_class_data): When using flag_indirect_classes,
114         don't initialize the vtable of Class instances.
115
116 2006-06-09  Andrew Haley  <aph@redhat.com>
117
118         PR java/1305
119         PR java/27908
120         * builtins.c (initialize_builtins): Add __sync_synchronize().
121         * class.c (add_field): Mark volatile fields.
122         * java-gimplify.c (java_gimplify_expr): Call new functions to
123         handle self-modifying exprs and COMPONENT_REFs.
124         (java_gimplify_component_ref): New.
125         (java_gimplify_modify_expr): Add handling for volatiles.
126
127 2006-06-08  Tom Tromey  <tromey@redhat.com>
128
129         * gcj.texi (libgcj Runtime Properties): Document
130         gnu.gcj.user.realname.
131
132 2006-06-08  Andrew Haley  <aph@redhat.com>
133
134         * expr.c (build_field_ref): Pass NULL_TREE as SPECIAL arg to
135         get_symbol_table_index().
136         (maybe_rewrite_invocation): Set SPECIAL if we need to access a
137         private method.
138         (build_known_method_ref): New arg: special.  Pass it to
139         get_symbol_table_index.
140         (get_symbol_table_index): Put SPECIAL in the TREE_PURPOSE field of
141         the method list.
142         (build_invokevirtual): New arg: special.  Pass it to
143         get_symbol_table_index.
144         (expand_invoke): New variable: special.
145         Pass it to maybe_rewrite_invocation().
146         Pass it to build_known_method_ref().
147         * class.c (build_symbol_entry): Add new arg: special.  Use it to
148         build the symbol table conbstructor.
149         (emit_symbol_table): Extract SPECIAL from the method list and pass
150         it to build_symbol_entry().
151         * parse.y (patch_invoke): Call maybe_rewrite_invocation() and set
152         special accordingly.
153
154 2006-06-06  David Daney  <ddaney@avtrex.com>
155
156         * gcj.texi (libgcj Runtime Properties): Document
157         gnu.gcj.runtime.NameFinder.show_raw and
158         gnu.gcj.runtime.NameFinder.remove_unknown.
159
160 2006-06-06  Tom Tromey  <tromey@redhat.com>
161
162         * jcf-dump.c (print_access_flags): Handle varargs, bridge,
163         synthetic, enum, annotation.
164         * jcf.h (ACC_BRIDGE): New macro.
165         (ACC_VARARGS): Likewise.
166         (ACC_SYNTHETIC): Likewise.
167         (ACC_ENUM): Likewise.
168         (ACC_ANNOTATION): Likewise.
169
170 2006-06-06  Mike Stump  <mrs@apple.com>
171
172         * Make-lang.in: Rename to htmldir to build_htmldir to avoid
173         installing during build.
174
175 2006-05-31  Thomas Fitzsimmons  <fitzsim@redhat.com>
176
177         * gcj.texi (Extensions): Document the new gcj-dbtool-based
178         classname-to-library resolution mechanism.
179         Declare the old gnu.gcj.runtime.VMClassLoader.library_control
180         mechanism deprecated.
181         (libgcj Runtime Properties): Document
182         gnu.gcj.runtime.VMClassLoader.library_control's new default.
183
184 2006-05-29  Jakub Jelinek  <jakub@redhat.com>
185
186         * javaop.h (int16, int32, int64): Define to exactly 16 (resp. 32, 64)
187         bit wide type.
188         (jword): Define to uint64 on 64-bit arches.
189         * jcf-dump.c (print_constant): Cast JPOOL_UINT to long.
190
191 2006-05-28  Kazu Hirata  <kazu@codesourcery.com>
192
193         * class.c, except.c, expr.c, java-gimplify.c: Fix comment
194         typos.
195
196 2006-05-26  Tom Tromey  <tromey@redhat.com>
197
198         * expr.c (java_push_constant_from_pool): Handle 'ldc class'.
199         * verify-glue.c (vfy_class_type): New function.
200         * verify-impl.c (check_constant): Allow 'ldc class'.
201         * verify.h (vfy_class_type): Declare.
202
203 2006-05-25  Andrew Haley  <aph@redhat.com>
204
205         PR java/27756
206         * decl.c (maybe_pushlevels): When variable ranges are non-nested
207         update all lifetimes, not just the first one.
208
209 2006-05-24  Tom Tromey  <tromey@redhat.com>
210
211         * java-tree.h: Fixed flag documentation.
212
213 2006-05-24  Tom Tromey  <tromey@redhat.com>
214
215         PR libgcj/27729:
216         * jcf.h (ACC_INVISIBLE): Changed value.
217
218 2006-05-24  Andrew Haley  <aph@redhat.com>
219
220         PR java/27754
221         * decl.c (java_add_stmt): Use a STATEMENT_LIST rather than a
222         COMPOUND_EXPR.
223
224 2006-05-16  H.J. Lu  <hongjiu.lu@intel.com>
225
226         * lang.opt (femit-class-file): Remove VarExists.
227
228 2006-05-16  Tom Tromey  <tromey@redhat.com>
229
230         * verify-impl.c (verify_instructions_0) <op_return>: Special case
231         for Object.<init>.
232
233 2006-05-16  H.J. Lu  <hongjiu.lu@intel.com>
234
235         PR driver/26885
236         * Make-lang.in ($(GCJ)$(exeext)): Replace gcc.o with
237         $(GCC_OBJS).
238
239 2006-05-14  H.J. Lu  <hongjiu.lu@intel.com>
240
241         * Make-lang.in (java/decl.o): Add dependency on $(TARGET_H).
242         (java/expr.o): Replace target.h with $(TARGET_H).
243         (java/parse.o): Likewise.
244
245 2006-05-10  Andrew Haley  <aph@redhat.com>
246
247         * class.c (emit_indirect_register_classes): Fix comment.
248
249 2006-05-04  Tom Tromey  <tromey@redhat.com>
250
251         * java-tree.h (uses_jv_markobj_p): Declare.
252         * class.c (uses_jv_markobj_p): Removed.
253         * boehm.c (PROCEDURE_OBJECT_DESCRIPTOR): New define.
254         (get_boehm_type_descriptor): Use it.
255         (uses_jv_markobj_p): Moved from class.c.  Return bool.
256
257 2006-05-04  Tom Tromey  <tromey@redhat.com>
258
259         * java-tree.def (THIS_EXPR): Now a tcc_expression.
260
261 2006-05-04  Andrew Haley  <aph@redhat.com>
262
263         * class.c (make_field_value): Always build_address_of fdecl if
264         there is an initializer.
265
266 2006-05-03  Andrew Haley  <aph@redhat.com>
267
268         PR libgcj/27352
269         * expr.c (maybe_rewrite_invocation): New function.
270         (rewrite_arglist_getclass): Likewise.
271         (rules): New.
272         (expand_invoke): Call maybe_rewrite_invocation.
273         * parse.y (patch_invoke): Likewise.
274         * java-tree.h: (maybe_rewrite_invocation): New function.
275
276 2006-04-21  Andrew Haley  <aph@redhat.com>
277
278         * lang.c (java_init): Handle flag_indirect_classes.
279         * jvgenmain.c: Use "class$$" instead of "class$".
280         * mangle.c (java_mangle_decl): Accept RECORD_TYPEs sw well as
281         DECLs.
282         (mangle_class_field): Special case "class$$" as well as "class$".
283         * constants.c (build_ref_from_constant_pool): If
284         flag_indirect_classes, generate a ref into the heap.
285         * decl.c (constants_field_decl_node,
286         constants_data_field_decl_node): New.
287         * class.c (build_static_class_ref): New.
288         (build_classdollar_field): Factor out from build_class_ref().
289         (make_field_value): Handle static fields in heap.
290         (make_class_data): Make sure we get a static ref to class.
291         Make class initializer const if flag_indirect_classes.
292         (register_class): Build a class_ref for initialization if
293         flag_indirect_classes.
294         (emit_indirect_register_classes): New.
295
296 2006-04-08  Kazu Hirata  <kazu@codesourcery.com>
297
298         * expr.c, gjavah.c: Fix comment typos.
299
300 2006-04-03  Andrew Haley  <aph@redhat.com>
301
302         PR java/26858
303         * expr.c (build_field_ref): Don't check the field offset if
304         flag_syntax_only.
305
306 2006-03-30  Andrew Haley  <aph@redhat.com>
307
308         PR java/26858
309         * lang.c (java_attribute_table): New.
310         (LANG_HOOKS_ATTRIBUTE_TABLE): Define.
311         * expr.c (build_field_ref): Add a null pointer check for all
312         fields of offset > 4k.  Don't do so for accesses via the this
313         pointer, which we know can never be null.
314         * class.c (build_java_method_type): Mark arg 1 of all nonstatic
315         methods nonnull.
316
317 2006-03-30  Carlos O'Donell  <carlos@codesourcery.com>
318
319         * Make-lang.in: Rename docdir to gcc_docdir.
320
321 2006-03-30  Tom Tromey  <tromey@redhat.com>
322
323         PR java/26042:
324         * parse.y (java_reorder_fields): Reset superclass field's size as
325         well.
326
327 2006-03-28  Tom Tromey  <tromey@redhat.com>
328
329         PR java/26390:
330         * parse.y (find_most_specific_methods_list): Added 'class'
331         argument.
332         (lookup_method_invoke): Updated.
333
334 2006-03-15  Tom Tromey  <tromey@redhat.com>
335
336         * jcf-write.c (generate_bytecode_insns): Use qualifying type for
337         non-static method calls.
338
339 2006-03-15  David Daney  <ddaney@avtrex.com>
340
341         * java-tree.h : Moved comment for TYPE_DOT_CLASS adjacent to its
342         declaration.
343
344 2006-03-15  David Daney  <ddaney@avtrex.com>
345
346         * lang.opt (-freduced-reflection): New option.
347         * lang.c (java_post_options): Generate an error if
348         -freduced-reflection used with -fjni or -findirect-dispatch.
349         * java-tree.h (flag_reduced_reflection): Declare new variable.
350         * boehm.c (get_boehm_type_descriptor): Indicate all pointers
351         if bitmap overflows and flag_reduced_reflection set.
352         * class.c (uses_jv_markobj_p): New function.
353         (make_class_data): Moved generation of vtable to before
354         reflection data, generate less reflection data if
355         flag_reduced_reflection set.
356         * gcj.texi: Document -freduced-reflection.
357
358 2006-03-15  Tom Tromey  <tromey@redhat.com>
359
360         PR java/26638:
361         * class.c (get_interface_method_index): Don't put <clinit> into
362         interface table.
363
364 2006-03-15  Tom Tromey  <tromey@redhat.com>
365
366         * parse.y (analyze_clinit_body): Ignore empty statements.
367
368 2006-03-08  David Daney  <ddaney@avtrex.com>
369
370         * gcj.texi: Document -static-libgcj option.
371
372 2006-02-20  Andrew Haley  <aph@redhat.com>
373
374         * jcf-parse.c (parse_class_file): Set input_location from
375         current_class.
376
377 2006-02-15  Andrew Haley  <aph@redhat.com>
378
379         * class.c (GEN_TABLE): Don't pushdecl *_SYMS_DECL here.
380         (make_class_data): pushdecl_top_level TYPE_OTABLE_SYMS_DECL,
381         TYPE_ATABLE_SYMS_DECL, TYPE_ITABLE_SYMS_DECL here.
382
383 2006-02-09  Andrew Haley  <aph@redhat.com>
384
385         PR java/26192
386         * expr.c (expand_invoke): Allow methods in arrays to be resolved
387         in their superclass.
388
389         * typeck.c (build_java_array_type): Generate TYPE_STUB_DECLs for
390         array types.
391         
392 2006-02-08  Tom Tromey  <tromey@redhat.com>
393
394         PR java/22578:
395         * check-init.c (check_init): Handle VIEW_CONVERT_EXPR.
396         * builtins.c (convert_real): New function.
397         (java_builtins): Handle Float.intBitsToFloat,
398         Float.floatToRawIntBits, Double.longBitsToDouble,
399         Double.doubleToRawLongBits.
400
401 2006-02-07  Andrew Haley  <aph@redhat.com>
402
403         * expr.c (expand_invoke): (BC mode.)  If we find a method in a
404         class other than the one in which we expected to find it, ignore
405         the result.
406
407         PR java/25535
408         * constants.c (build_constants_constructor): move initializer into
409         first halfword on a 64-bit big-endian machine.
410
411 2006-02-04  Tom Tromey  <tromey@redhat.com>
412
413         PR java/25676:
414         * builtins.c (max_builtin): Skip floating point 'max'.
415         (min_builtin): Skip floating point 'min'.
416         (check_for_builtin): Never return NULL_TREE.
417
418 2006-02-04  Tom Tromey  <tromey@redhat.com>
419
420         PR java/26097:
421         * expr.c (push_type): Avoid side effect in gcc_assert.
422
423 2006-02-04  Roger Sayle  <roger@eyesopen.com>
424
425         * decl.c (java_init_decl_processing): Create char_type_node as a
426         regular INTEGER_TYPE node.
427         (push_promoted_type): Preserve TYPE_STRING_FLAG on types.
428         * typeck.c (convert): No longer check for CHAR_TYPEs but instead
429         test for char_type_node and promoted_char_type_node as special
430         instances of INTEGER_TYPE tree codes.
431         (promote_type,build_java_signature): Likewise.
432         * jcf-write.c (adjust_typed_op): Likewise.
433         * mangle.c (mangle_type): Likewise.
434         * parse.y (do_unary_numeric_promotion): No longer handle CHAR_TYPE.
435         * parse.h (JINTEGRAL_TYPE_P): Likewise.
436
437 2006-02-04  Andreas Tobler  <a.tobler@schweiz.ch>
438
439         * expr.c (java_stack_swap): Revert gcc_assert patch.
440
441 2006-02-03  Ben Elliston  <bje@au.ibm.com>
442
443         * java-gimplify.c: Use gcc_assert and gcc_unreachable throughout.
444         * typeck.c: Likewise.
445         * verify-impl.c: Likewise.
446         * class.c: Likewise.
447         * decl.c: Likewise.
448         * jcf-parse.c: Likewise.
449         * constants.c: Likewise.
450         * check-init.c: Likewise.
451         * jcf-write.c: Likewise.
452         * verify-glue.c: Likewise.
453         * mangle.c: Likewise.
454         * expr.c: Likewise.
455         * lang.c: Likewise.
456         * boehm.c: Likewise.
457
458 2006-02-01  Jan Hubicka  <jh@suse.cz>
459
460         * decl.c (end_java_method): Kill hack disabling unit-at-a-time.
461         * lang.c (java_init_options): Set no_unit_at_a_time_default.
462
463 2006-01-30  Andrew Haley  <aph@redhat.com>
464
465         PR java/21428
466         * parse.y: (source_start_java_method): Mark DECL_ARTIFICIAL("this").
467
468 2006-01-21  Joseph S. Myers  <joseph@codesourcery.com>
469
470         * jv-scan.c (version), jcf-dump.c (version), gjavah.c (version):
471         Update copyright notice dates.
472
473 2006-01-16  Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>
474
475         * jvspec.c (lang_specific_spec_functions): Remove.
476
477 2006-01-06  Tom Tromey  <tromey@redhat.com>
478
479         * gcj.texi (Arrays): Added more documentation for
480         JvNewObjectArray.
481         (Primitive types): Correct information about primitive classes.
482         (Reference types): New node.
483         (Index): New node.
484
485 2005-12-16  Alexandre Oliva  <aoliva@redhat.com>
486
487         * jcf-parse.c (set_source_filename): Set the decl source location
488         even when returning early.
489
490 2005-12-15  Tom Tromey  <tromey@redhat.com>
491             Andrew Haley  <aph@redhat.com>
492
493         PR java/25429
494         * parse.y (resolve_expression_name): Don't generate accessor
495         methods for constant fields.
496
497 2005-12-13  Andrew Haley  <aph@redhat.com>
498
499         PR java/25366
500         PR java/25368
501         * class.c (maybe_layout_super_class): Update current_class before
502         calling do_resolve_class.
503
504 2005-12-12  H.J. Lu  <hongjiu.lu@intel.com>
505
506         PR java/25330
507         * jcf-write.c (write_classfile): Use PID in temporary class
508         file. Save/restore errno when reporting error.
509
510 2005-12-10  Terry Laurenzo  <tlaurenzo@gmail.com>
511
512         PR java/9861
513         * mangle.c (mangle_method_decl): Mangle Java methods by prepending 'J'
514         to bare_function_type and including the return type
515         * builtins.c (initialize_builtins) : Change builtin mangled name
516         constants to conform to new mangling scheme
517
518 2005-12-08  Andrew Haley  <aph@redhat.com>
519
520         PR libgcj/25265
521         * java-tree.h (enum java_tree_index): Add JTI_SOFT_NOSUCHFIELD_NODE.
522         (soft_abstractmethod_node): New.
523         * expr.c (build_field_ref): Add in-line check for missing field.
524         * decl.c (java_init_decl_processing): Add soft_nosuchfield_node.
525
526 2005-12-07  Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>
527
528         * Make-lang.in (java.all.build, java.install-normal): Remove.
529
530 2005-12-07  Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>
531
532         * Make-lang.in: Remove all dependencies on s-gtype, except for
533         gt-java-parse.h.
534
535 2005-12-07  Richard Sandiford  <richard@codesourcery.com>
536
537         * class.c (build_utf8_ref, emit_register_classes): Use
538         switch_to_section and get_section.
539
540 2005-12-06  Tom Tromey  <tromey@redhat.com>
541
542         PR java/25283:
543         * parse.y (patch_new_array_init): Revert previous patch.
544         (lookup_method_invoke): Use size-less array type when creating an
545         anonymous constructor.
546
547 2005-12-05  Tom Tromey  <tromey@redhat.com>
548
549         * parse.y (patch_new_array_init): Don't set length on array.
550
551 2005-12-02  Richard Guenther  <rguenther@suse.de>
552
553         * java-gimplify.c (java_gimplify_labeled_block_expr): Use
554         buildN instead of build.
555         * class.c (finish_class): Likewise.
556         * expr.c (java_create_object): Likewise.
557
558 2005-11-28  Tom Tromey  <tromey@redhat.com>
559
560         PR java/18278:
561         * expr.c (build_jni_stub): Unwrap the return value.
562         * java-tree.h (soft_unwrapjni_node): New define.
563         (enum java_tree_index): Added JTI_SOFT_UNWRAPJNI_NODE.
564         * decl.c (java_init_decl_processing): Initialize
565         soft_unwrapjni_node.
566
567 2005-11-24  Bryce McKinlay  <mckinlay@redhat.com>
568
569         * gcj.texi (gij options): Add -Xss documentation.
570
571 2005-11-08  Wil Mahan  <wmahan@gmail.com>
572
573         PR java/23617
574         * zextract.c (read_zip_archive): Fix out of memory error when
575         reading jar files with zip-style comments.
576
577 2005-11-07   Terry Laurenzo   <tlaurenzo@gmail.com>
578
579         * gjavah.c (HANDLE_CODE_ATTRIBUTE): Only define for ELF Object
580         formats.
581         * gjavah.c (decompile_method): Add ATTRIBUTE_UNUSED
582
583 2005-10-12  Nathan Sidwell  <nathan@codesourcery.com>
584             Wil Mahan <wmahan@gmail.com>
585
586         PR java/23620
587         * class.c (make_class): Create empty binfo here.
588         (set_super_info): Only create binfo if we have superclasses.
589
590 2005-10-03  Ranjit Mathew  <rmathew@gcc.gnu.org>
591
592         PR java/24127
593         * parse.y (method_header): Make the result of the rule a NULL_TREE
594         when a parsing error occurs.
595
596 2005-09-29  Tom Tromey  <tromey@redhat.com>
597
598         PR java/24120:
599         * jcf-io.c (memoized_dirlist_hash): New function.
600         (caching_stat): Use it.
601
602 2005-09-21  Ranjit Mathew  <rmathew@gcc.gnu.org>
603
604         PR java/21418
605         * class.c (inherits_from_p): Try to lay out super class
606         if it is not already laid out.
607         (maybe_layout_super_class): Handle the case where SUPER_CLASS
608         is a NULL_TREE.
609
610 2005-09-18  James A. Morrison  <phython@gcc.gnu.org>
611
612         * builtins.c (max_builtin, min_builtin, abs_builtin,
613         java_build_function_call_expr): Use fold_buildN.
614         * class.c (layout_class_method): Likewise.
615         * expr.c (java_truthvalue_conversion, build_java_jsr,
616         build_java_arrayaccess, expand_java_arrayload, expand_iinc,
617         build_java_binop, build_field_ref, expand_compare,
618         build_known_method_ref, build_invokevirtual,
619         process_jvm_instruction): Likewise.
620         * parse.y (patch_binop, patch_exit_expr): Likewise.
621         * typeck.c (convert_ieee_real_to_integer): Likewise.
622         (convert): Don't call fold after convert_ieee_real_to_integer.
623
624 2005-09-14  Bryce McKinlay  <mckinlay@redhat.com>
625
626         PR java/23891
627         * parse.y (maybe_create_class_interface_decl): Set TYPE_PACKAGE for
628         the newly created type. Set import lists here, not in create_class.
629         (jdep_resolve_class): Set current_class.
630         (do_resolve_class): Use current_class's TYPE_PACKAGE to determine 
631         the current package context, not ctxp->package.
632         (cicp_cache): Removed.
633         (class_in_current_package): Simplify implementation using TYPE_PACKAGE.
634         * jcf-parse.c (give_name_to_class): Set TYPE_PACKAGE.
635         * java-tree.h (TYPE_PACKAGE): New macro.
636         (struct lang_type): New member 'package'.
637
638 2005-09-09  Andrew Haley  <aph@redhat.com>
639
640         PR libgcj/23182 
641         * expr.c (pop_type_0): If the expected type is object or ptr
642         (i.e. void*), return the type of the object we just popped from
643         the stack.
644
645 2005-09-06  Andrew Pinski  <pinskia@physics.uc.edu>
646
647         * java-gimplify.c (java_gimplify_block): NULL out the old BLOCK's
648         BLOCK_EXPR_BODY before returning the new BIND_EXPR.
649
650 2005-09-06  Kazu Hirata  <kazu@codesourcery.com>
651
652         * check-init.c, decl.c, expr.c, gcj.texi, java-tree.h,
653         jcf-parse.c, jcf.h, parse.h, parse.y, typeck.c: Fix comment
654         typos.  Follow spelling conventions.
655
656 2005-09-05  Ranjit Mathew  <rmathew@hotmail.com>
657
658         PR java/23431
659         * typeck.c (lookup_do): Look up interfaces for the original class,
660         not the base class.
661         * parse.y (java_check_regular_methods): Fix diagnostic message for
662         more restrictive overriding of a method from an interface.
663
664 2005-08-16  Tom Tromey  <tromey@redhat.com>
665
666         * class.c (make_class_data): Always emit JV_STATE_PRELOADING for
667         class' initial state.
668
669 2005-08-16  Ranjit Mathew  <rmathew@hotmail.com>
670
671         PR java/22113
672         * lex.c (do_java_lex): Define MAX_TOKEN_LEN. Avoid overflowing
673         `literal_token' for large numeric input tokens.
674
675 2005-08-16  Ranjit Mathew  <rmathew@hotmail.com>
676
677         PR java/19870
678         * parse.y (nested_field_access_p): Rename to nested_member_access_p
679         and expand to handle method accesses across nested classes.
680         (build_outer_method_access_method): Rename to
681         build_nested_method_access_method.  Minor adjustments to comments.
682         (resolve_expression_name): Use the newly-renamed
683         nested_member_access_p method.
684         (resolve_qualified_expression_name): Likewise.
685         (patch_method_invocation): Also consider static methods for access
686         method generation.  Minor adjustments to comments.
687         (maybe_use_access_method): Use the more general
688         nested_memeber_access_p to determine access across nested class
689         boundaries.  Allow THIS_ARG to be NULL (for static methods).
690
691 2005-08-15  Tom Tromey  <tromey@redhat.com>
692
693         PR java/23300.
694         * expr.c (build_field_ref): Don't generate otable reference when
695         DECL_FIELD_OFFSET is 0.
696         * class.c (maybe_layout_super_class): Pass outer class to
697         do_resolve_class.
698
699 2005-08-15  Tom Tromey  <tromey@redhat.com>
700
701         * java-tree.h (LABEL_IN_SUBR): Removed.
702         (LABEL_IN_SUBR): Likewise.
703         (LABEL_IS_SUBR_START): Likewise.
704         (LABEL_SUBR_START): Likewise.
705         (LABEL_SUBR_CONTEXT): Likewise.
706         (LABEL_CHANGED): Likewise.
707         (LABEL_RETURN_LABEL): Likewise.
708         (LABEL_RETURN_TYPE_STATE): Likewise.
709         (LABEL_RETURN_LABELS): Likewise.
710         (RETURN_MAP_ADJUSTED): Likewise.
711         (LABEL_PENDING_CHAIN): Likewise.
712
713 2005-08-15  Tom Tromey  <tromey@redhat.com>
714
715         * Make-lang.in (JAVA_OBJS): Removed verify.o
716         (java/verify.o): Removed.
717         * verify.c: Removed.
718         * lang.c (flag_new_verifier): Removed.
719         (java_post_options): Updated.
720         * java-tree.h (flag_new_verifier): Removed.
721         (verify_jvm_instructions): Removed.
722         * expr.c (pop_type_0): Assume flag_new_verifier is true.
723         (build_java_check_indexed_type): Likewise.
724         (expand_java_arraystore): Likewise.
725         (expand_java_arrayload): Likewise.
726         (pop_arguments): Likewise.
727         (expand_byte_code): Likewise.
728         (process_jvm_instruction): Likewise.
729
730 2005-08-10  Andrew Haley  <aph@redhat.com>
731
732         * java-gimplify.c (java_gimplify_modify_expr): Fix any pointer
733         type mismatches to make legal GIMPLE.
734
735 2005-08-10  Robin Green <greenrd@greenrd.org>
736
737         PR java/23230:
738         * parse.y (maybe_use_access_method): Generalize check from
739         java.lang.Object to any superclass of current_class
740
741 2005-08-08  Nathan Sidwell  <nathan@codesourcery.com>
742
743         * class.c (build_class_ref): Wrap the primary class type in a
744         NOP_EXPR.
745         * parse.y (java_complete_lhs) <COMPONENT_REF case>: Extract the
746         primary class type from the NOP_EXPR in which it was placed.
747
748 2005-07-28  Diego Novillo  <dnovillo@redhat.com>
749
750         * expr.c (expand_load_internal): Fix missing parens in
751         predicate.
752
753 2005-07-28  Andrew Haley  <aph@redhat.com>
754
755         * expr.c (expand_load_internal): Convert to destination type.
756
757 2005-07-22  Manfred Hollstein  <mh@suse.com>
758
759         * verify-impl.c (check_class_constant): Fix uninitialised warnings.
760         (check_constant): Likewise.
761         (check_wide_constant): Likewise.
762
763 2005-07-20  Giovanni Bajo  <giovannibajo@libero.it>
764
765         Make CONSTRUCTOR use VEC to store initializers.
766         * check-init.c (check_init): Update to cope with VEC in
767         CONSTRUCTOR_ELTS.
768         * class.c (make_field_value, make_method_value, get_dispatch_table,
769         make_class_data, emit_symbol_table, emit_catch_table,
770         emit_assertion_table): Use build_constructor_from_list instead of
771         build_constructor.
772         * constants.c (build_constants_constructor): Likewise.
773         * java-gimplify.c (java_gimplify_new_array_init): Update to cope with
774         VEC in CONSTRUCTOR_ELTS.
775         * java-tree.h (START_RECORD_CONSTRUCTOR, PUSH_SUPER_VALUE,
776         PUSH_FIELD_VALUE, FINISH_RECORD_CONSTRUCTOR): Create a VEC instead
777         of a TREE_LIST.
778         * jcf-write.c (generate_bytecode_insns): Update to cope with VEC in
779         CONSTRUCTOR_ELTS.
780         * parse.y (build_new_array_init): Use build_constructor_from_list
781         instead of build_constructor.
782         (patch_new_array_init): Update to cope with VEC in
783         CONSTRUCTOR_ELTS.
784         (array_constructor_check_entry): Likewise.
785
786 2005-07-12  Tom Tromey  <tromey@redhat.com>
787
788         * jvspec.c (lang_specific_driver): Put filelist_filename first on
789         command line.
790
791 2005-07-12  Tom Tromey  <tromey@redhat.com>
792
793         PR java/19674:
794         * parse-scan.y (interface_member_declaration): Added
795         empty_statement.
796
797 2005-07-08  Daniel Berlin  <dberlin@dberlin.org>
798         
799         * java-tree.h (LABEL_RETURN_LABELS): Use decl_non_common.
800         (LABEL_PENDING_CHAIN): Ditto.
801         (LABEL_PC): Ditto.
802         (DECL_BIT_INDEX): Ditto.        
803
804 2005-07-07  Bryce McKinlay  <mckinlay@redhat.com>
805
806         PR java/18119
807         * parse.y (inner_class_accessible): New function. Logic moved from
808         check_inner_class_access.
809         (check_inner_class_access): Use inner_class_accessible.
810         (resolve_inner_class): Simplify arguments. Create circularity hash
811         here. Keep looking for classes if we found one that was inaccessible. 
812         Return the inaccessible class only if there is no other match.
813         (do_resolve_class): Update for new resolve_inner_class arguments.
814         Don't create circularity_hash here.
815
816 2005-07-07  Bryce McKinlay  <mckinlay@redhat.com>
817
818         PR java/21045
819         * parse.y (add_exception_to_throws): New function.
820         (purge_unchecked_exceptions): Removed.
821         (get_constructor_super): Renamed from verify_constructor_super. Now
822         returns the super constructor after verification.
823         (java_complete_expand_method): Don't use purge_unchecked_exceptions
824         or save/restore the exception list.
825         (check_thrown_exceptions): Add uncaught exceptions in anonymous
826         class initializers and constructors to the throws clause of the method. 
827
828 2005-07-05  Bryce McKinlay  <mckinlay@redhat.com>
829
830         PR java/19674
831         * parse.y (interface_member_declaration): Allow empty statements in
832         interface declarations.
833
834 2005-07-05  Paolo Bonzini  <bonzini@gnu.org>
835
836         * Makefile.in (parse.o): Adjust dependencies.
837         * parse.y: Include tree-dump.h.
838
839 2005-07-02  Joseph S. Myers  <joseph@codesourcery.com>
840
841         * class.c, decl.c, expr.c: Use '+' flag instead of %J.  Use 'q'
842         flag for quoting.
843
844 2005-07-01  Andrew Pinski  <pinskia@physics.uc.edu>
845
846         * parse.y (issue_warning_error_from_context): Call
847         pp_output_formatted_text to be able to get the buffer.
848
849 2005-06-30  Andrew Pinski  <pinskia@physics.uc.edu>
850
851         * parse.y (issue_warning_error_from_context): Update for the
852         renaming of pp_format_text to pp_format.
853
854 2005-06-28  Paul Brook  <paul@codesourcery.com>
855
856         * decl.c (java_init_decl_processing): Call
857         default_init_unwind_resume_libfunc.
858
859 2005-06-27  Tom Tromey  <tromey@redhat.com>
860
861         PR java/21540, PR java/13788:
862         * parse.y (java_complete_lhs) <CASE_EXPR>: Use
863         fold_constant_for_init.
864         (patch_binop): Added 'folding' argument.  Updated all callers.
865         (patch_unaryop) <NOP_EXPR>: New case.
866         (fold_constant_for_init) <NOP_EXPR>: Likewise.
867         (fold_constant_for_init) <COND_EXPR>: Fix sense of test.
868
869 2005-06-25  Jan Hubicka  <jh@suse.cz>
870
871         * builtins.c (define_builtin): Accept new flags parameter.
872         (initialize_builtins): Mark the builtins const and nothrow accordingly.
873
874 2005-06-25  Kelley Cook  <kcook@gcc.gnu.org>
875
876         * all files: Update FSF address in copyright headers.
877
878 2005-06-24  Tom Tromey  <tromey@redhat.com>
879
880         * verify-impl.c (verify_instructions_0): Correctly handle
881         situation where PC falls off end.
882
883 2005-06-23  Bryce McKinlay  <mckinlay@redhat.com>
884
885         PR java/20697
886         * parse.y (find_most_specific_methods_list): Remove special case for
887         inner classes.
888
889 2005-06-15  Tom Tromey  <tromey@redhat.com>
890
891         PR libgcj/21906:
892         * class.c (make_method_value): Use soft_abstractmethod_node for
893         abstract method.
894         * java-tree.h (soft_abstractmethod_node): New define.
895         (JTI_SOFT_ABSTRACTMETHOD_NODE): New enum constant.
896         * decl.c (java_init_decl_processing): Initialize
897         soft_abstractmethod_node.
898
899 2005-06-13  Geoffrey Keating  <geoffk@apple.com>
900
901         * Make-lang.in (rule for installing gcj.1): Depends on installdirs.
902
903 2005-06-13  Per Bothner  <per@bothner.com>
904
905         * expr.c (int highest_label_pc_this_method,
906         start_label_pc_this_method): New globals.
907         (lookup_label): Add start_label_pc_this_method to pc for label, and
908         update highest_label_pc_this_method.  This prevents conflicts between
909         labels from different methods.
910         * java-tree.h: Declare new globals.
911         * jcf-parse.c (parse_class_file): If needed bump
912         start_label_pc_this_method and reset highest_label_pc_this_method.
913
914 2005-06-13  Tom Tromey  <tromey@redhat.com>
915
916         PR java/21844:
917         * parse.y (nested_field_access_p): Handle case where outer field
918         is inherited by enclosing class.
919
920 2005-06-12  Per Bothner  <per@bothner.com>
921
922         * class.c (inherits_from_p): Do load_class if needed.
923
924 2005-06-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
925
926         * gjavah.c (error): Add ATTRIBUTE_PRINTF_1.
927         * java-tree.h (parse_error_context): Move...
928         * parse.h (parse_error_context): ... here, add ATTRIBUTE_GCC_DIAG.
929         * parse.y (parse_warning_context): Add ATTRIBUTE_GCC_DIAG.
930         * verify-impl.c (debug_print): Add ATTRIBUTE_PRINTF_1.
931
932 2005-06-08  Roger Sayle  <roger@eyesopen.com>
933
934         * typeck.c (convert): Only clear TREE_OVERFLOW on INTEGER_CST nodes.
935
936 2005-06-06  Jakub Jelinek  <jakub@redhat.com>
937
938         * jv-scan.c (fatal_error, warning, warning0): Use gmsgid instead of
939         msgid for argument name.
940         * gjavah.c (error): Likewise.
941         * java-tree.h (parse_error_context): Likewise.
942         * parse.y (parse_error_context, parse_warning_context,
943         issue_warning_error_from_context): Likewise.
944
945 2005-06-01  Tom Tromey  <tromey@redhat.com>
946
947         PR java/21722:
948         * class.c (build_static_field_ref): Don't fold constant fields if
949         current class is from a .class file and we're using indirect
950         dispatch.
951
952 2005-05-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
953
954         * java/verify-glue.c: Don't include errors.h and include toplev.h.
955         * java/Make-lang.in: Updates dependencies.
956
957 2005-05-26  Ranjit Mathew  <rmathew@hotmail.com>
958
959         PR java/19870.
960         * java-tree.h (OUTER_FIELD_ACCESS_IDENTIFIER_P): Rename to
961         NESTED_FIELD_ACCESS_IDENTIFIER_P.
962         (FIELD_INNER_ACCESS): Rename to FIELD_NESTED_ACCESS.
963         (FIELD_INNER_ACCESS_P): Rename to FIELD_NESTED_ACCESS_P.
964         * jcf-write.c (generate_classfile): Use
965         NESTED_FIELD_ACCESS_IDENTIFIER_P instead of
966         OUTER_FIELD_ACCESS_IDENTIFIER_P.
967         * parse.y (build_outer_field_access): Rename to
968         build_nested_field_access. Support static fields and outer-to-inner
969         class accesses.
970         (outer_field_access_p): Rename to nested_field_access_p. Support
971         static fields and generalise to outer-to-inner class and sibling
972         inner class accesses.
973         (outer_field_expanded_access_p): Rename to
974         nested_field_expanded_access_p and support static fields.
975         (outer_field_access_fix): Rename to nested_field_access_fix and
976         support static fields.
977         (build_outer_field_access_expr): Rename to
978         build_nested_field_access_expr and support static fields.
979         (build_outer_field_access_methods): Rename to
980         build_nested_field_access_methods and support static fields. For
981         static fields, generate accessors without class instance parameters.
982         (build_outer_field_access_method): Rename to
983         build_nested_field_access_method and support static fields.
984         (build_outer_method_access_method): Use
985         NESTED_FIELD_ACCESS_IDENTIFIER_P instead of
986         OUTER_FIELD_ACCESS_IDENTIFIER_P.
987         (resolve_expression_name): Consider static field accesses across
988         nested classes.
989         (resolve_qualified_expression_name): Likewise.
990         (java_complete_lhs): Use nested_field_access_fix instead of
991         outer_field_access_fix.
992         (patch_unary_op): Rename outer_field_flag to nested_field_flag.
993         Use nested_field_expanded_access_p instead of
994         outer_field_expanded_access_p. Use nested_field_access_fix instead
995         of outer_field_access_fix.
996         (check_thrown_exceptions): Use NESTED_FIELD_ACCESS_IDENTIFIER_P
997         instead of OUTER_FIELD_ACCESS_IDENTIFIER_P.
998
999 2005-05-26  Bryce McKinlay  <mckinlay@redhat.com>
1000
1001         * decl.c (GCJ_BINARYCOMPAT_ADDITION, 
1002         GCJ_BOOTSTRAP_LOADER_ADDITION): Removed.
1003         (FLAG_BINARYCOMPAT_ABI, FLAG_BOOTSTRAP_LOADER,
1004         MINOR_BINARYCOMPAT_ABI_VERSION): New.
1005         (GCJ_CURRENT_BC_ABI_VERSION): Use new method to calculate version ID.
1006         (parse_version): Calculate version ID using new method. Use bit-flags
1007         for flag_indirect_dispatch and flag_bootstrap_classes.
1008
1009 2005-05-25  Richard Henderson  <rth@redhat.com>
1010
1011         PR libgcj/21692
1012         * Make-lang.in (java/mangle.o): Depend on LANGHOOKS_DEF_H.
1013         * class.c (build_class_ref): Set DECL_CLASS_FIELD_P and
1014         DECL_CONTEXT; avoid pushdecl_top_level.
1015         (build_dtable_decl): Set DECL_VTABLE_P and DECL_CONTEXT.
1016         (layout_class): Don't SET_DECL_ASSEMBLER_NAME.
1017         (layout_class_method): Likewise.
1018         * decl.c (java_mark_cni_decl_local): New.
1019         (java_mark_class_local): Use it.
1020         * java-tree.h (DECL_LOCAL_CNI_METHOD_P): New.
1021         (DECL_CLASS_FIELD_P, DECL_VTABLE_P): New.
1022         (struct lang_decl_func): Add local_cni;
1023         (struct lang_decl_var): Add class_field, vtable.
1024         (java_mangle_decl): Declare.
1025         * lang.c (LANG_HOOKS_SET_DECL_ASSEMBLER_NAME): New.
1026         * mangle.c: Remove dup obstack.h; include langhooks-def.h.
1027         (mangle_obstack_1): New.
1028         (java_mangle_decl): Remove obstack argument.  Call mangle_class_field,
1029         mangle_vtable, and mangle_local_cni_method_decl.  Fall back to
1030         lhd_set_decl_assembler_name for things that don't need mangling.
1031         (mangle_class_field): Rename from java_mangle_class_field, make
1032         static, don't call init_mangling or finish_mangling.
1033         (mangle_vtable): Similarly.
1034         (mangle_local_cni_method_decl): New.
1035         (init_mangling): Remove obstack argument.  Use &mangle_obstack_1,
1036         gcc_assert, and MANGLE_RAW_STRING.
1037         (finish_mangling): Use gcc_assert, remove if 0 debugging code.
1038
1039 2005-05-25  DJ Delorie  <dj@redhat.com>
1040
1041         * class.c (set_constant_value): Move warning control from if() to
1042         warning(OPT_*).
1043
1044 2005-05-24  Richard Henderson  <rth@redhat.com>
1045
1046         * builtins.c (define_builtin): Don't call make_decl_rtl.
1047         * constants.c (build_constant_data_ref): Likewise.
1048         * class.c (build_utf8_ref): Likewise.
1049         (build_fieldref_cache_entry, build_static_field_ref): Likewise.
1050         (get_dispatch_table, layout_class_method): Likewise.
1051         (build_class_ref): Likewise. Don't set DECL_SIZE or DECL_SIZE_UNIT
1052         by hand.
1053         (make_local_function_alias): Don't SET_DECL_ASSEMBLER_NAME.
1054         (make_method_value): Use METHOD_ABSTRACT instead of DECL_RTL_SET_P
1055         to determine if we need a non-zero address.
1056         * decl.c (builtin_function): Don't call make_decl_rtl.
1057         (give_name_to_locals): Don't SET_DECL_ASSEMBLER_NAME.
1058         * expr.c (build_known_method_ref): Don't call make_decl_rtl.
1059         * resource.c (compile_resource_data): Likewise.
1060         * parse.y (resolve_field_access): Re-word comment to avoid
1061         building DECL_RTL.
1062
1063 2005-05-24  Richard Henderson  <rth@redhat.com>
1064
1065         * class.c (registered_class): Take it out of class_roots; turn into
1066         a vec of trees.
1067         (register_class): Make static.  Don't duplicate decl node.  Use
1068         VEC_safe_push.
1069         (emit_register_classes): Use VEC_iterate.  Use output_constant
1070         instead of assemble_integer.  Don't call mark_decl_referenced
1071         directly.
1072         * java-tree.h (register_class): Remove decl.
1073
1074 2005-05-19  Paolo Bonzini  <bonzini@gnu.org>
1075
1076         PR java/17845
1077
1078         * parse.y (register_package, package_list): Remove.
1079         (package_declaration): Do not call register_package.
1080         (do_resolve_class): Do not use package_list.
1081
1082 2005-05-15  Gerald Pfeifer  <gerald@pfeifer.com>
1083
1084         * jcf-write.c (generate_bytecode_insns) <SAVE_EXPR>: Remove
1085         unused variable.
1086
1087 2005-05-15  Tom Tromey  <tromey@redhat.com>
1088
1089         PR java/21519:
1090         * jcf-write.c (generate_bytecode_insns) <SAVE_EXPR>: Don't call
1091         NOTE_PUSH.
1092
1093 2005-05-12  Aaron Luchko <aluchko@redhat.com>
1094
1095         * gcj.texi: Add '-verify', '-noverify', and '-verifyremote'.
1096
1097 2005-05-11  Tom Tromey  <tromey@redhat.com>
1098
1099         * gcj.texi (Code Generation): Document -fbootstrap-classes.
1100         * decl.c (GCJ_BOOTSTRAP_LOADER_ADDITION): New macro.
1101         (parse_version): Use it.
1102         * lang.opt (-fbootstrap-classes): New option.
1103
1104 2005-05-10  Paolo Bonzini  <bonzini@gnu.org>
1105
1106         PR java/21436
1107         * class.c (maybe_layout_super_class): Look for imports in this_class.
1108         * parse.h (ctxp_for_generation_last): New.
1109         (do_resolve_class): Add a parameter.
1110         * parse.y (ctxp_for_generation_last): New.
1111         (java_pop_parser_context): Add at end of list.
1112         (find_in_imports, find_in_imports_on_demand): Look in ctxp
1113         if the TYPE_IMPORT_LIST or respectively the TYPE_IMPORT_DEMAND_LIST of
1114         the given type are NULL.
1115         (do_resolve_class): Look into the imports of the new second parameter.
1116         Adjust recursive calls.
1117         (resolve_class, resolve_inner_class, find_as_inner_class): Adjust
1118         calls to do_resolve_class.
1119         (create_class): Set the TYPE_IMPORT_LIST and TYPE_IMPORT_DEMAND_LIST.
1120         (java_complete_class): Do not do that here.
1121
1122 2005-05-03  Thomas Fitzsimmons  <fitzsim@redhat.com>
1123
1124         PR java/20309
1125         * Make-lang.in (java): Add gjnih.
1126         (JAVA_TARGET_INDEPENDENT_BIN_TOOLS): Likewise.
1127         (GJNIH_OBJS): New variable.
1128         (gjnih$(exeext)): New target.
1129         (JAVA_MANFILES): Add gjnih.1.
1130         (java.uninstall): Add gjnih.1.
1131         (java.mostlyclean): Add gjnih.
1132         (java.maintainer-clean): Add gjnih.1.
1133         (java/gjavah-jni.o): New target.
1134         (.INTERMEDIATE): Add gjnih.pod.
1135         (gjnih.pod): New target.
1136         * config-lang.in (stagestuff): Add gjnih.
1137         * gcj.texi (Top): Add gjnih node.
1138         (Invoking gcjh): Add descriptions of -force, -old, -trace, -J and
1139         -bootclasspath options.
1140         (Invoking gjnih): New node.
1141         * gjavah.c Initialize flag_jni to 1 if JNI_DEFAULT is defined.
1142         (TOOLNAME): New macro.
1143         (error): Replace hard-coded gcjh with TOOLNAME.
1144         (process_file): Likewise.
1145         (usage): Likewise.
1146         (version): Likewise.
1147         (help): Likewise.  Add help output for -force, -old, -trace and -J
1148         options.
1149         (OPT_FORCE, OPT_OLD, OPT_TRACE): New macros.
1150         (options): Add force, old, trace and J fields.
1151         (main): Handle -force, -old, -trace and -J options.
1152
1153 2005-05-03  Tom Tromey  <tromey@redhat.com>
1154
1155         PR java/21245:
1156         * gjavah.c (main): Unlink output file on error.
1157
1158 2005-05-03  Kazu Hirata  <kazu@cs.umass.edu>
1159
1160         * constants.c, jvgenmain.c, lang.opt, resource.c: Update
1161         copyright.
1162
1163 2005-04-29  Tom Tromey  <tromey@redhat.com>
1164
1165         * expr.c (build_jni_stub): Updated for change to build_block.
1166
1167 2005-04-29  Andrew Pinski  <pinskia@gcc.gnu.org>
1168
1169         * expr.c (force_evaluation_order): Declare 'saved' earlier.
1170
1171 2005-04-28  Andrew Haley  <aph@redhat.com>
1172
1173         PR java/19285
1174         * java-tree.h (soft_resolvepoolentry_node): New.
1175         (alloc_constant_fieldref): Declare.
1176         * expr.c (expand_java_field_op): Don't call class_init for
1177         accesses to static fields with indirect dispatch.
1178         * builtins.c (initialize_builtins): Add "__builtin_expect".
1179         * decl.c (soft_resolvepoolentry_node): New variable.
1180         (java_init_decl_processing): Create a decl for
1181         "_Jv_ResolvePoolEntry".
1182         * class.c (build_fieldref_cache_entry): New function.
1183         (build_static_field_ref): Rewrite for indirect dispatch.
1184         * constants.c (find_name_and_type_constant_tree): New function.
1185         (alloc_constant_fieldref): Likewise.
1186         (build_constants_constructor): Handle CONSTANT_Fieldref and
1187         CONSTANT_NameAndType.
1188
1189         PR java/21115
1190         * expr.c (force_evaluation_order): Convert outgoing args smaller
1191         than integer.
1192
1193 2005-04-27  Bryce McKinlay  <mckinlay@redhat.com>
1194
1195         * gcj.texi (libgcj Runtime Properties): Remove obsolete
1196         gnu.gcj.runtime.NameFinder.* system properties. Update documentation 
1197         for gnu.gcj.runtime.NameFinder.use_addr2line and gnu.gcj.progname.
1198
1199 2005-04-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1200
1201         * gjavah.c, jcf-dump.c, jv-scan.c, jvgenmain.c: Replace calls
1202         to `unlock_stream' with `unlock_std_streams'.
1203
1204 2005-04-25  Jakub Jelinek  <jakub@redhat.com>
1205
1206         * Make-lang.in (java/decl.o, java/resource.o): Depend on $(EXPR_H)
1207         instead of just expr.h.
1208
1209 2005-04-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1210
1211         * gjavah.c (main): Unlock the stdio streams.
1212         * jcf-dump.c (main): Likewise.
1213         * jv-scan.c (main): Likewise.
1214         * jvgenmain.c (main): Likewise.
1215
1216 2005-04-23  DJ Delorie  <dj@redhat.com>
1217
1218         * class.c, decl.c, expr.c, jcf-io.c, jcf-parse.c, jv-scan.c,
1219         parse.y: Adjust warning() callers.
1220
1221 2005-04-21  Bryce McKinlay  <mckinlay@redhat.com>
1222
1223         * gcj.texi (Object fields): Change "Integer" to "Int" in example
1224         contructor.
1225
1226 2005-04-20  Bryce McKinlay  <mckinlay@redhat.com>
1227
1228         * gcj.texi: Fix typos and bogus example.
1229
1230 2005-04-19  Kazu Hirata  <kazu@cs.umass.edu>
1231
1232         * except.c: Fix a comment typo.
1233
1234 2005-04-19  Julian Brown  <julian@codesourcery.com>
1235
1236         * decl.c (finish_method): Revert patch from 2005-04-13 for breaking
1237         indirect dispatch with PIC.
1238
1239 2005-04-18  Andrew Haley  <aph@redhat.com>
1240
1241         * java-except.h (struct eh_range.handler): Remove unused field.
1242         (handle_nested_ranges): Remove function declaration.
1243         (sanity_check_exception_range): Add function declaration.       
1244         * verify.c (verify_jvm_instructions): Remove call to
1245         handle_nested_ranges.
1246         * verify-glue.c (verify_jvm_instructions_new): Call
1247         sanity_check_exception_range.
1248         * except.c (link_handler, eh_range_freelist, link_handler,
1249         handle_nested_ranges): Remove.
1250         (add_handler): Rewrite.
1251         (sanity_check_exception_range): New function.
1252         (print_ranges): New function.
1253
1254 2005-04-13  Julian Brown  <julian@codesourcery.com>
1255
1256         * decl.c (finish_method): Give methods once-only linkage.
1257
1258 2005-04-11  Richard Sandiford  <rsandifo@redhat.com>
1259
1260         * lang.opt: Refer to the GCC internals documentation instead of c.opt.
1261
1262 2005-04-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1263
1264         * java-tree.h: Don't use PARAMS().
1265
1266 2005-04-07  Per Bothner  <per@bothner.com>
1267
1268         * class.c (push_class): By default, suppress debug output.
1269         (finish_class): Enable debug output for classes we're emitting.
1270
1271 2005-04-07  Andrew Haley  <aph@redhat.com>
1272
1273         * gcj.texi: Correct gcj-dbtool instructions.
1274
1275 2005-04-04  Kazu Hirata  <kazu@cs.umass.edu>
1276
1277         * gcj.texi: Fix a typo.
1278         * lang.c: Fix a comment typo.
1279
1280 2005-04-01  Thomas Fitzsimmons  <fitzsim@redhat.com>
1281
1282         * gcj.texi (Invoking gij): Add descriptions of new -X options.
1283         Mention recognized-and-ignored compatibility options.
1284         (Memory allocation): Add descriptions of JvMalloc, JvRealloc and
1285         JvFree.
1286         (About CNI): Add Memory allocation section.
1287
1288 2005-04-01  Tom Tromey  <tromey@redhat.com>
1289
1290         * decl.c (java_init_decl_processing): Fix types of
1291         _Jv_MonitorEnter, _Jv_MonitorExit, _Jv_AllocObject,
1292         _Jv_AllocObjectNoFinalizer, _Jv_Throw, _Jv_NewPrimArray,
1293         _Jv_JNI_PopSystemFrame, _Jv_divI, _Jv_remI, _Jv_divJ, _Jv_remJ.
1294
1295 2005-03-31  Jan Hubicka  <jh@suse.cz>
1296
1297         * Make-lang.in (class.o, decl.o): Depend on cgraph.h.
1298         * class.c: Include cgraph.h
1299         (make_local_functoin_alias): Mark aslias as needed.
1300         * resource.c: Include cgraph.h
1301         (compile_resource_data): Go via cgraph interface.
1302
1303 2005-03-30  Ian Lance Taylor  <ian@airs.com>
1304
1305         * parse.y (maybe_yank_clinit): Don't crash if bbody is NULL.
1306
1307 2005-03-30  Tom Tromey  <tromey@redhat.com>
1308
1309         * jcf-dump.c (HANDLE_INNERCLASSES_ATTRIBUTE): Handle cases where
1310         inner_class_info_index==0 or outer_class_info_index==0.
1311
1312 2005-03-29  Tom Tromey  <tromey@redhat.com>
1313
1314         * gcj.texi (libgcj Runtime Properties): Document
1315         gnu.gcj.runtime.endorsed.dirs.
1316
1317 2005-03-24  Anthony Green  <green@redhat.com>
1318
1319         * gcj.texi (Invoking gcj-dbtool): Document new LIBDIR option to
1320         'gcj-dbtool -p'.
1321
1322 2005-03-23  Tom Tromey  <tromey@redhat.com>
1323
1324         * decl.c (GCJ_CURRENT_BC_ABI_VERSION): New define.
1325         (parse_version): Use it.
1326
1327 2005-03-23  Joseph S. Myers  <joseph@codesourcery.com>
1328
1329         * lang.c (LANG_HOOKS_TRUTHVALUE_CONVERSION): Remove.
1330
1331 2005-03-18  Andrew Haley  <aph@redhat.com>
1332
1333         PR java/20522
1334         * decl.c (update_aliases): Don't update variables that are about
1335         to die.
1336         (maybe_poplevels): Add comment.
1337
1338 2005-03-17  Bryce McKinlay  <mckinlay@redhat.com>
1339
1340         PR java/20502
1341         * jcf-parse.c (duplicate_class_warning): New function.
1342         (java_parse_file): Call duplicate_class_warning if 
1343         CLASS_FROM_CURRENTLY_COMPILED_P is already set.
1344         (parse_zip_file_entries): Likewise. Also set
1345         CLASS_FROM_CURRENTLY_COMPILED_P.
1346
1347 2005-03-16  Andrew Haley  <aph@redhat.com>
1348
1349         * expr.c (expand_java_arrayload): Don't generate a
1350         NullPointerException based on the type of the node.
1351         (build_java_array_length_access): Likewise.
1352
1353 2005-03-15  Zack Weinberg  <zack@codesourcery.com>
1354
1355         * Make-lang.in (TEXI_JAVA_FILES): Add gcc-vers.texi.
1356
1357 2005-03-11  Tom Tromey  <tromey@redhat.com>
1358
1359         * gcj.texi (Invoking gcj-dbtool): Document 'gcj-dbtool -p'.
1360         (libgcj Runtime Properties): Document the default .db.
1361
1362 2005-03-10  Ranjit Mathew  <rmathew@hotmail.com>
1363
1364         PR java/20312
1365         * parse.y (checks_throws_clauses): Check exceptions list even when
1366         the base class does not come from a source file being compiled.
1367         (java_complete_lhs): Remove unused variable 'wfl'.
1368
1369 2005-03-09  Ranjit Mathew  <rmathew@hotmail.com>
1370
1371         PR java/20338
1372         * decl.c (finish_method): Emit _Jv_InitClass for private static
1373         methods inside inner classes as well.
1374
1375 2005-03-08  Julian Brown  <julian@codesourcery.com>
1376         * Revert patch from 2005-03-08 for causing bootstrap failure on
1377         ppc-darwin.
1378
1379 2005-03-08  Julian Brown  <julian@codesourcery.com>
1380
1381         * decl.c (finish_method): Give methods once-only linkage.
1382
1383 2005-03-07  Ranjit Mathew  <rmathew@hotmail.com>
1384
1385         * lang.c (flag_new_verifier): Enable by default, regardless of ABI.
1386
1387 2005-03-07  Bryce McKinlay  <mckinlay@redhat.com>
1388
1389         * verify-glue.c (vfy_is_assignable_from): Perform static check using
1390         can_widen_reference_to if the C++ ABI is in use.
1391         (vfy_get_interface_count, vfy_get_interface): Remove unused functions.
1392         * verify-impl.c (debug_print, make_utf8_const, init_type, copy_type,
1393         type_isresolved, init_state, set_pc, state_get_pc,
1394         _Jv_BytecodeVerifier): Clean up unused and disabled functions.
1395         (verify_fail): Report the current PC from the verifier context.
1396         (free_state): Remove #if 0 block to enable this function.
1397         (free_verifier_context): Call free_state on state_list iterator
1398         values before freeing them.
1399         * expr.c (pop_type_0): Pop correct type for error message when stack
1400         contains a multi-word type.
1401
1402 2005-03-07  Ranjit Mathew  <rmathew@hotmail.com>
1403
1404         * expr.c (build_java_array_length_access): Remove !flag_new_verifier
1405         for known NULL array length access.
1406
1407 2005-03-07  Tom Tromey  <tromey@redhat.com>
1408
1409         * gcj.texi (Invoking gcj-dbtool): Document '-f'.
1410
1411 2005-03-06  Kazu Hirata  <kazu@cs.umass.edu>
1412
1413         * jcf-dump.c, jcf-io.c, jcf-reader.c, lang.c, parse.h,
1414         typeck.c: Update copyright.
1415
1416 2005-03-06  Ranjit Mathew  <rmathew@hotmail.com>
1417
1418         Remove xref code.
1419         * xref.c, xref.h: Remove file.
1420         * Make-lang.in (java/xref.o): Remove.
1421         * java-tree.h (flag_emit_xref, do_not_fold): Remove declaration.
1422         * lang.c (flag_emit_xref): Remove definition.
1423         * parse.h (DECL_END_SOURCE_LINE, DECL_INHERITED_SOURCE_LINE): Remove.
1424         * typeck.c (convert): Remove use of do_not_fold.
1425         * parse.y (do_not_fold): Remove definition.
1426         (parser grammar): Remove xref code.
1427         (maybe_create_class_interface_decl, create_class): Likewise.
1428         (register_fields, method_header, finish_method_declaration): Likewise.
1429         (declare_local_variables, source_end_java_method): Likewise.
1430         (java_complete_expand_classes): Do not set do_not_fold.
1431         (java_complete_expand_method): Remove xref code.
1432         (java_expand_classes, resolve_field_access, patch_invoke): Likewise.
1433         (java_complete_tree, java_complete_lhs, patch_assignment): Likewise.
1434         (patch_binop, build_string_concatenation, patch_array_ref): Likewise.
1435         (patch_synchronized_statement, patch_throw_statement): Likewise.
1436         (maybe_build_class_init_for_field): Likewise.
1437
1438 2005-03-05  Kazu Hirata  <kazu@cs.umass.edu>
1439
1440         * expr.c (build_expr_wfl, expr_add_location): Use TYPE_P
1441         instead of IS_NON_TYPE_CODE_CLASS.
1442
1443 2005-03-04  Andrew Haley  <aph@redhat.com>
1444
1445         PR java/18362
1446         * class.c (set_method_index): Don't set method_index if it is
1447         NULL_TREE.
1448         (layout_class_method): Don't complain about "non-static method foo
1449         overrides static method" in the case of indirect dispatch.
1450
1451 2005-03-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1452
1453         * jcf-io.c (caching_stat): Use __extension__ to avoid pedantic
1454         warning.
1455         * Make-lang.in: Don't elide warnings in jcf-io.c.
1456
1457 2005-03-01  Per Bothner  <per@bothner.com>
1458
1459         PR java/8608
1460         * check-init.c (wfl): Remove static.
1461         (final_assign_error, check_init): Replace calls to parse_error_context
1462         by plain error.
1463         (check_init): Save, set, and restore input_location for each exp.
1464
1465 2005-03-01  Per Bothner  <per@bothner.com>
1466
1467         * jcf-reader.c (get_attribute): Handle SourceDebugExtension (JSR 45)
1468         if HANDLE_SOURCEDEBUGEXTENSION_ATTRIBUTE is defined.
1469         * jcf-dump.c (HANDLE_SOURCEDEBUGEXTENSION_ATTRIBUTE): Print contents.
1470
1471 2005-03-01  Per Bothner  <per@bothner.com>
1472
1473         * java-tree.h (IDENTIFIER_HANDLECLASS_VALUE): Remove ancient macro.
1474
1475 2005-02-23  Thomas Fitzsimmons  <fitzsim@redhat.com>
1476
1477         PR libgcj/16923
1478         * gcj.texi (Invocation): Add descriptions of JvVMInitArgs and
1479         JvVMOption.
1480
1481 2005-02-22  Tom Tromey  <tromey@redhat.com>
1482
1483         PR java/20056:
1484         * verify-impl.c (EITHER): New define.
1485         (types_compatible): Handle it.
1486         (check_field_constant): Use it.
1487
1488 2005-02-18  Tom Tromey  <tromey@redhat.com>
1489
1490         PR java/20056:
1491         * verify-impl.c (types_equal): Fixed test.
1492
1493         PR java/20056:
1494         * verify-glue.c (vfy_class_has_field): New function.
1495         * verify.h (vfy_class_has_field): Declare.
1496         * verify-impl.c (check_field_constant): Added 'putfield'
1497         argument.
1498         (verify_instructions_0): Updated.
1499         (types_equal): New function.
1500
1501 2005-02-14  Tom Tromey  <tromey@redhat.com>
1502
1503         PR java/19921:
1504         * jcf-write.c (generate_bytecode_insns) <CALL_EXPR>: Note the
1505         stack effect of multianewarray.
1506
1507 2005-02-14  Andrew Haley  <aph@redhat.com>
1508
1509         PR java/19907
1510         * expr.c (expand_byte_code): Call promote_arguments().
1511         (promote_arguments): New function.
1512         * decl.c (check_local_unnamed_variable): Remove special case for
1513         new verifier.
1514         (find_local_variable): Promote all boolean types to int
1515         when searching for local variable decls.
1516
1517 2005-02-12  Kazu Hirata  <kazu@cs.umass.edu>
1518
1519         * builtins.c, java-except.h, jcf-parse.c, jv-scan.c, lex.c,
1520         parse-scan.y: Update copyright.
1521
1522 2005-02-11  Per Bothner  <per@bothner.com>
1523
1524         PR java/15543
1525         * parse-scan.y (input_location): Remove variable.
1526         (main_input_filename): New - replaces input_filename, which isn't
1527         settable if USE_MAPPED_LOCATION.
1528         * lex.c (java_init_lex): Wrap some more places in #ifndef JC1-LITE,
1529         so we don't reference input_location or wfl_operator in that case.
1530         * jv-scan.c (expand_location): Remove - no longer used.
1531         (main): Set main_input_filename rather than input_filename.
1532
1533 2005-02-09  Richard Henderson  <rth@redhat.com>
1534
1535         * builtins.c (initialize_builtins): Call build_common_builtin_nodes.
1536         * decl.c (java_init_decl_processing): Initialize const_ptr_type_node.
1537
1538 2005-02-08  Marcin Dalecki  <martin@dalecki.de>
1539
1540         * expr.c (add_type_assertion): Use the proper enumeration type,
1541         since this is what htab_find_slot() is expecting.
1542
1543 2005-02-06  Joseph S. Myers  <joseph@codesourcery.com>
1544
1545         * gcj.texi: Update copyright dates.
1546
1547 2005-02-02  Tom Tromey  <tromey@redhat.com>
1548
1549         * gcj.texi (libgcj Runtime Properties): Default library_control
1550         to 'cache'.
1551
1552 2005-02-02  Ranjit Mathew  <rmathew@hotmail.com>
1553
1554         PR java/15543
1555         * parse-scan.y (formal_parameter): Use $2 (type) instead of $$
1556         (modifiers) when square brackets are present in a declaration for
1557         a final paramter.
1558         * jv-scan.c (main): Set input_filename and input_line.
1559
1560 2005-02-01  Tom Tromey  <tromey@redhat.com>
1561
1562         PR java/19742:
1563         * gjavah.c (get_field_name): Don't override name for JNI header.
1564
1565 2005-02-01  Roger Sayle  <roger@eyesopen.com>
1566
1567         * jcf-write.c (generate_bytecode_insns): Implement RSHIFT_EXPR
1568         of unsigned types using iushr and lushr JVM bytecodes.
1569
1570 2005-02-01  Ranjit Mathew  <rmathew@hotmail.com>
1571
1572         PR java/19738
1573         * gjavah.c (jni_print_float): Do not emit floating-point
1574         initialiser for a static final field.
1575         (jni_print_double): Likewise.
1576
1577 2005-02-01  Mark Mitchell  <mark@codesourcery.com>
1578
1579         Revert:
1580         2005-01-31  Mark Mitchell  <mark@codesourcery.com>
1581         * gjavah.c (print_field_info): Mark static data members of
1582         floating-point type with "__extension__".
1583
1584 2005-01-31  Mark Mitchell  <mark@codesourcery.com>
1585
1586         * gjavah.c (print_field_info): Mark static data members of
1587         floating-point type with "__extension__".
1588
1589 2005-02-01  Ranjit Mathew  <rmathew@hotmail.com>
1590
1591         PR java/9157
1592         * parse.y (build_string_concatenation): Remove redundant if.
1593         (patch_conditional_expr): Attempt to patch_string() the condition
1594         of a ?: as well, in addition to its other operands.
1595
1596 2005-01-25  Tom Tromey  <tromey@redhat.com>
1597
1598         * Make-lang.in (java/java-tree-inline.o): Removed.
1599
1600 2005-01-25  Ranjit Mathew  <rmathew@hotmail.com>
1601
1602         PR java/19070
1603         * parse.y (patch_binop): Allow comparisons against NULL only
1604         if the other operand is of a reference type.
1605
1606 2005-01-24  Tom Tromey  <tromey@redhat.com>
1607
1608         * java-tree.h (gcj_abi_version): Declare.
1609         * class.c (make_class_data): Push gcj_abi_version into "next"
1610         field.  Renamed field.
1611         * decl.c (gcj_abi_version): New global.
1612         (parse_version): New function.
1613         (java_init_decl_processing): Call it.  Renamed 'next' field.
1614         Include version.h.
1615         (GCJ_BINARYCOMPAT_ADDITION): New define.
1616
1617 2005-01-24  Roger Sayle  <roger@eyesopen.com>
1618
1619         PR java/19295
1620         * jcf-write.c (generate_bytecode_insns): Conversions between
1621         integer types of the same precision shouldn't generate widening
1622         or narrowing conversion bytecodes.
1623
1624 2005-01-22  Kazu Hirata  <kazu@cs.umass.edu>
1625
1626         * java-except.h, java-tree.h: Remove unused prototypes.
1627
1628 2005-01-20  Andrew Pinski  <pinskia@gcc.gnu.org>
1629
1630         PR java/18091:
1631         * jcf-write.c (perform_relocations): Don't call memcpy if source
1632         and destination are the same.
1633
1634 2005-01-17  Tom Tromey  <tromey@redhat.com>
1635
1636         * verify-impl.c (get_short): Sign extend.
1637         (get_int): Likewise.
1638
1639 2005-01-12  Ranjit Mathew  <rmathew@hotmail.com>
1640
1641         * expr.c (build_jni_stub): Replace mistaken use of TYPE_SIZE_UNIT
1642         with TYPE_SIZE.
1643
1644 2005-01-10  Ranjit Mathew  <rmathew@hotmail.com>
1645
1646         * verify.c: Revert to the version before the BC-ABI merge.
1647
1648 2005-01-10  Ranjit Mathew  <rmathew@hotmail.com>
1649
1650         PR java/19277
1651         * check-init.c (check_init): Take care of references that do not
1652         have an explicit final variable declaration (e.g. array length
1653         access) for pre/post in/de-crement operators.
1654
1655 2005-01-08  Mark Wielaard  <mark@klomp.org>
1656
1657         * parse.y (process_imports): Allocate (and free) original_name only
1658         when not already defined.
1659         * jcf-parse.c (read_class): Free results of find_class() and
1660         lrealpath().
1661         (java_parse_file): Keep pointer to head of file_list and free when
1662         done. Free result of lrealpath().
1663
1664 2005-01-05  Tom Tromey  <tromey@redhat.com>
1665
1666         * gcj.texi (Standard Properties): java.ext.dirs is now used.
1667
1668 2004-12-20  Andrew Haley  <aph@redhat.com>
1669
1670         * typeck.c: Use fold_convert for ints and booleans.
1671
1672 2004-12-17  Andrew Haley  <aph@redhat.com>
1673
1674         PR java/18931
1675         * typeck.c (convert): Use a CONVERT_EXPR when converting to
1676         BOOLEAN_TYPE or CHAR_TYPE.
1677         (convert_to_boolean, convert_to_char) : Remove.
1678         * convert.h (convert_to_boolean, convert_to_char) : Remove.
1679         * expr.c (expand_load_internal): Do type conversion if type is not
1680         as required.
1681
1682 2004-12-13  Danny Smith  <dannysmith@users.sourceforge.net>
1683
1684         PR target/18459
1685         * class.c (emit_register_classes): Use TARGET_USE_JCR_SECTION.
1686         Update comment.
1687
1688 2004-12-07  Andrew Haley  <aph@redhat.com>
1689
1690         PR java/18811:
1691         * jcf-parse.c (load_class): Remove sanity test for missing inner
1692         class file.
1693
1694 2004-12-06  Tom Tromey  <tromey@redhat.com>
1695
1696         * Make-lang.in (JAVA_MANFILES): Added gcj-dbtool.
1697         (java.uninstall): Likewise.
1698         (java.maintainer-clean): Likewise.
1699         (.INTERMEDIATE): Likewise.
1700         (java.install-man): Likewise.
1701         (gcj-dbtool.pod): New target.
1702         * gcj.texi (Code Generation): Document -findirect-dispatch.
1703         (libgcj Runtime Properties): Document
1704         gnu.gcj.precompiled.db.path.
1705         (Top): Link to "Invoking gcj-dbtool".
1706
1707 2004-12-06  Tom Tromey  <tromey@redhat.com>
1708
1709         PR java/14853:
1710         * java-tree.h (extract_field_decl): Declare.
1711         * parse.y (extract_field_decl): Renamed from
1712         strip_out_static_field_access_decl.  No longer static.
1713         * check-init.c (get_variable_decl): Unwrap COMPOUND_EXPRs.
1714
1715 2004-12-03  Tom Tromey  <tromey@redhat.com>
1716
1717         * lang.c (flag_new_verifier): Define.
1718         (java_post_options): Set flag_new_verifier if indirect dispatch
1719         is being used.
1720         * lang.opt (fnew-verifier): Removed.
1721
1722 2004-12-03  Tom Tromey  <tromey@redhat.com>
1723
1724         PR bootstrap/14614:
1725         * Make-lang.in (java.install-common): Only install transformed
1726         gcjh if gcj-cross exists.
1727
1728 2004-12-03  Andrew Haley  <aph@redhat.com>
1729
1730         PR java/18812
1731         * except.c (link_handler): Patch 'outer' field of siblings of the
1732         range we're demoting.
1733
1734 2004-12-03  Andrew Haley  <aph@redhat.com>
1735
1736         PR java/18697
1737         * class.c (layout_class_method): Don't fail to override a method
1738         simply because it has DECL_ARTIFICIAL set.
1739
1740 2004-12-02  Tom Tromey  <tromey@redhat.com>
1741
1742         PR java/16675:
1743         * parse.y (craft_constructor): Special case null_pointer_node.
1744
1745 2004-12-02  Tom Tromey  <tromey@redhat.com>
1746
1747         PR java/18741:
1748         * java-gimplify.c (java_gimplify_expr): Don't call
1749         SET_EXPR_LOCATION unless wrapped tree is an expression.
1750
1751 2004-11-27  Per Bothner  <per@bothner.com>
1752
1753         * jcf-parse.c (set_source_filename):  Improvement to Andrew's fix:
1754         Fix fencepost error in 'i', which got executed one too many times.
1755         Also, fold memcpy into explicit loop, as originally intended.
1756         Also, free temporary 'buf' which otherwise leaks.
1757
1758 2004-11-27  Per Bothner  <per@bothner.com>
1759
1760         * expr.c (build_expr_wfl): Only declare last_file and last_filenode
1761         local static variables if not USE_MAPPED_LOCATION.
1762
1763 2004-11-27  Kazu Hirata  <kazu@cs.umass.edu>
1764
1765         * class.c, decl.c, expr.c: Fix comment typos.
1766
1767 2004-11-26  Andrew Pinski  <pinskia@physics.uc.edu>
1768
1769         PR java/18305
1770         * decl.c (end_java_method): Call
1771         attach_init_test_initialization_flags on all the init_decls.
1772         * parse.y (attach_init_test_initialization_flags): Move to ...
1773         * expr.c (attach_init_test_initialization_flags): here and
1774         support BIND_EXPR also.
1775         * java-tree.h (attach_init_test_initialization_flags): Prototype.
1776         * jcf-parse.c (parse_class_file): Don't disable class init
1777         optimization.
1778
1779 2004-11-25  Joseph S. Myers  <joseph@codesourcery.com>
1780
1781         * gjavah.c, jcf-dump.c, jv-scan.c, jvspec.c: Avoid ` as left quote
1782         in diagnostics.
1783
1784 2004-11-24  Richard Henderson  <rth@redhat.com>
1785
1786         * verify-glue.c (vfy_init_name, vfy_clinit_name, vfy_object_type,
1787         vfy_string_type, vfy_throwable_type): Use ANSI declaration form.
1788
1789 2004-11-24  Tom Tromey  <tromey@redhat.com>
1790
1791         * verify.c (defer_merging): Don't use C++-style comment.
1792         * verify.h (java_opcode): Added java_opcode_end.
1793         * class.c (build_class_ref): Remove C++ comment and old FIXME.
1794
1795         * verify-impl.c (vfy_push_type): Removed bogus "return".
1796         (initialize_stack): Use vfy_alloc and vfy_free.
1797         (verify_instructions_0): Likewise.
1798
1799         * Merged gcj-abi-2-dev-branch to trunk.
1800
1801 2004-11-24  Andrew Haley  <aph@redhat.com>
1802
1803         * jcf-parse.c (parse_class_file): Set file_start_location.
1804
1805 2004-11-10  Tom Tromey  <tromey@redhat.com>
1806
1807         * class.c (make_field_value): Don't call build_static_field_ref.
1808         (build_static_field_ref): Don't emit direct references when using
1809         indirect dispatch.
1810
1811         * gcj.texi (Invoking gij): Document -verbose.  Put -verbose and
1812         -verbose:class into man page synopsis.
1813
1814 2004-11-09  Tom Tromey  <tromey@redhat.com>
1815
1816         * expr.c (build_java_arraystore_check): Still generate check if
1817         element type is itself an array.
1818
1819 2004-11-08  Tom Tromey  <tromey@redhat.com>
1820
1821         * java-tree.h (soft_check_assignment_node): Removed.
1822         (enum java_tree_index): Removed JTI_SOFT_CHECK_ASSIGNMENT_NODE.
1823         * decl.c (java_init_decl_processing): Don't initialize
1824         soft_check_assignment_node.
1825
1826 2004-11-05  Tom Tromey  <tromey@redhat.com>
1827
1828         * class.c (layout_class_methods): Don't add Miranda methods when
1829         using indirect dispatch.
1830
1831 2004-11-05  Bryce McKinlay  <mckinlay@redhat.com>
1832
1833         * class.c (make_class_data): Call emit_assertion_table to set the
1834         'assertion_table' field.
1835         (build_signature_for_libgcj): Move here from expr.c.
1836         (add_assertion_table_entry): New function. Callback for assertion
1837         hashtable traversal.
1838         (emit_assertion_table): New. Take class argument, and generate
1839         assertion table DECL based on the TYPE_ASSERTIONS hashtable.
1840         * decl.c (init_decl_processing): Define assertion_entry_type record.
1841         Push 'assertion_table' class field instead of 'verify'.
1842         * expr.c (type_assertion_eq): Compare 'assertion_code' field.
1843         (type_assertion_hash): Include 'assertion_code' in hash.
1844         (add_type_assertion): Rewritten. Take class and assertion_code
1845         arguments. Add assertions to the TYPE_ASSERTIONS hashtable.
1846         (can_widen_reference_to): Use new add_type_assertion() arguments.
1847         * java-tree.h (java_tree_index): Add JTI_ASSERTION_ENTRY_TYPE,
1848         JTI_ASSERTION_TABLE_TYPE. Remove JTI_VERIFY_IDENTIFIER_NODE.
1849         (verify_identifier_node): Removed.
1850         (assertion_entry_type, assertion_table_type): New.
1851         (ASSERTION_TYPES_COMPATIBLE, ASSERTION_IS_INSTANTIABLE): New. Type
1852         assertion code definitions.
1853         (struct type_assertion): Add assertion_code. Rename 'source_type' and
1854         'target_type' to 'op1' and 'op2'.
1855         (add_type_assertion): Declare.
1856         (lang_printable_name_wls): Remove unused definition.
1857         * verify-glue.c: (vfy_is_assignable_from): New. Call add_type_assertion
1858         to emit runtime assertion.
1859         (vfy_note_stack_type): Clean up non-C90 declarations.
1860         (vfy_note_local_type): Likewise.
1861         * verify.h (vfy_is_assignable_from): Declare.
1862         * verify-impl.c (is_assignable_from_slow): Remove unused function.
1863         (ref_compatible): Rename arguments. Call vfy_is_assignable_from()
1864         instead of is_assignable_from_slow().
1865         (types_compatible): Reinstate ref_compatible() call.
1866
1867 2004-11-04  Tom Tromey  <tromey@redhat.com>
1868
1869         * class.c (build_static_field_ref): Reverted previous patch.
1870
1871         * class.c (build_static_field_ref): Don't emit direct references
1872         when using indirect dispatch.
1873
1874 2004-11-03  Tom Tromey  <tromey@redhat.com>
1875
1876         * expr.c (expand_java_arrayload): Set lhs_type_node.
1877         (expand_java_arraystore): Set rhs_type_node.
1878
1879 2004-11-02  Tom Tromey  <tromey@redhat.com>
1880
1881         * jcf-parse.c (compute_class_name): Use filename length from zip
1882         directory, not strlen.
1883
1884         * expr.c (expand_invoke): Mark new interface methods as abstract.
1885
1886 2004-11-01  Tom Tromey  <tromey@redhat.com>
1887
1888         * verify-impl.c (push_jump): Removed check for uninitialized
1889         objects.
1890         (push_exception_jump): Likewise.
1891         (handle_ret_insn): Likewise.
1892         (handle_jsr_insn): Likewise.
1893         (state_check_no_uninitialized_objects): Removed.
1894
1895         * decl.c (check_local_unnamed_variable): Recognize
1896         promoted-to-int parameters when using the new verifier.
1897         * expr.c (expand_java_arraystore): Explicitly request array type
1898         when using new verifier.
1899         (expand_java_arrayload): Likewise.
1900         (invoke_build_dtable): Don't pass object_type_node as
1901         expression argument to build_java_indirect_ref.
1902         (build_java_check_indexed_type): Do nothing.
1903         (build_java_arraystore_check): Handle case where array doesn't
1904         have array type.
1905         (build_java_array_length_access): Likewise.
1906         (expand_invoke): Handle case where interface overrides a method
1907         from Object.
1908         (pop_type_0): Always succeed for reference types.
1909         (process_jvm_instruction): Don't pop a value in a dead
1910         exception handler.
1911         (pop_arguments): Convert arguments to correct types.
1912
1913 2004-10-29  Andrew Haley  <aph@redhat.com>
1914
1915         * jcf-parse.c (give_name_to_class): Remove line that was
1916         incorrectly merged.
1917
1918 2004-10-29  Andrew Haley  <aph@redhat.com>
1919
1920         * jcf-parse.c (set_source_filename): Add code to build new sfname.
1921
1922 2004-10-20  Andrew Haley  <aph@redhat.com>
1923
1924         * decl.c (end_java_method): Don't expand if flag_syntax_only.
1925
1926 2004-10-26  Tom Tromey  <tromey@redhat.com>
1927
1928         * verify.h (vfy_notify_verified): Removed.
1929         * verify-glue.c (vfy_notify_verified): Removed.
1930
1931 2004-10-26  Tom Tromey  <tromey@redhat.com>
1932
1933         * verify-impl.c (debug_print_state): Declare `i' before code.
1934         (merge_types): Modify `t' when it is null_type.
1935
1936 2004-10-26  Tom Tromey  <tromey@redhat.com>
1937
1938         * verify-impl.c (type_print): Renamed from print.  Now static and
1939         takes an argument.
1940         (debug_print_state): Use type_print.
1941
1942 2004-10-25  Tom Tromey  <tromey@redhat.com>
1943
1944         * expr.c (build_invokeinterface): Compute correct offset for
1945         index into interface methods.
1946
1947 2004-10-20  Tom Tromey  <tromey@redhat.com>
1948
1949         * java-tree.h (verify_jvm_instructions_new): Declare.
1950
1951         * jvspec.c (jvgenmain_spec): Remove -fnew-verifier from cc1
1952         command line.
1953
1954         * verify-impl.c (verify_instructions): Correctly handle wide
1955         types on the stack.
1956         * verify-glue.c (vfy_get_class_name): Use DECL_NAME.
1957         (vfy_get_component_type): Strip pointer types.
1958         (vfy_find_class): Use get_type_from_signature.  Strip pointer
1959         types.
1960         Include java-except.h.
1961
1962 2004-10-20  Bryce McKinlay  <mckinlay@redhat.com>
1963
1964         * verify-impl.c (type_array_elementpop_raw, vfy_pop_type_t,
1965         vfy_push_type_t, set_variable, add_new_state, merge_into,
1966         handle_jsr_insn, branch_prepass, check_class_constant,
1967         check_wide_constant, get_one_type, compute_static_types,
1968         verify_instructions_0): Clean up C99 declarations after statements.
1969
1970 2004-10-20  Tom Tromey  <tromey@redhat.com>
1971
1972         * verify-impl.c (merge_refs): Compare reference against iterator,
1973         not ref2.
1974
1975         * verify-glue.c (vfy_tag): Mask off resolved flag.
1976
1977 2004-10-19  Tom Tromey  <tromey@redhat.com>
1978
1979         * verify-impl.c (verify_instructions): Call vfy_note_local_type.
1980         (init_state_with_stack): Initialize `this_type' in state.
1981         (verify_method): Use debug_print.
1982         * verify-glue.c (vfy_is_primitive): Removed debugging print.
1983         (vfy_note_stack_depth): Reverted last patch.
1984         (vfy_note_stack_type): Note pointer to Object, not Object.
1985         (vfy_note_local_type): Likewise.
1986
1987         * verify.h (vfy_note_instruction_seen): Declare.
1988         * verify-glue.c (verify_jvm_instructions_new): Set
1989         BCODE_EXCEPTION_TARGET on target instruction.
1990         (vfy_note_instruction_seen): New function.
1991         * verify-impl.c (FLAG_INSN_SEEN): New define.
1992         (verify_instructions_0): Set flag on instruction.  Save state for
1993         PC=0 later.
1994         (verify_instructions): Call vfy_note_instruction_seen.
1995
1996         * verify-glue.c (vfy_note_stack_depth): Fix off-by-one error.
1997         (verify_jvm_instructions_new): Call method_init_exceptions,
1998         add_handler, and handle_nested_ranges.
1999         * verify-impl.c (verify_method): Return 1 on success.
2000         (verify_instructions_0): Save the state at PC=0.
2001
2002         * verify-impl.c (init_type_from_class): Set is_resolved and
2003         ref_next on new ref_intersection.
2004         (init_type_from_string): Likewise.
2005
2006 2004-10-15  Bryce McKinlay  <mckinlay@redhat.com>
2007
2008         * expr.c (expand_bytecode): Use verify_jvm_instructions_new
2009         if flag_new_verifier is set.
2010         * java-tree.h (flag_new_verifier): Declare.
2011         * lang.opt (fnew-verifier): New option.
2012         * verify-impl.c: Work around namespace pollution by undef'ing
2013         'current_class'.
2014         (struct verifier_context): Make 'bytecode' const.
2015         (verify_fail_pc): Pass -1 PC argument to vfy_fail.
2016         (types_compatible): For the BC-ABI, always consider reference types
2017         compatible.
2018         (check_class_constant): Use vfr->current_class.
2019         (check_constant): Likewise.
2020         (check_wide_constant): Likewise.
2021         (check_field_constant): Check for 'L' at start of type name.
2022         (get_one_type): Return pointer instead of type. Set type result in
2023         caller via passed type pointer.
2024         (compute_argument_types): Update to use new get_one_type arguments.
2025         (compute_return_type): Likewise.
2026         (make_verifier_context): New. Allocate and initialize 'vfr'.
2027         (free_verifier_context): New. Free 'vfr' and its contents.
2028         (verify_method): Remove ATTRIBUTE_UNUSED. Call make_verifier_context
2029         and free_verifier_context.
2030
2031 2004-10-15  Tom Tromey  <tromey@redhat.com>
2032
2033         * verify-glue.c (vfy_note_local_type): Mark argument as unused.
2034         * verify.h (vfy_fail): Fixed formatting.
2035
2036         * verify-impl.c (vfr): Fixed comment formatting.
2037         (collapse_type): New function.
2038         (verify_instructions): Notify compiler about type map.
2039         * verify.h (vfy_note_stack_depth): Updated.
2040         (vfy_note_stack_type): Likewise.
2041         (vfy_note_local_type): Likewise.
2042         (vfy_unsuitable_type, vfy_return_address_type, vfy_null_type):
2043         Declare.
2044         * verify-glue.c (vfy_note_stack_depth): Correctly size type
2045         state.  Added `method' argument.
2046         (vfy_note_stack_type): Renamed from vfy_note_type.  Added `method'
2047         argument.
2048         (vfy_note_local_type): New function.
2049         (vfy_unsuitable_type): Likewise.
2050         (vfy_return_address_type): Likewise.
2051         (vfy_null_type): Likewise.
2052
2053         * verify.h (VFY_IN_GCC): Removed.
2054         (VFY_WANT_TYPEMAP): Removed.
2055         * verify-impl.c (verify_instructions_0): Removed useless "\".
2056         (struct state) <next>: Uncomment.
2057
2058 2004-10-13  Bryce McKinlay  <mckinlay@redhat.com>
2059
2060         * verify-impl.c: Formatting fixes. Reformat C++-style comments to
2061         C-style.
2062
2063 2004-10-06  Bryce McKinlay  <mckinlay@redhat.com>
2064
2065         * Make-lang.in (verify.o): Re-enabled this target.
2066         * verify-glue.c (vfy_get_interface_count): Add ATTRIBUTE_UNUSED.
2067         (vfy_get_interface): Likewise.
2068         (verify_jvm_instructions_new): Renamed from verify_jvm_instructions.
2069         * verify.h (verify_jvm_instructions_new): Declare.
2070         * verify-impl.c (free_state): Temporarily comment out unused
2071         function.
2072
2073 2004-10-06  Tom Tromey  <tromey@redhat.com>
2074
2075         * java-tree.h (JV_STATE_READ): New enum value.
2076
2077 2004-10-06  Bryce McKinlay  <mckinlay@redhat.com>
2078
2079         * verify.h: New file.
2080
2081 2004-10-05  Bryce McKinlay  <mckinlay@redhat.com>
2082
2083         * verify-impl.c, verify-glue.c, verify.h: New files.
2084         * Make-lang.in: Add rules for verify-impl.o and verify-glue.o.
2085
2086 2004-09-24  Andrew Haley  <aph@redhat.com>
2087
2088         * decl.c (check_local_unnamed_variable): Always use the PARM_DECL
2089         for a slot if it's of pointer type.
2090
2091 2004-09-14  Tom Tromey  <tromey@redhat.com>
2092
2093         * class.c (make_class_data): Correctly initialize "state" field.
2094         Initialize "engine" field.
2095         * decl.c (java_init_decl_processing): Add "engine" field.
2096
2097 2004-09-10  Andrew Haley  <aph@redhat.com>
2098
2099         PR java/12760
2100         * expr.c (build_invokeinterface): Use fast method for interface
2101         dispatch.
2102         * java-tree.h (enum java_tree_index): Add JTI_ITABLE_TYPE,
2103         JTI_ITABLE_PTR_TYPE.
2104         (struct lang_type): Add  itable_methods, itable_decl, itable_syms_decl.
2105         (emit_symbol_table): Add new arg, element_size.
2106         * decl.c (java_init_decl_processing): Initialize Class.itable.
2107         * class.c (GEN_TABLE): New macro.
2108         (gen_indirect_dispatch_tables): Use it.  Add itable.
2109         (make_class_data): Add new arg for emit_symbol_table().
2110         Emit itable.
2111         (add_miranda_methods): Make sure search_class has been parsed.
2112         (emit_symbol_table): Add new arg, element_size.
2113
2114 2004-09-06  Andrew Haley  <aph@redhat.com>
2115
2116         * verify.c (merge_types): Return Object for all merges of
2117         interfaces.
2118         * expr.c (add_type_assertion): Don't generate assertions when
2119         source type is array of Object.
2120
2121 2004-09-03  Andrew Haley  <aph@redhat.com>
2122
2123         * class.c (finish_class): Nullify TYPE_VERIFY_METHOD.
2124
2125         * lang.c (java_post_options): Force flag_verify_invocations if
2126         we're not using indirect dispatch.
2127
2128         * expr.c (pop_type_0): Move test for interfaces before call to
2129         can_widen_reference_to().
2130         (build_signature_for_libgcj): Remove generation of canonical array
2131         type.
2132         (add_type_assertion): Canonicalize both arrays.
2133         Don't assert that type X can be assigned to Object.
2134         Don't assert that type X an be assigned to type X.
2135         Don't assert that Object can be assigned to type X.
2136         (can_widen_reference_to): Warn whenever we generate an assertion.
2137         (process_jvm_instruction): Use throwable_type_node for the type of
2138         an exception class.
2139
2140 2004-09-01  Andrew Haley  <aph@redhat.com>
2141
2142         * decl.c (java_init_decl_processing): Change
2143         verify_identifier_node to "__verify".
2144         * expr.c (add_type_assertion): Use verify_identifier_node for name.
2145         * java-tree.h (verify_identifier_node): Change to "__verify".
2146
2147         * expr.c (build_signature_for_libgcj): New function.
2148         (add_type_assertion): Use it to construct signatures for
2149         source_type and target_type.
2150
2151 2004-08-27  Andrew Haley  <aph@redhat.com>
2152
2153         * java-tree.h (enum java_tree_index): Add JTI_VERIFY_IDENTIFIER_NODE.
2154         (verify_identifier_node): New.
2155         (TYPE_VERIFY_METHOD): New.
2156         (struct type_assertion): New type.
2157         * expr.c (type_assertion_eq): New function.
2158         (type_assertion_hash): New function.
2159         (add_type_assertion): New function.
2160         (can_widen_reference_to): Call add_type_assertion().
2161         * decl.c (java_init_decl_processing): Add verify_identifier_node.
2162         * class.c (make_class_data): Initialize TYPE_VERIFY_METHOD (type).
2163         (finish_class): Output TYPE_VERIFY_METHOD (type).
2164
2165         * decl.c (end_java_method): Nullify unused fields.
2166
2167 2004-08-17  Andrew Haley  <aph@redhat.com>
2168
2169         * verify.c (defer_merging): Quieten.
2170         * jcf-parse.c (load_class): Only try to open a class file if it's
2171         java.lang.Object or if it's part of the current compilation.
2172         Check that the class we just tried to load is the class we just
2173         loaded.  Quieten.
2174         (java_parse_file): Set flag_verify_invocations off if we're
2175         compiling from .class.
2176         (parse_zip_file_entries): Abort if we try to read a dummy class.
2177         * expr.c (can_widen_reference_to): Quieten.
2178         (build_invokevirtual): Abort if we try to invokevirtual an
2179         interface.
2180         (expand_invoke): Don't build a non-interface call to an interface.
2181         (build_instanceof): Don't do premature optimization if
2182         flag_verify_invocations is not set.
2183         * class.c (set_super_info): Disable code that inherits TYPE_DUMMY
2184         from superclass.
2185         (build_static_field_ref): Add correct type conversion for
2186         field_address.
2187         (add_miranda_methods): Disable generation of Miranda methods for
2188         dummy classes.
2189         (layout_class_method): Don't complain about non-static method
2190         overrides static method with dummy classes.
2191
2192 2004-08-13  Tom Tromey  <tromey@redhat.com>
2193
2194         * class.c (build_static_field_ref): Re-enable atable lookups for
2195         static fields.
2196
2197         * parse.y (strip_out_static_field_access_decl): Indentation fix.
2198
2199 2004-08-11  Tom Tromey  <tromey@redhat.com>
2200
2201         * gcj.texi (libgcj Runtime Properties): Document new properties.
2202
2203 2004-08-06  Andrew Haley  <aph@redhat.com>
2204
2205         * jcf-parse.c (load_class): Check that we really have loaded the
2206         class we're looking for.
2207
2208 2004-07-19  Andrew Haley  <aph@redhat.com>
2209
2210         * verify.c (verify_jvm_instructions): Comment change only.
2211
2212         * typeck.c (build_java_array_type): Add size field to array name.
2213
2214         * java-tree.h (LOCAL_SLOT_P): New.
2215         (update_aliases): Add PC argument.
2216         (pushdecl_function_level): New function.
2217
2218         * java-gimplify.c (java_gimplify_expr): Handle VAR_DECL,
2219         MODIFY_EXPR, and SAVE_EXPR.
2220         (java_gimplify_modify_expr): New function.
2221
2222         * expr.c (push_type_0): Call find_stack_slot() to create temporary.
2223         (expand_iinc): Pass PC to update_aliases().
2224         (STORE_INTERNAL): Likewise.
2225         (process_jvm_instruction): Likewise.
2226
2227         * decl.c (base_decl_map): New variable.
2228         (uniq): New variable.
2229         (update_aliases): Rewrite with more thorough checking.
2230         (debug_variable_p): New function.
2231         (push_jvm_slot): Don't initialize local variable.  Don't pushdecl.
2232         (check_local_named_variable): Delete whole function.
2233         (initialize_local_variable): New function.
2234         (check_local_unnamed_variable): Add checks and comments.
2235         (find_local_variable): Rewrite.
2236         (java_replace_reference): New function.
2237         (function_binding_level): New variable.
2238         (pushdecl_function_level): New function.
2239         (maybe_pushlevels): Set DECL_LOCAL_END_PC.
2240         (maybe_pushlevels): Call pushdecl() on each of the new decls.
2241         (start_java_method): Reset uniq.  Create base_decl_map.  Set
2242         function_binding_level.
2243         (end_java_method): Null unused fields to save memory.
2244
2245 2004-06-29  Andrew Haley  <aph@redhat.com>
2246
2247         * except.c (expand_start_java_handler): Push a new binding level.
2248         Don't build a TRY_CATCH_EXPR now, we'll do it later.  Call
2249         register_exception_range() to register where we'll do it.
2250         (expand_end_java_handler): Remove old bogus code.  Replace with
2251         new logic that simply builds TRY_CATCH_EXPRs and inserts them at
2252         the top of the expression we're curently building.
2253         (maybe_end_try): Delete.
2254         * decl.c (binding_level.exception_range): New field.
2255         (clear_binding_level): Add field exception_range.  Reformat.
2256         (poplevel): Call expand_end_java_handler().
2257         (poplevel): Call java_add_stmt only if functionbody is false.
2258         (maybe_poplevels): Don't call maybe_end_try() from here.
2259         (end_java_method): Clear no longer used trees in function decl.
2260         (register_exception_range): New function.
2261         * java-tree.h (register_exception_range, struct eh_range): Declare.
2262
2263 2004-06-22  Andrew Haley  <aph@redhat.com>
2264
2265         * class.c (gen_indirect_dispatch_tables): Set the DECL_OWNER of
2266         the otable.
2267         * check-init.c (get_variable_decl): Teach check-init about
2268         FIELD_DECLs addressed via the otable.
2269         * jcf-parse.c (load_class): Check CLASS_LOADED_P, not
2270         CLASS_PARSED_P.
2271
2272 2004-05-28  Andrew Haley  <aph@redhat.com>
2273
2274         * jcf-parse.c (load_class): Don't try to read a class that we've
2275         already read.
2276
2277         * expr.c (build_invokeinterface): Use the old-fashioned way of
2278         doing indirect dispatch: look up interfaces by name.
2279         * java-tree.h (enum java_tree_index): Add
2280         JTI_SOFT_LOOKUPINTERFACEMETHODBYNAME_NODE
2281         * decl.c (java_init_decl_processing): Add
2282         soft_lookupinterfacemethodbyname_node.
2283
2284         * gjavah.c (print_method_info): Final methods have vtable entries,
2285         so gjavah needs to output them.
2286         * class.c (layout_class_method): Generate vtable entries for final
2287         methods.
2288         * parse.y (invocation_mode): Use INVOKE_VIRTUAL for indirect
2289         dispatch, even if a method is final.
2290
2291 2004-05-25  Andrew Haley  <aph@redhat.com>
2292
2293         * class.c (build_symbol_entry): Convert the names of constructors
2294         to init_identifier_node when generating an entry for the indirect
2295         dispatch table.
2296
2297         * expr.c (build_known_method_ref): Generate indirect calls for
2298         all methods marked DECL_EXTERNAL or TREE_PUBLIC.
2299
2300 2004-05-24  Andrew Haley  <aph@redhat.com>
2301
2302         * expr.c (build_known_method_ref): Make sure ARRAY_REF access to
2303         atable element is of the right type.
2304
2305         * class.c (build_static_field_ref): Cast pointer to correct type
2306         for field.
2307
2308 2004-04-20  Bryce McKinlay  <mckinlay@redhat.com>
2309
2310         * Merged with HEAD as of 20040514. Diff against
2311         gcj-abi-2-merge-20040514.
2312
2313 2004-04-16  Andrew Haley  <aph@redhat.com>
2314
2315         * verify.c (check_pending_block): Disable subroutine checks.
2316         (defer_merging): New function.
2317         (merge_types): If types are dummy, use defer_merging to combine them.
2318         (verify_jvm_instructions): If invocation is invokeinterface and
2319         target is dummy, assume target really is an interface.
2320
2321         * parse.y (patch_invoke): Break out call to java_create_object.
2322
2323         * lang.c (flag_verify_invocations): New.
2324
2325         * jcf-parse.c (load_class): If we've already failed to load a
2326         class, don't try again.
2327         (load_class): If we can't find a .class file, don't fail, but emit
2328         a warning.
2329         (parse_class_file): Don't act on dummy methods.
2330
2331         * java-tree.h (flag_verify_invocations): New.
2332         (TYPE_DUMMY): New.
2333         (lang_type.dummy_class): New field.
2334         (java_create_object): New function.
2335         (METHOD_DUMMY): New.
2336
2337         * expr.c (build_field_ref): Widen field offset.
2338         (pop_type_0): If the type in stack_type_map is a TREE_LIST, check
2339         that each of its elements is compatible with the one we're
2340         popping.
2341         (pop_type_0): Issue a warning to say that we need to generate a
2342         runtime check.
2343         (java_create_object): New function.
2344         (build_field_ref): Only generate hard refs if we're not using
2345         indirect dispatch.
2346         (expand_java_field_op): If we're using !verify_invocations and we
2347         see a missing field, generate a decl for it.
2348
2349         (expand_invoke): If a class doesn't have the method we seek and
2350         we're using !flag_verify_invocations, generate a decl for the
2351         method now.
2352
2353         (build_known_method_ref): Always use indirect dispatch via the
2354         atable for static methods.
2355
2356         (expand_java_NEW): Break out object creation into new function,
2357         java_create_object.
2358
2359         (can_widen_reference_to): Issue a warning to say that we need to
2360         generate a runtime check.
2361
2362         * class.c (set_super_info): Inherit TYPE_DUMMY from sureclass.
2363         (make_method_value): Also use index for interfaces.
2364         (make_class_data): Skip dummy field for inherited data.
2365         Don't build method array for dummy methods.
2366         Set size_in_byte to -1 when using inirect dispatch
2367         Don't build a hard class ref if we don't have a hard ref to our
2368         superclass, or if we're using inirect dispatch.
2369         Null out dispatch tables.
2370
2371         (layout_class_method): Don't complain about non-static method
2372         overrides static method is method is artificial.
2373
2374         (build_static_field_ref): Disable atable references to static
2375         fields for the time being.
2376
2377         (layout_class_methods): Check for CLASS_INTERFACE as
2378         well as CLASS_ABSTRACT.
2379
2380 2004-11-24  Steven Bosscher  <stevenb@suse.de>
2381
2382         * class.c (make_class_data): Don't check flag_inline_functions.
2383         * lang.c (flag_really_inline): Remove unused flag.
2384         (java_handle_option): Don't set it here.  Remove special handling
2385         of flag_inline_functions for Java.
2386         (java_init): Don't set flag_inline_trees here.  Already done...
2387         (java_post_options): ...here.  Don't clear flag_inline_functions.
2388
2389 2004-11-24  Steven Bosscher  <stevenb@suse.de>
2390
2391         * java-gimplify.c (java_gimplify_labeled_block_expr): New function.
2392         (java_gimplify_exit_block_expr): New function.
2393         (java_gimplify_expr): Use them to gimplify EXIT_BLOCK_EXPR and
2394         LABELED_BLOCK_EXPR.
2395         * java-tree.def (LABELED_BLOCK_EXPR): Moved from tree.def.
2396         (EXIT_BLOCK_EXPR): Likewise.
2397         * java-tree.h (LABELED_BLOCK_LABEL): Moved from tree.h.
2398         (LABELED_BLOCK_BODY): Likewise.
2399         (EXIT_BLOCK_LABELED_BLOCK): Likewise.
2400         * jcf-write.c (generate_bytecode_insns): Don't handle the unused
2401         EXIT_BLOCK_RETURN operand.  Use EXIT_BLOCK_LABELED_BLOCK instead of
2402         TREE_OPERAND.
2403         * lang.c (java_tree_inlining_walk_subtrees): Handle EXIT_BLOCK_EXPR.
2404         (java_dump_tree): Use LABELED_BLOCK_LABEL, LABELED_BLOCK_BODY, and
2405         EXIT_BLOCK_LABELED_BLOCK instead of TREE_OPERAND.  Don't handle the
2406         second operand of EXIT_BLOCK_EXPR.
2407         * parse.y (find_expr_with_wfl): Use LABELED_BLOCK_BODY instead of
2408         TREE_OPERAND.
2409         (build_bc_statement): Use build1 to build EXIT_BLOCK_EXPR nodes.
2410
2411 2004-11-23  Ben Elliston  <bje@au.ibm.com>
2412
2413         * xref.h (xref_flag_value): Remove.
2414         (xref_set_data, xref_get_data): Likewise.
2415         (xref_set_current_fp): Likewise.
2416         (XREF_NONE): Likewise.
2417         (XREF_GET_DATA): Likewise.
2418         * xref.c (xref_flag_value): Remove.
2419         (xref_set_data, xref_get_data): Likewise.
2420         (xref_set_current_fp): Likewise.
2421
2422 2004-11-23  Ben Elliston  <bje@au.ibm.com>
2423
2424         * gjavah.c (output_directory): Make static.
2425         (temp_directory): Likewise.
2426
2427 2004-11-15  Tom Tromey  <tromey@redhat.com>
2428
2429         * decl.c (instn_ptr_type_node): Removed.
2430         (lineNumbers_ptr_type_node): Removed.
2431         (jint_type): Removed.
2432         (jint_ptr_type): Removed.
2433
2434 2004-11-09  Andrew Pinski  <pinskia@physics.uc.edu>
2435
2436         PR java/15576
2437         * check-init.c (check_init): Ignore DECL_EXPR.
2438         * expr.c (always_initialize_class_p): Reenable.
2439         (build_class_init): Use a variable to store the decl.  Also use
2440         boolean_false_node instead of integer_zero_node.
2441         * parse.y (attach_init_test_initialization_flags): Add a decl_expr
2442         to the block.
2443
2444 2004-11-08  Tom Tromey  <tromey@redhat.com>
2445
2446         PR java/16843:
2447         * gjavah.c (HANDLE_END_FIELD): Call print_field_info when
2448         generating a JNI header.
2449         (print_field_info): Handle JNI headers.
2450         (jni_print_float): Likewise.
2451         (jni_print_double): Likewise.
2452
2453 2004-11-08  Andrew Pinski  <pinskia@physics.uc.edu>
2454
2455         * decl.c (end_java_method): Remove duplicated code.
2456
2457 2004-11-06  Zack Weinberg  <zack@codesourcery.com>
2458             Gerald Pfeifer  <gerald@pfeifer.com>
2459
2460         * lex.h (HAVE_ICONV): Undefine if we do not have HAVE_ICONV_H
2461         as well.
2462
2463 2004-11-02  Bryce McKinlay  <mckinlay@redhat.com>
2464
2465         PR java/17265
2466         * class.c: Reinstate 2004-08-18 patch.
2467         (make_local_function_alias): Don't create an alias for extern (native)
2468         functions.
2469
2470 2004-10-22  Eric Botcazou  <ebotcazou@libertysurf.fr>
2471
2472         PR java/17265
2473         * class.c (make_local_function_alias): Revert 2004-08-18 change.
2474         (make_method_value): Likewise.
2475
2476 2004-10-21  Andrew Haley  <aph@redhat.com>
2477
2478         PR java/18091:
2479         * jcf-parse.c (set_source_filename): Add code to build new sfname.
2480
2481 2004-10-20  Andrew Haley  <aph@redhat.com>
2482
2483         * decl.c (end_java_method): Don't expand if flag_syntax_only.
2484         Remove duplicated code block.
2485
2486 2004-10-18  Steven Bosscher  <stevenb@suse.de>
2487
2488         * Make-lang.in (java/parse.o-warn, java/parse-scan.o-warn):
2489         New rules to work around old Bison warnings.
2490
2491 2004-10-17  Steven Bosscher  <stevenb@suse.de>
2492
2493         * class.c (ident_subst): Always alloca buffer.
2494         * java-opcodes.h (LAST_AND_UNUSED_JAVA_OPCODE): Add this dummy
2495         opcode after including javaop.def.
2496         * jcf-dump.c (CHECK_PC_IN_RANGE): Return 0 from the arm of the
2497         conditional expression that exits, to avoid warnings.
2498         * verify.c (CHECK_PC_IN_RANGE): Mark the __GNUC__ definition as
2499         a user of an extension.
2500         * win32-host.c: Move check down to have non-empty file when
2501         WIN32 is not defined.
2502
2503         * Make-lang.in (java-warn): Add STRICT_WARN.
2504         (java/jcf-io.o-warn): Don't have Werror for this file.
2505         * jcf-io.c (caching_stat): Add FIXME for non-POSIX scandir use.
2506
2507 2004-10-16  Hans-Peter Nilsson  <hp@bitrange.com>
2508
2509         * expr.c (expr_add_location): Move declaration to before all
2510         statements.
2511         * parse.y (java_expand_classes): Ditto.
2512         * lex.c (java_peek_unicode): Ditto.
2513
2514 2004-10-16  Ranjit Mathew  <rmathew@hotmail.com>
2515
2516         * check-init.c: Use %<, %> and %q for quoting in diagnostics,
2517         if possible, else convert `foo' to 'foo'.
2518         * class.c: Likewise.
2519         * decl.c: Likewise.
2520         * expr.c: Likewise.
2521         * jcf-io.c: Likewise.
2522         * jcf-parse.c: Likewise.
2523         * lang.c: Likewise.
2524         * lex.c: Likewise.
2525         * parse.h: Likewise.
2526
2527 2004-10-16  Ranjit Mathew  <rmathew@hotmail.com>
2528
2529         * parse.y (parse_warning_context): Remove ATTRIBUTE_PRINTF_2 and
2530         rename parameter 'msg' to 'msgid' in function declaration.
2531         (issue_warning_error_from_context): Likewise.
2532         (yyerror): Rename parameter 'msg' to 'msgid'.
2533         (all over): Use new quoting style for diagnostics.
2534
2535 2004-10-15  Kazu Hirata  <kazu@cs.umass.edu>
2536
2537         * boehm.c, builtins.c, java-except.h, jcf-io.c, jcf-path.c,
2538         jcf.h, lang-specs.h, lex.c, lex.h, resource.c, win32-host.c:
2539         Update copyright.
2540
2541 2004-10-14  Matt Austern  <austern@apple.com>
2542
2543         * lang.c (java_tree_inlining_walk_subtrees): Last arg is struct
2544         pointer_set_t* now.
2545
2546 2004-10-13  Tom Tromey  <tromey@redhat.com>
2547
2548         PR java/15578:
2549         * lang.opt (--extdirs): Document.
2550         * jvspec.c (lang_specific_driver): Recognize -encoding and
2551         -extdirs.
2552
2553 2004-10-06  Ulrich Weigand  <uweigand@de.ibm.com>
2554
2555         * parse.y (issue_warning_error_from_context): Use va_list *
2556         instead of va_list parameter.
2557         (parse_error_context): Update call.
2558         (parse_warning_context): Likewise.
2559
2560 2004-10-05  Zack Weinberg  <zack@codesourcery.com>
2561
2562         * parse.y, parse-scan.y: Add list of diagnostic messages to
2563         insulate translation template from version of yacc/bison used
2564         to compile the grammar.
2565
2566 2004-10-05  Ranjit Mathew  <rmathew@hotmail.com>
2567
2568         Prepare for %q, %< and %> in diagnostic message strings.
2569         * java-tree.h (parse_error_context): remove ATTRIBUTE_PRINTF_2.
2570         Name second parameter 'msgid'.
2571         * parse.y: Additionally include pretty-print.h and diagnostic.h.
2572         (issue_warning_error_from_context): Use pretty-printer functions
2573         instead of vsprintf for constructing formatted messages. Rename
2574         parameter 'msg' to 'msgid'.
2575         (parse_error_context): Rename parameter 'msg' to 'msgid'.
2576         (parse_warning_context): Likewise.
2577
2578 2004-10-05  Andrew Haley  <aph@redhat.com>
2579
2580         PR java/17779
2581         * jcf-parse.c (parse_zip_file_entries): If a class has a
2582         superclass and a TYPE_SIZE of zero, lay it out.
2583
2584 2004-09-30  Andrew Haley  <aph@redhat.com>
2585
2586         PR java/17733
2587         * jcf-parse.c (compute_class_name): Rewrite.
2588
2589 2004-10-01  Jan Hubicka  <jh@suse.cz>
2590
2591         * java.c (java_expand_body): Update call of tree_rest_of_compilation.
2592
2593 2004-10-01  Kazu Hirata  <kazu@cs.umass.edu>
2594
2595         * lex.c: Fix a comment typo.
2596
2597 2004-10-01  Kazu Hirata  <kazu@cs.umass.edu>
2598
2599         * java-tree.h: Fix a comment typo.
2600
2601 2004-09-30  Per Bothner  <per@bothner.com>
2602
2603         Simplify lexer.  Implement --enable-mapped-location support.
2604         * jcf-parse.c (parse_class_file):  Use linemap_line_start.
2605         (parse_source_file_1): Pass filename as extra parameter, so we can call
2606         linemap_add and set input_location here, rather than in both callers.
2607         (read_class): Pass copied filename to parse_source_file_1.
2608         Don't initialize wfl_operator - only needed for source compilation.
2609         (read_class, jcf_parse):  Call linemap_add with LC_LEAVE.
2610         * lex.h:  Remove a bunch of debugging macros.
2611         * lex.h (struct_java_line, struct java_error):  Remove types.
2612         (JAVA_COLUMN_DELTA):  Remove - use java_lexer.next_colums instead.
2613         (struct java_lc_s):  Remove prev_col field.
2614         (struct java_lexer):  New fields next_unicode, next_columns, and
2615         avail_unicode.  New position field, and maybe token_start field.
2616         Don't need hit_eof field - use next_unicode == -1 instead.
2617         (JAVA_INTEGERAL_RANGE_ERROR):  Rename to JAVA_RANGE_ERROR.
2618         (JAVA_RANGE_ERROR, JAVA_FLOAT_ANGE_ERROR):  Update accordingly.
2619         * parse.h:  Various changes for USE_MAPPED_LOCATION.
2620         (EXPR_WFL_EMIT_LINE_NOTE): XXX
2621         (BUILD_EXPR_WFL, EXPR_WFL_ADD_COL): Remove no-longer-used macros.
2622         (struct parser_ctxt):  New file_start_location field.
2623         Remove p_line, c_line fields since we no longer save lines.
2624         Remove elc, lineno, and current_jcf fields - no longer used.
2625         * parse.y:  Updates for USE_MAPPED_LOCATION and new lexer.
2626         Don't use EXPR_WFL_ADD_COL since that isn't trivial with
2627         source_location and is probably not needed anymore anyway.
2628         Use new expr_add_Location function.
2629         (SET_EXPR_LOCATION_FROM_TOKEN):  New convenience macro.
2630         (java_pop_parser_context):  Minor cleanup.
2631         (java_parser_context_save_global, java_parser_context_restore_global,
2632         java_pop_parser_context):  Save/restore input_location as a unit.
2633         (issue_warning_error_from_context):  If USE_MAPPED_LOCATION take
2634         a source_location instead of a wfl context node.
2635         (check_class_interface_creation):  input_filename is not addressable.
2636         (create_artificial_method):  Calling java_parser_context_save_global
2637         and java_parser_context_restore_global is overkill.  Instead,
2638         temporarily set input_location from class decl.
2639         (java_layout_seen_class_methods): Set input_location from method decl.
2640         (fix_constructors): Make more robust if no EXPR_WITH_FILE_LOCATION.
2641         (finish_loop_body):  Likewise.
2642         * lex.c: Updates for USE_MAPPED_LOCATION.  Use build_unknwon_wfl.
2643         (java_sprint_unicode):  Take a character, not index in line.
2644         (java_sneak_uncode):  Replaced by java_peek_unicode.
2645         (java_unget_unicode):  No longer used.
2646         (java_allocate_new_line. java_store_unicode):  Removed, since we
2647         no longer remember "lines".
2648         (java_new_lexer):  Update for new data structures.
2649         (java_read_char):  Move unget_value checking to java_read_unicode.
2650         (java_get_unicode, java_peek_unicode, java_next_unicode): New more
2651         efficient functions that are used directly when lexing.
2652         (java_read_unicode_collapsing_terminators):  No longer needed.
2653         (java_parse_end_comment, java_parse_escape_sequence, do_java_lex):
2654         Re-organize to use java_peek_unicode to avoid java_unget_unicode.
2655         (java_parse_escape_sequence):  Rewrite to be simpler / more efficient.
2656         (do_java_lex):  Lots of movings around to avoid java_unget_unicode,
2657         combine switch branches, and test for common token kinds earlier.
2658         (java_lex_error):  Rewrite.
2659         * jv-scan.c (expand_location): New function, copied from tree.c.
2660         (main): Set ctxp->filename instead of setting input_filename directly.
2661
2662 2004-09-30  Per Bothner  <per@bothner.com>
2663
2664         More cleanup for --enable-mapped-location.
2665         * class.c (push_class):  If USE_MAPPED_LOCATION don't set
2666         input_location here.  Instead do it in give_name_to_class.
2667         (build_class_ref):  Set DECL_ARTIFICIAL, for the sake of dwarf2out.
2668         * expr.c (expand_byte_code): Call linemap_line_start.
2669         * expr.c (build_expr_wfl):  If USE_MAPPED_LOCATION, change final
2670         parameters to a source_location.  Don't need EXPR_WFL_FILENAME_NODE.
2671         (expr_add_location):  New function, if USE_MAPPED_LOCATION.
2672         * class.c (maybe_layout_super_class):  Adjust build_expr_wfl call
2673         to USE_MAPPED_LOCATION case.
2674
2675         * java-tree.h (JAVA_FILE_P, ZIP_FILE_P):  Remove unused macros.
2676         * jcf-parse.c (java_parse_file): Don't set input_filename.
2677         Use IS_A_COMMAND_LINE_FILENAME_P to check for duplicate filenames.
2678         Create a list of TRANSLATION_UNIT_DECL.
2679         (current_file_list):  Is now a TRANSLATION_UNIT_DECL chain.  The
2680         reason is so we can set a DECL_SOURCE_LOCATION for each file.
2681         (java_parse_file):  Don't set unused ZIP_FILE_P, JAVA_FILE_P..
2682         Create line-map LC_ENTER/LC_LEAVE entries for archive itself.
2683         (file_start_location):  New static.
2684         (set_source_filename):  Avoid extra access to input_filename macro.
2685         Concatenate new name with class's package prefix.
2686         (set_source_filename, give_name_to_class): Update.
2687         (give_name_to_class):  Set class's "line 0" input_location here.
2688         (parse_class_file):  Set input_location as a unit.
2689
2690         * jcf-parse.c (load_class): Sanity test if missing inner class file.
2691
2692 2004-09-29  Per Bothner  <per@bothner.com>
2693
2694         * java-tree.h:  Redefine some macros and add some declaration
2695         to handle the USE_MAPPED_LOCATION case.
2696         * parse.h (EXPR_WFL_QUALIFICATION):  Use operand 1, not 2.
2697         * java-tree.h (EXPR_WFL_FILENAME_NODE):  Use operand 2, not 1.
2698         * java-tree.def (EXPR_WITH_FILE_LOCATION): Only need two operands in
2699         USE_MAPPED_LOCATION case, since EXPR_WFL_FILENAME_NODE is gone.
2700
2701         * check-init.c (check_init): Handle USE_MAPPED_LOCATION case.
2702         * decl.c (finish_method, java_add_stmt): Likewise.
2703         * java-gimplify.c (java-gimplify.c):  Likewise.
2704         * jcf-write.c (generate_bytecode_insns):  Likewise.
2705         * lang.c (java_post_options): Likewise - call linemap_add.
2706
2707 2004-09-29  Andrew Haley  <aph@redhat.com>
2708
2709         PR java/17007
2710         * parse.y (patch_binop): Don't mess with the TREE_SIDE_EFFECTS of the
2711         result of TRUNC_MOD_EXPR.
2712         (patch_unaryop): Likewise for CONVERT_EXPR, which may throw.
2713         * decl.c (java_init_decl_processing): Mark
2714         soft_lookupinterfacemethod_node and soft_instanceof_node pure.
2715
2716 2004-09-28  Tom Tromey  <tromey@redhat.com>
2717
2718         PR java/15710:
2719         * class.c (add_miranda_methods): Load superinterface if not
2720         already loaded.
2721
2722 2004-09-28  Andrew Haley  <aph@redhat.com>
2723
2724         PR java/17586
2725         * jcf-parse.c (load_class): Don't try to read a class that we've
2726         already read.
2727
2728 2004-09-28  Andrew Haley  <aph@redhat.com>
2729
2730         * jcf-parse.c (load_class): Back out previous broken patch.
2731
2732 2004-09-28  Andrew Haley  <aph@redhat.com>
2733
2734         PR java/17586
2735         * jcf-parse.c (load_class): Don't try to read a class that we've
2736         already read.
2737         Check that we really did read the right class.
2738
2739 2004-09-25  Tom Tromey  <tromey@redhat.com>
2740
2741         PR java/17500:
2742         * parse.y (create_artificial_method): Use add_method_1.
2743
2744 2004-09-25  Kazu Hirata  <kazu@cs.umass.edu>
2745
2746         * expr.c, jcf-dump.c, parse-scan.y, parse.y: Fix
2747         comment typos.
2748         * gcj.texi: Fix typos.
2749
2750 2004-09-24  Tom Tromey  <tromey@redhat.com>
2751
2752         PR java/15656:
2753         * parse.y (class_instance_creation_expression): Set `$$' to NULL
2754         in error parts of rule.
2755         (unary_expression): Don't call error_if_numeric_overflow when $1
2756         is NULL.
2757
2758 2004-09-24  Tom Tromey  <tromey@redhat.com>
2759
2760         PR java/16789:
2761         * parse.y (resolve_qualified_expression_name): Set
2762         CAN_COMPLETE_NORMALLY on first call when chaining static calls.
2763         * expr.c (force_evaluation_order): Check for empty argument list
2764         after stripping COMPOUND_EXPR.
2765
2766 2004-09-23  Andrew Haley  <aph@redhat.com>
2767
2768         PR java/16927:
2769         * parse.y (java_complete_lhs): Call patch_string() on Operand 1 of
2770         COND_EXPRs.
2771
2772 2004-09-23  Tom Tromey  <tromey@redhat.com>
2773
2774         PR java/17329:
2775         * java-gimplify.c (java_gimplify_expr) <SAVE_EXPR>: Ignore case
2776         where operand is null.
2777
2778 2004-09-23  Tom Tromey  <tromey@redhat.com>
2779
2780         PR java/17380:
2781         * parse.y (not_accessible_p): Allow access to protected members
2782         even when class is not static.
2783
2784 2004-09-22  Kelley Cook  <kcook@gcc.gnu.org>
2785
2786         * Make-lang.in: Revert the gcc-none.o change.
2787
2788 2004-09-22  Nathan Sidwell  <nathan@codesourcery.com>
2789
2790         * parse.y (patch_anonymous_class): VEC_space returns true if there
2791         is space.
2792
2793 2004-09-21  Matt Austern  <austern@apple.com>
2794
2795         Fix bootstrap.
2796         * gjavah.c (free_method_name_list): Fix function definition so
2797         it's a proper C prototype.
2798
2799 2004-09-21  Tom Tromey  <tromey@redhat.com>
2800
2801         PR java/17575:
2802         * gjavah.c (free_method_name_list): New method.
2803         (main): Call it.
2804
2805 2004-09-17  Jeffrey D. Oldham  <oldham@codesourcery.com>
2806             Zack Weinberg  <zack@codesourcery.com>
2807
2808         * java-tree.def: Use tree_code_class enumeration constants
2809         instead of code letters.
2810         * java-gimplify.c, jcf-write.c, lang.c, parse.y: Update for
2811         new tree-class enumeration constants.
2812
2813 2004-09-13  Tom Tromey  <tromey@redhat.com>
2814
2815         PR java/17216:
2816         * class.c (layout_class_method): Put synthetic methods into the
2817         vtable.
2818
2819 2004-09-11  Andrew Pinski  <apinski@apple.com>
2820
2821         * Make-lang.in (java/ggc-none.c): Change dependency
2822         for ggc.h into $(GGC_H).
2823
2824 2004-09-11  Mohan Embar  <gnustuff@thisiscool.com>
2825
2826         * Make-lang.in (java/win32-host.o): Add dependency on
2827         coretypes.h.
2828         * win32-host.c: Add includes for coretypes.h, jcf.h
2829
2830 2004-09-11  Mohan Embar  <gnustuff@thisiscool.com>
2831
2832         * Make-lang.in (GCJH_OBJS): Change dependency from
2833         ggc-none.o to java/ggc-none.o
2834         (JCFDUMP_OBJS): Likewise.
2835         (java/ggc-none.o): New target.
2836
2837 2004-08-25  Nathan Sidwell  <nathan@codesourcery.com>
2838
2839         * boehm.c (get_boehm_type_descriptor):  Adjust build_int_cst calls.
2840         * class.c (build_utf8_ref, build_static_field_ref,
2841         make_field_value, make_method_value, get_dispatch_table,
2842         make_class_data, emit_symbol_table, emit_catch_table): Likewise.
2843         * constants.c (get_tag_node, build_ref_from_constant_pool,
2844         build_constants_constructor): Likewise.
2845         * decl.c (java_init_decl_processing): Likewise.
2846         * expr.c (build_java_array_length_access, build_newarray,
2847         expand_java_multianewarray, expand_java_pushc, expand_iinc,
2848         build_java_binop, build_field_ref, expand_java_add_case,
2849         expand_java_call, build_known_method_ref, build_invokevirtual,
2850         build_invokeinterface, build_jni_stub): Likewise.
2851         * java-gimplify.c (java_gimplify_new_array_init): Likewise.
2852         * jcf-parse.c (get_constant): Likewise.
2853         * lex.c (do_java_lex): Likewise.
2854         * parse.y (patch_binop, patch_unaryop, patch_cast,
2855         build_newarray_node, patch_newarray): Likewise.
2856         * resource.c (compile_resource_data): Likewise.
2857         * typeck.c (build_prim_array_type): Likewise.
2858
2859 2004-08-24  Nathan Sidwell  <nathan@codesourcery.com>
2860
2861         * decl.c (java_init_decl_processing): Adjust
2862         initialize_sizetypes call.
2863
2864 2004-08-23  Nathan Sidwell  <nathan@codesourcery.com>
2865
2866         * jv-scan.c (fancy_abort): Add.
2867
2868 2004-08-20  Nathan Sidwell  <nathan@codesourcery.com>
2869
2870         * expr.c (build_java_arrayaccess): Use convert to change
2871         len's type.
2872
2873 2004-08-19  Bryce McKinlay  <mckinlay@redhat.com>
2874
2875         * class.c (make_local_function_alias): Allocate extra space for 'L'
2876         in name buffer. Reported by Thomas Neumann.
2877
2878 2004-08-19  Nathan Sidwell  <nathan@codesourcery.com>
2879
2880         * parse.h (JAVA_RADIX10_FLAG): Rename to ...
2881         (JAVA_NOT_RADIX10_FLAG): ... here.  Invert meaning.
2882         * lex.c (do_java_lex): Adjust.
2883         (error_if_numeric_overflow): Likewise.
2884
2885 2004-08-18  Andrew Pinski  <apinski@apple.com>
2886
2887         * class.c (make_local_function_alias): Only make a new decl if we
2888         support alias attribute on all decls.
2889
2890 2004-08-18  Bryce McKinlay  <mckinlay@redhat.com>
2891
2892         * class.c (make_local_function_alias): New function. Create local
2893         alias for public method DECL.
2894         (make_method_value): Use make_local_function_alias.
2895         * parse.y (craft_constructor): Don't special-case anonymous classes.
2896         Always set ctor_name to init_identifier_node.
2897         (lookup_method_invoke): Call layout_class_method when creating
2898         anonymous class constructor.
2899
2900 2004-08-18  Richard Henderson  <rth@redhat.com>
2901
2902         * java-gimplify.c (java_gimplify_expr): Move '2' handling into
2903         default case.  Treat '<' similarly.  Update for
2904         is_gimple_formal_tmp_var name change.
2905
2906 2004-08-17  Andrew Haley  <aph@redhat.com>
2907
2908         * lang.c (lang_printable_name): Obey verbose flag.
2909         * parse.y (constructor_circularity_msg): Set VERBOSE arg for
2910         lang_printable_name().
2911         (verify_constructor_circularity, get_printable_method_name,
2912         check_abstract_method_definitions, java_check_regular_methods,
2913         java_check_abstract_methods, check_inner_class_access,
2914         fix_constructors, patch_method_invocation, patch_return):
2915         Likewise.
2916         * expr.c (pop_type_0): Likewise.
2917
2918         * java-tree.h (lang_printable_name_wls): Delete.
2919
2920 2004-08-16  Tom Tromey  <tromey@redhat.com>
2921
2922         PR java/8473:
2923         * parse.y (primary): Changed for initialized and uninitialized
2924         array creations.
2925         (array_access): Handle array_creation_initialized.
2926         (array_creation_expression): Split into
2927         array_creation_initialized and array_creation_uninitialized.
2928
2929 2004-08-16  Andrew Haley  <aph@redhat.com>
2930
2931         * jcf-write.c (find_constant_index): Canonicalize NaNs when
2932         generating bytecode.
2933
2934 2004-08-16  Elliot Lee <sopwith@redhat.com>
2935
2936         PR java/9677
2937         * jcf-parse.c (java_parse_file): Handle filenames with embedded
2938         spaces, and quoted filelists.
2939
2940 2004-08-15  Nathan Sidwell  <nathan@codesourcery.com>
2941
2942         * boehm.c (get_boehm_type_descriptor): Use build_int_cst.
2943         * class.c (build_utf8_ref, build_static_field_ref,
2944         make_field_value, make_method_value, get_dispatch_table,
2945         make_class_data, emit_symbol_table, emit_catch_table): Likewise.
2946         * constants.c (get_tag_node,  build_ref_from_constant_pool,
2947         build_constants_constructor): Likewise.
2948         * decl.c (java_init_decl_processing): Likewise.
2949         * expr.c (build_java_array_length_access, build_newarray,
2950         expand_java_multianewarray, expand_java_pushc, expand_iinc,
2951         build_java_binop, build_field_ref, expand_java_add_case,
2952         expand_java_call, build_known_method_ref, build_invokevirtual,
2953         build_invokeinterface, build_jni_stub): Likewise.
2954         * java-gimplify.c (java_gimplify_new_array_init): Likewise.
2955         * jcf-parse.c (get_constant): Likewise.
2956         * lex.c (do_java_lex): Likewise.
2957         * parse.y (patch_binop, patch_unaryop, patch_cast,
2958         build_null_of_type, patch_newarray): Likewise.
2959         * resource.c (compile_resource_data): Likewise.
2960         * typeck.c (build_prim_array_type): Likewise.
2961
2962 2004-08-10  Bryce McKinlay  <mckinlay@redhat.com>
2963
2964         * java-gimplify.c (java_gimplify_new_array_init): Use create_tmp_var.
2965         Don't create BLOCK here or call java_gimplify_block.
2966
2967 2004-08-09  H.J. Lu  <hongjiu.lu@intel.com>
2968
2969         * java-tree.h (flag_deprecated): Removed.
2970         * lang.opt (Wdeprecated): Use existing Var(warn_deprecated).
2971         * parse.y (check_deprecation): Check warn_deprecated instead of
2972         flag_deprecated.
2973
2974 2004-08-06  Kelley Cook  <kcook@gcc.gnu.org>
2975
2976         * lang.c (flag_emit_class_files, flag_filelist_file, flag_redundant,
2977         flag_use_divide_subroutine, flag_use_boehm_gc, flag_store_check,
2978         flag_hash_synchronization, flag_assert, flag_jni, flag_newer,
2979         flag_check_references, flag_extraneous_semicolon, flag_deprecated,
2980         flag_force_classes_archive_check, flag_optimize_sci,
2981         flag_indirect_dispatch): Remove explicit declarations.
2982         * lang.opt: Add implicit declare/define/assign.  Remove obsolete
2983         final comment.
2984
2985 2004-08-05  Michael Chastain  <mec.gnu@mindspring.com>
2986
2987         PR bootstrap/14893
2988         * Make-lang.in (java.install-man): Install from either build
2989         tree or source tree, whichever has the file first.
2990
2991 2004-08-05  Nathan Sidwell  <nathan@codesourcery.com>
2992
2993         * jcf-parse.c (get_constant): Adjust force_fit_type call.
2994         * lex.h (SET_LVAL_NODE_TYPE): Remove.
2995         * lex.c (java_perform_atof): Use SET_LVAL_NODE directly.
2996         (do_java_lex): Likewise. Adjust force_fit_type call.
2997
2998 2004-08-04  Roger Sayle  <roger@eyesopen.com>
2999             Andrew Haley  <aph@redhat.com>
3000
3001         * typeck.c (convert_ieee_real_to_integer): Call fold on the range
3002         checking trees as they're being built.
3003         (convert): Call convert_ieee_real_to_integer if we're
3004         converting a constant, even if we're writing a class file.
3005
3006 2004-08-02  Bryce McKinlay  <mckinlay@redhat.com>
3007
3008         PR java/16701
3009         * parse.y (fold_constant_for_init): Call resolve_field_access with
3010         correct current_class context.
3011
3012 2004-08-01  Roger Sayle  <roger@eyesopen.com>
3013
3014         * decl.c (update_aliases, initialize_local_variable): Replace calls
3015         to build with calls to buildN.
3016         * java-gimplify.c (java_gimplify_modify_expr): Likewise.
3017         * java-tree.h (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT): Likewise.
3018         * parse.h (BUILD_THROW): Likewise.
3019         * parse.y (switch_expression, synchronized_statement,
3020         catch_clause_parameter, array_creation_expression,
3021         conditional_expression, make_qualified_name,
3022         resolve_qualified_expression_name, patch_method_invocation,
3023         patch_invoke, build_method_invocation, build_new_invocation,
3024         build_assignment, patch_assignment, build_binop, patch_binop,
3025         build_string_concatenation, build_incdec, patch_unaryop,
3026         patch_cast, build_array_ref, build_newarray_node, patch_newarray,
3027         patch_return, build_if_else_statement, build_labeled_block,
3028         build_new_loop, build_loop_body, build_bc_statement,
3029         build_assertion, encapsulate_with_try_catch, build_try_statement,
3030         build_try_finally_statement, patch_synchronized_statement,
3031         emit_test_initialization): Likewise, replace build with buildN.
3032
3033 2004-07-28  Eric Christopher  <echristo@redhat.com>
3034
3035         * lang.c (LANG_HOOKS_UNSAFE_FOR_REEVAL): Delete.
3036         (java_unsafe_for_reeval): Ditto.
3037
3038 2004-07-26    <hp@bitrange.com>
3039
3040         * parse.y (build_super_invocation): Adjust declaration order to
3041         avoid declaration after statement.
3042
3043 2004-07-25  Bernardo Innocenti  <bernie@develer.com>
3044
3045         * decl.c: Rename all identifiers named `class' to `cl'.
3046
3047 2004-07-25  Richard Henderson  <rth@redhat.com>
3048
3049         * decl.c (build_result_decl): Set DECL_ARTIFICIAL and DECL_IGNORED_P.
3050
3051 2004-07-23  Mike Stump  <mrs@apple.com>
3052
3053         * boehm.c (set_bit): Improve type safety wrt unsignedness.
3054         * gjavah.c (throwable_p, decode_signature_piece,
3055         print_full_cxx_name, print_include, add_namelet, add_class_decl,
3056         process_file): Likewise.
3057         * jcf-dump.c (main): Likewise.
3058         * jcf-io.c (read_zip_member): Likewise.
3059         * jcf-parse.c (HANDLE_CONSTANT_Utf8, get_constant,
3060         give_name_to_class, get_class_constant): Likewise.
3061         * jcf-write.c (find_constant_wide, push_long_const,
3062         generate_classfile): Likewise.
3063         * lex.c (java_new_lexer, java_read_char, cxx_keyword_p): Likewise.
3064         * parse.y (read_import_dir): Likewise.
3065         * typeck.c (parse_signature_type): Likewise.
3066         * verify.c (verify_jvm_instructions): Likewise.
3067         * zextract.c (find_zip_file_start, read_zip_archive): Likewise.
3068
3069 2004-07-23  Thomas Fitzsimmons  <fitzsim@redhat.com>
3070
3071         * Make-lang.in: Replace rmic and rmiregistry references with
3072         grmic and grmiregistry.
3073         * gcj.texi: Likewise.
3074
3075 2004-07-20  Andrew Haley  <aph@redhat.com>
3076
3077         PR java/16431.
3078         * verify.c (verify_jvm_instructions): Comment change only.
3079
3080         * typeck.c (build_java_array_type): Add size field to array name.
3081
3082         * java-tree.h (LOCAL_SLOT_P): New.
3083         (update_aliases): Add PC argument.
3084         (pushdecl_function_level): New function.
3085
3086         * java-gimplify.c (java_gimplify_expr): Handle VAR_DECL,
3087         MODIFY_EXPR, and SAVE_EXPR.
3088         (java_gimplify_modify_expr): New function.
3089
3090         * expr.c (push_type_0): Call find_stack_slot() to create temporary.
3091         (expand_iinc): Pass PC to update_aliases().
3092         (STORE_INTERNAL): Likewise.
3093         (process_jvm_instruction): Likewise.
3094
3095         * decl.c (base_decl_map): New variable.
3096         (uniq): New variable.
3097         (update_aliases): Rewrite with more thorough checking.
3098         (debug_variable_p): New function.
3099         (push_jvm_slot): Don't initialize local variable.  Don't pushdecl.
3100         (check_local_named_variable): Delete whole function.
3101         (initialize_local_variable): New function.
3102         (check_local_unnamed_variable): Add checks and comments.
3103         (find_local_variable): Rewrite.
3104         (java_replace_reference): New function.
3105         (function_binding_level): New variable.
3106         (pushdecl_function_level): New function.
3107         (maybe_pushlevels): Set DECL_LOCAL_END_PC.
3108         (maybe_pushlevels): Call pushdecl() on each of the new decls.
3109         (start_java_method): Reset uniq.  Create base_decl_map.  Set
3110         function_binding_level.
3111         (end_java_method): Null unused fields to save memory.
3112
3113 2004-07-20  Nathan Sidwell  <nathan@codesourcery.com>
3114
3115         * class.c (add_interface_do): Remove.
3116         (set_super_info, interface_of_p, maybe_add_interface,
3117         add_interface, make_class_data, layout_class,
3118         add_miranda_methods): Adjust BINFO accessors and addition.
3119         * expr.c (can_widen_reference_to, lookup_field): Adjust BINFO
3120         accessors.
3121         * jcf-write.c (generate_classfile): Likewise.
3122         * parse.y (patch_anonymous_class, check_inner_circular_reference,
3123         check_circular_reference, java_complete_class,
3124         check_abstract_method_definitions,
3125         java_check_abstract_method_definitions,
3126         check_interface_throws_clauses, java_check_abstract_methods,
3127         lookup_java_interface_method2,
3128         find_applicable_accessible_methods_list): Adjust BINFO accessors
3129         and addition.
3130         * typeck.c (find_method_in_interfaces): Adjust BINFO accessors.
3131
3132 2004-07-18  Roger Sayle  <roger@eyesopen.com>
3133
3134         * builtins.c (max_builtin, min_builtin,
3135         java_build_function_call_expr): Replace calls to build with buildN.
3136         * class.c (build_class_ref, build_static_field_ref,
3137         get_dispatch_table, make_class_data, layout_class_method): Likewise.
3138         * constants.c (build_ref_from_constant_pool): Likewise.
3139         * decl.c (update_aliases, push_jvm_slot, poplevel, finish_method,
3140         add_stmt_to_compound): Likewise.
3141         * except.c (build_exception_object_ref, expand_end_java_handler):
3142         Likewise.
3143         * java-gimplify.c (java_gimplify_case_expr,
3144         java_gimplify_default_expr, java_gimplify_block,
3145         java_gimplify_new_array_init, java_gimplify_try_expr): Likewise.
3146         * jcf-write.c (generate_bytecode_insns): Likewise.
3147         * typeck.c (convert_ieee_real_to_integer): Likewise.
3148
3149 2004-07-17  Joseph S. Myers  <jsm@polyomino.org.uk>
3150
3151         * java-tree.h (builtin_function): Declare.
3152
3153 2004-07-16  Steven Bosscher  <stevenb@suse.de>
3154
3155         * parse.y (java_complete_expand_methods, java_expand_classes): Don't
3156         abuse restore_line_number_status.
3157
3158 2004-07-15  Frank Ch. Eigler  <fche@redhat.com>
3159
3160         g++/15861
3161         * jcf-parse.c (java_emit_static_constructor): Specify default
3162         priority.
3163
3164 2004-07-13  Per Bothner  <per@bothner.com>
3165
3166         * java-tree.h (all_class_filename):  Remove useless macro.
3167         (enum java_tree_index):  Remove JTI_ALL_CLASS_FILENAME constant.
3168         (BUILD_FILENAME_IDENTIFIER_NODE):  Remove useless macro.
3169         * parse.y (java_parser_context_restore_global):  Replace
3170         BUILD_FILENAME_IDENTIFIER_NODE by plain get_identifier.
3171         * jcf-parse.c (read_class, java_parse_file):  Likewise.
3172
3173 2004-07-12  Bryce McKinlay  <mckinlay@redhat.com>
3174
3175         PR java/16474
3176         gjavah.c (print_field_info): Emit constant only if field is static.
3177
3178 2004-07-11  Roger Sayle  <roger@eyesopen.com>
3179
3180         * expr.c (java_truthvalue_conversion, flush_quick_stack,
3181         java_stack_swap, java_stack_dup, build_java_athrow, build_java_jsr,
3182         build_java_ret, build_java_throw_out_of_bounds_exception,
3183         build_java_array_length_access, java_check_reference,
3184         build_java_arrayaccess, build_java_arraystore_check, build_newarray,
3185         build_anewarray, expand_java_multianewarray, expand_java_arraystore,
3186         expand_java_arrayload, build_java_monitor, expand_java_return,
3187         expand_load_internal, expand_java_NEW, build_get_class,
3188         build_instanceof, expand_java_CHECKCAST, expand_iinc,
3189         build_java_soft_divmod, build_java_binop, build_field_ref,
3190         expand_compare, expand_java_goto, expand_java_switch,
3191         expand_java_add_case, build_class_init, build_known_method_ref,
3192         invoke_build_dtable, build_invokevirtual, build_invokeinterface,
3193         expand_invoke, build_jni_stub, expand_java_field_op,
3194         java_expand_expr, expand_byte_code, STORE_INTERNAL,
3195         force_evaluation_order, emit_init_test_initialization): Convert
3196         calls to "build" into calls to the prefered "buildN" functions.
3197
3198 2004-07-11  Joseph S. Myers  <jsm@polyomino.org.uk>
3199
3200         * java-tree.h (set_block): Remove.
3201         * lang.c (java_clear_binding_stack): New.
3202         (LANG_HOOKS_CLEAR_BINDING_STACK): Define.
3203         * decl.c (struct binding_level): Remove this_block.
3204         (clear_binding_level): Likewise.
3205         (poplevel): Don't handle this_block.
3206         (set_block): Remove.
3207
3208 2004-07-10  Bryce McKinlay  <mckinlay@redhat.com>
3209
3210         * class.c (common_enclosing_context_p): Remove statement with no
3211         side-effects.
3212
3213 2004-07-09  Bryce McKinlay  <mckinlay@redhat.com>
3214
3215         PR java/8618
3216         * parse.y (create_anonymous_class): Remove 'location' argument. Use
3217         the WFL from TYPE_NAME to get line number for the decl. Fix comment.
3218         (craft_constructor): Inherit access flags for implicit constructor
3219         from the enclosing class.
3220         (create_class): Fix comment typo.
3221         (resolve_qualified_expression_name): Pass type of qualifier to
3222         not_accessible_p, not the type in which target field was found.
3223         (not_accessible_p): Handle inner classes. Expand protected
3224         qualifier-subtype check to enclosing instances, but don't apply this
3225         check to static members. Allow protected access to inner classes
3226         of a subtype. Allow private access within common enclosing context.
3227         (build_super_invocation): Get WFL line number info from current
3228         class decl.
3229         (build_incomplete_class_ref): Update for new create_anonymous_class
3230         signature.
3231         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Use
3232         common_enclosing_instance_p.
3233         * class.c (common_enclosing_context_p): New. Determine if types
3234         share a common enclosing context, even across static contexts.
3235         (common_enclosing_instance_p): Renamed from
3236         common_enclosing_context_p. Determines if types share a common
3237         non-static enclosing instance.
3238         * java-tree.h (common_enclosing_instance_p): Declare.
3239         * jcf-write.c (get_method_access_flags): New. Surpress private flag
3240         for inner class constructors.
3241         (generate_classfile): Use get_method_access_flags.
3242
3243 2004-07-09  Bryce McKinlay  <mckinlay@redhat.com>
3244
3245         * class.c (interface_of_p): Check for null TYPE_BINFO.
3246
3247 2004-07-09  Nathan Sidwell  <nathan@codesourcery.com>
3248
3249         * class.c (make_class): Do not create binfo here.
3250         (set_super_info): Create it here.
3251         * java-tree.h (CLASS_HAS_SUPER): Cope with lack of a binfo.
3252
3253 2004-07-08  Richard Henderson  <rth@redhat.com>
3254
3255         * expr.c (case_identity, get_primitive_array_vtable,
3256         java_expand_expr, emit_init_test_initialization): Remove.
3257         * java-tree.h (java_expand_expr): Remove.
3258         * lang.c (LANG_HOOKS_EXPAND_EXPR): Remove.
3259
3260 2004-07-07  Per Bothner  <per@bothner.com>
3261
3262         * class.c (build_static_field_ref):  Add a NOP_EXPR; otherwise we
3263         get internal error due to mismatched types.
3264
3265         * gcj.texi (Invoking gij):  Document new -verbose:class flag.
3266
3267         * gcj.texi (Linking):   New node.  Document -lgij usage.
3268
3269 2004-07-07  Nathan Sidwell  <nathan@codesourcery.com>
3270
3271         * java-tree.h (CLASSTYPE_SPUER): Adjust BINFO macros.
3272         (TYPE_NVIRTUALS, TYPE_VTABLE): Likewise.
3273         * java/class.c (set_super_info, class_depth, interface_of_p,
3274         maybe_add_interface, add_interface, make_class_data,
3275         layout_class, add_miranda_methods): Adjust BINFO macros.
3276         * expr.c (can_widen_reference_to, lookup_field): Likewise.
3277         * jcf-write.c (generate_classfile): Likewise.
3278         * parse.y (patch_anonymous_class,
3279         check_inner_circular_reference, check_circular_reference,
3280         java_complete_class, check_abstract_method_definitions,
3281         java_check_abstract_method_definitions,
3282         check_interface_throws_clauses, java_check_abstract_methods,
3283         lookup_java_interface_method2,
3284         find_applicable_accessible_methods_list): Likewise.
3285         * typeck.c (find_method_in_interface): Likewise.
3286         * verify.c (merge_types): Likewise.
3287
3288 2004-07-06  Nathan Sidwell  <nathan@codesourcery.com>
3289
3290         * java-tree.h (CLASS_HAS_SUPER_FLAG): Use BINFO_FLAG_1.
3291         * class.c (add_interface_do): Use BINFO_VIRTUAL_P.
3292
3293 2004-07-05  Nathan Sidwell  <nathan@codesourcery.com>
3294
3295         * class.c (make_class): Use make_tree_binfo.
3296         (set_super_info, add_interface_do): Likewise.
3297         * java-tree.h (CLASS_HAS_SUPER_FLAG): Expect a BINFO.
3298
3299 2004-07-04  Ranjit Mathew  <rmathew@hotmail.com>
3300
3301         * verify.c: Correct array element access formatting thinko.
3302
3303 2004-07-04  Ranjit Mathew  <rmathew@hotmail.com>
3304
3305         * verify.c: Insert a short blurb at the start referring to the JVMS.
3306         (merge_type_state): Remove redundant nested if statement.
3307         (verify_jvm_instructions): Ensure current_subr is initialised to
3308         NULL_TREE.
3309         Minor formatting fixes all over the place.
3310
3311 2004-07-02  Richard Henderson  <rth@redhat.com>
3312
3313         * jcf-write.c (generate_bytecode_insns <case SAVE_EXPR>): Rewrite.
3314
3315 2004-07-01  Richard Henderson  <rth@redhat.com>
3316
3317         * class.c (registerClass_libfunc): Remove.
3318         (init_class_processing): Don't set it.
3319         (emit_register_classes): Take list_p parameter.  Fill it in
3320         with _Jv_RegisterClass calls.
3321         * decl.c (java_init_decl_processing): Don't call
3322         init_resource_processing.
3323         * jcf-parse.c (java_emit_static_constructor): New.
3324         (java_parse_file): Call it.
3325         * resource.c (registerResource_libfunc): Remove.
3326         (init_resource_processing): Remove.
3327         (write_resource_constructor): Take list_p parameter.  Fill it in
3328         with _Jv_RegisterResource calls.
3329         * java-tree.h: Update prototypes.
3330
3331 2004-06-29  Bryce McKinlay  <mckinlay@redhat.com>
3332
3333         PR java/1262
3334         * class.c (layout_class_method): Do not override package-private
3335         method if its in a different package.
3336         (split_qualified_name): Move here from parse.y. Rename from
3337         breakdown_qualified. Add comment.
3338         (in_same_package): Move here from parse.y. Add comment.
3339         * java-tree.h (break_down_qualified, in_same_package): Declare.
3340         (in_same_package): Likewise.
3341         * parse.y (breakdown_qualified, in_same_package): Moved to class.c.
3342         Callers updated.
3343
3344 2004-06-29  Andrew Haley  <aph@redhat.com>
3345
3346         * except.c (expand_start_java_handler): Push a new binding level.
3347         Don't build a TRY_CATCH_EXPR now, we'll do it later.  Call
3348         register_exception_range() to register where we'll do it.
3349         (expand_end_java_handler): Remove old bogus code.  Replace with
3350         new logic that simply builds TRY_CATCH_EXPRs and inserts them at
3351         the top of the expression we're curently building.
3352         (maybe_end_try): Delete.
3353         * decl.c (binding_level.exception_range): New field.
3354         (clear_binding_level): Add field exception_range.  Reformat.
3355         (poplevel): Call expand_end_java_handler().
3356         (poplevel): Call java_add_stmt only if functionbody is false.
3357         (maybe_poplevels): Don't call maybe_end_try() from here.
3358         (end_java_method): Clear no longer used trees in function decl.
3359         (register_exception_range): New function.
3360         * java-tree.h (register_exception_range, struct eh_range): Declare.
3361
3362 2004-06-28  Bryce McKinlay  <mckinlay@redhat.com>
3363
3364         * jcf-write.c (get_classfile_modifiers): Formatting fixes.
3365
3366 2004-06-27  Ranjit Mathew  <rmathew@hotmail.com>
3367
3368         Formatting fixes.
3369         * expr.c (class_has_finalize_method): Fix method name indentation.
3370         (expand_java_call): Remove K&R style parameter declaration.
3371         (expand_invoke): Fix statement indentation.
3372         (expand_java_field_op): Likewise.
3373         * parse-scan.y: Fix typo.
3374         (reset_report): Fix method name indentation.
3375         * parse.y (unresolved_type_p, build_expr_block): Remove extra blank
3376         line. Fix typos.
3377         * verify.c (verify_jvm_instructions): Document parameters, insert
3378         page break.
3379         * lang.c (lang_init_source): Fix method name indentation.
3380         * class.c (common_enclosing_context_p): Likewise.
3381         (emit_symbol_table): Fix parameter list indentation.
3382         * decl.c (add_stmt_to_compound, java_add_stmt): Remove K&R style
3383         parameter declaration.
3384         * constants.c: Fix copyright notice indentation.
3385         * typeck.c (find_method_in_superclasses): Fix parameter list
3386         indentation.
3387         (find_method_in_interfaces): Likewise.
3388         * zextract.c (makelong): Fix method name indentation.
3389
3390 2004-06-26  Bryce McKinlay  <mckinlay@redhat.com>
3391
3392         PR java/15715.
3393         * parse.y (create_interface): Set correct access modifiers for
3394         interfaces.
3395         * jcf-write.c (get_classfile_modifiers): New function.
3396         (generate_classfile): Use get_classfile_modifiers, not
3397         get_access_flags.
3398
3399 2004-06-26  Bryce McKinlay  <mckinlay@redhat.com>
3400
3401         * parse.y (register_incomplete_type): Set JDEP_ENCLOSING for "super"
3402         dependency to current parser context, not NULL_TREE, for top-level
3403         classes.
3404         (jdep_resolve_class): Enable member access check for all inner
3405         class dependencies.
3406
3407 2004-06-26  Bryce McKinlay  <mckinlay@redhat.com>
3408
3409         * parse.y (qualify_and_find): Pass type decl, not identifier, to
3410         load_class.
3411
3412 2004-06-26  Bryce McKinlay  <mckinlay@redhat.com>
3413
3414         PR java/15734
3415         * expr.c (expand_java_field_op): Ensure that target class for static
3416         field access has been loaded.
3417
3418 2004-06-26  Bryce McKinlay  <mckinlay@redhat.com>
3419             Ranjit Mathew  <rmathew@hotmail.com>
3420
3421         PR java/1207, java/16178
3422         * jcf-parse.c (load_class): Return immediately if passed a type decl
3423         where CLASS_FROM_SOURCE_P is set. Remove FIXME.
3424         * parse.y (do_resolve_class): Remove checks for CLASS_FROM_SOURCE_P
3425         before calling load_class.
3426         (qualify_and_find): Likewise.
3427         (find_in_imports_on_demand): Likewise.
3428         (find_applicable_accessible_methods_list): Likewise.
3429
3430 2004-06-24  Bryce McKinlay  <mckinlay@redhat.com>
3431
3432         * parse.y (java_layout_seen_class_methods): Don't call load_class
3433         on class defined by source parser.
3434
3435 2004-06-23  Bryce McKinlay  <mckinlay@redhat.com>
3436
3437         * parse.y (set_nested_class_simple_name_value): Removed.
3438         (java_complete_expand_class): Remove calls to
3439         set_nested_class_simple_name_value.
3440
3441 2004-06-22  Andrew Haley  <aph@redhat.com>
3442             Ranjit Mathew  <rmathew@hotmail.com>
3443
3444         Fixes PR java/16113.
3445         * decl.c (force_poplevels): Remove call to expand_end_bindings.
3446
3447 2004-06-22  Ranjit Mathew  <rmathew@hotmail.com>
3448
3449         * parse.y (create_class): Correct diagnostic message about
3450         java.lang.Object extending anything else.
3451
3452 2004-06-21  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
3453
3454         * class.c (build_class_ref): Add new operand for COMPONENT_REF.
3455         (build_static_field_ref): Likewise and add new operands for ARRAY_REF.
3456         * constants.c (build_ref_from_constant_pool): Likewise.
3457         * expr.c (build_java_array_length_access): Likewise.
3458         (build_get_class, build_field_ref, build_known_method_ref): Likewise.
3459         (invoke_build_dtable, build_invokevirtual): Likewise.
3460         (build_invokeinterface, java_expand_expr): Likewise.
3461         (emit_init_test_initialization): Likewise.
3462         * java-gimplify.c (java_gimplify_new_array_init): Likewise.
3463         * parse.y (make_qualifed_name, build_array_ref): Likewise.
3464
3465 2004-06-21  Andrew Haley  <aph@redhat.com>
3466
3467         * java-gimplify.c (java_gimplify_block): set TREE_USED on the new
3468         block.
3469
3470 2004-06-21  Joseph S. Myers  <jsm@polyomino.org.uk>
3471
3472         * jcf.h (struct JCF): Change java_source, right_zip and finished
3473         to unsigned int.
3474         * lex.h (struct java_lexer): Change hit_eof, read_anything,
3475         byte_swap and use_fallback to unsigned int.
3476         * parse.h (struct _jdep): Change flag0 to unsigned int.
3477
3478 2004-06-17  Ranjit Mathew  <rmathew@hotmail.com>
3479
3480         Fixes PR java/13948
3481         * parse.y (java_layout_seen_class_methods): Ensure class is loaded
3482         before trying to lay out its methods.
3483         * jcf-parse.c (read_class): Track parsed files using canonical paths
3484         obtained via lrealpath from libiberty.
3485         (java_parse_file): Likewise.
3486         (parse_source_file_1): Rename formal parameter to reflect its
3487         modified purpose. Minor formatting fix.
3488
3489 2004-06-15  Paolo Bonzini  <bonzini@gnu.org>
3490
3491         * class.c (emit_register_classes): Make the function uninlinable,
3492         do not set current_function_cannot_inline.
3493         * resource.c (write_resource_constructor): Do not reset
3494         flag_inline_functions around rest_of_compilation.
3495
3496 2004-06-08  Andrew Pinski  <pinskia@physics.uc.edu>
3497
3498         PR java/15769
3499         * expr.c (java_truthvalue_conversion): Handle
3500         UNEQ_EXPR, UNLE_EXPR, UNGE_EXPR, UNLT_EXPR, UNGT_EXPR,
3501         ORDERED_EXPR, and UNORDERED_EXPR as comparison operators,
3502         i.e. return the expression.
3503
3504 2004-06-03 Mark G. Adams  <mark.g.adams@sympatico.ca>
3505
3506         * gjavah.c: Include version.h
3507
3508 2004-05-31  Bryce McKinlay  <mckinlay@redhat.com>
3509
3510         * jcf-write.c (generate_bytecode_conditional): Correct handling
3511         of unordered conditionals. Add comment.
3512
3513 2004-05-29  Ranjit Mathew  <rmathew@hotmail.com>
3514             Per Bothner  <per@bothner.com>
3515
3516         * java-tree.h (DECL_LOCAL_FINAL_IUD): New macro to test if a
3517         local variable was initialised upon declaration.
3518         * parse.y (declare_local_variables): Set DECL_LOCAL_FINAL_IUD if
3519         variable was final and initialised upon declaration.
3520         * check-init.c (check_final_reassigned): Give error only if a blank
3521         final is not definitely unassigned or if an initialised final is
3522         reassigned.
3523         (check_bool_init): Respect JLS2 16.1.7 requirements for boolean
3524         assignment expressions. Remove case MODIFY_EXPR, label do_default.
3525         (check_init): Perform initialised-variable-removing-optimisation
3526         only on non-final local variables.
3527
3528 2004-05-28  Bryce McKinlay  <mckinlay@redhat.com>
3529
3530         * jcf-write.c (generate_bytecode_conditional): Handle binops
3531         UNLT_EXPR, UNLE_EXPR, UNGT_EXPR, UNGE_EXPR, UNEQ_EXPR,
3532         and LTGT_EXPR.
3533         (generate_bytecode_insns): Likewise.
3534
3535 2004-05-28  Bryce McKinlay  <mckinlay@redhat.com>
3536
3537         * check-init.c (check_init): Handle binops UNLT_EXPR, UNLE_EXPR,
3538         UNGT_EXPR, UNGE_EXPR, UNEQ_EXPR, and LTGT_EXPR.
3539
3540 2004-05-28  Bryce McKinlay  <mckinlay@redhat.com>
3541
3542         * gcj.texi (Object allocation): Remove _Jv_AllocBytes.
3543         (Mixing with C++): Document JvAllocBytes and RawDataManaged.
3544
3545 2004-05-26  Bryce McKinlay  <mckinlay@redhat.com>
3546
3547         * decl.c (struct binding_level): Add GTY marker. Compile
3548         binding_depth unconditionally.
3549         (current_binding_level, free_binding_level, global_binding_level):
3550         Likewise.
3551         (clear_binding_level): Unconditionally set binding_depth.
3552         (make_binding_level): Use ggc_alloc_cleared, not xmalloc.
3553
3554 2004-05-26  Bryce McKinlay  <mckinlay@redhat.com>
3555
3556         * lex.c (java_new_lexer): Set 'encoding'.
3557         (java_read_char): Improve error message for unrecognized characters.
3558         * lex.h (struct java_lexer): New field 'encoding'.
3559
3560 2004-05-23  Paolo Bonzini  <bonzini@gnu.org>
3561
3562         * Make-lang.in: Link in $(LIBCPP) instead of mkdeps.o.
3563
3564 2004-05-21  Mark Wielaard  <mark@klomp.org>
3565
3566         * gjavah.c (print_stub_or_jni): Mark functions only JNIEXPORT, not
3567         extern.
3568
3569 2004-05-19  Paolo Bonzini  <bonzini@gnu.org>
3570
3571         * typeck.c: Remove non-printable character 160.
3572
3573 2004-05-17  Ranjit Mathew  <rmathew@hotmail.com>
3574
3575         * check-init.c: Correct minor typos.
3576
3577 2004-05-13  Diego Novillo  <dnovillo@redhat.com>
3578
3579         * Make-lang.in, expr.c, java-gimplify.c: Rename
3580         tree-simple.[ch] to tree-gimple.[ch].
3581
3582 2004-05-14  Ranjit Mathew  <rmathew@hotmail.com>
3583
3584         * java-gimplify.c (java_gimplify_expr): Correct minor typos.
3585
3586 2004-05-13  Diego Novillo  <dnovillo@redhat.com>
3587
3588         Merge from tree-ssa-20020619-branch.  See
3589         ChangeLog.tree-ssa for details.
3590
3591         * Make-lang.in, builtins.c, check-init.c, class.c,
3592         constants.c, decl.c, except.c, expr.c, java-except.h,
3593         java-tree.def, java-tree.h, jcf-parse.c, jcf-write.c,
3594         lang.c, lang.opt, parse.y, resource.c: Merged.
3595         * java-gimplify.c: New file.
3596
3597 2004-05-10  Andrew Haley  <aph@redhat.com>
3598
3599         * parse.y (create_class): Set TYPE_VFIELD.
3600         * decl.c (java_init_decl_processing): Likewise.
3601
3602         * expr.c (build_invokevirtual): Remove DECL_VINDEX offset adjustment.
3603         * class.c (make_method_value): Replace DECL_VINDEX with call to
3604         get_method_index().
3605         (get_dispatch_vector): Likewise.
3606         (layout_class_method): Likewise.
3607         Replace set of DECL_VINDEX with call to set_method_index().
3608         (set_method_index): New function.
3609         (get_method_index): New function.
3610         * java-tree.h (set_method_index): New function decl.
3611         (get_method_index): New function decl.
3612
3613 2004-05-10  Andrew Pinski  <pinskia@physics.uc.edu>
3614
3615         * parse.y (check_pkg_class_access): Add new argument
3616         and use it when cl is NULL to call lookup_cl on it.
3617         (parser_check_super_interface): Do not call lookup_cl.
3618         Pass this_decl to check_pkg_class_access and NULL
3619         instead of lookup_cl.
3620         (parser_check_super): Update for change in
3621         check_pkg_class_access.
3622         (do_resolve_class): Likewise.
3623         (process_imports): Likewise.
3624         (find_in_imports_on_demand): Likewise.
3625         (resolve_qualified_expression_name): Likewise.
3626
3627 2004-05-06  Ranjit Mathew  <rmathew@hotmail.com>
3628
3629         Fixes PR java/9685, PR java/15073
3630         * parse.y (accessibility_string): New method.
3631         (not_accessible_field_error): Use accessibility_string()
3632         instead of java_accstring_lookup().
3633         (resolve_qualified_expression_name): Check with
3634         check_pkg_class_access() before allowing access using
3635         qualified names.
3636         Fix comment typo.
3637         Use check_pkg_class_access() instead of not_accessible_p()
3638         for unqualified types.
3639         (not_accessible_p): Use DECL_CONTEXT (member) instead of
3640         REFERENCE for package-private access checking.
3641         (patch_method_invocation): Use accessibility_string() instead
3642         of java_accstring_lookup().
3643
3644 2004-04-30  Ranjit Mathew  <rmathew@hotmail.com>
3645
3646         Fixes PR java/15133
3647         * gjavah.c (struct method_name): Add member is_native.
3648         (overloaded_jni_method_exists_p): Match candidate method only if
3649         it is native.
3650         (print_method_info): Initialise is_native flag from the method's
3651         access flags.
3652
3653 2004-04-30  Roger Sayle  <roger@eyesopen.com>
3654
3655         * builtins.c (java_builtins): Add acos, asin, ceil and floor.
3656         (initialize_builtins): Likewise, define acos, asin, ceil and floor.
3657
3658 2004-04-22  Roger Sayle  <roger@eyesopen.com>
3659
3660         * resource.c (write_resource_constructor): Guard call to possibly
3661         NULL targetm.asm_out.constructor with targetm.have_ctors_dtors.
3662
3663 2004-04-19  Bryce McKinlay  <mckinlay@redhat.com>
3664
3665         * class.c (make_class_data): Add new field aux_info.
3666         * decl.c (java_init_decl_processing): Push type and decl for
3667         `aux_info'.
3668
3669 2004-04-15  Bryce McKinlay  <mckinlay@redhat.com>
3670
3671         * expr.c (expand_java_NEW): Don't use size argument for
3672         _Jv_AllocObject calls.
3673         * parse.y (patch_invoke): Likewise.
3674
3675 2004-04-12  Bryce McKinlay  <mckinlay@redhat.com>
3676
3677         * expr.c (build_invokeinterface): Remove unused variables to
3678         fix warnings.
3679
3680 2004-04-12  Bryce McKinlay  <mckinlay@redhat.com>
3681
3682         * class.c (get_interface_method_index): New function. Return dispatch
3683         index for interface method.
3684         (make_method_value): For interface methods, set index field to
3685         iface dispatch index, not DECL_VINDEX.
3686         * expr.c (build_invokeinterface): Use get_interface_method_index.
3687
3688 2004-03-31  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
3689
3690         * jcf-write.c (generate_bytecode_insns): Use TYPE_UNSIGNED.
3691
3692 2004-03-31  Andrew Haley  <aph@redhat.com>
3693
3694         PR java/14104
3695         * jcf-io.c (opendir_in_zip): Tidy up error handling.
3696
3697 2004-03-30  Zack Weinberg  <zack@codesourcery.com>
3698
3699         * builtins.c, expr.c, jcf.h, parse.h: Use new shorter
3700         form of GTY markers.
3701
3702 2004-03-25  Marcus Meissner  <meissner@suse.de>
3703
3704         PR java/14689:
3705         * jcf-path.c (jcf_path_extdirs_arg): Add missing closedir.
3706
3707 2004-03-23  Tom Tromey  <tromey@redhat.com>
3708
3709         PR java/14315:
3710         * jcf-write.c (make_class_file_name): Don't report if mkdir
3711         failed with EEXIST.
3712
3713 2004-03-23  Tom Tromey  <tromey@redhat.com>
3714
3715         * gcj.texi (Extensions): Document GCJ_PROPERTIES.
3716
3717 2004-03-20  Kazu Hirata  <kazu@cs.umass.edu>
3718
3719         * class.c, gjavah.c, lang.c: Fix comment typos.
3720         * gcj.texi: Fix typos.
3721
3722 2004-03-19  Per Bothner  <per@bothner.com>
3723
3724         * gcj.texi (Code Generation):  Document new flags and assert defaults.
3725
3726         * class.c (assume_compiled_node_struct):  Rename type to
3727         class_flag_node_struct, as it is now also used for enable_assertions.
3728         Rename assume_compiled_node typedef.  Rename excludep field to value.
3729         (find_assume_compiled_node):  Rename function to find_class_flag_node.
3730         Minor optimization - avoid needless strlen.
3731         (add_assume_compiled):  Some tweaking and optimization.
3732         Rename and generalize to add_class_flag takem an extra parameter.
3733         (add_assume_compled):  New just calls add_class_flag.
3734         (add_enable_assert, enable_assertions):  New functions.
3735         (enable_assert_tree):  New static.
3736         * java-tree.h (add_enable_assert, enable_assertions): New declarations.
3737         * lang.opt (fenable-assertions, fenable-assertions=,
3738         fdisable-assertions, fdisable-assertions=):  New options.
3739         * lang.c (java_handle_option):  Handle new options.
3740         * parse.y (build_incomplete_class_ref):  Handle class$ in an inner
3741         class in an interface - create helper class nested in outer interface.
3742         (build_assertion):  Short-circuit if enable_assertions is false.
3743
3744 2004-03-18  Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
3745
3746         * java-tree.h: Changes throughout to add checking to macros
3747         and numerous whitespace changes.
3748         (VAR_OR_FIELD_CHECK): New macro.
3749         * jcf-write.c (get_access_flags): Use FIELD_PUBLIC, METHOD_PUBLIC,
3750         FIELD_FINAL, and METHOD_FINAL instead of CLASS_PUBLIC and CLASS_FINAL.
3751
3752 2004-03-16  Per Bothner  <per@bothner.com>
3753
3754         * jcf-jump.c (options):  New --print-constants option.
3755         * gcj.texi (Invoking jcf-dump):  Document --print-constants.
3756
3757         * jcf-dump.c (flag_print_constant_pool):  Default to off.
3758         (print_constant_terse_with_index):  New helper function.
3759         (various places):  Check flag_print_constant_pool where missing.
3760         (main):  If verbose set flag_print_constant_pool.
3761         (HANDLE_INNERCLASSES_ATTRIBUTE):  Null inner class name is anonymous.
3762
3763 2004-03-15  Andrew Haley  <aph@redhat.com>
3764
3765         PR java/14581
3766         * parse.y (java_complete_lhs): Check that final variable has an
3767         initializer.
3768
3769 2004-03-12  Andrew Haley  <aph@redhat.com>
3770
3771         PR java/14551
3772         * typeck.c (convert): Clear TREE_OVERFLOW after an integer
3773         conversion.
3774
3775 2004-02-29  Roger Sayle  <roger@eyesopen.com>
3776
3777         * jcf-parse.c (java_parse_file): Handle the case that input_filename
3778         is NULL.
3779
3780 2004-02-27  Per Bothner  <per@bothner.com>
3781
3782         * parse.y (build_assertion):  Re-do 02-25 change following Jeff Sturm
3783         suggestion:  Use build_incomplete_class_ref.
3784         This fixes PR java/13508, java/11714.
3785
3786 2004-02-27  Kazu Hirata  <kazu@cs.umass.edu>
3787
3788         * java/parse.h: Update copyright.
3789
3790 2004-02-26  Andrew Haley  <aph@redhat.com>
3791
3792         PR java/14231:
3793         * parse.y (check_interface_throws_clauses): Check for
3794         !METHOD_INVISIBLE (iface_method).
3795         * class.c (layout_class_methods): Check for CLASS_INTERFACE as
3796         well as CLASS_ABSTRACT.
3797
3798 2004-02-25  Per Bothner  <per@bothner.com>
3799
3800         * parse.y (build_assertion):  If we're in an inner class, create the
3801         class$ helper routine in the outer class.
3802
3803 2004-02-19  Richard Henderson  <rth@redhat.com>
3804
3805         * parse.y (switch_label): Use make_node for DEFAULT_EXPR.
3806
3807 2004-02-16  Geoffrey Keating  <geoffk@apple.com>
3808
3809         * Make-lang.in (java.install-man): Add extra dependencies.
3810
3811 2004-02-13  Geoffrey Keating  <geoffk@apple.com>
3812
3813         * Make-lang.in: Install man pages under the same names
3814         (possibly transformed) as the program they document.
3815
3816 2004-02-10  Joseph S. Myers  <jsm@polyomino.org.uk>
3817
3818         * gjavah.c: Include "intl.h".
3819         (error): New function.
3820         (main): Call gcc_init_libintl.
3821         (get_field_name, throwable_p, print_c_decl, print_full_cxx_name,
3822         print_stub_or_jni, process_file, main): Use error rather than
3823         fprintf.
3824         (print_method_info, usage, help, version, main): Mark strings for
3825         translation with _.  Avoid splitting up sentences.  Send
3826         information messages to stdout.
3827         * jcf-dump.c: Include "intl.h".
3828         (main): Call gcc_init_libintl.
3829         (process_class, usage, help, version, main, CHECK_PC_IN_RANGE):
3830         Mark error, usage and version messages for translation with _.
3831         Avoid splitting up sentences.
3832         * jv-scan.c: Include "intl.h".
3833         (fatal_error, warning): Change parameter s to msgid.  Translate
3834         messages.
3835         (main): Call gcc_init_libintl.
3836         (usage, help, version): Mark error, usage and version messages for
3837         translation with _.  Avoid splitting up sentences.
3838         * jvgenmain.c: Include "intl.h".
3839         (main): Call gcc_init_libintl.
3840         (usage, main): Mark error messages for translation with _.
3841         * Make-lang.in (GCJH_OBJS, JVSCAN_OBJS, JCFDUMP_OBJS,
3842         JVGENMAIN_OBJS): Add intl.o.
3843         (java/jcf-dump.o, java/gjavah.o, java/jv-scan.o,
3844         java/jvgenmain.o): Update dependencies.
3845
3846 2004-02-08  Per Bothner  <per@bothner.com>
3847
3848         * parse.y (resolve_qualified_expression_name):  In case of inaccessible
3849         class don't use not_accessible_field_error, which can get confused.
3850
3851 2004-02-05  Kelley Cook  <kcook@gcc.gnu.org>
3852
3853         Make-lang.in (po-generated):  Delete.
3854
3855 2004-02-05  Kazu Hirata  <kazu@cs.umass.edu>
3856
3857         * Make-lang.in (java/decl.o, java/expr.o, java/parse.o):
3858         Depend on target.h.
3859         * decl.c: Include target.h.
3860         (start_java_method): Replace PROMOTE_PROTOTYPES with
3861         targetm.calls.promote_prototypes.
3862         * expr.c: Include target.h.
3863         (pop_arguments): Replace PROMOTE_PROTOTYPES with
3864         targetm.calls.promote_prototypes.
3865         * parse.y: Include target.h.
3866         (start_complete_expand_method): Replace PROMOTE_PROTOTYPES
3867         with targetm.calls.promote_prototypes.
3868
3869 2004-02-04  Kazu Hirata  <kazu@cs.umass.edu>
3870
3871         * typeck.c: Update copyright.
3872
3873 2004-02-02  Tom Tromey  <tromey@redhat.com>
3874
3875         * decl.c (java_init_decl_processing): Remove duplicate
3876         gnu/gcj/RawData.
3877
3878 2004-01-30  Kelley Cook  <kcook@gcc.gnu.org>
3879
3880         * Make-lang.in (doc/gcj.dvi): Use $(abs_docdir).
3881
3882 2004-01-28  Andrew Pinski  <pinskia@physics.uc.edu>
3883
3884         * expr.c (build_field_ref): Move variable
3885         definition up.
3886
3887 2004-01-28  Andrew Haley  <aph@redhat.com>
3888
3889         * expr.c (build_field_ref): Widen field offset.
3890
3891 2004-01-27  Andrew Haley  <aph@redhat.com>
3892
3893         java/13273
3894         * parse.y (check_interface_throws_clauses): Make sure class_decl
3895         has been loaded.
3896
3897 2004-01-22  Jeff Sturm  <jsturm@one-point.com>
3898
3899         PR java/13733
3900         * parse.y (patch_assignment): Don't modify lhs_type for
3901         reference assignments.
3902
3903 2004-01-20  Kelley Cook  <kcook@gcc.gnu.org>
3904
3905         * Make-lang.in: Replace $(docdir) with doc.
3906         (java.info, java.srcinfo, java.man, java.srcman): New rules.
3907         (java.install-man): Revamp rule.
3908
3909 2004-01-20  Kelley Cook  <kcook@gcc.gnu.org>
3910
3911         * Make-lang.in (JAVA_INSTALL_NAME, JAVA_TARGET_INSTALL_NAME,
3912         GCJH_TARGET_INSTALL_NAME): Define via a immediate $(shell)
3913         instead of deferred backquote.
3914
3915 2004-01-16  Andrew Pinski  <pinskia@physics.uc.edu>
3916
3917         * typeck.c (find_method_in_interfaces): Move variable
3918         definition up.
3919
3920 2004-01-16  Andrew Haley  <aph@redhat.com>
3921
3922         PR java/13273:
3923         * typeck.c (shallow_find_method): New.
3924         (find_method_in_superclasses): New.
3925         (find_method_in_interfaces): New.
3926         (lookup_do): Rewrite.
3927         * java-tree.h (SEARCH_ONLY_INTERFACE): Delete.
3928
3929         * jcf-parse.c (read_class): Save and restore output_class.
3930         * decl.c (java_expand_body): Set output_class from fndecl.
3931
3932 2004-01-15  Michael Chastain  <mec.gnu@mindspring.com>
3933
3934         * class.c (gen_indirect_dispatch_tables): Fix string length
3935         calculations.
3936
3937 2004-01-15  Kelley Cook  <kcook@gcc.gnu.org>
3938
3939         * Make-lang.in (parse.c, parse-scan.c): Always build in doc directory.
3940         (java.srcextra): Copy above back to source directory if requested.
3941         (po-generated): Delete reference to $(parsedir).
3942         (java/parse.o, java/parse-scan.o): Delete reference to $(parsedir).
3943         Use implicit rule.
3944
3945 2004-01-14  Jan Hubicka  <jh@suse.cz>
3946
3947         * lang.c (java_estimate_num_insns_1): Fix bug in MODIFY_EXPR cost
3948         estimation.
3949
3950 2004-01-09  Mark Mitchell  <mark@codesourcery.com>
3951
3952         * java-tree.h (java_expand_expr): Change prototype.
3953         * expr.c (java_expand_expr): Add alt_rtl parameter.
3954
3955 2004-01-09  Andrew Haley  <aph@redhat.com>
3956
3957         PR java/12755:
3958         * parse.y (java_fix_constructors):  Set output_class.
3959         (java_reorder_fields): Likewise.
3960         (java_layout_classes): Likewise.
3961         (java_expand_classes): Generate indirect dispatch tables.
3962         (java_expand_classes): Set output_class.
3963         (java_finish_classes): Likewise.
3964         * lang.c (java_init): Turn on always_initialize_class_p if we're
3965         using indirect dis[atch.
3966         (java_decl_ok_for_sibcall): Use output_class, not current_class.
3967         (java_get_callee_fndecl): Use class local atable.
3968         * jcf-parse.c
3969         (always_initialize_class_p): Decl moved to java-tree.h.
3970         (HANDLE_CLASS_INFO): Set output_class.
3971         (read_class): Likewise.
3972         (parse_class_file): Call gen_indirect_dispatch_tables.
3973         (parse_zip_file_entries): Set output_class.
3974         (java_parse_file): Set output_class.  Don't emit symbol tables.
3975         * java-tree.h (output_class): New.
3976         Remove global declarations for otable, atable, and ctable.
3977         (always_initialize_class_p): moved here from decl.c.
3978         (DECL_OWNER): New.
3979         (TYPE_ATABLE_METHODS, TYPE_ATABLE_SYMS_DECL, TYPE_ATABLE_DECL,
3980         TYPE_OTABLE_METHODS, TYPE_OTABLE_SYMS_DECL, TYPE_OTABLE_DECL,
3981         TYPE_CTABLE_DECL, TYPE_CATCH_CLASSES): New.
3982         (struct lang_type): Add otable_methods, otable_decl,
3983         otable_syms_decl, atable_methods, atable_decl, atable_syms_decl,
3984         ctable_decl, catch_classes, type_to_runtime_map.
3985         * expr.c (build_field_ref): Make otable, atable, and ctable class
3986         local rather than global.
3987         (build_known_method_ref): Likewise.
3988         (build_invokeinterface): Likewise.
3989         (java_expand_expr): Pass runtime type (rather than actual type) to
3990         expand_start_catch.
3991         * except.c (prepare_eh_table_type): Create TYPE_TO_RUNTIME_MAP for
3992         this class.  Look up each class in that map to delete duplicates.
3993         (expand_end_java_handler): Pass runtime type (rather than actual
3994         type) to expand_start_catch.
3995         * decl.c: (always_initialize_class_p): Decl moved to java-tree.h.
3996         (do_nothing): New.
3997         (java_init_decl_processing): Rearrange things.  Remove global
3998         declarations of otable, atable, and ctable.
3999         (java_init_decl_processing): Make lang_eh_runtime_type do_nothing.
4000         (java_expand_body): Set output_class.
4001         * constants.c (build_constant_data_ref): Use output_class, not
4002         current_class.
4003         (alloc_name_constant): Likewise.
4004         * class.c (gen_indirect_dispatch_tables): New.
4005         (build_class_ref): Generate hard reference to superclass, even if
4006         using indirect dispatch.
4007         (build_static_field_ref): Use class local atable.
4008         (make_class_data): Generate hard reference to superclass, even if
4009         using indirect dispatch.
4010         Generate symbolic references to interfaces when using indirect
4011         dispatch.
4012         (make_class_data): Emit otable, atable, and ctable.
4013         Make otable, atable, and ctable class local rather than global.
4014         (emit_catch_table): Make otable, atable, and ctable class local
4015         rather than global.
4016
4017 2003-12-25  Andrew Pinski  <pinskia@physics.uc.edu>
4018
4019         * parse.y (catch_clause_parameter): Fix typo.
4020
4021         PR java/13404
4022         * parse.y: (catch_clause_parameter): Return early if $3, aka
4023         formal_parameter, is null.
4024
4025 2003-12-20  Kazu Hirata  <kazu@cs.umass.edu>
4026
4027         * class.c: Remove uses of "register" specifier in
4028         declarations of arguments and local variables.
4029         * decl.c: Likewise.
4030         * expr.c: Likewise.
4031         * gjavah.c: Likewise.
4032         * jcf-dump.c: Likewise.
4033         * jcf-io.c: Likewise.
4034         * jcf-parse.c: Likewise.
4035         * jcf-write.c: Likewise.
4036         * keyword.h: Likewise.
4037         * parse.y: Likewise.
4038         * typeck.c: Likewise.
4039         * verify.c: Likewise.
4040
4041 2003-12-06  Kelley Cook  <kcook@gcc.gnu.org>
4042
4043         * Make-lang.in (GCJ_CROSS_NAME): Delete.
4044         (java.install_common, java.install-man): Adjust for above.
4045         (java.uninstall): Likewise.
4046
4047 2003-12-03  Michael Koch  <konqueror@gmx.de>
4048
4049         * class.c (make_class_data):
4050         Push field value to 'hack_signers' instead of 'signers'.
4051         * decl.c (java_init_decl_processing):
4052         Push field 'hack_signers' instead of 'signers'.
4053
4054 2003-12-03  Zack Weinberg  <zack@codesourcery.com>
4055
4056         * lex.h: Check both HAVE_ICONV and HAVE_ICONV_H before
4057         including iconv.h.
4058
4059 2003-12-03  Ralph Loader  <rcl@ihug.co.nz>
4060
4061         PR java/12374:
4062         * parse.y (qualify_ambiguous_name): Remove lots of broken
4063         field access processing - there's no need to do that here,
4064         because we have resolve_field_access.  Remove
4065         RESOLVE_EXPRESSION_NAME_P as it isn't used anywhere else.
4066         * java-tree.h: Remove RESOLVE_EXPRESSION_NAME_P as it isn't
4067         used.
4068
4069 2003-12-01  Jeff Sturm  <jsturm@one-point.com>
4070
4071         Fix PR java/13237
4072         * parse.y (java_complete_lhs): Save location prior to patching
4073         CALL_EXPR.
4074
4075 2003-11-25  Mohan Embar  <gnustuff@thisiscool.com>
4076
4077         PR java/12548
4078         * resource.c (write_resource_constructor): Append
4079         "_resource" to constructor identifier name.
4080
4081 2003-11-25  Jeff Sturm  <jsturm@one-point.com>
4082
4083         Fix PR java/13183.
4084         * constants.c (cpool_for_class): New function.
4085         (outgoing_cpool): Remove global variable.
4086         (alloc_name_constant): Use cpool_for_class.
4087         (build_constants_constructor): Likewise.
4088         * decl.c (java_expand_body): Set current_class.
4089         * java-tree.h (outgoing_cpool) Remove declaration.
4090         (init_outgoing_cpool): Likewise.
4091         * jcf-parse.c (init_outgoing_cpool): Remove function.
4092         (parse_class_file): Don't call init_outgoing_cpool.
4093         * parse.y (java_complete_expand_methods): Don't call
4094         init_outgoing_cpool.  Don't save outgoing_cpool.
4095         (java_expand_classes): Don't restore outgoing_cpool.
4096         (java_finish_classes): Likewise.
4097
4098 2003-11-24  Mohan Embar  <gnustuff@thisiscool.com>
4099
4100         * Make-lang.in: (java.install-common) Add
4101         symlink for $(target_noncanonical)-gcjh for
4102         native builds.
4103
4104 2003-11-20  Joseph S. Myers  <jsm@polyomino.org.uk>
4105
4106         * Make-lang.in (java.extraclean): Delete.
4107
4108 2003-11-20  Joseph S. Myers  <jsm@polyomino.org.uk>
4109
4110         * Make-lang.in (check-java): Add.
4111
4112 2003-11-19  Jeff Sturm  <jsturm@one-point.com>
4113
4114         Fix PR java/13024.
4115         * except.c (prepare_eh_table_type): Allocate variable-sized
4116         buffer `buf' with alloca.
4117
4118 2003-11-17  Jeff Sturm  <jsturm@one-point.com>
4119
4120         Fix PR java/12857.
4121
4122         decl.c (java_init_decl_processing): Don't initialize
4123         class_not_found_type_node, no_class_def_found_type_node.
4124
4125         java-tree.h (JTI_CLASS_NOT_FOUND_TYPE_NODE,
4126         JTI_NO_CLASS_DEF_FOUND_TYPE_NODE): Remove from java_tree_index.
4127         (class_not_found_type_node, no_class_def_found_type_node):
4128         Don't define.
4129
4130         parse.y (build_dot_class_method_invocation): Add this_class
4131         argument.  Qualify method invocations to a different class.
4132         (create_new_parser_context): Initialize saved_data_ctx to 0.
4133         (java_parser_context_save_global): Initialize saved_data_ctx to 1.
4134         (build_dot_class_method): Don't load classes.  Register
4135         incomplete types.
4136         (build_incomplete_class_ref): Special cases for interfaces
4137         and inner classes.  Move build_dot_class_method call to here...
4138         (patch_incomplete_class_ref): ...from here.  Pass current_class
4139         to build_dot_class_method_invocation.
4140         (build_assertion): Pass class_type to
4141         build_dot_class_method_invocation.
4142         (encapsulate_with_try_catch): Handle EXPR_WITH_FILE_LOCATION node.
4143
4144 2003-11-17  Jeff Sturm  <jsturm@one-point.com>
4145
4146         Fix PR java/12739.
4147         * java-tree.h (BLOCK_EMPTY_P): Define.
4148         * parse.y (java_complete_lhs): Check for empty blocks
4149         in TRY_FINALLY_EXPR case.
4150
4151 2003-11-17  Andrew Haley  <aph@redhat.com>
4152
4153         * java-tree.h (LOCAL_VAR_OUT_OF_SCOPE_P): New.
4154         (struct lang_decl_var:freed): New variable.
4155         * decl.c (poplevel): Mark local vars that have gone out of scope.
4156         (push_jvm_slot): Don't use the RTL of a var that has gone out of
4157         scope.
4158
4159 2003-11-16  Jason Merrill  <jason@redhat.com>
4160
4161         * Make-lang.in (java.tags): Create TAGS.sub files in each directory
4162         and TAGS files that include them for each front end.
4163
4164 2003-11-15  Tom Tromey  <tromey@redhat.com>
4165
4166         * gjavah.c (print_stub_or_jni): Pass `env' to FatalError.
4167
4168 2003-11-12  Jason Merrill  <jason@redhat.com>
4169
4170         PR optimization/12547
4171         * lang.c (java_tree_inlining_walk_subtrees): Just walk
4172         BLOCK_EXPR_BODY directly.
4173
4174 2003-11-12  Andrew Haley  <aph@redhat.com>
4175
4176         PR java/11045
4177         * parse.y (fold_constant_for_init): Check that we really do have a
4178         constant.
4179
4180         PR java/11533
4181         * lang.c (merge_init_test_initialization): Clear DECL_INITIAL for
4182         init_test_decls being inlined.
4183
4184         PR java/12890:
4185         * parse.y (do_resolve_class): Check return value from
4186         breakdown_qualified().
4187
4188 2003-11-11  Tom Tromey  <tromey@redhat.com>
4189
4190         PR java/12915:
4191         * parse.y (merge_string_cste): Handle case where we have a
4192         pointer that happens to be zero, not null_pointer_node.
4193
4194 2003-11-10  Tom Tromey  <tromey@redhat.com>
4195
4196         * jcf-parse.c (classify_zip_file): Correctly compare
4197         filename_length against length of manifest file's name.
4198
4199 2003-11-08  Tom Tromey  <tromey@redhat.com>
4200
4201         PR java/12894:
4202         * jcf-parse.c (classify_zip_file): Only skip MANIFEST.MF file.
4203
4204 2003-11-06  Andrew Haley  <aph@redhat.com>
4205
4206         * expr.c (java_stack_swap): Make sure destination stack slots are
4207         of the correct type.
4208
4209 2003-11-03  Kelley Cook  <kcook@gcc.gnu.org>
4210
4211         * Make-lang.in (dvi): Move targets to $(docobjdir).
4212         (gcj.dvi): Simplify rule and adjust target.
4213         (gcj.info): Simplify rule.
4214         (gcj.pod): New intermediate rule.
4215         (gcjh.pod): Likewise.
4216         (jv-scan.pod): Likewise.
4217         (jcf-dump.pod): Likewise.
4218         (gij.pod): Likewise.
4219         (jv-convert.pod): Likewise.
4220         (rmic.pod): Likewise.
4221         (rmiregistry.pod): Likewise.
4222         (gcj.1): Delete.
4223         (gcjh.1): Delete.
4224         (jv-scan.1): Delete.
4225         (jcf-dump.1): Delete.
4226         (gij.1): Delete.
4227         (jv-convert.1): Delete.
4228         (rmic.1): Delete.
4229         (rmiregistry.1): Delete.
4230
4231 2003-11-02  Jeff Sturm  <jsturm@one-point.com>
4232
4233         Fixes PR java/12866.
4234         * parse.y (resolve_qualified_expression_name): Move test
4235         for outer field access methods from here...
4236         (check_thrown_exceptions) ...to here.
4237
4238 2003-11-01  Kelley Cook  <kcook@gcc.gnu.org>
4239
4240         * .cvsignore: Delete.
4241
4242 2003-10-28  Frank Ch. Eigler  <fche@redhat.com>
4243
4244         * verify.c (verify_jvm_instructions): Don't warn about legal
4245         eh binding regions generated for example by jdk 1.4.1.
4246
4247 2003-10-24  David S. Miller  <davem@redhat.com>
4248
4249         * jcf-parse.c (jcf_parse): Fix args to fatal_error().
4250
4251 2003-10-22  Andrew Haley  <aph@redhat.com>
4252
4253         * lang.c (LANG_HOOKS_GET_CALLEE_FNDECL): New.
4254         (java_get_callee_fndecl): New.
4255
4256         * jcf-parse.c (java_parse_file): Call emit_catch_table().
4257
4258         * java-tree.h (ctable_decl): New.
4259         (catch_classes):  New.
4260         (java_tree_index): Add JTI_CTABLE_DECL, JTI_CATCH_CLASSES.
4261
4262         * decl.c (java_init_decl_processing): Add catch_class_type.
4263         Add ctable_decl.
4264         Add catch_classes field.
4265
4266         * class.c (build_indirect_class_ref): Break out from
4267         build_class_ref.
4268         (make_field_value): Check flag_indirect_dispatch.
4269         (make_class_data): Ditto.
4270         Tidy uses of PUSH_FIELD_VALUE.
4271         Add field catch_classes.
4272         (make_catch_class_record): New.
4273
4274         * java-tree.h (PUSH_FIELD_VALUE): Tidy.
4275
4276 2003-10-22  Kazu Hirata  <kazu@cs.umass.edu>
4277
4278         * jcf-write.c: Follow spelling conventions.
4279         * parse.y: Likewise.
4280
4281 2003-10-22  Kazu Hirata  <kazu@cs.umass.edu>
4282
4283         * ChangeLog: Fix typos.
4284         * expr.c: Fix comment typos.
4285         * jcf-write.c: Likewise.
4286         * lang.c: Likewise.
4287         * lex.c: Likewise.
4288         * mangle.c: Likewise.
4289         * parse-scan.y: Likewise.
4290         * parse.y: Likewise.
4291
4292 2003-10-22  Tom Tromey  <tromey@redhat.com>
4293
4294         * expr.c (expand_byte_code): Only warn about dead bytecode when
4295         extra_warnings is set.
4296
4297 2003-10-22  Bryce McKinlay  <bryce@mckinlay.net.nz>
4298
4299         Fix for PR java/12586.
4300         * mangle.c (find_compression_record_match): Don't iterate through
4301         package namespace elements unless they all match compression_table
4302         entries.
4303
4304 2003-10-20  Kelley Cook  <kcook@gcc.gnu.org>
4305
4306         * Make-lang.in (info): Honor $(parsedir) and $(docobjdir).
4307         (generate-manpages): Likewise.
4308         (java.maintainer-clean): Likewise.
4309         (gcj.info): Likewise.
4310         (gcj.1): Likewise.
4311         (gcjh.1): Likewise.
4312         (jv-scan.1): Likewise.
4313         (jcf-dump.1): Likewise.
4314         (gij.1): Likewise.
4315         (jv-convert.1): Likewise.
4316         (rmic.1): Likewise.
4317         (rmiregistry.1): Likewise.
4318         (java.install-man): Likewise.
4319         (parse-scan.o): Move and define complete compile line.
4320         (parse.o): Likewise.
4321         (jcf-tree-inline.o): Move.
4322
4323 2003-10-20  Mark Mitchell  <mark@codesourcery.com>
4324
4325         * Make-lang.in (info): Update dependencies.
4326         (java.install-info): Remove.
4327         ($(srcdir)/java/gcj.info): Replace with ...
4328         ($(docobjdir)/gcj.info): ... this.
4329
4330 2003-10-14  Nathanael Nerode  <neroden@gcc.gnu.org>
4331
4332         * Make-lang.in: Replace uses of $(target_alias) with
4333         $(target_noncanonical).
4334
4335 2003-10-09  Tom Tromey  <tromey@redhat.com>
4336
4337         * decl.c (java_init_decl_processing): Declare signers field.
4338         * class.c (make_class_data): Set signers field.
4339
4340 2003-10-09  Jason Merrill  <jason@redhat.com>
4341
4342         * parse.y (patch_assignment): Use make_node to create a BLOCK.
4343         * parse.h (BUILD_PTR_FROM_NAME): Use make_node to create a
4344         POINTER_TYPE.
4345
4346 2003-10-06  Mark Mitchell  <mark@codesourcery.com>
4347
4348         * Make-lang.in (java.info): Replace with ...
4349         (info): ... this.
4350         (java.dvi): Replace with ...
4351         (dvi): ... this.
4352         (java.generated-manpages): Replace with ...
4353
4354 2003-10-03  Kelley Cook  <kelleycook@wideopenwest.com>
4355
4356         * builtins.c, jcf.h, jvspec.c: Remove PARAMS macros.
4357
4358 2003-10-01  Andrew Haley  <aph@redhat.com>
4359
4360         * jcf-parse.c (java_parse_file): Write otable and atable.
4361         * java-tree.h (atable_methods): New.
4362         (atable_decl): New.
4363         (atable_syms_decl): New.
4364         (enum java_tree_index): Add JTI_ATABLE_METHODS, JTI_ATABLE_DECL,
4365         JTI_ATABLE_SYMS_DECL.  Rename JTI_METHOD_SYMBOL* to JTI_SYMBOL*.
4366         (symbol_*type): Rename method_symbol* to symbol*type.
4367         (emit_offset_symbol_table): Delete.
4368         (emit_symbol_table): New.
4369         (get_symbol_table_index): New.
4370         (atable_type): New.
4371         * expr.c (build_field_ref): Handle flag_indirect_dispatch.
4372         (build_known_method_ref): Likewise.
4373         (get_symbol_table_index): Rename from get_offset_table_index.
4374         Parameterize to allow re-use by differing types of symbol table.
4375         (build_invokevirtual): Pass table to get_offset_table_index.
4376         * decl.c (java_init_decl_processing): Push types and decls for
4377         atable and atable_syyms.
4378         * class.c (build_static_field_ref): Handle flag_indirect_dispatch.
4379         (make_class_data): Add new fields atable and atable_syms.
4380         (emit_symbol_table): Rename from emit_offset_symbol_table.
4381         Parameterize to allow re-use by different types of symbol table.
4382         (build_symbol_entry): Renamed from build_method_symbols_entry.
4383
4384 2003-09-30  Roger Sayle  <roger@eyesopen.com>
4385
4386         * jcf-write.c (generate_bytecode_insns): Implement evaluate-once
4387         semantics for SAVE_EXPR, by caching the result in a temporary.
4388
4389 2003-09-28  Richard Henderson  <rth@redhat.com>
4390
4391         * check-init.c (check_init): Save and restore input_location
4392         instead of file and line separately.
4393         * decl.c (java_expand_body): Likewise.
4394         * jcf-write.c (generate_bytecode_insns): Likewise.
4395         * parse.y (safe_layout_class): Likewise.
4396         * jcf-parse.c (read_class, parse_class_file): Likewise.
4397         (java_parse_file): Use %H for warning locator.
4398
4399 2003-09-28  Roger Sayle  <roger@eyesopen.com>
4400
4401         * expr.c (java_check_reference): Use the semantics of COND_EXPRs
4402         with void-type branches instead of using a COMPOUND_EXPR.
4403
4404 2003-09-28  Jeff Sturm  <jsturm@one-point.com>
4405
4406         * decl.c (java_optimize_inline, dump_function): Remove.
4407         * java-tree.h (java_optimize_inline): Remove declaration.
4408         * jcf-parse.c (java_parse_file): Assume flag_unit_at_a_time is set.
4409         * parse.y (source_end_java_method, java_expand_classes):
4410         Likewise.  Remove dead code.
4411
4412 2003-09-27  Roger Sayle  <roger@eyesopen.com>
4413
4414         * lang.c (java_init_options): Set flag_evaluation_order.
4415         * expr.c (force_evaluation_order): Don't attempt to force
4416         evaluation order of binary operations using save_expr.
4417         * parse.y (java_complete_lhs): No longer need to call
4418         force_evaluation_order when constructing binary operators.
4419
4420 2003-09-27  Alexandre Petit-Bianco  <apbianco@redhat.com>
4421             Bryce McKinlay  <bryce@mckinlay.net.nz>
4422
4423         PR java/1333:
4424         * parse.y (not_accessible_field_error): New function.
4425         (resolve_expression_name): Check field access permissions.
4426         (resolve_qualified_expression_name): Use
4427         not_accessible_field_error.
4428         (resolve_qualified_expression_name): Likewise.
4429
4430 2003-09-24  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
4431
4432         * class.c (build_utf8_ref): Test for HAVE_GAS_SHF_MERGE value.
4433
4434 2003-09-23  Roger Sayle  <roger@eyesopen.com>
4435
4436         * jcf-write.c (generate_bytecode_insns): Optimize binary operations
4437         with equal operands without side-effects.
4438
4439 2003-09-22  Jeff Sturm  <jsturm@one-point.com>
4440
4441         * decl.c (java_init_decl_processing): Don't emit otable decls
4442         if flag_indirect_dispatch is not set.
4443
4444 2003-09-21  Richard Henderson  <rth@redhat.com>
4445
4446         * class.c, decl.c, jcf-parse.c, jcf-write.c, parse.y,
4447         resource.c: Revert.
4448
4449 2003-09-21  Richard Henderson  <rth@redhat.com>
4450
4451         * class.c, decl.c, jcf-parse.c, jcf-write.c, parse.y,
4452         resource.c: Update for DECL_SOURCE_LOCATION rename and change to const.
4453
4454 2003-09-20  Richard Henderson  <rth@redhat.com>
4455
4456         * check-init.c, class.c, decl.c, expr.c: Use %J in diagnostics.
4457
4458 2003-09-18  Roger Sayle  <roger@eyesopen.com>
4459
4460         * expr.c (java_truthvalue_conversion): Remove FFS_EXPR case.
4461         * check-init.c (check_init): Likewise.
4462
4463 2003-09-18  Roger Sayle  <roger@eyesopen.com>
4464
4465         * jcf-write.c (generate_bytecode_insns): Add support for fconst_2.
4466
4467 2003-09-16  Andrew Haley  <aph@redhat.com>
4468
4469         * jcf-write.c (generate_bytecode_insns): Add MIN_EXPR and MAX_EXPR.
4470
4471 2003-09-17  Ranjit Mathew  <rmathew@hotmail.com>
4472
4473         Fixes PR java/9577
4474         * mangle.c (find_compression_record_match): Skip
4475         over a "6JArray" (the array template mangled string)
4476         IDENTIFIER_NODE.
4477         (mangle_array_type): Correct minor typo.
4478         (atms): Move definition to the beginning.
4479
4480 2003-09-16  Bryce McKinlay  <bryce@mckinlay.net.nz>
4481
4482         * class.c (add_miranda_methods): Ensure super-interfaces are laid
4483         out. Fix for PR java/12254.
4484
4485 2003-09-11  Richard Henderson  <rth@redhat.com>
4486
4487         * parse.y (source_end_java_method): Update for new
4488         cgraph_finalize_function argument.
4489
4490 2003-09-09  Richard Henderson  <rth@redhat.com>
4491
4492         * parse.y (source_end_java_method): Update call to
4493         cgraph_finalize_function.
4494
4495 2003-09-03  Jeff Sturm  <jsturm@one-point.com>
4496
4497         * decl.c (java_expand_body): New function.
4498         * expr.c (build_class_init): Set DECL_IGNORED_P.
4499         * java-tree.h (start_complete_expand_method,
4500         java_expand_body): Declare.
4501         * jcf-parse.c (cgraph.h): Include.
4502         (java_parse_file): Handle flag_unit_at_a_time.
4503         * lang.c (LANG_HOOKS_TREE_INLINING_START_INLINING,
4504         LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Define.
4505         (java_estimate_num_insns): Use walk_tree_without_duplicates.
4506         (java_start_inlining): New function.
4507         * parse.h (java_finish_classes): Declare.
4508         * parse.y: Include cgraph.h.
4509         (block): Don't special-case empty block production.
4510         (craft_constructor): Set DECL_INLINE.
4511         (source_end_java_method): Handle flag_unit_at_a_time.
4512         Replace inline code with call to java_expand_body.
4513         (start_complete_expand_method): Remove static modifier.
4514         (java_expand_method_bodies): Patch function tree for
4515         class initialization and/or synchronization as needed.
4516         Don't begin RTL expansion yet.
4517         (java_expand_classes): Check flag_unit_at_a_time before
4518         calling finish_class.
4519         (java_finish_classes): New function.
4520         (java_complete_lhs): Ensure COMPOUND_EXPR has non-NULL type.
4521         (patch_assignment): Set DECL_CONTEXT on temporary variable.
4522         (emit_test_initialization): Set DECL_IGNORED_P.
4523
4524 2003-09-03  Roger Sayle  <roger@eyesopen.com>
4525
4526         * builtins.c (enum builtin_type): Delete unused enumeration.
4527         * Make-lang.in (java/builtins.o): Remove built-types.def dependency.
4528
4529 2003-08-28  Tom Tromey  <tromey@redhat.com>
4530
4531         * gcj.texi (Extensions): Document gcjlib URLs.
4532
4533 2003-08-20  Tom Tromey  <tromey@redhat.com>
4534
4535         * gcj.texi (Extensions): Added xref.
4536         (libgcj Runtime Properties): Document
4537         gnu.gcj.runtime.VMClassLoader.library_control.
4538
4539 2003-08-20  Andrew Haley  <aph@redhat.com>
4540
4541         * except.c (prepare_eh_table_type): Use new encoding for exception
4542         handlers when using -fno-assume-compiled.
4543
4544 2003-08-13  Tom Tromey  <tromey@redhat.com>
4545
4546         * gcj.texi (Invoking gij): Document -X and -?.
4547
4548 2003-08-13  Mohan Embar  <gnustuff@thisiscool.com>
4549
4550         * Make-lang.in: Added missing win32-host.o to JAVA_OBJS,
4551         GCJH_OBJS, JCFDUMP_OBJS
4552         * win32-host.c: Removed the unnecessary and broken dependency
4553         on jcf.h
4554
4555 2003-08-11  Tom Tromey  <tromey@redhat.com>
4556
4557         * parse.y (java_check_regular_methods): Typo fixes.  Call
4558         check_interface_throws_clauses.  Use
4559         check_concrete_throws_clauses.
4560         (check_interface_throws_clauses): New function.
4561         (check_concrete_throws_clauses): New function.
4562         (hack_is_accessible_p): New function.
4563         (find_most_specific_methods_list): Added FIXME.
4564         * typeck.c (lookup_do): Use `flags' argument to decide what to
4565         do.  Reimplemented.
4566         (lookup_argument_method_generic): New function.
4567         (lookup_argument_method2): Removed.
4568         * jcf.h (ACC_INVISIBLE): New define.
4569         * jcf-write.c (generate_classfile): Skip invisible methods.
4570         * class.c (add_miranda_methods): New function.
4571         (layout_class_methods): Use it.
4572         (get_access_flags_from_decl): Use ACC_INVISIBLE.
4573         * java-tree.h (METHOD_INVISIBLE): New define.
4574         (lang_decl_func) [invisible]: New field.
4575         (lookup_argument_method_generic): Declare.
4576         (SEARCH_INTERFACE): New define.
4577         (SEARCH_SUPER): Likewise.
4578         (SEARCH_ONLY_INTERFACE): Likewise.
4579         (SEARCH_VISIBLE): Likewise.
4580         (lookup_argument_method2): Removed declaration.
4581
4582 2003-08-05  Tom Tromey  <tromey@redhat.com>
4583
4584         Fix for PR java/11600:
4585         * parse.y (java_complete_lhs): See whether we're calling a method
4586         on an array.
4587         (check_thrown_exceptions): Added `is_array_call' argument;
4588         fixed `clone' checking; updated all callers.
4589
4590 2003-08-05  Steven Bosscher  <steven@gcc.gnu.org>
4591
4592         * java-tree.h (DECL_ESTIMATED_INSNS): Remove (moved to tree.h).
4593
4594 2003-08-03  Tom Tromey  <tromey@redhat.com>
4595
4596         * java-tree.h (METHOD_TRANSIENT): Removed.
4597         * decl.c (pushdecl): Removed some dead code.
4598         * class.c (get_access_flags_from_decl): Can't have transient
4599         method.
4600         (add_method_1): Can't have a transient method.
4601
4602 2003-07-28  Andreas Jaeger  <aj@suse.de>
4603
4604         * jvspec.c: Convert to ISO C90 prototypes.
4605
4606 2003-07-25  Nathan Sidwell  <nathan@codesourcery.com>
4607
4608         * decl.c (force_poplevels): Fix warning call.
4609
4610 2003-07-25  Gabriel Dos Reis  <gdr@integrable-solutions.net>
4611
4612         * expr.c (expand_java_field_op): Don't use xxx_with_decl
4613         (expand_java_field_op): Likewise.
4614         * class.c (layout_class_method): Likewise
4615         (emit_register_classes): Likewise.
4616         * decl.c (pushdecl): Likewise.
4617         (poplevel): Likewise.
4618         (force_poplevels): Likewise.
4619         (give_name_to_locals): Likewise.
4620         * check-init.c (check_for_initialization): Likewise.
4621
4622 2003-07-24  Jason Merrill  <jason@redhat.com>
4623
4624         * java-tree.h: Move boolean_type_node et al to the back end.
4625
4626 2003-07-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4627
4628         * class.c java-tree.h jcf-write.c jvspec.c: Remove unnecessary
4629         casts.
4630
4631 2003-07-19  Neil Booth  <neil@daikokuya.co.uk>
4632
4633         * lang.opt: Don't show -MD_ and -MDD_.
4634
4635 2003-07-18  Neil Booth  <neil@daikokuya.co.uk>
4636
4637         * lang-options.h: Remove.
4638         * lang.opt: Add help text.
4639
4640 2003-07-15  Kazu Hirata  <kazu@cs.umass.edu>
4641
4642         * expr.c: Remove the last argument to expand_assignment().
4643
4644 2003-07-09  Jan Hubicka  <jh@suse.cz>
4645
4646         * java-tree.h (DECL_NUM_STMTS): Rename to...
4647         (DECL_ESTIMATED_INSNS): ... this.
4648         * lang.c (java_estimate_num_insns, java_estimate_num_insns_1):
4649         New static functions.
4650         (LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS): Define.
4651         * parser.y (add_stmt_to_compound): Do not account statements.
4652
4653 2003-07-08  Mark Wielaard  <mark@klomp.org>
4654
4655         * gcj.texi: CNI now expands to Compiled Native Interface.
4656
4657 2003-07-08  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
4658
4659         * Make-lang.in (java/gcj.dvi): Use PWD_COMMAND.
4660
4661 2003-07-07  Nathan Sidwell  <nathan@codesourcery.com>
4662
4663         * expr.c (expand_byte_code): Adjist emit_line_note call.
4664
4665 2003-07-06  Neil Booth  <neil@daikokuya.co.uk>
4666
4667         * lang.c (java_handle_option): Don't handle filenames.
4668
4669 2003-07-02  Zack Weinberg  <zack@codesourcery.com>
4670
4671         * jcf-path.c: Don't default-define PATH_SEPARATOR nor
4672         DIR_SEPARATOR.
4673         Use FILENAME_CMP.
4674         * jcf-write.c: Don't default-define DIR_SEPARATOR.
4675         * jcf.h: Delete COMPARE_FILENAMES definition.
4676
4677 2003-07-02  Neil Booth  <neil@daikokuya.co.uk>
4678
4679         * lang.c (java_init_options): Update prototype.
4680
4681 2003-07-01  Nathan Sidwell  <nathan@codesourcery.com>
4682
4683         * decl.c (poplevel): Adjust define_label call.
4684
4685 2003-06-27  Zack Weinberg  <zack@codesourcery.com>
4686
4687         * gjavah.c (flag_jni): Make non-static.
4688         * parse-scan.y (ctxp): Make non-static.
4689
4690         * class.c (build_method_symbols_entry)
4691         * expr.c (get_offset_table_index)
4692         * jcf-parse.c (jcf_parse):
4693         Mark the definition static, matching the forward declaration.
4694
4695 2003-06-26  Neil Booth  <neil@daikokuya.co.uk>
4696
4697         * lang.c (java_handle_option): Don't check for missing arguments.
4698
4699 2003-06-20  Nathan Sidwell  <nathan@codesourcery.com>
4700
4701         * class.c (push_class): Use a location_t to save place.
4702         (emit_register_classes): Set input_location. Adjust
4703         expand_function_end call.
4704         * resource.c (write_resource_constructor): Likewise.
4705         * decl.c (end_java_method): Adjust expand_function_end call.
4706         * parse.y (source_end_java_method): Likewise.
4707
4708 2003-06-17  Robert Abeles  <rabeles@archaelogic.com>
4709
4710         * lang.c (java_handle_option): Likewise.
4711
4712 2003-06-16  Neil Booth  <neil@daikokuya.co.uk>
4713
4714         * lang.c (java_handle_option): Special-casing of optional
4715         joined arguments no longer needed.
4716         * lang.opt: Update switches that take optional argument.
4717
4718 2003-06-15  Neil Booth  <neil@daikokuya.co.uk>
4719
4720         * lang.opt: Declare Java.
4721         * lang.c (java_init_options): Update.
4722
4723 2003-06-15  Neil Booth  <neil@daikokuya.co.uk>
4724
4725         * lang.c (version_flag): Rename to v_flag to avoid clash w/ toplev.h.
4726
4727 2003-06-14  Neil Booth  <neil@daikokuya.co.uk>
4728
4729         * lang-specs.h: Rewrite -MD and -MMD to append an underscore.
4730         * lang.c (java_handle_option): -MD and -MMD have an underscore.
4731         * lang.opt: -MD and -MMD have an underscore.
4732
4733 2003-06-14  Nathan Sidwell  <nathan@codesourcery.com>
4734
4735         * class.c (emit_register_classes): Adjust init_function_start
4736         call.
4737         * decl.c (complete_start_java_method): Likewise.
4738         * resource.c (write_resource_constructor): Likewise.
4739
4740 2003-06-14  Neil Booth  <neil@daikokuya.co.uk>
4741
4742         * Make-lang.in: Update to use options.c and options.h.
4743         * lang.c: Include options.h not j-options.h.
4744         (java_handle_option): Abort on unrecognized option.
4745         (java_init_options): Request Java switches.
4746
4747 2003-06-11  Neil Booth  <neil@daikokuya.co.uk>
4748
4749         * Make-lang.in: Handle mostlyclean.
4750
4751 2003-06-11  Tom Tromey  <tromey@redhat.com>
4752
4753         * lang.c (java_handle_option): Update dependency_tracking for
4754         OPT_MF case.
4755
4756         * lang.c (java_handle_option): OPT_fbootclasspath_ can take an
4757         empty argument.
4758
4759 2003-06-10  Andrew Haley  <aph@redhat.com>
4760
4761         * resource.c (write_resource_constructor): Use expand_expr to
4762         generate the address of the label attached to a resource.
4763         * Make-lang.in (java/resource.o): Add expr.h
4764
4765 2003-06-10  Andrew Haley  <aph@redhat.com>
4766
4767         * lang.c (LANG_HOOKS_DECL_OK_FOR_SIBCALL): New.
4768         (java_decl_ok_for_sibcall): New.
4769
4770 2003-06-09  Neil Booth  <neil@daikokuya.co.uk>
4771
4772         * Make-lang.in (JAVA_OBJS, java/lang.o): Update.
4773         (java/j-options.c, java/j-options.h): New.
4774         * java-tree.h (resource_name, compile_resource_file,
4775         compile_resource_data): Constify.
4776         * jcf-write.c (jcf_write_base_directory): Similarly.
4777         * jcf.h (jcf_write_base_directory): Similarly.
4778         * lang.c: Include j-options.h.
4779         (cl_options_count, cl_options, string_option, java_decode_option,
4780         lang_f_options, lang_W_options, LANG_HOOKS_DECODE_OPTION,
4781         process_option_with_no): Remove.
4782         (resource_name): Constify.
4783         (LANG_HOOKS_HANDLE_OPTION): Override.
4784         (java_handle_option): New.
4785         (java_init): Don't call jcf_path_init.
4786         (java_init_options): Call jcf_path_init.
4787         * lang.opt: New.
4788         * resource.c (compile_resource_data, compile_resource_file): Constify.
4789
4790 2003-06-09  Nathan Sidwell  <nathan@codesourcery.com>
4791
4792         * java-tree.h (DECL_FUNCTION_LAST_LINE): New.
4793         (struct lang_decl_func): Add last_line field.
4794         * parse.h (DECL_SOURCE_LINE_MERGE, DECL_SOURCE_LINE_FIRST,
4795         DECL_SOURCE_LINE_LAST): Remove.
4796         * parse.y (missing_return_error, finish_method_declaration,
4797         lookup_cl, start_artificial_method_body, source_end_java_method,
4798         start_complete_expand_method): Adjust.
4799
4800 2003-06-08  Tom Tromey  <tromey@redhat.com>
4801
4802         * jvspec.c (jvgenmain_spec): Added `*' after fassume-compiled and
4803         fno-assume-compiled.
4804
4805 2003-06-08  Roger Sayle  <roger@eyesopen.com>
4806
4807         * builtins.c (define_builtin_type, builtin_types): Delete.
4808         (define_builtin): Rewritten to take just the built-in code,
4809         the function's name, type and fallback library function name.
4810         All built-ins used by Java are implicit and BUILT_IN_NORMAL.
4811         (initialize_builtins): Overhaul to define the GCC builtins
4812         used by gcj manually, providing the Java run-time's
4813         implementations as the fallback library function.
4814
4815 2003-06-08  Anthony Green  <green@redhat.com>
4816
4817         * parse.y (patch_cast): Fix conversions from floating-point to
4818         integral types.
4819
4820 2003-06-08  Neil Booth  <neil@daikokuya.co.uk>
4821
4822         * Make-lang.in: Update.
4823         * lang.c: Include opts.h. Define cl_options_count and cl_options.
4824
4825 2003-06-07  Neil Booth  <neil@daikokuya.co.uk>
4826
4827         * lang.c (java_init_options): Update.
4828
4829 2003-06-05  Jan Hubicka  <jh@suse.cz>
4830
4831         * Make-lang.in:  Add support for stageprofile and stagefeedback
4832
4833 2003-05-31  Roger Sayle  <roger@eyesopen.com>
4834
4835         * lang.c (java_init_options): Prescribe wrap-around two's
4836         complement arithmetic overflow by setting flag_wrapv.
4837
4838 2003-05-29  Roger Sayle  <roger@eyesopen.com>
4839
4840         * builtins.c (cos_builtin, sin_builtin, sqrt_builtin): Delete.
4841         (builtin_record): Add an additional builtin_code field to
4842         record which GCC built-in corresponds to the Java function.
4843         (java_builtins):  Add new entries for atan, atan2, exp, log,
4844         pow and tan.
4845         (max_builtin, min_builtin, abs_builtin): Perform constant
4846         folding on the resulting tree.
4847         (java_build_function_call_expr): Likewise, perform constant
4848         folding on the resulting tree.
4849         (initialize_builtins): The NULL creators are now allowed in
4850         the java_builtins table, which is now terminated by an entry
4851         with builtin_code == END_BUILTINS.
4852         (check_for_builtin): Likewise.  If the matching creator is
4853         NULL, construct the call using java_build_function_call_expr
4854         directly with the decl for the corresponding builtin_code.
4855
4856 2003-05-23  Nathanael Nerode  <neroden@gcc.gnu.org>
4857
4858         * win32-host.c: Normalize copyright boilerplate.
4859
4860 2003-05-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4861
4862         * parse.y (print_int_node): Use string concatentation on
4863         HOST_WIDE_INT_PRINT_* format specifier to collapse multiple
4864         function calls into one.
4865
4866 2003-05-13  Zack Weinberg  <zack@codesourcery.com>
4867
4868         * jcf-parse.c, jcf-write.c, lex.c: Replace all calls to
4869         fatal_io_error with calls to fatal_error; add ": %m" to the end of
4870         all the affected error messages.
4871
4872 2003-05-13  Richard Henderson  <rth@redhat.com>
4873
4874         * class.c (layout_class_method): Set DECL_EXTERNAL.
4875         * decl.c (java_mark_decl_local, java_mark_class_local): New.
4876         * java-tree.h (java_mark_class_local): Declare.
4877         * jcf-parse.c (parse_class_file): Use it.
4878         * parse.y (java_expand_classes): Likewise.
4879
4880 2003-05-04  Nathan Sidwell  <nathan@codesourcery.com>
4881
4882         * Make-lang.in (java/parse.o, java/parse-scan.o): Depend on input.h.
4883         * lex.h: #include input.h.
4884         * jv-scan.c (input_filename): Remove.
4885
4886 2003-05-02  Tom Tromey  <tromey@redhat.com>
4887
4888         PR java/10491:
4889         * gjavah.c (HANDLE_INNERCLASSES_ATTRIBUTE): New macro.
4890         (handle_inner_classes): New function.
4891
4892 2003-05-01  Tom Tromey  <tromey@redhat.com>
4893
4894         PR java/10459:
4895         * parse.y (finish_for_loop): Do nothing if update expression is a
4896         EXPR_WFL_NODE wrapping nothing.
4897         (java_complete_lhs) <COMPOUND_EXPR>: Likewise.
4898
4899 2003-05-02  Nathan Sidwell  <nathan@codesourcery.com>
4900
4901         * lex.h (input_lineno): Remove declaration.
4902         * parse-scan.y: #include input.h.
4903         (input_filename): Remove declaration.
4904         (input_location): Add definition.
4905         (input_line): Remove definition.
4906
4907 2003-05-01  Nathan Sidwell  <nathan@codesourcery.com>
4908
4909         * lex.h (lineno): Rename to ...
4910         (input_line): ... here
4911         * parse-scan.y (lineno): Rename to ...
4912         (input_line): ... here.
4913         (reset_report): Rename lineno to input_line.
4914         * check-init.c (check_init): Likewise.
4915         * class.c (push_class): Likewise.
4916         * decl.c (complete_start_java_method, end_java_method): Likewise.
4917         * expr.c (expand_byte_code): Likewise.
4918         * jcf-parse.c (give_name_to_class, parse_class_file): Likewise.
4919         * jcf-write.c (generate_bytecode_insns): Likewise.
4920         * lex.c (java_init_lex, java_allocate_new_line,
4921         do_java_lex): Likewise.
4922         * parse.h (YYNOT_TWICE): Likewise.
4923         * parse.y (empty_statement, expression_statement,
4924         java_pop_parser_context, java_parser_context_save_global,
4925         yyerror, register_fields, method_header, safe_layout_class,
4926         find_in_imports_on_demand, create_artificial_method,
4927         source_end_java_method, start_complete_expand_method,
4928         build_thisn_assign, java_complete_lhs,
4929         maybe_absorb_scoping_block): Likewise.
4930
4931 2003-04-20  Mohan Embar  <gnustuff@thisiscool.com>
4932
4933         * jcf-io.c (find_class): use DIR_SEPARATOR instead of
4934         '/' when computing java source filename
4935
4936 2003-04-13  Tom Tromey  <tromey@redhat.com>
4937
4938         * gjavah.c (print_c_decl): Indentation fix.
4939
4940 2003-04-12  Zack Weinberg  <zack@codesourcery.com>
4941
4942         * class.c (make_field_value, make_method_value, get_dispatch_table)
4943         (make_class_data, emit_offset_symbol_table)
4944         * constants.c (build_constants_constructor)
4945         * java-tree.h (START_RECORD_CONSTRUCTOR)
4946         * parse.y (maybe_build_array_element_wfl):
4947         Use build_constructor.
4948
4949 2003-04-10  Eric Blake  <ebb9@email.byu.edu>
4950
4951         PR java/10253:
4952         * parse.y (string_convert_int_cst): Always use at least one digit
4953         in string conversion. Remove ASCII dependence.
4954         (merge_string_cste): Fix merging of 3-byte UTF-8 characters.
4955
4956 2003-03-16  Mohan Embar  <gnustuff@thisiscool.com>
4957
4958         * Make-lang.in: added win32-host.c
4959         * jcf.h: defined macro JCF_OPEN_EXACT_CASE which
4960         resolves to open() on non-Win32 platforms and
4961         Win32-specific jcf_open_exact_case() on Win32
4962         * jcf-io.c (find_class): use JCF_OPEN_EXACT_CASE
4963         when trying .java and .class files
4964         * win32-host.c: added to repository. Defines
4965         Win32-specific jcf_open_exact_case()
4966
4967 2003-04-10  Andrew Haley  <aph@redhat.com>
4968
4969         * jcf-write.c (struct jcf_partial): num_jsrs: new field.
4970         (maybe_free_localvar): Renamed from localvar_free.
4971         Add new arg, really.
4972         (generate_bytecode_insns): Set new variable, jsrs.
4973         Only free local vars if no jsr insns have been emittted.
4974         Call maybe_free_localvar, not localvar_free.
4975
4976 2003-03-30  Joseph S. Myers  <jsm@polyomino.org.uk>
4977
4978         * gcj.texi: Remove @ at start of file.
4979
4980 2003-03-25  Tom Tromey  <tromey@redhat.com>
4981
4982         * parse.y (create_interface): Call CHECK_DEPRECATED.
4983
4984 2003-03-23  Zack Weinberg  <zack@codesourcery.com>
4985
4986         * Make-lang.in: Link jcf-dump against $(LDEXP_LIB).
4987
4988 2003-03-21  Zack Weinberg  <zack@codesourcery.com>
4989
4990         * javaop.h (jfloat, jdouble): Make them structures mirroring
4991         the bit fields of IEEE float and double respectively.
4992         (JFLOAT_FINITE, JFLOAT_QNAN_MASK, JFLOAT_EXP_BIAS,
4993         JDOUBLE_FINITE, JDOUBLE_QNAN_MASK, JDOUBLE_EXP_BIAS): New.
4994         (union Word, union DWord): Delete.
4995         (WORD_TO_FLOAT, WORDS_TO_DOUBLE): Update to match.
4996
4997         * gjavah.c (java_float_finite, java_double_finite, F_NAN_MASK,
4998         D_NAN_MASK): Delete.
4999         (jni_print_float, jni_print_double): New.  Generate
5000         hexadecimal floating constants.
5001         (print_field_info): Use jni_print_float/double.
5002
5003         * jcf-dump.c: Include math.h.  Use ldexp/frexp to assemble
5004         finite floating point numbers for output; special case
5005         non-finite floats.
5006
5007 2003-03-19  Nathanael Nerode  <neroden@gcc.gnu.org>
5008
5009         * lang.c (java_dump_tree): Change return type from 'int' to 'bool'.
5010         Replace 0 and 1 with true and false in return statements.
5011
5012 2003-03-19  Tom Tromey  <tromey@redhat.com>
5013
5014         * lex.c (do_java_lex): Renamed from java_lex.
5015         (java_lex): New function.
5016         Include timevar.h.
5017
5018 2003-03-13  Tom Tromey  <tromey@redhat.com>
5019
5020         * parse.y (resolve_inner_class): Error if qualifier is a primitive
5021         type.
5022
5023 2003-03-04  Andrew Haley  <aph@redhat.com>
5024
5025         * gjavah.c (is_first_data_member): New global variable.
5026         (print_c_decl): If it's the first data member, align it as the
5027         superclass.
5028         (process_file): Set is_first_data_member.
5029
5030 2003-03-11  Tom Tromey  <tromey@redhat.com>
5031
5032         * parse.y (resolve_field_access): Initialize class if field is
5033         found in another static field.
5034         * expr.c (build_class_init): Don't optimize out initialization of
5035         implemented interface.
5036
5037 2003-03-11  Andrew Haley  <aph@redhat.com>
5038
5039         * jcf-io.c (caching_stat): Initialize origsep to remove compiler
5040         warning.
5041
5042 2003-03-10  Ranjit Mathew  <rmathew@hotmail.com>
5043
5044         * jcf-io.c (caching_stat): Account for both DIR_SEPARATOR
5045         and DIR_SEPARATOR_2 for a target.
5046         Correct minor typos.
5047
5048         * jcf-write.c (make_class_file_name): Take both DIR_SEPARATOR
5049         and DIR_SEPARATOR_2 for a target into account.
5050
5051 2003-03-08  Neil Booth  <neil@daikokuya.co.uk>
5052
5053         * lang.c (java_init): Update prototype, move code to java_post_options.
5054         (java_post_options): Similarly.
5055
5056 2003-03-05  Ranjit Mathew  <rmathew@hotmail.com>
5057
5058         * jcf.h (COMPARE_FILENAMES): New macro similar to "strcmp" to
5059         compare file name components depending on the case-sensitivity
5060         or otherwise of the host file system.
5061
5062         * jcf-path.c (add_entry): Use COMPARE_FILENAMES instead of
5063         "strcmp" to compare file name components.
5064         Use IS_DIR_SEPARATOR instead of comparing directly against
5065         DIR_SEPARATOR.
5066         (jcf_path_extdirs_arg): Use IS_DIR_SEPARATOR instead of
5067         comparing directly against DIR_SEPARATOR.
5068
5069 2003-03-04  Tom Tromey  <tromey@redhat.com>
5070
5071         * Make-lang.in (java.tags): New target.
5072
5073 2003-03-01  Roger Sayle  <roger@eyesopen.com>
5074
5075         * java/builtins.c (builtin_type): Handle DEF_FUNCTION_TYPE_VAR_3.
5076         (initialize_builtins): Handle DEF_FUNCTION_TYPE_VAR_3.
5077
5078 2003-03-01  Tom Tromey  <tromey@redhat.com>
5079
5080         * parse.y (jdep_resolve_class): Only check deprecation if we found
5081         a decl.
5082
5083 2003-02-28  Tom Tromey  <tromey@redhat.com>
5084
5085         PR java/9695:
5086         * class.c (maybe_layout_super_class): Always pass a WFL to
5087         do_resolve_class.
5088         * parse.y (do_resolve_class): Updated comment to explain
5089         parameters.
5090
5091 2003-02-26  Tom Tromey  <tromey@redhat.com>
5092
5093         * jcf-write.c (generate_classfile): Check whether class is
5094         deprecated before writing attribute count.
5095
5096 2003-02-25  Roger Sayle  <roger@eyesopen.com>
5097
5098         * java/decl.c (java_init_decl_processing): Get soft_fmod_node from
5099         built_in_decls[BUILT_IN_FMOD] rather than define it ourselves.
5100
5101 2003-02-23  Tom Tromey  <tromey@redhat.com>
5102
5103         * lang-options.h: Added -Wdeprecated.
5104         * gcj.texi (Warnings): Document -Wdeprecated.
5105         * java-tree.h (flag_deprecated): Declare.
5106         * lang.c (lang_W_options): Added deprecated.
5107         (flag_deprecated): New global.
5108         * chartables.h: Rebuilt.
5109         * gen-table.pl (process_one): Look at whitespace.
5110         (print_tables): Define LETTER_SPACE, LETTER_MASK.
5111         * parse.h (CLEAR_DEPRECATED): New macro.
5112         (CHECK_DEPRECATED_NO_RESET): New macro.
5113         * jcf-parse.c (handle_deprecated): New function.
5114         (HANDLE_DEPRECATED_ATTRIBUTE): New define.
5115         * jcf-reader.c (get_attribute): Handle Deprecated attribute.
5116         * parse.y (resolve_type_during_patch): Check deprecation.
5117         (jdep_resolve_class): Likewise.
5118         (process_imports): Likewise.
5119         (resolve_expression_name): Likewise.
5120         (check_deprecation): Strip arrays from decl.  Check
5121         flag_deprecated.
5122         (patch_method_invocation): Also check the particular constructor
5123         for deprecation.
5124         (register_fields): Use CHECK_DEPRECATED_NO_RESET in loop.
5125         * jcf-write.c (append_deprecated_attribute): New function.
5126         (generate_classfile): Generate deprecated attribute when
5127         appropriate.
5128         * lex.c (java_parse_doc_section): Return type now void.  Rewrote.
5129         (java_lex) [case '*']: Simplify logic.
5130         (java_start_char_p): Use LETTER_MASK.
5131         (java_part_char_p): Likewise.
5132         (java_space_char_p): New function.
5133
5134 2003-02-20  Nathan Sidwell  <nathan@codesourcery.com>
5135
5136         Change base class access representation.
5137         * java/class.c (set_super_info): Don't set TREE_VIA_PUBLIC.
5138         (add_interface_do): Likewise.
5139
5140 2003-02-12  Ranjit Mathew  <rmathew@hotmail.com>
5141
5142         * decl.c (java_init_decl_processing): Change
5143         soft_lookupjnimethod_node to reflect the change in
5144         signature of _Jv_LookupJNIMethod in libjava/jni.cc
5145         * expr.c (build_jni_stub): Calculate and pass the size
5146         on the stack of the arguments to a JNI function. Use
5147         new target macro MODIFY_JNI_METHOD_CALL to allow a
5148         target to modify the call to a JNI method.
5149
5150 2003-02-08  Roger Sayle  <roger@eyesopen.com>
5151
5152         * jcf-io.c (java_or_class_file): Use libiberty's lbasename
5153         instead of basename to avoid compiler warnings on Tru64.
5154
5155 2003-02-04  Joseph S. Myers  <jsm@polyomino.org.uk>
5156
5157         * gcj.texi: Update to GFDL 1.2.
5158
5159 2003-01-31  Andrew Haley  <aph@redhat.com>
5160
5161         * parse.y (java_expand_classes): Scan the whole class list looking
5162         for access methods that haven't yet been expanded.
5163
5164 2003-01-31 Adrian Bunk <bunk@fs.tum.de>
5165
5166         Fix for java/4269:
5167
5168         * jv-scan.c: Use HAVE_LANGINFO_CODESET instead of HAVE_NL_LANGINFO
5169         to fix bootstrap on sparc-unknown-netbsdelf1.5.
5170         * jcf-parse.c: Likewise.
5171
5172 2003-01-31  Mark Wielaard  <mark@klomp.org>
5173
5174         * gjavah.c (throwable_p): Allocate 1 more byte for string.
5175
5176 2003-01-31  Nathan Sidwell  <nathan@codesourcery.com>
5177
5178         * class.c (make_class): Use BINFO_ELTS.
5179         (set_super_info): Likewse.
5180         (add_interface_do): Likewise.
5181
5182 2003-01-30  Tom Tromey  <tromey@redhat.com>
5183
5184         * jcf-parse.c (read_class): Update identifier's class value if it
5185         changed during parsing.
5186
5187 2003-01-30  Loren James Rittle  <ljrittle@acm.org>
5188
5189         * Make-lang.in (po-generated): Find the targets in $(parsedir).
5190         Propagate change to all other rules as required.
5191         (java/parse-scan.o): Add explicit dependency on
5192         $(parsedir)/java/parse-scan.c .
5193
5194 2003-01-29  Tom Tromey  <tromey@redhat.com>
5195
5196         * parse.y (patch_assignment): Only transform the rhs of an
5197         assignment when compiling to native.
5198
5199 2003-01-28  Tom Tromey  <tromey@redhat.com>
5200
5201         * jcf-write.c (generate_bytecode_conditional): Typo fixes.
5202
5203 2003-01-28  Tom Tromey  <tromey@redhat.com>
5204
5205         * lex.c (java_lex): Don't include UEOF as part of token.
5206         (java_read_unicode): Error if \u sequence prematurely terminated.
5207
5208 2003-01-27  Tom Tromey  <tromey@redhat.com>
5209
5210         * parse.y (java_check_regular_methods): Check for construct after
5211         checking types in throws clause.
5212
5213 2003-01-24  Tom Tromey  <tromey@redhat.com>
5214
5215         * class.c (build_static_field_ref): Only a String or numeric field
5216         can fold to a constant.
5217
5218 2003-01-23  Tom Tromey  <tromey@redhat.com>
5219
5220         * jcf-parse.c (parse_zip_file_entries): Overwrite trailing \0 of
5221         file name in resource buffer.
5222
5223 2003-01-23  Tom Tromey  <tromey@redhat.com>
5224
5225         * expr.c (build_known_method_ref): Use method's context to find
5226         method table index.
5227
5228 2003-01-23  Tom Tromey  <tromey@redhat.com>
5229
5230         * constants.c (set_constant_entry): Allocated cleared memory.
5231
5232 2003-01-22  Tom Tromey  <tromey@redhat.com>
5233
5234         * java-tree.h: Don't use PARAMS.
5235         * resource.c: Add prototypes for all functions.
5236         (write_resource_constructor): Use `const char *' to avoid
5237         warning.
5238
5239 2003-01-22 Nathanael Nerode  <neroden@gcc.gnu.org>
5240
5241         * jcf-parse.c (process_zip_dir): Remove unused variable.
5242
5243 2003-01-22  Tom Tromey  <tromey@redhat.com>
5244
5245         * expr.c (build_invokeinterface): Abort if method's context is not
5246         an interface.
5247
5248 2003-01-22  Tom Tromey  <tromey@redhat.com>
5249
5250         * gcj.texi (Input and output files): Mention non-class entries.
5251         * decl.c (java_init_decl_processing): Call
5252         init_resource_processing.
5253         * java-tree.h (compile_resource_data, write_resource_constructor,
5254         compile_resource_file, init_resource_processing): Declare.
5255         * config-lang.in (gtfiles): Added resource.c.
5256         * Make-lang.in (gt-java-resource.h): New target.
5257         (JAVA_OBJS): Added resource.o.
5258         (java/resource.o): New target.
5259         * resource.c: New file.
5260         * class.c (compile_resource_file): Moved to resource.c.
5261         (registerResource_libfunc): Likewise.
5262         (utf8_decl_list): Mark with GTY; now static.
5263         * jcf-parse.c (classify_zip_file): New function.
5264         (parse_zip_file_entries): Use it; compile .properties files.
5265         (process_zip_dir): Use classify_zip_file and compute_class_name.
5266         Don't write class name into zip directory.
5267         (java_parse_file): Call write_resource_constructor.
5268         (compute_class_name): New function.
5269         * jcf-io.c (read_zip_member): Reindented.
5270
5271 2003-01-21  Tom Tromey  <tromey@redhat.com>
5272
5273         * class.c (supers_all_compiled): New function.
5274         (make_class_data): Use it.
5275
5276 2003-01-21  Tom Tromey  <tromey@redhat.com>
5277
5278         * parse.y (method_header): Native method can't be strictfp.
5279         No method can be transient or volatile.
5280
5281 2003-01-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5282
5283         Make-lang.in (jvspec.o-warn): Add -Wno-error.
5284
5285 2003-01-18  Kazu Hirata  <kazu@cs.umass.edu>
5286
5287         * check-init.c: Fix comment typos.
5288         * class.c: Likewise.
5289         * constants.c: Likewise.
5290         * decl.c: Likewise.
5291         * except.c: Likewise.
5292         * expr.c: Likewise.
5293         * java-except.h: Likewise.
5294         * java-tree.h: Likewise.
5295         * javaop.h: Likewise.
5296         * jcf-dump.c: Likewise.
5297         * jcf-io.c: Likewise.
5298         * jcf-parse.c: Likewise.
5299         * jcf-write.c: Likewise.
5300         * lang.c: Likewise.
5301         * mangle.c: Likewise.
5302         * typeck.c: Likewise.
5303         * verify.c: Likewise.
5304
5305 2003-01-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5306
5307         * Make-lang.in (java/jcf-write.o): Depend on $(TM_P_H).
5308         * jcf-write.c: Include "tm_p.h".
5309
5310 2003-01-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5311
5312         * jcf-io.c (caching_stat): Cast the 3rd arg of scandir to void*.
5313
5314 2003-01-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5315
5316         * builtins.c (java_build_function_call_expr): Renamed from
5317         build_function_call_expr.  All callers changed.
5318
5319         * Make-lang.in (java/jcf-parse.o): Depend on $(TM_P_H).
5320         * jcf-parse.c: Include tm_p.h.
5321
5322         * jcf-write.c (generate_bytecode_insns): Avoid signed/unsigned
5323         warning.
5324
5325 2003-01-14  Tom Tromey  <tromey@redhat.com>
5326
5327         * class.c (make_class_data): Check that super is compiled before
5328         building class reference to it.
5329
5330 2003-01-14  Andrew Haley  <aph@redhat.com>
5331
5332         * decl.c (java_init_decl_processing): _Jv_NewMultiArray is a
5333         varargs function -- correct.
5334
5335 2003-01-14  Andrew Haley  <aph@redhat.com>
5336
5337         * decl.c (java_init_decl_processing): Temporarily back out previous patch.
5338
5339 2003-01-14  Andrew Haley  <aph@redhat.com>
5340
5341         * decl.c (java_init_decl_processing): _Jv_NewMultiArray is a
5342         varargs function -- correct.
5343
5344         * parse.y (patch_assignment): Copy the rhs of an assignment into a
5345         temporary if the RHS is a reference.
5346
5347 2003-01-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5348
5349         * Make-lang.in (keyword.h): Pass "-L ANSI-C" to gperf.
5350         * keyword.h: Regenerated.
5351
5352         * All Files: Convert to ISO C style function definitions.
5353
5354 2003-01-09  Nathanael Nerode  <neroden@gcc.gnu.org>
5355
5356         * parse.y (check_pkg_class_access): ANSIfy definition.
5357
5358 2003-01-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5359
5360         * decl.c, parse-scan.y, parse.y: Don't cast return value of
5361         xmalloc et al.
5362
5363         * class.c, gjavah.c, parse.y, verify.c: Don't use PTR.
5364
5365 2003-01-09  Geoffrey Keating  <geoffk@apple.com>
5366
5367         Merge from pch-branch:
5368
5369         2002-12-02  Geoffrey Keating  <geoffk@apple.com>
5370
5371         * Make-lang.in (java/gjavah.o): Update dependencies.
5372         * gjavah.c: Include ggc.h.
5373
5374         2002-08-16  Geoffrey Keating  <geoffk@redhat.com>
5375
5376         * Make-lang.in (GCJH_OBJS): Add ggc-none.o.
5377         (JCFDUMP_OBJS): Add ggc-none.o.
5378         (java/jcf-dump.o): Depend on GGC_H.
5379         * jcf-reader.c (jcf_parse_constant_pool): Use ggc_alloc to allocate
5380         CPool substructures.
5381         * jcf-parse.c (process_zip_dir): Use ggc_alloc to allocate JCFs.
5382         * jcf-dump.c: Include ggc.h.
5383
5384         2002-08-08  Geoffrey Keating  <geoffk@redhat.com>
5385
5386         * jcf.h (union cpool_entry): New.
5387         (struct CPool): Use gengtype to mark.  Change field 'data' to be
5388         an array of unions.
5389         (struct JCF): Use gengtype to mark.
5390         (CPOOL_UINT): Update for new cpool_entry type.
5391         (CPOOL_USHORT1): Likewise.
5392         (CPOOL_USHORT2): Likewise.
5393         (CPOOL_FINISH): Use GC to free cpool subfields.
5394         * parse.h (struct parser_ctxt): Mark field current_jcf.
5395         * lex.c (java_init_lex): Use GC to allocate struct JCF.
5396         * jcf-parse.c (HANDLE_CONSTANT_Utf8): Update for new cpool_entry type.
5397         (main_jcf): Use gengtype to mark.
5398         (ggc_mark_jcf): Delete.
5399         (get_constant): Update for new cpool_entry type.
5400         (give_name_to_class): Likewise.
5401         (get_class_constant): Likewise.
5402         (init_outgoing_cpool): Use GGC to allocate struct CPool.
5403         (java_parse_file): Use GGC to allocate struct JCF.
5404         (init_jcf_parse): Don't call ggc_add_root.
5405         * jcf-reader.c (jcf_parse_constant_pool): Update for new
5406         cpool_entry type.
5407         * java-tree.h (current_jcf): Use gengtype to mark.
5408         (CPOOL_UTF): Update for new cpool_entry type.
5409         (outgoing_cpool): Use gengtype to mark.
5410         (struct lang_type): GC struct JCF and struct CPool.
5411         * config-lang.in (gtfiles): Add jcf.h.
5412         * constants.c (find_tree_constant): New.
5413         (set_constant_entry): Allocate cpool subfields using GGC.  Update
5414         for new cpool_entry type.
5415         (find_constant1): Update for new cpool_entry type.
5416         (find_constant2): Likewise.
5417         (find_utf8_constant): Use find_tree_constant.
5418         (find_class_or_string_constant): Remove unnecessary cast to jword.
5419         Update for new cpool_entry type.
5420         (count_constant_pool_bytes): Update for new cpool_entry type.
5421         (write_constant_pool): Likewise.
5422         (alloc_name_constant): Use find_tree_constant.
5423         (build_constants_constructor): Update for new cpool_entry type.
5424
5425         2002-08-08  Geoffrey Keating  <geoffk@redhat.com>
5426
5427         * parse.y (mark_parser_ctxt): Delete.
5428         (goal): Don't use ggc_add_root.
5429         (create_new_parser_context): Use GC to allocate struct parser_ctxt.
5430         (java_pop_parser_context): Let GC free parser_ctxt.
5431         (java_parser_context_resume): Likewise.
5432         * parse.h (struct parser_ctxt): Use gengtype to mark.
5433         (ctxp): Likewise.
5434         (ctxp_for_generation): Likewise.
5435         * lex.h (struct java_lc_s): Mark for gengtype.
5436         (java_lexer): Rearrange for gengtype.
5437         * config-lang.in (gtfiles): Add lex.h, parse.h.
5438
5439 2003-01-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5440
5441         * All Files: Remove PARAMS macro.
5442
5443         * expr.c, gjavah.c, javaop.h, jcf-dump.c, jcf-io.c, jcf-reader.c,
5444         jcf-write.c, jcf.h, jv-scan.c: Don't rely on the `DEFUN', `AND' or
5445         `__STDC__' macros.
5446
5447         * jv-scan.c, parse.y: Remove VPARAMS, VA_OPEN, VA_FIXEDARG and
5448         VA_CLOSE.
5449
5450 2003-01-09  Christian Cornelssen  <ccorn@cs.tu-berlin.de>
5451
5452         * Make-lang.in (java.install-common, java.uninstall,
5453         java.install-info, java.install-man): Prepend $(DESTDIR)
5454         to destination paths in all (un)installation commands.
5455         (java.install-common): Rewrite $(LN) command to support
5456         DESTDIR with "ln" as well as with "ln -s".
5457
5458 2003-01-08  Nathanael Nerode  <neroden@gcc.gnu.org>
5459
5460         * java-tree.h: Protect against multiple inclusion.
5461
5462 2003-01-07  Tom Tromey  <tromey@redhat.com>
5463
5464         * class.c (add_assume_compiled): Don't adjust parent if we're
5465         already at the root of tree.
5466
5467 2003-01-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5468
5469         * lang.c (dump_compound_expr): Prototype.
5470
5471 2003-01-03  Tom Tromey  <tromey@redhat.com>
5472
5473         Fix for PR java/8712:
5474         * expr.c (build_instanceof): Build an NE_EXPR, not a COND_EXPR,
5475         when simply checking against `null'.
5476
5477 2003-01-03  Tom Tromey  <tromey@redhat.com>
5478
5479         * gcj.texi (Standard Properties): Document http.proxyHost and
5480         http.proxyPort.
5481
5482         * gcj.texi (GNU Classpath Properties): Document new properties.
5483
5484 2003-01-02  Steven Bosscher <s.bosscher@student.tudelft.nl>
5485
5486         * java/jcf-reader.c, java/jvgenmain.c, java/keyword.gperf,
5487         java/lang-options.h, java/mangle.c, java/mangle_name.c,
5488         java/xref.c, java/zextract.c,java/zipfile.h: Fix copyright years.
5489
5490 2003-01-01  Steven Bosscher  <s.bosscher@student.tudelft.nl>
5491
5492         * Make-lang.in, boehm.c, buffer.c,
5493           buffer.h, builtins.c, class.c,
5494           config-lang.in, constants.c,
5495           convert.h, decl.c, except.c,
5496           expr.c, java-except.h,
5497           java-tree.h, javaop.def,
5498           jcf-parse.c, jcf-write.c,
5499           jv-scan.c, jvgenmain.c,
5500           jvspec.c, keyword.gperf,
5501           keyword.h, lang-options.h,
5502           lang-specs.h, lang.c, lex.c,
5503           lex.h, mangle.c, mangle_name.c,
5504           parse-scan.y, parse.h, parse.y,
5505           typeck.c, verify.c, xref.c,
5506           xref.h: Replace "GNU CC" with
5507           "GCC" in the copyright header.
5508
5509         * check-init.c, gjavah.c, javaop.h,
5510           jcf-depend.c, jcf-dump.c, jcf-io.c,
5511           jcf-path.c, jcf-reader.c, jcf.h,
5512           zextract.c, zipfile.h: These files are
5513           "part of GCC". Also say "GCC" not "GNU CC".
5514
5515 2002-12-30  DJ Delorie  <dj@redhat.com>
5516
5517         * Make-lang.in: Protect against texi2pod/pod2man failing.
5518
5519 2002-12-28  Joseph S. Myers  <jsm@polyomino.org.uk>
5520
5521         * gcj.texi: Use @copying.
5522
5523 2002-12-27  Mark Mitchell  <mark@codesourcery.com>
5524
5525         * gjavah.c (print_name_for_stub_or_jni): Adjust call to
5526         print_cxx_classname.
5527         (print_cxx_classname): Add add_scope parameter.
5528         (print_class_decls): Do not emit a semicolon after the extern
5529         "Java" block.
5530         (process_file): Adjust calls to print_cxx_classname.
5531
5532 2002-12-23  Joseph S. Myers  <jsm@polyomino.org.uk>
5533
5534         * gcj.texi: Include Cover Texts in man page.
5535
5536 2002-12-23  Jeff Sturm  <jsturm@one-point.com>
5537
5538         * class.c (build_static_field_ref): Check FIELD_FINAL.
5539
5540         * constants.c (alloc_class_constant): Use TYPE_CPOOL_DATA_REF
5541         instead of current_constant_pool_data_ref.
5542         * java-tree.h (current_constant_pool_data_ref): Undefine.
5543         (JTI_CURRENT_CONSTANT_POOL_DATA_REF): Remove.
5544         * jcf-parse.c (init_outgoing_cpool): Don't initialize
5545         current_constant_pool_data_ref.
5546
5547         * except.c (prepare_eh_table_type ): Use DECL_NAME of class type,
5548         not build_internal_class_name.
5549
5550         * parse.y (patch_incomplete_class_ref): Always emit `class$' method.
5551         Use it when class ref isn't certain to be compiled.
5552
5553 2002-12-23  Joseph S. Myers  <jsm@polyomino.org.uk>
5554
5555         * gcj.texi: Include gcc-common.texi.
5556         * Make-lang.in ($(srcdir)/java/gcj.info, java/gcj.dvi): Depend on
5557         $(srcdir)/doc/include/gcc-common.texi.
5558
5559 2002-12-22  Anthony Green  <green@redhat.com>
5560
5561         * gcj.texi (Limitations): Add note about org.xml.sax and
5562         org.w3c.dom.
5563
5564 2002-12-20  Tom Tromey  <tromey@redhat.com>
5565
5566         * jcf-write.c (generate_bytecode_insns) [SWITCH_EXPR]: Handle case
5567         where minimum case value is Integer.MIN_VALUE.
5568         Fixes PR java/8955.
5569
5570 2002-12-18  Andrew Haley  <aph@redhat.com>
5571
5572         * parse.y (patch_invoke): Force evaluation order when `check' is
5573         set.  For PR libgcj/8945.
5574
5575 2002-12-16  Mark Mitchell  <mark@codesourcery.com>
5576
5577         * gcj.texi: Change version number to 3.4.
5578
5579 2002-12-05  Ranjit Mathew <rmathew@hotmail.com>
5580         Andrew Haley <aph@redhat.com>
5581
5582         * parse.y (source_end_java_method): Remove custom encoding of line
5583         numbers for a function decl before passing it to the back end.
5584
5585 2002-12-03  Andrew Haley  <aph@redhat.com>
5586
5587         * class.c (make_class_data): New field, "chain".
5588         * decl.c (java_init_decl_processing): Likewise.
5589
5590 2002-12-02  Tom Tromey  <tromey@redhat.com>
5591
5592         For PR java/8740:
5593         * parse.y (do_resolve_class): Handle qualified name via
5594         recursion.
5595
5596 2002-11-30  Zack Weinberg  <zack@codesourcery.com>
5597
5598         * boehm.c, buffer.c, builtins.c, check-init.c, class.c,
5599         constants.c, decl.c, except.c, expr.c, gjavah.c, jcf-depend.c,
5600         jcf-dump.c, jcf-io.c, jcf-parse.c, jcf-path.c, jcf-write.c,
5601         jv-scan.c, jvgenmain.c, jvspec.c, lang.c, mangle.c, mangle_name.c,
5602         parse-scan.y, parse.y, typeck.c, verify.c, xref.c, zextract.c:
5603         Include coretypes.h and tm.h.
5604         * Make-lang.in: Update dependencies.
5605
5606 2002-11-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5607
5608         * decl.c (java_init_decl_processing): Use `LL' on 64-bit constant.
5609
5610 2002-11-25  Diego Novillo  <dnovillo@redhat.com>
5611
5612         * jcf-reader.c: Don't expand JCF_readu4 inside the
5613         expansion of JCF_SKIP.
5614
5615 2002-11-25  Diego Novillo  <dnovillo@redhat.com>
5616
5617         * jcf-reader.c: Don't expand JCF_readu4 inside the
5618         expansion of JCF_SKIP.
5619
5620 2002-11-22  Tom Tromey  <tromey@redhat.com>
5621
5622         * parse.y (patch_binop): Cast right hand side of shift expression
5623         to `int'.  Fixes PR java/8676.
5624
5625 2002-11-22  Ranjit Mathew <rmathew@hotmail.com>
5626             Andrew Haley <aph@redhat.com>
5627
5628         * gcc/java/jcf-write.c (write_classfile): Remove target
5629         class file, if it exists, before renaming the temporary
5630         class file to it.
5631
5632 2002-11-19  Jason Thorpe  <thorpej@wasabisystems.com>
5633
5634         * jvspec.c (lang_specific_spec_functions): New.
5635
5636 2002-11-18  Tom Tromey  <tromey@redhat.com>
5637
5638         Fix for PR java/7912:
5639         * expr.c (can_widen_reference_to): Allow cast of array to
5640         Cloneable or Serializable.
5641         * java-tree.h (java_lang_cloneable_identifier_node): Declare.
5642         (java_io_serializable_identifier_node): Likewise.
5643         * parse.y (java_lang_cloneable, java_io_serializable): Removed.
5644         (valid_ref_assignconv_cast_p): Use new identifier nodes.
5645         * lex.c (java_init_lex): Don't initialize java_lang_cloneable and
5646         java_io_serializable.
5647         * decl.c (java_init_decl_processing): Initialize
5648         java_lang_cloneable_identifier_node and
5649         java_io_serializable_identifier_node.
5650         (java_lang_cloneable_identifier_node): New global.
5651         (java_io_serializable_identifier_node): Likewise.
5652
5653 2002-11-14  Jens-Michael Hoffmann  <jensmh@gmx.de>
5654
5655         * buffer.c: Remove unnecessary casts.
5656         * check-init.c: Likewise.
5657         * class.c: Likewise.
5658         * constants.c: Likewise.
5659         * decl.c: Likewise.
5660         * except.c: Likewise.
5661         * gjavah.c: Likewise.
5662         * jcf-io.c: Likewise.
5663         * jcf-parse.c: Likewise.
5664         * jcf-path.c: Likewise.
5665         * jvspec.c: Likewise.
5666         * lang.c: Likewise.
5667         * lex.c: Likewise.
5668         * verify.c: Likewise.
5669
5670 2002-11-06  Tom Tromey  <tromey@redhat.com>
5671
5672         * gjavah.c (print_stub_or_jni): Include JNIEXPORT and JNICALL in
5673         a JNI header.
5674
5675 2002-11-05  Tom Tromey  <tromey@redhat.com>
5676
5677         Fix for PR java/6388.
5678         * lex.h (JAVA_INTEGRAL_RANGE_ERROR): Wrap in do...while.
5679         * java-tree.h (enum java_tree_index): New values
5680         JTI_DECIMAL_INT_MAX_NODE, JTI_DECIMAL_LONG_MAX_NODE.
5681         (decimal_int_max, decimal_long_max): New defines.
5682         * lex.c (yylex): Rewrote range checking.  Sign extend literals.
5683         (error_if_numeric_overflow): Rewrote range checking.
5684         * decl.c (java_init_decl_processing): Initialize decimal_int_max,
5685         decimal_long_max.
5686
5687 2002-11-02  Tom Tromey  <tromey@redhat.com>
5688
5689         * java-tree.h: Move JV_STATE_ERROR before JV_STATE_DONE.
5690
5691         * class.c (make_method_value): Put class name, not signature, into
5692         `throws' field.  For PR java/8415.
5693
5694 2002-10-24  Tom Tromey  <tromey@redhat.com>
5695
5696         * gcj.texi (Invoking gij): Document --showversion.
5697         (Standard Properties): java.library.path now set.
5698
5699 2002-10-23  Tom Tromey  <tromey@redhat.com>
5700
5701         * gjavah.c (decode_signature_piece): In JNI mode, print
5702         `jobjectArray' when array depth is nonzero.
5703         Fixes PR java/8296.
5704
5705 2002-10-15  Andrew Haley  <aph@redhat.com>
5706
5707         * parse.y (patch_invoke): Call force_evaluation_order on a static
5708         arg list.
5709         (resolve_qualified_expression_name): Call force_evaluation_order
5710         on a arg list that is part of a Qualified Expression Name.
5711
5712         * lang.c (dump_compound_expr): New.
5713         (java_dump_tree): New.
5714
5715 2002-10-20  Ranjit Mathew <rmathew@hotmail.com>
5716
5717         * gcj.texi: Added item describing the GCJ runtime property
5718         "gnu.gcj.progname".
5719
5720 2002-10-15  Richard Henderson  <rth@redhat.com>
5721
5722         * jcf-parse.c (get_constant): Fix type warning.
5723
5724 2002-10-15  Andrew Haley  <aph@redhat.com>
5725
5726         * java-tree.h (java_inlining_merge_static_initializers): Declare.
5727         (java_inlining_map_static_initializers): Declare.
5728
5729 2002-10-14  Andrew Haley  <aph@redhat.com>
5730
5731         * tree-inline.c (remap_block): All local class initialization
5732         flags go in the outermost scope.
5733         (expand_call_inline): Call java_inlining_map_static_initializers.
5734         (expand_call_inline): Call java_inlining_merge_static_initializers.
5735         * java/lang.c (merge_init_test_initialization): New.
5736         (java_inlining_merge_static_initializers): New.
5737         (inline_init_test_initialization): New.
5738         (java_inlining_map_static_initializers): New.
5739
5740 2002-10-11  Mark Wielaard  <mark@klomp.org>
5741
5742         * gcj.texi (Compatibility): Add Limitations and Extensions section.
5743
5744 2002-10-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5745
5746         * class.c (JAVA_TREEHASHHASH_H): Use htab_hash_pointer.
5747
5748 2002-10-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5749
5750         * parse.y (merge_string_cste): Add parentheses around & within |.
5751
5752 2002-10-08  Tom Tromey  <tromey@redhat.com>
5753
5754         * parse.y (variable_declarator_id): Simplify error path for
5755         array declarator error.  For PR java/8003.
5756
5757 2002-10-08  Zack Weinberg  <zack@codesourcery.com>
5758
5759         * gjavah.c, jcf-dump.c, jv-scan.c: Globally replace GCCBUGURL with
5760         bug_report_url.
5761
5762 2002-10-08  Andrew Haley  <aph@redhat.com>
5763
5764         * parse.y (attach_init_test_initialization_flags): Check for
5765         error_mark_node.
5766
5767 2002-10-07  Anthony Green  <green@redhat.com>
5768
5769         * parse.y (merge_string_cste): Fix bug in string concatenation.
5770
5771 2002-10-03  Michael Koch  <konqueror@gmx.de>
5772
5773         * gcj.texi (Standard properties):
5774         Change default of java.awt.toolkit to gnu.awt.gtk.GtkToolkit.
5775
5776 2002-10-02  Roger Sayle  <roger@eyesopen.com>
5777
5778         PR optimization/6627
5779         * lang.c (java_init): If storing the vbit in function
5780         pointers, ensure that force_align_functions_log is atleast
5781         one to aid compatability with g++ vtables.
5782
5783 2002-10-01  Nathan Sidwell  <nathan@codesourcery.com>
5784
5785         * jcf-dump.c (print_constant, case CONSTANT_float): Don't fall
5786         foul of type-based aliasing.
5787
5788 2002-09-30  Anthony Green  <green@redhat.com>
5789
5790         * gcj.texi (Invoking jv-scan): Fix texinfo.
5791
5792 2002-09-28  Anthony Green  <green@redhat.com>
5793
5794         * gcj.texi (Invoking jv-scan): Add --no-assert documentation.
5795         (Code Generation): Add -fno-assert documentation.
5796         * jv-scan.c (flag_assert): New global.
5797         (options): Add assert option.
5798         (help): Add --no-assert documentation.
5799         * parse-scan.y (flag_assert): New global.
5800         * lang.c (lang_f_options): Add -fassert/-fno-assert support.
5801         (flag_assert): New global.
5802         * java-tree.h (flag_assert): New global.
5803         * lex.c (java_lex): Obey flag_assert.
5804         * jvspec.c (jvgenmain_spec): Strip -fassert/-fno-assert when
5805         calling cc1.
5806
5807 2002-09-26  Andrew Haley  <aph@redhat.com>
5808
5809         * expr.c (build_java_array_length_access): Check for null pointer.
5810         * expr.c (expand_java_arrayload): Likewise.
5811
5812 2002-09-21  Richard Henderson  <rth@redhat.com>
5813
5814         * jcf-parse.c (get_constant): Decode from IEEE no matter
5815         what the target format.
5816
5817 2002-09-20  Kazu Hirata  <kazu@cs.umass.edu>
5818
5819         * ChangeLog: Follow spelling conventions.
5820         * class.c: Likewise.
5821         * decl.c: Likewise.
5822         * expr.c: Likewise.
5823         * gjavah.c: Likewise.
5824         * java-tree.h: Likewise.
5825         * jcf-dump.c: Likewise.
5826         * jcf-parse.c: Likewise.
5827         * jvspec.c: Likewise.
5828         * lang.c: Likewise.
5829         * mangle.c: Likewise.
5830         * parse.y: Likewise.
5831
5832 2002-09-17  Tom Tromey  <tromey@redhat.com>
5833
5834         * lex.c (java_read_unicode_collapsing_terminators): Handle case
5835         where \r appears at EOF.  Fixes PR java/7950.
5836
5837 2002-09-16  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5838
5839         * jvspec.c (lang_specific_driver): Remove unused variable.
5840
5841 2002-09-16  Geoffrey Keating  <geoffk@apple.com>
5842
5843         * java-tree.h (union lang_tree_node): Add chain_next option.
5844
5845 2002-09-16  Richard Henderson  <rth@redhat.com>
5846
5847         * jcf-parse.c (get_constant): Runtime check for IEEE format;
5848         use new real.h interface.
5849         * jcf-write.c (find_constant_index): Use new real.h interface.
5850         * lex.c (IS_ZERO): Use REAL_VALUES_EQUAL.
5851
5852 2002-09-15  Kazu Hirata  <kazu@cs.umass.edu>
5853
5854         * lang.c: Follow spelling conventions.
5855
5856 2002-09-11  Per Bothner  <per@bothner.com>
5857
5858         * parse.y (fold_constant_for_init):  If a VAR_DECL, convert numerical
5859         constant to the type of the field.
5860         (java_complete_tree):  Remove now-redundant code.
5861
5862         * parse.y (fold_constant_for_init):  'null' is not a constant expr.
5863
5864 2002-09-03  Jesse Rosenstock  <jmr@ugcs.caltech.edu>
5865
5866         For PR java/5794:
5867         * verify.c (verify_jvm_instructions) [OPCODE_jsr]: Only push the
5868         return label if a ret instruction for the jsr has been reached.
5869
5870 2002-09-09  Ranjit Mathew  <rmathew@hotmail.com>
5871
5872         * parse.y (DIR_SEPARATOR): Don't define.
5873         (check_class_interface_creation): Use IS_DIR_SEPARATOR.
5874
5875 2002-08-28  Andrew Haley  <aph@redhat.com>
5876
5877         * verify.c (verify_jvm_instructions): Allow exception handler
5878         inside code that is being protected, but generate a warning.
5879         * except.c (link_handler): Initialize `expanded' in new eh_range.
5880         (binding_depth, is_class_level, current_pc): Declare extern.
5881
5882 2002-09-01  Mark Wielaard <mark@klomp.org>
5883
5884         * gcj.texi: Add chapter about system properties.
5885         Fixed some typos.
5886
5887 2002-08-26  Tom Tromey  <tromey@redhat.com>
5888
5889         * parse.y (try_builtin_assignconv): Allow narrowing primitive
5890         conversion if RHS_TYPE is byte, short, or char.
5891
5892 2002-08-22  Tom Tromey  <tromey@redhat.com>
5893
5894         * gcj.texi (Invoking gij): Document -cp and -classpath.
5895
5896 2002-08-21  Tom Tromey  <tromey@redhat.com>
5897
5898         * Make-lang.in (java/jcf-path.o): Use $(datadir), not
5899         $(prefix)/share.  For PR libgcj/7633.
5900
5901         For PR java/6005 and PR java/7611:
5902         * lang.c (LANG_HOOKS_CAN_USE_BITFIELDS_P): New define.
5903         (java_can_use_bit_fields_p): New function.
5904
5905 2002-08-16  Tom Tromey  <tromey@redhat.com>
5906
5907         * gcj.texi (Class Initialization): Mention class initialization of
5908         arrays.
5909
5910 2002-07-30  Andrew Haley  <aph@cambridge.redhat.com>
5911
5912         * Make-lang.in (java-tree-inline.o): New.
5913         (JAVA_OBJS): Add java-tree-inline.o.
5914         * parse.y (source_end_java_method): Call java_optimize_inline.
5915         (java_expand_method_bodies): Save method's tree in
5916         DECL_SAVED_TREE.
5917         (add_stmt_to_compound): Keep track of the number of statments.
5918         * lang.c (java_init): Enable flag_inline_trees.
5919         (java_post_options): If flag_inline_functions is on, enable
5920         flag_inline_trees instread.
5921         (decl_constant_value): New.
5922         (java_tree_inlining_walk_subtrees): New.
5923         * java-tree.h (DECL_NUM_STMTS): New macro.
5924         (java_optimize_inline): Declare.
5925         * expr.c (java_expand_expr): Allow a BLOCK to return a value.
5926         Handle a LABEL_EXPR.
5927         * decl.c (build_result_decl): If we already have a DECL_RESULT
5928         don't make another.
5929         (dump_function): New.
5930         (java_optimize_inline): New.
5931         (dump_function): New.
5932
5933 2002-08-13  Jesse Rosenstock  <jmr@fulcrummicro.com>
5934
5935         For PR java/7483:
5936         * parse.y (build_assertion): Invert return from
5937         desiredAssertionStatus.
5938
5939 2002-08-08  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
5940
5941         * jcf-write.c (get_access_flags): Return correct access flags for
5942         private and protected inner classes.
5943
5944 2002-08-08  Nathan Sidwell  <nathan@codesourcery.com>
5945
5946         * java/Make-lang.in (java.mostlyclean): Remove coverage files.
5947
5948 2002-08-05  Geoffrey Keating  <geoffk@redhat.com>
5949
5950         * mangle_name.c: Don't include obstack.h twice.
5951         * xref.c: Don't include obstack.h.
5952
5953 2002-08-04  Geoffrey Keating  <geoffk@redhat.com>
5954
5955         * class.c: (permanent_obstack): Delete declaration.
5956         * constants.c: (permanent_obstack): Delete declaration.
5957         * except.c: (permanent_obstack): Delete declaration.
5958         * expr.c: (permanent_obstack): Delete declaration.
5959         * jcf-parse.c: (permanent_obstack): Delete declaration.
5960         (saveable_obstack): Delete declaration.
5961         * parse.h: (permanent_obstack): Delete declaration.
5962         * typeck.c: (permanent_obstack): Delete declaration.
5963
5964 2002-08-04  Joseph S. Myers  <jsm@polyomino.org.uk>
5965
5966         * gcj.texi (version-gcc): Increase to 3.3.
5967
5968 2002-07-22  Tom Tromey  <tromey@redhat.com>
5969
5970         * lex.c (java_lex): Check for `e' or `E' after 0.
5971
5972 2002-07-21  Richard Henderson  <rth@redhat.com>
5973
5974         * lang.c (java_unsafe_for_reeval): New.
5975         (LANG_HOOKS_UNSAFE_FOR_REEVAL): New.
5976
5977 2002-07-21  Neil Booth  <neil@daikokuya.co.uk>
5978
5979         * jcf-path.c (GET_ENV_PATH_LIST): Remove.
5980         (jcf_path_init): Use GET_ENVIRONMENT.
5981
5982 2002-07-10  Roger Sayle  <roger@eyesopen.com>
5983             Zack Weinberg <zack@codesourcery.com>
5984
5985         * builtins.c (initialize_builtins): Remove defines that
5986         handled C/C++ specific junk hereby removed from builtins.def.
5987
5988 2002-07-07  Neil Booth  <neil@daikokuya.co.uk>
5989
5990         * lang.c (java_post_options): Update prototype.
5991
5992 2002-07-05  Roger Sayle  <roger@eyesopen.com>
5993
5994         * builtins.c (initialize_builtins): Ignore the additional
5995         parameter to DEF_BUILTIN.  Handle more C/C++ specific junk in
5996         the builtins.def file.
5997
5998 2002-07-01  Tom Tromey  <tromey@redhat.com>
5999
6000         For PR libgcj/7073:
6001         * parse.y (patch_incomplete_class_ref): Handle VOID_TYPE
6002         specially.
6003
6004 2002-07-01  Roger Sayle  <roger@eyesopen.com>
6005
6006         * java/decl.c (builtin_function): Accept additional parameter.
6007         (java_init_decl_processing): Pass an additional NULL_TREE
6008         argument to builtin_function.
6009
6010 2002-06-29  T.J. Mather  <tjmather@maxmind.com>
6011
6012         * gcj.texi: Fixed gcj invocation example so that it compiles.
6013
6014 2002-06-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6015
6016         * lex.c (java_init_lex): Avoid incorrect hardcoded constant 11.
6017         * parse.y (mark_parser_ctxt): Likewise.
6018         (check_modifiers, declare_local_variables): Avoid incorrect
6019         hardcoded constant 10.
6020
6021         * lex.c (java_read_char): Avoid "comparison is always true"
6022         warning.
6023
6024 2002-06-25  Andreas Schwab  <schwab@suse.de>
6025
6026         * expr.c (JSR): Avoid undefined operation on PC.
6027
6028 2002-06-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6029
6030         * decl.c (clear_binding_level): Const-ify.
6031
6032 2002-06-13  Akim Demaille  <akim@epita.fr>
6033
6034         * parse.y (class_declaration, interface_declaration): Make sure
6035         all their rules have an action, in order to avoid meaningless `$$
6036         = $1' and their type clashes.
6037
6038 2002-06-11  Tom Tromey  <tromey@redhat.com>
6039
6040         * jcf-write.c (generate_classfile): Use FIELD_SYNTHETIC.
6041         * parse-scan.y (statement_without_trailing_substatement): Added
6042         assert_statement.
6043         (assert_statement): New rule.
6044         * java-tree.h (struct lang_type) [assertions]: New field.
6045         (TYPE_USES_ASSERTIONS): New macro.
6046         (CLASS_USES_ASSERTIONS): Likewise.
6047         (FIELD_SYNTHETIC): New define.
6048         * lex.c (java_lval;): Added ASSERT_TK.
6049         * parse.y (ASSERT_TK): Added.
6050         (statement_without_trailing_substatement): Added assert_statement.
6051         (assert_statement): New rule.
6052         (build_assertion): New function.
6053         (maybe_generate_pre_expand_clinit): Create and initialize
6054         $assertionsDisabled.
6055         (lookup_package_type): Removed decl.
6056         * keyword.h: Rebuilt.
6057         * keyword.gperf (assert): New token.
6058
6059 2002-06-10  Akim Demaille  <akim@epita.fr>
6060
6061         * parse.y (interface_type_list, class_member_declaration)
6062         (unary_expression_not_plus_minus): Remove duplicate %type.
6063         Whitespace changes.
6064
6065 2002-06-09  Tom Tromey  <tromey@redhat.com>
6066
6067         * Make-lang.in (java/lang.o): Use LANGHOOKS_DEF_H.
6068
6069         * parse.y (method_header): Give error message in all cases.
6070         Fixes PR java/6865.
6071
6072 2002-06-10  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
6073
6074         Don't use RTL inlining. Fix for PR java/6820.
6075         * lang.c (LANG_HOOKS_POST_OPTIONS): Define.
6076         (flag_really_inline): New.
6077         (java_decode_option): Set flag_really_inline if -finline-functions
6078         is seen.
6079         (java_post_options): New function. Turn off inlining unless
6080         flag_really_inline is set.
6081
6082 2002-06-10  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
6083
6084         * gjavah.c (throwable_p): Accept argument as either a classname or
6085         signature fragment. Create null-terminated classname string for super
6086         when calling itself recursively.
6087         (decode_signature_piece): Skip first character from class name
6088         signature when calling throwable_p.
6089
6090 2002-06-08  H.J. Lu  (hjl@gnu.org)
6091
6092         * jcf-path.c (jcf_path_init): Allocate 1 more byte for string.
6093
6094 2002-06-04  Tom Tromey  <tromey@redhat.com>
6095
6096         * jcf-write.c (perform_relocations): Optmize a goto to a goto.
6097
6098 2002-06-04  Michael Koch  <konqueror@gmx.de>
6099
6100         * gcj.texi (Input Options): Fixed typo.
6101
6102 2002-06-04  Zack Weinberg  <zack@codesourcery.com>
6103
6104         * java-tree.h, class.c, expr.c, jcf-parse.c, parse.y,
6105         typeck.c, verify.c: Remove all #if JAVA_USE_HANDLES blocks,
6106         all mention of CLASS_TO_HANDLE_TYPE or HANDLE_TO_CLASS_TYPE,
6107         and all now-pointless local variables.  Rename other local
6108         variables to reflect their not being handles.
6109
6110         * java-tree.h, jcf-dump.c, jcf-io.c: Remove all
6111         #if JCF_USE_STDIO blocks.
6112
6113         * parse.y: Add missing semicolon at end of rule.
6114
6115 2002-06-03  Geoffrey Keating  <geoffk@redhat.com>
6116
6117         * check-init.c (attach_initialized_static_class): Delete, unused.
6118         * parse.y: Use htab_t instead of struct hashtable, update
6119         all uses.
6120         * java-tree.h: Include hashtab.h instead of hash.h.
6121         (struct lang_decl_func): Use htab_t, set up for gengtype.
6122         (struct init_test_hash_entry): Delete.
6123         (struct treetreehash_entry): New.
6124         (java_treetreehash_find): New
6125         (java_treetreehash_new): New prototype.
6126         (java_treetreehash_create): New prototype.
6127         (java_mark_tree): Delete prototype.
6128         (java_hash_hash_tree_node): Delete prototype.
6129         (java_hash_compare_tree_node): Delete prototype.
6130         (attach_initialized_static_class): Delete prototype.
6131         * expr.c (build_class_init): Update to use java_treetreehash
6132         functions.
6133         (java_expand_expr): Update to use htab_t.
6134         (emit_init_test_initialization): Likewise.
6135         * decl.c (java_mark_tree): Delete.
6136         * class.c (init_test_hash_newfunc): Delete.
6137         (java_hash_hash_tree_node): Delete.
6138         (java_hash_compare_tree_node): Delete.
6139         (add_method_1): Update to use java_treetreehash functions.
6140         (JAVA_TREEHASHHASH_H): New macro.
6141         (java_treetreehash_hash): New function.
6142         (java_treetreehash_compare): New function.
6143         (java_treetreehash_find): New function.
6144         (java_treetreehash_new): New function.
6145         (java_treetreehash_create): New function.
6146         * Make-lang.in (JAVA_TREE_H): Replace hash.h by HASHTAB_H.
6147
6148         * Make-lang.in (java/parse.o): Depend on debug.h.
6149         * java-tree.h (struct lang_identifier): Use gengtype.
6150         (union lang_tree_node): New.
6151         (struct lang_decl_func): Use gengtype.
6152         (struct lang_decl_var): Likewise.
6153         (struct lang_decl): Likewise.
6154         * parse.y: Include debug.h.
6155         * lang.c (LANG_HOOKS_MARK_TREE): Delete.
6156
6157         * lang.c (struct language_function): New dummy structure.
6158
6159         * java-tree.h (MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC): Set
6160         descriminator for DECL_LANG_SPECIFIC.
6161         (struct lang_decl_func): Rename from struct lang_decl.
6162         (enum lang_decl_desc): New.
6163         (struct lang_decl): Make it a union.  Update all the accessor macros.
6164         (struct lang_type): Use gengtype.
6165         * class.c (add_method_1): Set descriminator for DECL_LANG_SPECIFIC.
6166         * decl.c (java_dup_lang_specific_decl): All lang_decl structures
6167         are now the same size.
6168         (lang_mark_tree): Use gengtype to mark TYPE_LANG_SPECIFIC;
6169         use discriminator to mark DECL_LANG_SPECIFIC.
6170
6171         * Make-lang.in (gt-java-builtins.h): New rule.
6172         (java/builtins.o): Add dependency on gt-<filename>.h.
6173         * builtins.c: Use gengtype for roots.
6174         (union string_or_tree): Use gengtype.
6175         (struct builtin_record): Use gengtype.
6176         * config-lang.in (gtfiles): Add builtins.c.
6177
6178         * Make-lang.in (gt-java-class.h, gt-java-constants.h,
6179         gt-java-decl.h, gt-java-expr.h, gt-java-jcf-parse.h,
6180         gt-java-jcf-write.h, gt-java-lang.h, gt-java-mangle.h,
6181         gt-java-parse.h, gtype-java.h): Add rules to generate.
6182         (parse.o): Add dependency on gt-java-parse.h, gt-java.h.
6183         (class.o): Add dependency on gt-*.h.
6184         (constants.o): Likewise.
6185         (decl.o): Likewise.
6186         (expr.o): Likewise.
6187         (jcf-parse.o): Likewise.
6188         (jcf-write.o): Likewise.
6189         (lang.o): Likewise.
6190         * config-lang.in (gtfiles): New.
6191         * class.c: Replace uses of ggc_add_* with GTY markers.  Include gt-*.h.
6192         * constants.c: Replace uses of ggc_add_* with GTY markers.
6193         Include gt-*.h.
6194         * decl.c: Replace uses of ggc_add_* with GTY markers.  Include gt-*.h.
6195         * expr.c: Replace uses of ggc_add_* with GTY markers.  Include gt-*.h.
6196         * java-tree.h: Replace uses of ggc_add_* with GTY markers.
6197         * jcf-parse.c: Replace uses of ggc_add_* with GTY markers.
6198         Include gt-*.h.
6199         * jcf-write.c: Replace uses of ggc_add_* with GTY markers.
6200         Include gt-*.h.
6201         * lang.c: Replace uses of ggc_add_* with GTY markers.  Include gt-*.h.
6202         * mangle.c: Replace uses of ggc_add_* with GTY markers.  Include
6203         gt-*.h.
6204         * parse.y: Replace uses of ggc_add_* with GTY markers.  Include gt-*.h.
6205         Include gtype-java.h.
6206
6207 2002-06-02  Tom Tromey  <tromey@redhat.com>
6208
6209         Fix for PR java/5913:
6210         * parse.y (patch_binop): Call patch_string on op1.
6211
6212 2002-06-02  Tom Tromey  <tromey@redhat.com>
6213
6214         Fix for PR java/1343, PR java/6336:
6215         * parse.y (make_nested_class_name): Remove extraneous `else'; fix
6216         formatting.  Changed return type.
6217         (anonymous_class_counter): Moved to top of file.
6218         (maybe_make_nested_class_name): Append number to class name for
6219         function-local classes.
6220
6221 2002-05-28  Zack Weinberg  <zack@codesourcery.com>
6222
6223         * decl.c, jcf-parse.c, parse.y, typeck.c: Include real.h.
6224         * Make-lang.in: Update dependency lists.
6225
6226 2002-05-18  Mark Mitchell  <mark@codesourcery.com>
6227
6228         * gjavah.c (throwable_p): Do not free the name of the class after
6229         passing it to find_class.
6230         * java-tree.h (CLASS_BEING_LAIDOUT): Remove duplicate definition.
6231         * jcf-io.c (dirent.h): Include it.
6232         (fnmatch.h): Likewise.
6233         (compare_path): New function.
6234         (java_or_class_file): Likewise.
6235         (memoized_dirlist_entry): New type.
6236         (memoized_dirlist_lookup_eq): New function.
6237         (memoized_dirlists): New variable.
6238         (caching_stat): New function.
6239         (memoized_class_lookup_eq): New function.
6240         (memoized_class_lookups): Likewise.
6241         (find_class): Use memoized_class_lookups and caching_stat.
6242         * jcf.h (JCF_USE_SCANDIR): Define.
6243         * parse.y (java_expand_classes): Write the class files in reverse
6244         order.
6245
6246 2002-05-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
6247
6248         * Make-lang.in: Allow for PWDCMD to override hardcoded pwd.
6249
6250 2002-05-13  Mark Mitchell  <mark@codesourcery.com>
6251
6252         * jcf-write.c (write_classfile): Unlink the temporary file if it
6253         cannot be renamed.  Use concat to build up the name of the
6254         temporary file.
6255
6256 2002-05-08  Mark Mitchell  <mark@codesourcery.com>
6257
6258         * jcf-write.c (write_classfile): Write the file to a
6259         temporary file and then rename it.
6260
6261 2002-05-07  Tom Tromey  <tromey@redhat.com>
6262
6263         * gjavah.c (throwable_p): Use xstrdup, not strdup.
6264
6265         Fix for PR java/1200:
6266         * gjavah.c (throwable_p): New function.
6267         (decode_signature_piece): Use it.  A `WeakReference' isn't the
6268         same as a `jweak'.
6269         Include hashtab.h.
6270         (gcjh_streq): New function.
6271
6272 2002-05-07  Andreas Jaeger  <aj@suse.de>
6273
6274         * parse.y (finish_for_loop): Fix if statement.
6275
6276 2002-05-06  Tom Tromey  <tromey@redhat.com>
6277
6278         Fix for PR java/5941:
6279         * parse.y (finish_for_loop): Set SUPPRESS_UNREACHABLE_ERROR for
6280         loop update expression.
6281         (java_complete_lhs): Use SUPPRESS_UNREACHABLE_ERROR.
6282         * java-tree.h (SUPPRESS_UNREACHABLE_ERROR): New macro.
6283
6284 2002-05-04  Mark Wielaard  <mark@klomp.org>
6285
6286         For PR java/6519:
6287         * parse.y (build_string_concatenation): Return just op1 only when op2
6288         is null and op1 is a STRING_CST, otherwise always construct a
6289         StringBuffer.
6290
6291 2002-04-27  Tom Tromey  <tromey@redhat.com>
6292
6293         For PR java/6382:
6294         * parse.y (string_convert_int_cst): New function.
6295         (merge_string_cste): Use it.
6296
6297 2002-04-25  Neil Booth  <neil@daikokuya.demon.co.uk>
6298
6299         * java-tree.h (java_parse_file): Update.
6300         (java_set_yydebug): Remove.
6301         * jcf-parse.c (yydebug): Remove.
6302         (java_set_yydebug): Die.
6303         (java_parse_file): Update.
6304         * lang.c (LANG_HOOKS_SET_YYDEBUG): Remove.
6305
6306 2002-04-24  Tom Tromey  <tromey@redhat.com>
6307
6308         For PR java/6425:
6309         * parse.y (qualify_ambiguous_name) [case CALL_EXPR]: Always choose
6310         EXPR_WFL_QUALIFICATION of qual_wfl.
6311
6312 2002-04-23  Per Bothner  <per@bothner.com>
6313
6314         * expr.c (PRE_JSR):  Call NOTE_LABEL for return address.
6315         * java-tree.h (BCODE_RETURN_TARGET):  Removed - never set.
6316         (BCODE_TARGET):  Remove BCODE_RETURN_TARGET.
6317
6318 2002-04-23  Tom Tromey  <tromey@redhat.com>
6319
6320         For PR java/6314:
6321         * jvspec.c (lang_specific_driver): Use --resource, not -R.  Also
6322         recognize `-fcompile-resource='.
6323         * gcj.texi (Invoking gcj): Use --resource, not -R.  Expanded text
6324         a bit.
6325
6326 2002-04-22  Alexandre Petit-Bianco  <apbianco@redhat.com>
6327
6328         * jcf-parse.c: (yyparse): Don't prepend "./" to relative
6329         paths. Fixes PR java/2791.
6330
6331 2002-04-19  Andrew Haley  <aph@redhat.com>
6332
6333         * jcf-write.c (push_long_const): lo, hi: New variables.
6334         Use rshift_double to extract the high part of a 64-bit long.
6335         Use WORD_TO_INT to extract the low part.
6336
6337         * jcf-parse.c (get_constant): CONSTANT_Integer: Use an unsigned
6338         HOST_WIDE_INT for num.  Use JPOOL_UINT to get it.
6339         CONSTANT_Double: Use JPOOL_UINT to get both halve of a double.
6340
6341 2002-04-18  Neil Booth  <neil@daikokuya.demon.co.uk>
6342
6343         * typeck.c (incomplete_type_error): Remove.
6344
6345 2002-04-18  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
6346
6347         * class.c (make_class_data): Set DECL_ALIGN on static class data,
6348         for hash synchronization.
6349         * expr.c (java_expand_expr): Set DECL_ALIGN on static array objects.
6350         * decl.c (java_init_decl_processing): Don't set TYPE_ALIGN for
6351         class_type_node.
6352
6353 2002-04-16  Mark Wielaard  <mark@klomp.org>
6354
6355         * jcf-write.c (generate_bytecode_insns): Only write const_0 if not
6356         negative zero.
6357
6358 2002-04-16  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
6359
6360         Fix for PR java/6294:
6361         * parse.h (INNER_INTERFACE_MODIFIERS): Allow ACC_PRIVATE for inner
6362         interfaces.
6363
6364 2002-04-15  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
6365
6366         Fix for PR java/6085:
6367         * parse.y (patch_method_invocation): Always use build_access_to_thisn
6368         to get enclosing "this" argument for inner-class constructor
6369         invocation. Pass correct arguments to build_access_to_thisn.
6370
6371 2002-04-10  Andreas Jaeger  <aj@suse.de>
6372
6373         * gcj.texi (Input Options): Fix extdirs patch.
6374
6375 2002-04-10  Anthony Green  <green@redhat.com>
6376
6377         * jcf-path.c (jcf_path_init) : Clean up local extdirs declaration.
6378
6379 2002-04-09  Anthony Green  <green@redhat.com>
6380
6381         * gcj.texi (Input Options): Add --extdirs documentation.
6382         * jcf-dump.c (OPT_extdirs): New macro.
6383         (options): Add extdirs option.
6384         (help): Describe --extdirs.
6385         (main): Handle OPT_extdirs.
6386         * gjavah.c (OPT_extdirs): New macro.
6387         (options): Add extdirs option.
6388         (help): Describe --extdirs.
6389         (main): Handle OPT_extdirs.
6390         * jcf-path.c (jcf_path_init): Add extdirs support.
6391         (jcf_path_extdirs_arg): New function.
6392         (extensions): New variable to hold extensions path entries.
6393         * jvspec.c: Remove -fextdirs= when compiling main().
6394         * lang.c (java_decode_option): Handle -fextdirs=.
6395         * jcf.h (jcf_path_extdirs_arg): Declare new function.
6396         * Make-lang.in: Compile jcf-path with version info for use in
6397         identifying the appropriate libgcj.jar.
6398
6399 2002-04-08  Tom Tromey  <tromey@redhat.com>
6400
6401         For PR libgcj/5303:
6402         * .cvsignore: Added rmic.1 and rmiregistry.1.
6403         * gcj.texi (Top): Link to new nodes.
6404         (Invoking rmic): New node.
6405         (Invoking rmiregistry): Likewise.
6406         * Make-lang.in (java.generated-manpages): Added rmic.1 and
6407         rmiregistry.1.
6408         (java.maintainer-clean): Likewise.
6409         ($(srcdir)/java/rmic.1): New target.
6410         ($(srcdir)/java/rmiregistry.1): Likewise.
6411         (java.install-man): Handle rmic.1 and rmiregistry.1.
6412
6413 2002-04-08  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
6414
6415         * gcj.texi (Invocation): Update JvAttachCurrentThread documentation.
6416         Add note about handling uncaught exceptions. Add an exception handler
6417         to example.
6418
6419 2002-04-08  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
6420
6421         * parse.y (resolve_qualified_expression_name): Clear "from_super" flag
6422         after using it to patch CALL_EXPR.
6423
6424 2002-04-08  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
6425
6426         * gcj.texi (Invocation): Document CNI invocation API.
6427
6428 2002-04-04  Neil Booth  <neil@daikokuya.demon.co.uk>
6429
6430         * expr.c (truthvalue_conversion): Rename.  Update.
6431         (expand_compare): Update.
6432         * java-tree.h (java_truthvalue_conversion): New.
6433         * lang.c (LANG_HOOKS_TRUTHVALUE_CONVERSION): Redefine.
6434
6435 2002-04-01  Neil Booth  <neil@daikokuya.demon.co.uk>
6436
6437         * java-tree.h (java_mark_addressable): New.
6438         * lang.c (LANG_HOOKS_MARK_ADDRESSABLE): Redefine.
6439         * typeck.c (mark_addressable): Rename, update.
6440
6441 2002-04-01  Neil Booth  <neil@daikokuya.demon.co.uk>
6442
6443         * expr.c (build_java_binop): Update.
6444         * java-tree.h (java_signed_type, java_unsigned_type,
6445         java_signed_or_unsigned_type): Update.
6446         * lang.c (LANG_HOOKS_SIGNED_TYPE, LANG_HOOKS_UNSIGNED_TYPE,
6447         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): New.
6448         * parse.y (patch_binop): Update.
6449         * typeck.c (signed_or_unsigned_type, unsigned_type,
6450         signed_type): Update.
6451
6452 2002-03-31  Neil Booth  <neil@daikokuya.demon.co.uk>
6453
6454         * lang.c (LANG_HOOKS_PRINT_ERROR_FUNCTION): Redefine.
6455         (java_dummy_print): Remove.
6456         (lang_print_error): Rename.  Exit early if inhibiting output.
6457         (inhibit_error_printing_function): New.
6458         (java_init): Don't set hook.
6459         (lang_init_source): Use new boolean.
6460
6461 2002-03-29  Martin Kahlert  <martin.kahlert@infineon.com>
6462
6463         * parse.y (do_resolve_class): Fix infinite recursion.
6464
6465 2002-03-29  Tom Tromey  <tromey@redhat.com>
6466
6467         * parse.y (check_inner_circular_reference): Ignore incomplete
6468         types.
6469
6470 2002-03-29  Neil Booth  <neil@daikokuya.demon.co.uk>
6471
6472         * Make-lang.in (builtins.o): Update.
6473         * boehm.c (get_boehm_type_descriptor): Update.
6474         * builtins.c: Include langhooks.h.
6475         * decl.c (java_init_decl_processing): Update.
6476         * java-tree.h (java_type_for_mode, java_type_for_size): New.
6477         * lang.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIaZE):
6478         Redefine.
6479         * typeck.c (type_for_mode, type_for_size): Update.
6480
6481 2002-03-29  Martin Kahlert  <martin.kahlert@infineon.com>
6482
6483         * lex.c (java_new_lexer): Alias "646" to DEFAULT_ENCODING.
6484
6485 2002-03-28  Tom Tromey  <tromey@redhat.com>
6486
6487         * except.c (expand_end_java_handler): If the handler type is NULL,
6488         use java.lang.Throwable.  Fixes PR java/5986.
6489
6490 2002-03-28  Alexandre Petit-Bianco  <apbianco@redhat.com>
6491
6492         Fix for PR java/4715:
6493         * jcf-parse.c (parse_source_file_3): New function.
6494         (read_class): Call it.
6495         (java_parse_file): Likewise.
6496
6497 2002-03-28  Jan Hubicka  <jh@suse.cz>
6498
6499         * java/lang.c (java_init_options): Set flag_trapping_math to 0.
6500
6501 2002-03-28  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
6502
6503         * parse.y (resolve_package): Initialize "decl".
6504         (lookup_package_type): Remove unused function.
6505
6506 2002-03-28  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
6507
6508         Fix for PR java/5993:
6509         * parse.y (resolve_package): Return the decl if resolution was
6510         successful. Don't special case "java.lang" and "java.lang.reflect"
6511         packages. Set type_name to the merged identifier.
6512         (resolved_qualified_expression_name): Print error using "name" if
6513         resolve_package returns NULL_TREE.
6514
6515 2002-03-27  Tom Tromey  <tromey@redhat.com>
6516
6517         * expr.c (expand_invoke): Don't generate null pointer check if
6518         we're calling <init>.
6519
6520 2002-03-27  Neil Booth  <neil@daikokuya.demon.co.uk>
6521
6522         * expr.c (java_lang_expand_expr): Rename java_expand_expr,
6523         fix prototype.
6524         * java-tree.h (java_lang_expand_expr): Similarly.
6525         * lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine.
6526         (java_init): Don't set hook.
6527
6528 2002-03-27  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
6529
6530         Fix for PR java/5850:
6531         * parse.y (lookup_field_wrapper): Call itself recursively for enclosing
6532         context if field was not found in the current scope.
6533         * expr.c (lookup_field): Don't look in enclosing contexts.
6534
6535 2002-03-26  Tom Tromey  <tromey@redhat.com>
6536
6537         Fix for PR java/5942:
6538         * parse.y (init_src_parse): Added sanity check.
6539         * parse.h (struct parser_ctxt) [modifier_ctx]: Array has 12
6540         elements, not 11.
6541
6542 2002-03-26  Neil Booth  <neil@daikokuya.demon.co.uk>
6543
6544         * decl.c (lang_mark_tree): Rename java_mark_tree.
6545         * java-tree.h (java_mark_tree): New.
6546         * java-lang.c (LANG_HOOKS_MARK_TREE): Redefine.
6547
6548 2002-03-25  Zack Weinberg  <zack@codesourcery.com>
6549
6550         * lex.c: Change java_perform_atof to take normal parameters
6551         instead of a pointer to a parameter block.  Call it directly
6552         from java_lex.
6553
6554 2002-03-22  Mark Wielaard  <mark@klomp.org>
6555
6556         Fix for PR java/5368:
6557         * parse.y (resolve_qualified_expression_name): Use decl not field_decl
6558         when printing error message.
6559
6560 2002-03-25  Neil Booth  <neil@daikokuya.demon.co.uk>
6561
6562         * decl.c (maybe_build_cleanup): Remove.
6563
6564 2002-03-22  Tom Tromey  <tromey@redhat.com>
6565
6566         Andrew Haley  <aph@cambridge.redhat.com>
6567
6568         * expr.c (build_field_ref): Don't build a check if the field is a
6569         member of `this'.
6570
6571 2002-03-21  Eric Blake  <ebb9@email.byu.edu>
6572
6573         Fix for PR java/6026:
6574         * lex.c (java_lex): Fix parsing of consecutive floats.
6575
6576 2002-03-21  Tom Tromey  <tromey@redhat.com>
6577
6578         * parse.y (build_access_to_thisn): Stop when FROM is not an inner
6579         class.
6580
6581 2002-03-21  Neil Booth  <neil@daikokuya.demon.co.uk>
6582
6583         * cp-tree.h (pushdecl, pushlevel, poplevel, set_block,
6584         insert_block, getdecls, kept_level_p, global_bindings_p): New.
6585
6586 2002-03-20  Nic Ferrier  <nferrier@tapsellferrier.co.uk>
6587
6588         * gcj.texi: @code{gcj} becomes @command{gcj}.
6589         @code{gcc} becomes @command{gcc}.
6590         GcjRaw changed to gnu.gcc.RawData.
6591
6592 2002-03-20  Neil Booth  <neil@daikokuya.demon.co.uk>
6593
6594         * decl.c (start_java_method): Use new hook.
6595         * lang.c (LANG_HOOKS_DECL_PRINTABLE_NAME): Redefine.
6596         (java_init): Remove old hook.
6597
6598 2002-03-18  Alexandre Petit-Bianco  <apbianco@redhat.com>
6599
6600         * builtins.c (define_builtin): Do nothing if `type' is null.
6601         Fixes PR java/5876.
6602
6603 2002-03-18  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
6604
6605         * parse.y (parser_check_super_interface): Fix error message
6606         grammar/order.
6607
6608 2002-03-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6609
6610         * jcf-parse.c (get_constant): Delete unused variables.
6611
6612 2002-03-17  Neil Booth  <neil@daikokuya.demon.co.uk>
6613
6614         * java-tree.h (java_parse_file): New.
6615         * jcf-parse.c (yyparse): Rename java_parse_file.
6616         * lang.c (LANG_HOOKS_PARSE_FILE): Redefine.
6617
6618 2002-03-16  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
6619
6620         * parse.y (craft_constructor): Return the constructor decl.
6621         (java_expand_classes): Update comments.
6622         (lookup_method_invoke): Call fix_constructors immediately for
6623         anonymous class. Fixes PR java/5935.
6624
6625 2002-03-15  Anthony Green  <green@redhat.com>
6626
6627         * jcf-parse.c (yyparse): Don't emit class registration
6628         constructor when compiling resource files.
6629
6630 2002-03-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6631
6632         * lang.c (java_tree_code_type, java_tree_code_length,
6633         tree_code_name): Delete.
6634         (tree_code_type, tree_code_length, tree_code_name): Define.
6635         (java_init): Don't try to copy into the various tree_code
6636         arrays.
6637
6638 2002-03-12  Tom Tromey  <tromey@redhat.com>
6639
6640         * jcf-parse.c (get_constant) [CONSTANT_String]: String values are
6641         UTF-8, not UCS-2.  Fixes PR java/5923.
6642
6643         * parse.y (qualify_ambiguous_name): Handle case where QUAL_WFL is
6644         a call_expr wrapped in a convert.  Fixes PR java/5848.
6645
6646 2002-03-12  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
6647
6648         * jcf-write.c (write_classfile): Improve error strings.
6649
6650 2002-03-11  Eric Blake  <ebb9@email.byu.edu>
6651
6652         * lex.c: Adjust comments to GNU standards.
6653
6654 2002-03-11  Eric Blake  <ebb9@email.byu.edu>
6655
6656         Fix for PR java/5902:
6657         * lex.c (java_lex): Fix parsing of literals.
6658
6659 2002-03-11  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
6660
6661         * parse.y (patch_assignment): Wrap the right-hand-side with a save_expr
6662         to prevent it getting evaluated twice in the store checking case.
6663         * expr.c (build_java_arraystore_check): Unwrap SAVE_EXPR's when
6664         examining OBJECT.
6665
6666 2002-03-09  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
6667
6668         * decl.c (java_init_decl_processing): Make sure class_type_node
6669         alignment is not less than 64 bits if hash synchronization is enabled.
6670
6671 2002-03-08  Per Bothner  <per@bothner.com>
6672
6673         * parse.y (java_complete_lhs):  Check if patch_assignment
6674         returned an error-mark.
6675
6676         * parse.y (try_builtin_assignconv):  Don't special-case zero.
6677
6678 2002-03-08  Per Bothner  <per@bothner.com>
6679
6680         Fix for PR java/5812.
6681         * expr.c (build_java_jsr):  Take pc arguments, and do lookup_label
6682         here instead of in JSR macro.  Likewise with load_type_state call.
6683         Do the latter on if the return_pc has been verified (the jsr returns).
6684         (JSR):  Now just call build_java_jsr.
6685
6686 2002-03-07  Jeff Sturm  <jsturm@one-point.com>
6687
6688         * java/Make-lang.in (JAVA_TARGET_INSTALL_NAME): Define.
6689         (java.install-common): Link native driver to
6690         JAVA_TARGET_INSTALL_NAME.
6691
6692 2002-03-05  David Billinghurst <David.Billinghurst@riotinto.com>
6693
6694         * builtins.c(cos_builtin): method_return_type ATTRIBUTE_UNUSED
6695         * builtins.c(sin_builtin): Likewise
6696         * builtins.c(sqrt_builtin): Likewise
6697
6698 2002-03-03  Zack Weinberg  <zack@codesourcery.com>
6699
6700         * java/expr.c, java/jcf-parse.c, java/lex.c:
6701         Remove all #ifndef REAL_ARITHMETIC blocks, make all #ifdef
6702         REAL_ARITHMETIC blocks unconditional.  Delete some further
6703         #ifdef blocks predicated on REAL_ARITHMETIC.
6704
6705 2002-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6706
6707         * class.c (init_class_processing): Use ARRAY_SIZE in lieu of
6708         explicit sizeof/sizeof.
6709         * decl.c (java_init_decl_processing): Likewise.
6710         * jcf-parse.c (init_jcf_parse): Likewise.
6711         * parse.y (init_src_parse): Likewise.
6712
6713 2002-03-02  Per Bothner  <per@bothner.com>
6714
6715         Make --CLASSPATH by a synonym for --classpath and -classpath.
6716         Implement --bootclasspath.
6717         * jcf-path.c (classpath_u):  Rename static variable to classpath_user.
6718         (classpath_l):  Remove.
6719         (jcf_path_CLASSPATH_arg):  Remove.
6720         (jcf_path_bootclasspath_arg):  New function.
6721         (jcf_path_seal):  Simplify accordingly.
6722
6723         * jcf.h (jcf_path_bootclasspath_arg):  New declarations.
6724         (jcf_path_CLASSPATH):  Remove declaration.
6725         * jvspec.c (jvgenmain_spec):  Also accept -fbootclasspath*.
6726         (lang_specific_driver):  Translate -bootclasspath.
6727         * lang-options.h:  Add --bootclasspath.  Update --CLASSPATH.
6728         * lang.c (decode_lang_options):  Do jcf_path_init first.
6729         Handle -fCLASSPATH same as -fclasspath.  Also process -fbootclasspath.
6730         * gjavah.c:  Also handle --bootclasspath.
6731         Handle --CLASSPATH as a synonum for --classpath.
6732         * jcf-dump.c: Likewise.
6733
6734         "." is not part of system path, but is the default for --classpath.
6735         * jcf-path.c (jcf_path_init):  Don't add "." to sys_dirs.
6736         (jcf_path_seal):  Add "." if no CLASSPATH specified.
6737
6738         * gcj.texi:  Document changes.
6739
6740 2002-03-01  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
6741
6742         * expr.c (build_java_arraystore_check): Fix formatting.
6743
6744 2002-02-28  Alexandre Petit-Bianco  <apbianco@redhat.com>
6745
6746         Fix for PR java/5758, java/5632:
6747         * jcf-parse.c (load_class): Renamed local variable, consider `.' an
6748         inner-class separator too.
6749         * parse.y (do_resolve_class): New local `decl_result.'
6750         Progressively build a name for what can have been loaded.
6751
6752 2002-02-28  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
6753
6754         * expr.c (java_array_data_offset): Removed function.
6755         (JAVA_ARRAY_LENGTH_OFFSET): Removed macro.
6756         (build_java_array_length_access): Obtain "length" value using a
6757         COMPONENT_REF, instead of INDIRECT_REF and arithmetic.
6758         (build_java_arrayaccess): Correct comment. Access "data" using a
6759         COMPONENT_REF, and return an ARRAY_REF instead of an INDIRECT_REF.
6760         (build_java_arraystore_check): New function.
6761         (expand_java_arraystore): Use build_java_arraystore_check.
6762         * parse.y (patch_assignment): Simplify code to insert a store check
6763         when lvalue is an ARRAY_REF. Use build_java_arraystore_check.
6764         * check-init.c (check_init): Update to reflect that an array length
6765         access is now a COMPONENT_REF.
6766         * gcj.texi (Code Generation): Improve documentation of
6767         -fno-bounds-check. Add documentation for -fno-store-check.
6768         * java-tree.h (flag_store_check): Declare.
6769         (build_java_arraystore_check): Declare.
6770         * lang.c (flag_store_check): Initialize to 1.
6771         (lang_f_options): Add store-check option.
6772         * jvspec.c: Don't pass store-check option to jvgenmain.
6773         * lang-options.h: Add help string for -fno-store-check.
6774
6775 2002-02-28  Neil Booth  <neil@daikokuya.demon.co.uk>
6776
6777         * decl.c (copy_lang_decl): Rename java_dup_lang_specific_decl.
6778         * java-tree.h (java_dup_lang_specific_decl): New.
6779         * lang.c (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Redefine.
6780
6781 2002-02-27  Zack Weinberg  <zack@codesourcery.com>
6782
6783         * builtins.c, decl.c: Delete traditional-mode-related code
6784         copied from the C front end but not used, or used only to
6785         permit the compiler to link.
6786
6787 2002-02-22  Tom Tromey  <tromey@redhat.com>
6788
6789         Fix for PR java/2369:
6790         * jvspec.c (verify_class_name): New function.
6791         (lang_specific_driver): Call it.
6792         (JAVA_START_CHAR_P): New macro.
6793         (JAVA_PART_CHAR_P): Likewise.
6794
6795 2002-02-22  Per Bothner  <per@bothner.com>
6796
6797         * class.c:  Change vtable to be more compatible with g++ v3 abi.
6798         (get_dispatch_table):  Prepend offset-to-top (always 0) and
6799         type_info pointer (currently unimplemented hence NULL) to vtable.
6800         Specifically, prepend offset-to-top and typeinfo ptr (currently null).
6801         (make_class_data):  Variable dtable_start_offset is sizeof 2 pointers.
6802         Adjust vtable pointers by dtable_start_offse - i.e. skip new words.
6803         (build_dtable_decl):  Add declarations for new fields.
6804
6805 2002-02-20  Per Bothner  <per@bothner.com>
6806
6807         * parse.y (patch_method_invocation): Set CAN_COMPLETE_NORMALLY on call
6808         to finit$ (otherwise generate_bytecode_insns drops it). However, we
6809         don't need to set it on the COMPOUND_EXPR - the caller does that.
6810
6811 2002-02-20  Nic Ferrier  <nferrier@tapsellferrier.co.uk>
6812
6813         * gcj.texi: Option `--classpath' becomes `--CLASSPATH.'Option
6814         `--CLASSPATH' becomes `--classpath.'
6815         * gjavah.c: Likewise.
6816         * jcf-dump.c: Likewise.
6817         * lang-options.h: Likewise.
6818         * lang.c: Likewise.
6819         * jcf-path.c: Updated comment.
6820         (jcf_path_classpath_arg): Renamed `jcf_path_CLASSPATH_arg.'
6821         (jcf_path_CLASSPATH_arg): Renamed `jcf_path_classpath_arg.'
6822         * jcf.h (jcf_path_CLASSPATH_arg): Ditto.
6823         (jcf_path_CLASSPATH_arg): Ditto.
6824         (classpath_u): Updated leading comment.
6825
6826 2002-02-20  Per Bothner  <per@bothner.com>
6827
6828         * builtins.c (check_for_builtin):  New function.
6829         (build_call_or_builtin):  Remove.
6830         * java-tree.h:  Update accordingly.
6831         * expr.c (expand_invoke):  Use build + check_for_builtin instead
6832         of build_call_or_builtin.
6833         * parse.y (patch_invoke):  Likewise.  This avoids needlessly creating
6834         a new CALL_EXPR node, which means we don't lose the CALL_USING_SUPER
6835         flag (which had caused jcf-write to incorrectly emit invokevirtual).
6836
6837 2002-02-17  Tom Tromey  <tromey@redhat.com>
6838
6839         * java-tree.h (TYPE_STRICTFP): New macro.
6840         (struct lang_type) [strictfp]: New field.
6841         (CLASS_STRICTFP): New macro.
6842         (METHOD_STRICTFP): New macro.
6843         (struct lang_decl) [strictfp]: New field.
6844         * parse.y (method_header): Disallow strictfp constructor or
6845         abstract method.
6846         (STRICT_TK): Move before MODIFIER_TK.
6847         * parse.h (CLASS_MODIFIERS): Added ACC_STRICT.
6848         (METHOD_MODIFIERS): Likewise.
6849         (INTERFACE_MODIFIERS): Likewise.
6850         * jcf-write.c (get_access_flags): Likewise.
6851         * class.c (set_class_decl_access_flags): Recognize ACC_STRICT.
6852         (add_method_1): Likewise.
6853         (get_access_flags_from_decl): Likewise.
6854         * jcf-dump.c (print_access_flags): Print in standard order.  Also,
6855         recognize strictfp flag.
6856         * jcf.h (ACC_STRICT): New define.
6857
6858 2002-02-12  David Billinghurst <Davod.Billinghurst@riotinto.com>
6859
6860         * class.c(build_utf8_ref): Move declaration of decl_size
6861
6862 2002-02-07  Tom Tromey  <tromey@redhat.com>
6863
6864         * gcj.texi (Input Options): --CLASSPATH does not suppress system
6865         path.
6866
6867 2002-02-04  Anthony Green  <green@redhat.com>
6868
6869         * class.c (build_utf8_ref): Put UTF-8 constants into merged
6870         sections if available.
6871
6872 2002-02-04  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
6873
6874         * parse.y (java_expand_classes): Fix typo in static field loop.
6875
6876 2002-02-02  Richard Henderson  <rth@redhat.com>
6877
6878         * class.c (add_field): Mark static fields external.
6879         (build_class_ref): Remove redundant set.
6880         * parse.y (java_expand_classes): Mark static fields of classes
6881         to be compiled as local.
6882         * jcf-parse.c (parse_class_file): Likewise.
6883
6884 2002-02-02  Nic Ferrier  <nferrier@tapsellferrier.co.uk>
6885
6886         * gcj.texi (About CNI): New node.
6887
6888 2002-02-01  Craig Rodrigues  <rodrigc@gcc.gnu.org>
6889
6890         PR java/5080
6891         * jcf-parse.c : Check for HAVE_LOCALE_H before using
6892         setlocale() with LC_CTYPE as a parameter.
6893         * jv-scan.c: Same.
6894
6895 2002-01-31  Joseph S. Myers  <jsm28@cam.ac.uk>
6896
6897         * gjavah.c (version), jcf-dump.c (version), jv-scan.c (version):
6898         Follow GNU Coding Standards for --version.
6899
6900 2002-01-28  Tom Tromey  <tromey@redhat.com>
6901
6902         * expr.c (build_jni_stub): Ensure storage for `meth' is
6903         generated.
6904         * parse.y (java_complete_expand_methods): Set
6905         current_function_decl before building JNI stub.
6906
6907 2002-01-26 Andreas Tobler <a.tobler@schweiz.ch>
6908
6909         * gcc/java/builtins.c (sqrt_builtin): Use BUILT_IN_SQRT, not
6910         BUILT_IN_SQRTF.
6911
6912 2002-01-22  Tom Tromey  <tromey@redhat.com>
6913
6914         * decl.c (java_init_decl_processing): Use add_predefined_file.
6915         Predefine RawData.java.
6916         (predef_filenames): Removed.
6917         (java_init_decl_processing): Don't register predef_filenames.
6918         * jcf-parse.c (add_predefined_file): New function.
6919         (predefined_filename_p): Rewrote.
6920         (predefined_filename_p): No longer static.
6921         * decl.c (java_init_decl_processing): Call initialize_builtins.
6922         * Make-lang.in (JAVA_OBJS): Added builtins.o.
6923         (java/builtins.o): New target.
6924         * builtins.c: New file.
6925         * parse.y (patch_invoke): Use build_call_or_builtin.
6926         * java-tree.h (build_call_or_builtin): Declare.
6927         (initialize_builtins): Declare.
6928         (java_set_exception_lang_code): Removed unused declaration.
6929         (PREDEF_FILENAMES_SIZE): Removed.
6930         (java_tree_index): Added JTI_PREDEF_FILENAMES.
6931         (predef_filenames): New define.
6932         (add_predefined_file): Declare.
6933         (predefined_filename_p): Declare.
6934         * expr.c (expand_invoke): Use build_call_or_builtin.
6935
6936 2002-01-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6937
6938         * parse.y (patch_switch_statement): Fix format specifier.
6939
6940 2002-01-16  Tom Tromey  <tromey@redhat.com>
6941
6942         More for PR java/5365:
6943         * gjavah.c (print_stub_or_jni): Cause exception to be thrown by
6944         default.
6945         (process_file): Generate include for
6946         java.lang.UnsupportedOperationExceptions.
6947
6948 2002-01-15  Andreas Jaeger  <aj@suse.de>
6949
6950         * .cvsignore: Add man pages.
6951
6952 2002-01-15  Tom Tromey  <tromey@redhat.com>
6953
6954         Fix for PR java/5365:
6955         * gjavah.c (process_file): Turn class name into a file name.
6956
6957 2002-01-14  Matthias Klose  <doko@debian.org>
6958
6959         * gcj.texi: Fix whitespace and formatting errors in the
6960         synopsis of the man pages. Update copyright.
6961
6962 2002-01-14  Tom Tromey  <tromey@redhat.com>
6963
6964         For PR libgcj/5303:
6965         * Make-lang.in (java.install-man): Handle jv-convert man page.
6966         (java.generated-manpages): Added jv-convert.1.
6967         (java.uninstall): Remove jv-convert.1.
6968         (java.maintainer-clean): Likewise.
6969         ($(srcdir)/java/jv-convert.1): New target.
6970         * gcj.texi (Top): Link to jv-convert node.
6971         (Individual utilities): Likewise.
6972         (Invoking jv-convert): New node.
6973
6974 2001-01-10  Jeff Sturm  <jsturm@one-point.com>
6975             Martin Kahlert  <martin.kahlert@infineon.com>
6976
6977         * jcf-parse.c (get_constant): Don't swap lo/hi for big
6978         endian targets when HOST_BITS_PER_WIDE_INT >= 64.
6979
6980 2002-01-03  Graham Stott  <grahams@redhat.com>
6981
6982         * class.c (compile_resource_file): Update copyright date.
6983         Constify filename parameter.
6984         (java-tree.h): Update copyright date.
6985         (compile_resource_file): Constify filename parameter.
6986
6987 2002-01-03  Graham Stott  <grahams@redhat.com>
6988
6989         * gcc/jcf-parse.c: Update copyright date.
6990         (yyparse): Constify resource_filename.
6991
6992 2002-01-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6993
6994         * parse.y (src_parse_roots): Don't needlessly zero init.
6995
6996 2001-12-31  Tom Tromey  <tromey@redhat.com>
6997
6998         * parse.y (dump_java_tree): New function.
6999         (source_end_java_method): Call it.
7000         (end_class_declaration): Likewise.
7001         * lang.c (java_decode_option): Call dump_switch_p.
7002
7003 2001-12-28  Tom Tromey  <tromey@redhat.com>
7004
7005         * gen-table.pl: Don't process characters after \uffff.  Added
7006         comment pointing to input file.
7007
7008 2001-12-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7009
7010         * gen-table.pl: Const-ify output.  Document the location of a
7011         suitable unicode input file.
7012
7013         * chartables.h: Regenerate.
7014
7015 2001-12-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7016
7017         * chartables.h: Const-ify.
7018         * gjavah.c (options): Likewise.
7019         * jcf-dump.c (options): Likewise.
7020         * jv-scan.c (options): Likewise.
7021         * lex.c (java_start_char_p, java_part_char_p): Likewise.
7022         * parse.y (binop_lookup): Likewise.
7023
7024 2001-12-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7025
7026         * Make-lang.in (keyword.h): Pass -C to gperf to const-ify
7027         the static arrays that are output.
7028         * jvspec.c (jvgenmain_spec): Make static.
7029         * keyword.gperf (struct java_keyword, java_keyword): Const-ify.
7030         * keyword.h: Regenerate.
7031         * lang.c (string_option, process_option_with_no, lang_f_options,
7032         lang_W_options): Const-ify.
7033         * lex.c (java_lex): Likewise.
7034
7035 2001-12-21  Richard Henderson  <rth@redhat.com>
7036
7037         * boehm.c (PROCEDURE_OBJECT_DESCRIPTOR): Merge into ..
7038         (get_boehm_type_descriptor): ... here.  Arrange for the
7039         TREE_TYPE to get set properly.
7040
7041 2001-12-21  Richard Henderson  <rth@redhat.com>
7042
7043         * class.c (compile_resource_file): Set TREE_PUBLIC on the constructor
7044         only if the target requires collect2.
7045
7046         * class.c (build_class_ref): Mark _Jv_fooClass DECL_EXTERNAL.
7047
7048 2001-12-20  Tom Tromey  <tromey@redhat.com>
7049
7050         For PR java/4509:
7051         * parse.y (java_complete_lhs) [COMPOUND_EXPR]: Correctly compute
7052         CAN_COMPLETE_NORMALLY for the node.
7053         * jcf-write.c (generate_bytecode_insns) [COMPOUND_EXPR]: Don't
7054         generate code for second branch if first branch can't complete
7055         normally.
7056         (generate_bytecode_insns) [LOOP_EXPR]: Don't generate `goto' to
7057         the loop head if the loop body can't complete normally.
7058
7059 2001-12-20  Tom Tromey  <tromey@redhat.com>
7060
7061         For PR java/4766:
7062         * jcf-write.c (generate_bytecode_insns) [TRY_FINALLY_EXPR]: Handle
7063         case where `finally' clause can't complete normally.
7064
7065 2001-12-20  Tom Tromey  <tromey@redhat.com>
7066
7067         Fixes PR java/5057:
7068         * parse.y (analyze_clinit_body): Added this_class parameter.
7069         Check for more cases where we must keep <clinit>.
7070         (maybe_yank_clinit): Cleaned up flow control.
7071
7072 2001-12-20  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7073
7074         * decl.c (java_init_decl_processing): Don't initialize
7075         finit_leg_identifier_node.
7076         * java-tree.h (java_tree_index): Remove JTI_FINIT_LEG_IDENTIFIER_NODE.
7077         (finit_leg_identifier_node): Remove.
7078         (ID_FINIT_P): Don't check for JTI_FINIT_LEG_IDENTIFIER_NODE.
7079
7080 2001-12-20  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7081
7082         * mangle.c (mangle_member_name): Don't special-case for
7083         NO_DOLLAR_IN_LABEL.
7084         * mangle_name.c (unicode_mangling_length): Likewise.
7085         (append_unicode_mangled_name): Likewise.
7086         * parse.y (make_nested_class_name): Remove dead NO_DOLLAR_IN_LABEL
7087         code.
7088
7089 2001-12-20  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7090
7091         * expr.c (build_java_array_length_access): Don't force null pointer
7092         check unless flag_check_references is set.
7093
7094 2001-12-20  Tom Tromey  <tromey@redhat.com>
7095
7096         Fix for PR java/3417:
7097         * parse.y (patch_assignment): Added special processing for
7098         `return'.
7099         (patch_return): Don't convert booleans to integers, and don't
7100         special-case `null'.
7101
7102 2001-12-20  Joseph S. Myers  <jsm28@cam.ac.uk>
7103
7104         * config-lang.in (diff_excludes): Remove.
7105
7106 2001-12-17  Joseph S. Myers  <jsm28@cam.ac.uk>
7107
7108         * gcj.texi: Update link to GCC manual.
7109
7110 2001-12-17  Tom Tromey  <tromey@redhat.com>
7111
7112         * parse.y (link_nested_class_to_enclosing): Removed useless
7113         statement.
7114
7115 2001-12-16  Tom Tromey  <tromey@redhat.com>
7116
7117         * mangle.c (mangle_method_decl): Never emit `C2' constructor.
7118         Fixes PR java/5088.
7119
7120 2001-12-16  Joseph S. Myers  <jsm28@cam.ac.uk>
7121
7122         * ChangeLog, Make-lang.in, class.c, expr.c, gcj.texi, java-tree.h,
7123         jcf-parse.c, jcf-write.c, lex.c, parse.h, parse.y, verify.c: Fix
7124         spelling errors.
7125
7126 2001-12-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7127
7128         * lex.c (java_read_unicode, java_lex): Use hex_p/hex_value.
7129
7130 2001-12-16  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7131
7132         * decl.c (java_init_decl_processing): Build otable_type correctly.
7133         otable_decl is an otable_type.
7134
7135 2001-12-15  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7136
7137         * java-tree.h (otable_methods, otable_decl, otable_syms_decl,
7138         otable_type, otable_ptr_type, method_symbol_type,
7139         method_symbols_array_type, method_symbols_array_ptr_type): New
7140         field/global tree definitions.
7141         (flag_indirect_dispatch): New flag.
7142         * decl.c (java_init_decl_processing): Initialize new otable and
7143         otable_syms type nodes and decls. Add new field "index" to
7144         method_type_node.
7145         * class.c (build_method_symbols_entry): New function.
7146         (make_method_value): Set "index" to to method's vtable index for
7147         virtual methods when indirect-dispatch is not used.
7148         (make_class_data): For indirect-dispatch, don't emit the dtable_decl,
7149         and set vtable_method_count to -1. Set otable and otable_syms field
7150         if indirect-dispatch is used and there was something to put in them.
7151         (build_method_symbols_entry): New function.
7152         (emit_offset_symbol_table): New function.
7153         * expr.c (get_offset_table_index): New function.
7154         (build_invokevirtual): Build array reference to otable at the index
7155         returned by get_offset_table_index, and use the result as the vtable
7156         offset.
7157         (build_invokeinterface): Similar.
7158         * jcf-parse.c (yyparse): If indirect-dispatch, call
7159         emit_offset_symbol_table at the end of compilation, after all classes
7160         have been generated.
7161         * jvspec.c: Don't pass findirect-dispatch to jvgenmain.
7162         * lang.c (flag_indirect_dispatch): Define.
7163         (lang_f_options): Add indirect-dispatch flag.
7164
7165 2001-12-14  Matthias Klose  <doko@debian.org>
7166
7167         * gcj.texi: Markup for man page generation. Document missing
7168         options printed by <tool> --help.
7169         Terminate description of gij's -ms option with a dot.
7170         * Make-lang.in ($(srcdir)/java/*.1): New targets.
7171         (java.generated-manpages java.install-man, java.uninstall,
7172         java-maintainer-clean) Updated.
7173
7174 2001-12-14  Hans Boehm  <Hans_Boehm@hp.com>
7175
7176         * class.c (get_dispatch_table): Fix java vtable layout
7177         for TARGET_VTABLE_USES_DESCRIPTORS.
7178         * decl.c (java_init_decl_processing): Initialize
7179         alloc_no_finalizer_node, finalize_identifier_node.
7180         * expr.c (class_has_finalize_method): New function.
7181         (expand_java_NEW): Generate calls for finalizer-free allocation.
7182         (build_invokevirtual): Fix java vtable layout for
7183         TARGET_VTABLE_USES_DESCRIPTORS.
7184         * java-tree.h (enum java_tree_index): New entries:
7185         JTI_ALLOC_NO_FINALIZER_NODE, JTI_FINALIZE_IDENTIFIER_NODE.
7186         (alloc_no_finalizer_node, finalize_deintifier_node): New macros.
7187         (class_has_finalize_method): declare.
7188         (HAS_FINALIZER_P): New macro.
7189         * parse.y (patch_invoke): Generate calls for finalizer-free
7190         allocation.
7191
7192 2001-12-12  Matthias Klose  <doko@debian.org>
7193
7194         * Make-lang.in: JAVA_INSTALL_NAME, JAVA_CROSS_NAME: Remove
7195         whitespace at end of line.
7196
7197 2001-12-11  Tom Tromey  <tromey@redhat.com>
7198
7199         * lex.c (java_init_lex): Define wfl_to_string as
7200         gnu.gcj.runtime.StringBuffer unless generating bytecode.
7201
7202 2001-12-11  Jeff Sturm  <jsturm@one-point.com>
7203
7204         * class.c (make_method_value): Use null_pointer_node to
7205         represent empty exception table.
7206
7207 2001-12-10  Tom Tromey  <tromey@redhat.com>
7208
7209         * check-init.c (check_init) [SWITCH_EXPR]: Use SWITCH_HAS_DEFAULT.
7210
7211 2001-12-10  Douglas B. Rupp  <rupp@gnat.com>
7212
7213         * Make-lang.in (jvspec.o): Add $(OUTPUT_OPTION).
7214
7215 2001-12-09  Per Bothner  <per@bothner.com>
7216
7217         * check-init.c (current_switch_has_default):  New static field.
7218         (check_init):  Case DEFAULT_EXPR: Set current_switch_has_default.
7219         Case SWITCH_EXPR:  Save/restore current_switch_has_default.  If no
7220         DEFAULT_EXPR seen, simulate a default alternative that copies state.
7221
7222 2001-12-09  Tom Tromey  <tromey@redhat.com>
7223
7224         * check-init.c (check_init): Don't allow pre- or post- increment
7225         or decrement of final variable.
7226         (final_assign_error): Minor error message rewording.
7227
7228 2001-12-08  Tom Tromey  <tromey@redhat.com>
7229
7230         * java-tree.h: Fixed typo.
7231
7232         * gjavah.c (decompile_method): Don't decompile to `return this'
7233         for static methods.
7234
7235         * gjavah.c (cxx_keywords): Re-sorted.
7236         * lex.c (cxx_keywords): Re-sorted.
7237
7238         * gjavah.c (HANDLE_METHOD): Set `decompiled' before doing anything
7239         else.
7240
7241         * gjavah.c (print_namelet): Clear subnamelets.
7242         (HANDLE_METHOD): Set `method_printed' earlier.
7243
7244 2001-12-07  Tom Tromey  <tromey@redhat.com>
7245
7246         * lang.c (lang_f_options): Added
7247         optimize-static-class-initialization.
7248         (java_decode_option): Removed special case.
7249
7250 2001-12-07  Per Bothner  <per@bothner.com>
7251
7252         * check-init.c (check_init):  Fix typo freeing memory twice.
7253
7254 2001-12-05  Per Bothner  <per@bothner.com>
7255
7256         Restore support for static class initialization optimization.
7257         * java-tree.h (STATIC_CLASS_INIT_OPT_P): Re-enable.
7258         * check-init.c (check_int):  At end of BLOCK handle initialization
7259         blocks, which used to be done in java_complete_expand_method but did
7260         not handle the case where check_for_initialization might allocate
7261         more than a word of bits.
7262         * decl.c (lang_make_tree):  The smic field is now a tree.
7263         * expr.c (build_class_init):  Set DECL_FUNCTION_INIT_TEST_CLASS field.
7264         * java-tree.h (DECL_FUNCTION_INIT_TEST_TABLE):  New macro.
7265
7266         * parse.y (emit_test_initialization):  Combine hash_lookup calls.
7267
7268         * java-tree.h (DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND):
7269         Change from a hash table to a list.
7270         (struct_lang_decl):  Change field 'smic' to match.
7271         * class.c (add_method_1):  Initialize
7272         DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND to null list.
7273         * parse.y (adjust_init_test_initialization):  Removed - inlined into -
7274         (java_expand_method_bodies): -here, since 'smic' is now a list.
7275         (patch_invoke):  Add to 'smic' list, instead of hash_lookup.
7276
7277         * check-init.c (WORD_SIZE):  Use BITS_PER_UNIT.
7278
7279         * class.c (java_hash_compare_tree_node):  Fix casts.
7280
7281 2001-12-04  Per Bothner  <per@bothner.com>
7282
7283         * check-init.c:   Handle definite unassignment to finals in addition
7284         to definite assignment.
7285         (loop_current_locals):  New field.
7286         (num_current_locals, int start_current_locals, num_current_words):
7287         Make static.
7288         (SET_P, CLEAR_P, SET_BIT):  Add needed but missing parentheses.
7289         (ASSIGNED_P, UNASSIGNED_P, SET_ASSIGNED, SET_UNASSIGNED,
7290         CLEAR_ASSIGNED, CLEAR_UNASSIGNED):  New macros.
7291         (get_variable_decl, check_final_reassigned):  New functions.
7292         (check_init, check_bool_init):  Modify as needed for checking finals.
7293         (check_for_initialization):  Take extra parameter and return void.
7294         Do extra start-up logic to check final fields for assignment.
7295         * parse.y (check_static_final_variable_assignment_flag,
7296         reset_static_final_variable_assignment_flag, check_final_assignment,
7297         check_final_variable_local_assignment_flag,
7298         reset_final_variable_indirect_assignment_flag,
7299         reset_final_variable_global_assignment_flag):  Remove functions.
7300         (java_complete_expand_methods, outer_field_access_fix,
7301         patch_assignment): Remove no-longer used logic.
7302         * java-tree.h (DECL_FIELD_FINAL_IUD):  Change usage and comments.
7303         * parse.y (register_fields, java_complete_tree):  Update accordingly.
7304
7305         * check-init.c (ALLOC_WORDS/FREE_WORDS):  Use xmalloc/free, not alloca.
7306         (DECLARE_BUFFERS, RELEASE_BUFFERS, ALLOC_BUFFER, FREE_BUFFER):  New.
7307         (check_cond_init, check_bool2_init):  Use DECLARE_BUFFERS.
7308
7309         * java-tree.h (STATIC_CLASS_INIT_OPT_P):  Temporarily turn off.
7310
7311         * java-tree.h (DECL FINAL):  New bit-field.
7312         (METHOD_FINAL, FIELD_FINAL, CLASS_FINAL):  Define as DECL_FINAL.
7313         (LOCAL_FINAL_P):  Use DECL_FINAL rather than old LOCAL_FINAL.
7314         (DECL_INIT_CALLS_THIS):  New macro.
7315         (struct lang_decl):  New bit-field init_calls_this.
7316         (DECL_FUNCTION_ALL_FINAL_INITIALIZED, DECL_FIELD_FINAL_LIIC,
7317         DECL_FIELD_FINAL_IERR, LOCAL_FINAL, TYPE_HAS_FINAL_VARIABLE
7318         (DECL_BIT_INDEX):  Change to use pointer_alias_set since we now
7319         use it for both local variables and final fields.
7320         (struct lang_decl_var):  Remove bit-fields final_liic, final_ierr,
7321         and local_final.
7322         (struct lang_type):  Remove hfv bit-field.
7323         (check_for_initialization):  Change to return void.
7324
7325         * java-tree.h (IS_ARRAY_LENGTH_ACCESS):  New macros.
7326         * expr.c (build_java_array_length_access):  Set IS_ARRAY_LENGTH_ACCESS.
7327         * check-init.c (final_assign_error):  New helper function.
7328         (check_final_reassigned, check_init):  Use it.
7329         (check_init):  Also check IS_ARRAY_LENGTH_ACCESS for ARRAY.length.
7330
7331         * java-tree.h (struct lang_decl, struct lang_decl_var):  Change all
7332         bit-fields to unsigned.
7333
7334 2001-12-03  Per Bothner  <per@bothner.com>
7335
7336         * parse.y (patch_binop):  Minor constant folding.
7337
7338         * parse.y (build_current_thisn):  Shorter 'buffer'.
7339
7340 2001-12-03  Per Bothner  <per@bothner.com>
7341
7342         * decl.c (complete_start_java_method):  Now generate TRY_FINALLY_EXPR
7343         instead of CLEANUP_POINT_EXPR and WITH_CLEANUP_EXPR.
7344         * jcf-write.c (generate_bytecode_insns):  Remove support for
7345         CLEANUP_POINT_EXPR and WITH_CLEANUP_EXPR as they are no longer used.
7346         * check-init.c (check_init):  Likewise.
7347
7348 2001-12-03  Per Bothner  <per@bothner.com>
7349
7350         * verify.c (subroutine_nesting):  New function.
7351         (verify_jvm_instructions):  Use it to fix logic for checking that
7352         we're done with the current subroutine.
7353
7354         * verify.c (verify_jvm_instruction): For OPCODE_checkcast and
7355         OPCODE_instanceof use POP_TYPE macro for better diagnostics.
7356
7357 2001-12-03  Per Bothner  <per@bothner.com>
7358
7359         * jcf.h:  Fix obvious typo in comment.
7360         * typeck.c (build_null_signature):  Add comment.
7361
7362 2001-12-03  Neil Booth  <neil@daikokuya.demon.co.uk>
7363
7364         * expr.c: Remove leading capital from diagnostic messages, as
7365         per GNU coding standards.
7366         * jcf-io.c: Similarly.
7367         * jcf-parse.c: Similarly.
7368         * jv-scan.c: Similarly.
7369         * jvspec.c: Similarly.
7370         * mangle.c: Similarly.
7371
7372 2001-12-02  Tang Ching-Hui  <nicholas@cs.nthu.edu.tw>
7373             Alexandre Petit-Bianco  <apbianco@redhat.com>
7374
7375         * expr.c (build_java_arrayaccess): Call save_expr on array for
7376         correct evaluation order, modified comment, fixed indentation.
7377         * parse.y: (patch_assignment): Correctly extract the array base
7378         from the tree generate by build_java_arrayaccess, added comments.
7379         (patch_array_ref): Remove SAVE_EXPR on ARRAY_REF.
7380         Fixes PR java/3096, PR java/3803, PR java/3965.
7381
7382 2001-12-01  Neil Booth  <neil@daikokuya.demon.co.uk>
7383
7384         * expr.c (expand_byte_code): Remove trailing periods from messages.
7385         * jcf-parse.c (load_class, jcf_parse): Similarly.
7386         * jcf-write.c (generate_classfile): Similarly.
7387         * lex.c (java_lex): Similarly.
7388
7389 2001-11-30  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7390
7391         * class.c (add_interface_do): Set BINFO_VPTR_FIELD.
7392
7393 2001-11-29  Joseph S. Myers  <jsm28@cam.ac.uk>
7394
7395         * Make-lang.in (java.generated-manpages): New dummy target.
7396
7397 2001-11-27  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
7398
7399         * jvspec.c (jvgenmain_spec): Cannot use %umain, breaks
7400         ASM_FINAL_SPEC.
7401         (lang_specific_pre_link): Use set_input to set input_filename.
7402         Append `main' here.
7403         * jvgenmain.c (usage): Append literal `main' to CLASSNAME.
7404         (main): Fix definition.
7405         Strip `main' from classname.
7406         Fixes PR java/227.
7407
7408 2001-11-18  Roger Sayle <roger@eyesopen.com>
7409
7410         * parse.h (java_expand_switch): Remove old prototype.
7411
7412 2001-11-18  Tom Tromey  <tromey@redhat.com>
7413
7414         Fix for PR java/1401:
7415         * jcf-write.c (generate_bytecode_insns) [binop]: Handle case where
7416         arg0 is null.
7417         (generate_bytecode_insns) [MODIFY_EXPR]: Handle `OP=' case
7418         correctly.
7419
7420 2001-11-18  Neil Booth  <neil@daikokuya.demon.co.uk>
7421
7422         * lang.c (finish_parse): Rename to java_finish.
7423         (LANG_HOOKS_FINISH, java_finish): New.
7424
7425 2001-11-15  Neil Booth  <neil@daikokuya.demon.co.uk>
7426
7427         * decl.c (init_decl_processing): Rename java_init_decl_processing.
7428         * java-tree.h: New prototype.
7429         * lang.c (java_init): Update prototype.  Combine with old init_parse.
7430
7431 2001-11-13  Tom Tromey  <tromey@redhat.com>
7432
7433         * gjavah.c (method_signature): New global.
7434         (HANDLE_METHOD): Set it.
7435         (decompile_return_statement): New function.
7436         (decompile_method): Use it.
7437         (print_method_info): Removed `synth' argument.
7438
7439 2001-11-09  Neil Booth  <neil@daikokuya.demon.co.uk>
7440
7441         * java-tree.h (java_set_yydebug): New.
7442         * jcf-parse.c (set_yydebug): Rename java_set_yydebug.
7443         * lang.c (LANG_HOOKS_SET_YYDEBUG): Override.
7444         (print_lang_decl, print_lang_type, print_lang_identifier,
7445         print_lang_statistics, lang_print_xnode): Remove.
7446
7447 2001-11-09  Neil Booth  <neil@daikokuya.demon.co.uk>
7448
7449         * jcf-parse.c (init_lex): Remove.
7450         * lang.c (language_string, lang_identify): Remove.
7451         (struct lang_hooks): Constify.
7452         (LANG_HOOKS_NAME): Override.
7453         (init_parse): Update.
7454
7455 2001-11-08  Andreas Franck  <afranck@gmx.de>
7456
7457         * Make-lang.in (JAVA_INSTALL_NAME, JAVA_CROSS_NAME): Handle
7458         program_transform_name the way suggested by autoconf.
7459         (java.install-common): Also transform auxiliary program names with
7460         program_transform_name.
7461
7462 2001-11-08  Tom Tromey  <tromey@cygnus.com>
7463
7464         * parse.y (trap_overflow_corner_case): New rule.
7465         (unary_expression): Use it.
7466         * lex.c (java_init_lex): Don't set minus_seen.
7467         (yylex): Don't use minus_seen.  Communicate overflow to parser for
7468         it to handle.
7469         (error_if_numeric_overflow): New function.
7470         * parse.h (minus_seen): Removed field.
7471         (JAVA_RADIX10_FLAG): New define.
7472
7473 2001-11-07  Tom Tromey  <tromey@redhat.com>
7474
7475         Patch for PR java/1414:
7476         * parse.y (case_label_list): New global.
7477         (goal): Register case_label_list with GC.
7478         (java_complete_lhs): Save new case on case_label_list.
7479         (patch_switch_statement): Check for duplicate case labels.
7480
7481 2001-11-07  Alexandre Petit-Bianco  <apbianco@redhat.com>
7482
7483         * parse.y (patch_assignment): Removed unused third argument.
7484         (java_complete_lhs): Removed unused third argument to patch_assignment.
7485
7486 2001-11-06  Neil Booth  <neil@cat.daikokuya.demon.co.uk>
7487
7488         * lang.c: Include langhooks-def.h.
7489         * Make-lang.in: Update.
7490
7491 2001-10-31  Zack Weinberg  <zack@codesourcery.com>
7492
7493         * Make-lang.in: Replace $(INTL_TARGETS) with po-generated.
7494
7495 2001-10-29  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7496
7497         * mangle.c (find_compression_record_match): Don't match compression
7498         records for package name elements unless they occur at the start of
7499         the name. Fix for PR java/4717.
7500
7501 2001-10-25  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7502
7503         * expr.c (expand_java_field_op): Don't special-case references to
7504         java.lang.PRIMTYPE.TYPE.
7505         (build_primtype_type_ref): Removed.
7506         * java-tree.h (build_primtype_type_ref): Remove prototype.
7507         * parse.y (maybe_build_primttype_type_ref): Removed.
7508         (complete_function_arguments): Don't special-case references to
7509         java.lang.PRIMTYPE.TYPE.
7510         (patch_assignment): Likewise.
7511         (array_constructor_check_entry): Likewise.
7512
7513 2001-10-24  Alexandre Petit-Bianco  <apbianco@redhat.com>
7514
7515         * mangle.c (static tree compression_table): Fixed leading comment.
7516         * parse.h (struct parser_ctxt): Fixed field comment.
7517         * parse.y (check_pkg_class_access): New prototype, fixed leading
7518         comment, new parameter used to emit error only if passed as true.
7519         (parse_check_super): Pass extra argument to check_pkg_class_access.
7520         (do_resolve_class): Likewise.
7521         (process_imports): Likewise.
7522         (read_import_dir): Fixed indentation.
7523         (find_in_imports_on_demand): New local class_type_name. Local
7524         node_to_use deleted. while loop changed into for loop. Report
7525         multiple definition only for accessible classes. Improved error
7526         message.
7527         (start_complete_expand_method): Local `ptr' removed. DECL_ARGUMENTS
7528         assigned to parameter list, fixed indentation. while loop changed
7529         into for loop, restore TREE_CHAIN on local `tem' before the next
7530         iteration.
7531
7532 2001-10-23  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
7533
7534         * lang.c (lang_get_alias_set): Deleted.
7535
7536 2001-10-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7537
7538         * gjavah.c (jni_print_char): Fix thinko in last change.
7539
7540         * gjavah.c (jni_print_char, decode_signature_piece): Use
7541         safe-ctype macros and/or fold extra calls into fewer ones.
7542         * lex.c (java_read_unicode, java_lex): Likewise.
7543         * lex.h (JAVA_START_CHAR_P, JAVA_PART_CHAR_P, JAVA_ASCII_DIGIT,
7544         JAVA_ASCII_HEXDIGIT, JAVA_ASCII_LETTER): Likewise.
7545         * mangle_name.c (append_unicode_mangled_name,
7546         unicode_mangling_length): Likewise.
7547
7548 2001-10-17  Richard Henderson  <rth@redhat.com>
7549
7550         * Make-lang.in (java/lang.o): Depend on langhooks.h.
7551
7552 2001-10-15  Alexandre Petit-Bianco  <apbianco@redhat.com>
7553
7554         * lang.c (langhooks.h): Included.
7555         (LANG_HOOKS_INIT): Redefined.
7556         (LANG_HOOKS_INIT_OPTIONS): Likewise.
7557         (LANG_HOOKS_DECODE_OPTION): Likewise.
7558         (struct lang_hooks lang_hooks): New initialization.
7559
7560 2001-10-11  Per Bothner  <per@bothner.com>
7561
7562         * parse.y (patch_synchronized_statement):  Use a TRY_FINALLY_EXPR
7563         rather than a CLEANUP_POINT_EXPR/WITH_CLEANUP_EXPR pair.
7564         The former is simpler, and jcf-write.c handles it better.
7565         (java_complete_lhs):  No longer need to handle CLEANUP_POINT_EXPR
7566         or WITH_CLEANUP_EXPR.
7567         * jcf-write.c:  Revert Alex's change from 2000-10-18.  It is no
7568         longer needed, as we already handle empty TRY_FINALLY_EXPR bodies fine.
7569
7570         * parse.y (patch_if_else_statement):  If the condition is constant,
7571         optimize away the test.
7572
7573 2001-10-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
7574
7575         * parse.y (patch_cast): Call patch_string on the first operand of
7576         the incoming node, update it if necessary. Fixes PR java/4510.
7577
7578 2001-10-09  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
7579
7580         * parse.y (find_as_inner_class): Don't disregard the enclosing scope
7581         when name qualifier matches a package name.
7582
7583 2001-10-08  Tom Tromey  <tromey@redhat.com>
7584
7585         Fix for PR java/4489:
7586         * jcf-write.c (generate_bytecode_insns) [SWITCH_EXPR]: Always
7587         force a new label when computing `body_block'.
7588
7589 2001-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7590
7591         * jcf-io.c (format_uint): Const-ify.
7592         * lang.c (java_tree_code_type, java_tree_code_length): Likewise.
7593         * lex.c (java_get_line_col): Likewise.
7594         * parse.y (build_incdec): Likewise.
7595
7596 2001-10-05  Alexandre Petit-Bianco  <apbianco@redhat.com>
7597
7598         * parse.y (register_incomplete_type): Set JDEP_SUPER to be given
7599         a NULL enclosing context if appropriate. Fixes PR java/4466.
7600
7601 2001-10-03  Alexandre Petit-Bianco  <apbianco@redhat.com>
7602
7603         * parse.y (patch_assignment): Use lvalue's original TYPE when
7604         building the final COMPOUND_EXPR.
7605         (try_reference_assignconv): Fixed leading comment.
7606
7607 2001-09-26  Alexandre Petit-Bianco  <apbianco@redhat.com>
7608
7609         * parse.y (check_final_variable_indirect_assignment): For
7610         COMPOUND_EXPR, return only if finals were found initialized
7611         properly, if not, keep on checking.
7612         (check_final_variable_global_assignment_flag): New local
7613         error_found, set when appropriate and used to decide whether to
7614         report uninitialized finals. Fixed typo in comment.
7615
7616 2001-09-22  Alexandre Petit-Bianco  <apbianco@redhat.com>
7617
7618         * decl.c (init_decl_processing): Fixed typo in predef_filenames
7619         last three initializations. Fixes PR java/4360.
7620
7621 2001-09-21  Richard Henderson  <rth@redhat.com>
7622
7623         * class.c (get_dispatch_table): Handle function descriptors.
7624         (build_dtable_decl): Likewise.
7625         * expr.c (build_invokevirtual): Likewise.
7626
7627 2001-09-20  Alexandre Petit-Bianco  <apbianco@redhat.com>
7628
7629         * parse.y (patch_method_invocation): Build class initialization
7630         when static finals are used to qualify method invocation.
7631         Fixes PR java/4366.
7632
7633 2001-09-19  Alexandre Petit-Bianco  <apbianco@redhat.com>
7634
7635         * parse.h: (WFL_STRIP_BRACKET): Re-written using
7636         build_type_name_from_array_name.
7637         (STRING_STRIP_BRACKETS): New macro.
7638         * parse.y (build_type_name_from_array_name): New function.
7639         (array_creation_expression:): Accumulate []s instead of [s.
7640         (cast_expression:): Accumulate []s instead of [s after cast type
7641         name.
7642         (build_array_from_name): Local string deleted, use
7643         build_type_name_from_array_name.
7644         (build_unresolved_array_type): Accumulate []s instead of [s after
7645         type name.
7646         (register_fields): Fixed comment.
7647         (resolve_class): Local name, base deleted, new locals tname and
7648         array_dims. Use build_type_name_from_array_name. Use array_dims to
7649         build array type.
7650         (purify_type_name): Use STRING_STRIP_BRACKETS.
7651
7652 2001-09-18  Andreas Jaeger  <aj@suse.de>
7653
7654         * parse.y: Use VA_OPEN/VA_CLOSE/VA_FIXEDARG throughout.
7655         * jv-scan.c: Likewise.
7656
7657 2001-09-17  Alexandre Petit-Bianco  <apbianco@redhat.com>
7658
7659         * parse.y (patch_method_invocation): Inner class creation context
7660         check not enforced within constructors. Fixes PR java/1873.
7661
7662 2001-09-16  Tom Tromey  <tromey@redhat.com>
7663
7664         * jcf-write.c (generate_bytecode_insns) [SWITCH_EXPR]: Call
7665         NOTE_PUSH for single-case push.  Fixes PR java/4189.
7666
7667 2001-09-13  Alexandre Petit-Bianco  <apbianco@redhat.com>
7668
7669         * java-tree.h (TYPE_IMPORT_LIST): New macro.
7670         (TYPE_IMPORT_DEMAND_LIST): Likewise.
7671         (struct lang_type): New fields import_list and import_demand_list.
7672         * parse.y (java_complete_class): Initialize TYPE_IMPORT_LIST and
7673         TYPE_IMPORT_DEMAND_LIST with ctxp counterparts.
7674         (do_resolve_class): New local saved_enclosing_type, initialized,
7675         passed as parameter to find_in_imports and find_in_imports_on_demand.
7676         (find_in_imports): Added paramater enclosing_type, use its
7677         TYPE_IMPORT_LIST when applicable.
7678         (find_in_imports_on_demand): Added parameter enclosing_type, use
7679         its TYPE_IMPORT_DEMAND_LIST when applicable. Reorganized locals
7680         declaration and initialization.
7681         (fold_constant_for_init): Switch/restore current_class to the
7682         appropriate context.
7683
7684 2001-09-13  Mark Mitchell  <mark@codesourcery.com>
7685
7686         * verify.c (verify_jvm_instructions): Fix typo.
7687
7688 2001-09-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7689
7690         * expr.c (expand_invoke): Const-ification.
7691         * parse.y (patch_method_invocation): Likewise.
7692
7693 2001-09-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7694
7695         * gjavah.c (cxx_keywords): Const-ification.
7696         * keyword.gperf (java_keyword): Likewise.
7697         * lang.c (java_tree_code_name): Likewise.
7698         * lex.c (cxx_keywords): Likewise.
7699         * parse.y (java_parser_context_suspend, merge_string_cste): Likewise.
7700
7701 2001-09-11  Richard Henderson  <rth@redhat.com>
7702
7703         * parse.h (ctxp_for_generation): Mark extern.
7704
7705 2001-09-10  Richard Henderson  <rth@redhat.com>
7706
7707         * class.c (build_class_ref): Set DECL_EXTERNAL before make_decl_rtl.
7708
7709 2001-09-07  Matt Kraai  <kraai@alumni.carnegiemellon.edu>
7710
7711         * typeck.c (java_array_type_length, build_prim_array_type):
7712         Represent empty arrays by NULL index.
7713
7714 2001-09-06  Alexandre Petit-Bianco  <apbianco@redhat.com>
7715
7716         * java-tree.h (compile_resource_file): Grouped with other prototypes.
7717         * jvspec.c (lang_specific_driver): Removed unused local `ptr.'
7718
7719 2001-09-06  Anthony Green  <green@redhat.com>
7720
7721         * class.c (O_BINARY): Define if necessary.
7722         (registerResource_libfunc): Declare.
7723         (init_class_processing): Initilize registerResource_libfunc.
7724         (compile_resource_file): New function.
7725         * java-tree.h (resource_name): Declare.
7726         (compile_resource_file): Declare.
7727         * jcf-parse.c (yyparse): Handle compiling java resource files.
7728         * lang.c (java_decode_option): Handle -fcompile-resource option.
7729         * jvspec.c (lang_specific_driver): Handle -R flag for compiling
7730         resource files.
7731         * gcj.texi (Code Generation): Add documentation for -R flag.
7732
7733 2001-09-05 Alexandre Petit-Bianco  <apbianco@redhat.com>
7734
7735         * jcf-write.c (generate_classfile): Issue an error in case of
7736         field/initial value mismatch.
7737         * parse.y (analyze_clinit_body): Keep <clinit> if an array is
7738         being initialized and we're generating bytecode.
7739         (java_complete_lhs): In MODIFY_EXPR section: added comments,
7740         set DECL_INITIAL properly when appropriate.
7741         Fixes PR java/4230
7742         Fixes PR java/4204
7743
7744 2001-09-01  Per Bothner  <per@bothner.com>
7745
7746         * parse.y (maybe_yank_clinit):  A field without an initializer is not
7747         relevant.  All initializers except static final and constant require
7748         <clinit>, regardless of flag_emit_class_files.
7749
7750 2001-08-31  Per Bothner  <per@bothner.com>
7751
7752         * class.c (set_constant_value):  When not emitting class files, then a
7753         String ConstantValue is a utf8const_ptr_type.
7754
7755 2001-08-30  Per Bothner  <per@bothner.com>
7756
7757         * jcf-write.c (generate_classfile):  Check that field is primitive
7758         or string before emitting ConstantValue attribute.
7759
7760 2001-08-30  Per Bothner  <per@bothner.com>
7761
7762         * parse.y (resolve_qualified_expression_name):  If creating a
7763         COMPOUND_EXPR, set it's type correctly.
7764
7765 2001-08-30  Per Bothner  <per@bothner.com>
7766
7767         * jcf-io.c (open_class):  Set filename field.
7768
7769         * jcf-parse,c (parse_class_file):  Set current_function_decl
7770         for better error message when Code attribute is missing.
7771
7772         * lang.c (put_decl_node, lang_print_error):  Re-arrange for
7773         better diagnostics, especially for constructors.
7774
7775 2001-08-30  Per Bothner  <per@bothner.com>
7776
7777         * jcf-write.c (generate_classfile):  Don't write ConstantValue
7778         attribute if field is not final, for compatibility with jdk.
7779
7780         * jcf-write.c (generate_classfile):  Convert ConstantValue values
7781         to correct type.  Work-around for front-end bug.
7782         * class.c (set_constant_value):  Error if constant has wrong type.
7783
7784 2001-08-30  Per Bothner  <per@bothner.com>
7785
7786         * jcf-dump.c (print_constant):  Fix fencepost error so "Float" and
7787         "Double" are printed at verbosity 1.
7788
7789         * jcf-dump.c (main):  Disable flag_print_attributes if --javap.
7790
7791         * jcf-dump.c (SPECIAL_IINC):  Remove unneeded casts to long.
7792
7793 2001-08-30  Alexandre Petit-Bianco  <apbianco@redhat.com>
7794
7795         * parse.y (patch_assignment): Don't verify final re-assignment here.
7796         (java_complete_lhs): Verify assignments to finals calling
7797         patch_assignment. Verify re-assignments to finals before calling
7798         patch_assignment.
7799
7800 2001-08-29  Alexandre Petit-Bianco  <apbianco@redhat.com>
7801
7802         * parse.y (java_complete_lhs): Allow final locals in CASE_EXPRs.
7803         Fixes PR java/1413
7804
7805 2001-08-28  Alexandre Petit-Bianco  <apbianco@redhat.com>
7806
7807         * lex.c (java_lex): new local found_hex_digits. Set and then used
7808         in test to reject invalid hexadecimal numbers.
7809         * parse.y (java_complete_tree): Prevent unwanted cast with
7810         initialized floating point finals.
7811         (patch_binop): Emit a warning when detecting a division by zero,
7812         mark result not constant, don't simplify non integer division.
7813
7814 2001-08-28  Per Bothner  <per@bothner.com>
7815
7816         * jcf-write.c  (generate_bytecode_insns):  For increments and
7817         decrements just recurse to push constant.  Improvement on Mark's patch.
7818
7819 2001-08-28  Mark Mitchell  <mark@codesourcery.com>
7820
7821         * jcf-write.c (generate_bytecode_insns): Generate an integer to
7822         real conversion for increments and decrements of reals.
7823
7824 2001-08-27  Alexandre Petit-Bianco  <apbianco@redhat.com>
7825
7826         * parse.y (resolve_qualified_expression_name): Handle unresolved
7827         qualified expressions, prevent numerical qualifiers, fixed typo.
7828         Fixes PR java/4141
7829
7830 2001-08-24  Alexandre Petit-Bianco  <apbianco@redhat.com>
7831
7832         * parse.y (check_deprecation): Handle TYPE_DECL in a special case,
7833         don't report anything but deprecated class when marked so. Handle
7834         VAR_DECL.
7835         (patch_method_invocation): Check deprecation on methods and types.
7836         (patch_binop): code becomes an enum tree_code, added default: to
7837         switch to handle that. Detect division by zero, try to fold and
7838         return before using a subroutine.
7839
7840 2001-08-23  Alexandre Petit-Bianco  <apbianco@redhat.com>
7841
7842         * jcf-parse.c (yyparse): Set magic to 0, don't issue error for a
7843         file smaller than 4 bytes.
7844         * parse.y (check_inner_circular_reference): New function.
7845         (check_circular_reference): Likewise.
7846         (array_initializer:): Accept {,}.
7847         (java_check_circular_reference): Rewritten using
7848         check_circular_reference and check_inner_circular_reference.
7849         (java_complete_expand_method): Unconditionally save and restore
7850         the unpurged exception list.
7851         (build_dot_class_method_invocation): Unmangle signature parameter.
7852
7853 2001-08-21  Tom Tromey  <tromey@redhat.com>
7854
7855         * decl.c (init_decl_processing): Add `throws' field to method
7856         descriptor.
7857         * class.c (make_method_value): Compute `throws' field for method.
7858
7859 2001-08-22  Alexandre Petit-Bianco  <apbianco@redhat.com>
7860
7861         * parse.y (resolve_inner_class): Keep local_enclosing to NULL if
7862         circularity is detected.
7863         (ctors_unchecked_throws_clause_p): Fixed leading comment.
7864
7865 2001-08-17  Richard Henderson  <rth@redhat.com>
7866
7867         * class.c (emit_register_classes): Add align parameter to
7868         call to assemble_integer.
7869
7870 2001-08-16  Alexandre Petit-Bianco  <apbianco@redhat.com>
7871
7872         * jcf-parse.c (load_class): New locals saved and class_loaded. If
7873         loading a class_or_name fails, try considering an innerclass name
7874         and load the enclosing context.
7875         * parse.y (resolve_inner_class): New function.
7876         (find_as_inner_class): Added leading comment.
7877         (register_incomplete_type): Keep the current context as enclosing
7878         context for JDEP_FIELD dependencies.
7879         (do_resolve_class): Locals new_class_decl and super initialized to
7880         NULL. Call resolve_inner_class, explore the enclosing context
7881         superclass if necessary.
7882         Fixes PR java/4007
7883
7884 2001-08-16  Tom Tromey  <tromey@redhat.com>
7885
7886         * jcf-dump.c (main): Updated for change to jcf_path_seal.
7887         * gjavah.c (main): Updated for change to jcf_path_seal.
7888         * lang.c (version_flag): New global.
7889         (java_decode_option): Recognize `-version'.
7890         (java_init): Update for change to jcf_path_seal.
7891         * jcf.h (jcf_path_seal): Added `print' argument.
7892         * jcf-path.c (jcf_path_seal): Added `print' argument.
7893
7894 2001-08-13  Zack Weinberg  <zackw@panix.com>
7895
7896         * Make-lang.in (java/decl.o): Update dependencies.
7897         * decl.c: Include libfuncs.h, don't include toplev.h.
7898
7899 2001-08-12  Alexandre Petit-Bianco  <apbianco@redhat.com>
7900
7901         * decl.c (init_decl_processing): exception_type_node,
7902         class_not_found_type_node, and no_class_def_found_type_node
7903         initialized. predef_filenames augmented accordingly.
7904         instinit_identifier_node initialized.
7905         * java-tree.def (INSTANCE_INITIALIZERS_EXPR): Entry removed.
7906         * java-tree.h (enum java_tree_index): New entries
7907         JTI_EXCEPTION_TYPE_NODE, JTI_CLASS_NOT_FOUND_TYPE_NODE,
7908         JTI_NO_CLASS_DEF_FOUND_TYPE_NODE, JTI_INSTINIT_IDENTIFIER_NODE.
7909         (exception_type_node): New macro.
7910         (class_not_found_type_node): Likewise.
7911         (no_class_def_found_type_node): Likewise.
7912         (instinit_identifier_node): Likewise.
7913         (PREDEF_FILENAMES_SIZE): Adjusted.
7914         (TYPE_HAS_FINAL_VARIABLE): Fixed typo.
7915         (struct lang_type): Fixed typo in bitfield name.
7916         (DECL_INSTINIT_P): New macro.
7917         (ID_INSTINIT_P): Likewise.
7918         * jcf-write.c (generate_classfile): instinit$ bears the Synthetic
7919         attribute.
7920         * parse.y (encapsulate_with_try_catch): New function.
7921         (generate_instinit): Likewise.
7922         (build_instinit_invocation): Likewise.
7923         (ctors_unchecked_throws_clause_p): Likewise.
7924         (add_instance_initializer): Deleted.
7925         (build_instance_initializer): Likewise.
7926         (in_instance_initializer): Likewise.
7927         (check_method_redefinition): instinit$ not to be verified.
7928         (java_complete_expand_methods): Generate instinit$, simplified code.
7929         (build_dot_class_method): Eliminated unnecessary locals. Use
7930         encapsulate_with_try_catch, removed unnecessary code.
7931         (fix_constructors): New local iii. Use build_instinit_invocation.
7932         (patch_method_invocation): Added comment.
7933         (maybe_use_access_method): Don't consider instinit$.
7934         (find_applicable_accessible_methods_list): Shorten the search for
7935         instinit$ too.
7936         (java_complete_lhs): case INSTANCE_INITIALIZERS_EXPR removed.
7937         (patch_return): Use DECL_INSTINIT_P instead of in_instance_initializer.
7938         (patch_throw_statement): Likewise. Fixed typo.
7939
7940 2001-08-12  David Edelsohn  <edelsohn@gnu.org>
7941
7942         Revert:
7943         2001-08-02  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
7944         * jvspec.c (jvgenmain_spec): Cannot use %umain, breaks
7945         ASM_FINAL_SPEC.
7946         (lang_specific_pre_link): Use set_input to set input_filename.
7947         Append `main' here.
7948         * jvgenmain.c (usage): Append literal `main' to CLASSNAME.
7949         (main): Fix definition.
7950         Strip `main' from classname.
7951         Fixes PR java/227.
7952
7953 2001-08-11  Zack Weinberg  <zackw@panix.com>
7954
7955         * lex.h: Don't include setjmp.h.  Don't define
7956         SET_FLOAT_HANDLER or prototype set_float_handler.
7957
7958 2001-08-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
7959
7960         * expr.c (java_lang_expand_expr): Call `expand_end_bindings' and
7961         `poplevel' in the right order.
7962
7963 2001-08-09  Richard Henderson  <rth@redhat.com>
7964
7965         * Make-lang.in (class.o): Depend on TARGET_H.
7966         * class.c (emit_register_classes): Use target hooks instead of
7967         assemble_constructor and assemble_destructor.
7968
7969 2001-08-08  Alexandre Petit-Bianco  <apbianco@redhat.com>
7970
7971         * check-init.c (flags.h): Include
7972         (check_init): Don't report uninitialized static class
7973         initialization flags, don't free bit index when doing static class
7974         initialization optimization.
7975         (check_for_initialization): Return type changed to `unsigned int.'
7976         (attach_initialized_static_class): New function.
7977         * class.c (add_method_1): Create the initialized static class
7978         table if necessary.
7979         (finish_class): Always emit deferred inline methods.
7980         * decl.c (emit_init_test_initialization): Moved to expr.c
7981         (complete_start_java_method): Don't traverse
7982         DECL_FUNCTION_INIT_TEST_TABLE.
7983         (lang_mark_tree): Mark hash tables in function decls.
7984         * expr.c (emit_init_test_initialization): Moved from decl.c.
7985         (build_class_init): Create LAG_DECL_SPECIFIC for the static class
7986         initialization flag, set DECL_CONTEXT and
7987         LOCAL_CLASS_INITIALIZATION_FLAG.
7988         (java_lang_expand_expr): Emit initialization code for static class
7989         initialized flags when entering block, if necessary.
7990         * gcj.texi (-fno-optimize-static-class-initialization): Documented.
7991         * java-tree.h (flag_optimize_sci): New global variable declaration.
7992         (DECL_FUNCTION_INITIALIZED_CLASS_TABLE): New macro.
7993         (DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND): Likewise.
7994         (LOCAL_FINAL_P): Fixed typo in comment.
7995         (FINAL_VARIABLE_P): Likewise.
7996         (LOCAL_CLASS_INITIALIZATIO_FLAG): New macro.
7997         (LOCAL_CLASS_INITIALIZATIO_FLAG_P): Likewise.
7998         (struct lang_decl): New fields `ict', `smic' and `cif.'
7999         (check_for_initialization): New returned value for global.
8000         (attach_initialized_static_class): New global function.
8001         (STATIC_CLASS_INIT_OPT_P): New macro.
8002         * lang-options.h (-fno-optimize-static-class-initialization): New flag.
8003         * lang.c (java_decode_option): Handle
8004         `-fno-optimize-static-class-initialization'
8005         * parse.y (start_complete_expand_method): New function.
8006         (java_expand_method_bodies): Likewise.
8007         (attach_init_test_initialization_flags): Likewise.
8008         (adjust_init_test_initialization): Likewise.
8009         (emit_test_initialization): Likewise.
8010         (java_complete_expand_methods): Nullify abstract and native method
8011         bodies.
8012         (java_complete_expand_method): New locals `fbody', `block_body'
8013         and `exception_copy.' Reorganized: directly return on empty method
8014         bodies, call `start_complete_expand_method', remember definitely
8015         initialized static class in function, don't expand method bodies.
8016         (java_expand_classes): Call `java_expand_method_bodies' before
8017         `finish_class' when compiling to native.
8018         (resolve_expression_name): Use `orig' after building outer class
8019         field access.
8020         (patch_invoke): Remember static method invocations.
8021
8022 2001-08-06  Richard Henderson  <rth@redhat.com>
8023
8024         * class.c (emit_register_classes): Pass a symbol_ref and priority
8025         to assemble_constructor.
8026
8027 2001-08-02  Alexandre Petit-Bianco  <apbianco@redhat.com>
8028
8029         * java-tree.h (all_class_filename): New macro.
8030         (enum java_tree_index): New enum `JTI_ALL_CLASS_FILENAME.'
8031         (BUILD_FILENAME_IDENTIFIER_NODE): Fixed leading comment. Link
8032         newly created IDENTIFIER_NODE to `all_class_filename.'
8033
8034 2001-08-01  Jeff Sturm  <jsturm@one-point.com>
8035
8036         * java-tree.h (BUILD_FILENAME_IDENTIFIER_NODE):
8037         Use ggc_add_tree_root to register roots.
8038
8039 2001-07-31  Alexandre Petit-Bianco  <apbianco@redhat.com>
8040
8041         * check-init.c (check_init): WITH_CLEANUP_EXPR node to use its
8042         second operand calling check_init.
8043         * decl.c (complete_start_java_method): Swaped second and third
8044         arguments while creating WITH_CLEANUP_EXPR node.
8045         * jcf-write.c (generate_bytecode_insns): Use second operand
8046         instead of third when handling WITH_CLEANUP_EXPR.
8047         * parse.y (java_complete_lhs): Expand second operand of
8048         WITH_CLEANUP_EXPR nodes.
8049         (patch_synchronized_statement): Swaped second and third arguments
8050         while creating WITH_CLEANUP_EXPR node.
8051
8052 2001-07-18  Alexandre Petit-Bianco  <apbianco@redhat.com>
8053
8054         * parse.y (create_interface): Avoid cyclic inheritance report when
8055         syntax error encountered during class definition.
8056         Fixes PR java/2956
8057
8058 2001-08-02  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
8059
8060         * jvspec.c (jvgenmain_spec): Cannot use %umain, breaks
8061         ASM_FINAL_SPEC.
8062         (lang_specific_pre_link): Use set_input to set input_filename.
8063         Append `main' here.
8064         * jvgenmain.c (usage): Append literal `main' to CLASSNAME.
8065         (main): Fix definition.
8066         Strip `main' from classname.
8067         Fixes PR java/227.
8068
8069 2001-07-18  Tom Tromey  <tromey@redhat.com>
8070
8071         For PR java/2812:
8072         * lex.h: Use HAVE_ICONV, not HAVE_ICONV_H.
8073         * lex.c (java_new_lexer): Use ICONV_CONST.
8074         (java_read_char): Likewise.
8075         * Make-lang.in (jc1$(exeext)): Link against LIBICONV.
8076         (jv-scan$(exeext)): Likewise.
8077
8078 2001-07-17  Alexandre Petit-Bianco  <apbianco@redhat.com>
8079
8080         * parse.h (INTERFACE_INNER_MODIFIERS): Disallow `private.'
8081         * parse.y (check_class_interface_creation): Allow `private' if the
8082         enclosing is not an interface.
8083         (create_interface): Interface tagged public if the enclosing
8084         context is an interface.
8085         (create_class): Class tagged public if the enclosing context
8086         is an interface.
8087         Fixes PR java/2959
8088
8089 2001-07-17  Alexandre Petit-Bianco  <apbianco@redhat.com>
8090
8091         * class.c (push_class): Set DECL_SIZE to `integer_zero_node.'
8092         Fixes PR java/2665
8093
8094 2001-07-14  Tim Josling  <tej@melbpc.org.au>
8095
8096         * check-init.c (check_init): Remove references to EXPON_EXPR.
8097
8098 2001-07-13  Alexandre Petit-Bianco  <apbianco@redhat.com>
8099
8100         * parse.y (java_complete_lsh): Set CAN_COMPLETE_NORMALLY and unset
8101         TREE_CONSTANT_OVERFLOW of CASE_EXPR value.
8102         Fixes PR java/3602
8103
8104 2001-07-13  Tom Tromey  <tromey@redhat.com>
8105
8106         * jvspec.c (jvgenmain_spec): Remove -ffilelist-file from cc1
8107         invocation.
8108
8109 2001-07-12  Alexandre Petit-Bianco  <apbianco@redhat.com>
8110
8111         * parse.y (patch_method_invocation): Don't override primary if one
8112         is already provided, but let this$<n> be built. Fixed comment.
8113
8114 2001-07-12  Alexandre Petit-Bianco  <apbianco@redhat.com>
8115
8116         * parse.y (empty_statement:): Report empty statement error only
8117         when found at class declaration level.
8118         Fixes PR java/3635
8119
8120 2001-07-12  Tom Tromey  <tromey@redhat.com>
8121
8122         * expr.c (expand_load_internal): New function.
8123         (LOAD_INTERNAL): Use it.
8124
8125 2001-07-11  Alexandre Petit-Bianco  <apbianco@redhat.com>
8126
8127         * parse.y (verify_constructor_super): Compare anonymous class ctor
8128         args with `valid_method_invocation_conversion_p.'
8129         Fixes PR java/3285
8130
8131 2001-07-10  Alexandre Petit-Bianco  <apbianco@redhat.com>
8132
8133         * lang-specs.h: Forbit the use if `-femit-class-file{s}' without
8134         `-fsyntax-only.' Fixes PR java/3248
8135
8136 2001-07-10  Alexandre Petit-Bianco  <apbianco@redhat.com>
8137
8138         * jcf-io.c (find_class): Clarified error message. Fixes PR java/2603
8139
8140 2001-07-10  Alexandre Petit-Bianco  <apbianco@redhat.com>
8141
8142         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): No `this' is fine if the
8143         current function is static. Fixes PR java/1970
8144
8145 2001-07-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
8146
8147         * parse.y (patch_method_invocation): Add enclosing context to ctor
8148         calls if necessary. Fixes PR java/2953
8149
8150 2001-07-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
8151
8152         * parse.y (resolve_package): Abort if qualified expression member
8153         isn't right.
8154         (qualify_ambiguous_name): Don't qualify as type if `this' in use.
8155         Fixes PR java/1391
8156
8157 2001-07-07  Zack Weinberg  <zackw@stanford.edu>
8158
8159         * verify.c: Don't use // comments.
8160
8161 2001-07-05  Tom Tromey  <tromey@redhat.com>
8162
8163         * lang.c (flag_assume_compiled): Removed.
8164         * java-tree.h (flag_assume_compiled): Removed.
8165         * lang-options.h: Removed -ffile-list-file, -fuse-boehm-gc,
8166         -fhash-synchronization, -fuse-divide-subroutine,
8167         -fcheck-references, -femit-class-file, -femit-class-files,
8168         -fassume-compiled.  Updated --encoding information.  Changed
8169         -foutput-class-dir to `-d'.
8170
8171 2001-07-04  Daniel Berlin  <dan@cgsoftware.com>
8172
8173         * jcf-parse.c (parse_class_file): Add lineno parameter to
8174         debug_start_source_file call.
8175
8176 2001-07-04  Joseph S. Myers  <jsm28@cam.ac.uk>
8177
8178         * gcj.texi: Use gpl.texi.
8179         * Make-lang.in ($(srcdir)/java/gcj.info, java/gcj.dvi): Update
8180         dependencies and use doc/include in search path.
8181
8182 2001-07-03  Jeff Sturm  <jsturm@one-point.com>
8183
8184         * parse.y (fix_constructors): Test if a CALL_EXPR invokes
8185         `this'.  If so, don't build instance initializers.
8186
8187 2001-07-03  Alexandre Petit-Bianco  <apbianco@redhat.com>
8188
8189         * parse.y (resolve_expression_name): Improved error message for
8190         inner class cases. Fixes PR java/1958
8191
8192 2001-06-28  Gabriel Dos Reis  <gdr@codesourcery.com>
8193
8194         * lang.c: #include diagnostic.h
8195         (lang_print_error): Add a `diagnostic_context *' parameter.
8196         (java_dummy_print): Likewise.
8197         * Make-lang.in (JAVA_LEX_C): Depend on diagnostic.h
8198
8199 2001-06-27  Alexandre Petit-Bianco  <apbianco@redhat.com>
8200
8201         * jcf-parse.c (gcc_mark_jcf): Test for a finished JCF.
8202         * jcf.h (typedef struct JCF): New bitfield `finished.'
8203         (JCF_FINISH): Set `finished.'
8204         (JCF_ZERO): Reset `finished.'
8205         Fixes PR java/2633
8206
8207 2001-06-27  Alexandre Petit-Bianco  <apbianco@redhat.com>
8208
8209         * parse.y (class_body_declaration:): Don't install empty instance
8210         initializers.
8211         Fixes PR java/1314
8212
8213 2001-06-27  Alexandre Petit-Bianco  <apbianco@redhat.com>
8214
8215         * class.c (set_super_info): Call `set_class_decl_access_flags.'
8216         (set_class_decl_access_flags): New function.
8217         * java-tree.h (set_class_decl_access_flags): New prototype.
8218         * jcf-parse.c (handle_innerclass_attribute): Read and set access flags.
8219         (parse_class_file): New local `decl_max_locals.' Take wide types
8220         into account to compute DECL_MAX_LOCALS.
8221         * parse.y (type_import_on_demand_declaration:): Ignore duplicate
8222         imports on demand.
8223
8224 2001-06-22  Jan van Male  <jan.vanmale@fenk.wau.nl>
8225
8226         * zipfile.h: Use GCC_JCF_H instead of JCF_H.
8227
8228 2001-06-20  Alexandre Petit-Bianco  <apbianco@redhat.com>
8229
8230         * class.c (java_hash_tree_node): Fixed indentation in leading comment.
8231         * parse.y (do_resolve_class): Moved comments out to leading comment
8232         section. Removed local `start', New local `_ht' and
8233         `circularity_hash.'  Record `enclosing' in hash table and search
8234         it to detect circularity.  Use `enclosing' as an argument to
8235         `lookup_cl.' Free the hash table when done.
8236
8237 2001-06-19  Tom Tromey  <tromey@redhat.com>
8238
8239         * lex.c (java_read_char): Disallow invalid and overlong
8240         sequences.  Fixes PR java/2319.
8241
8242 2001-06-05  Jeff Sturm  <jsturm@one-point.com>
8243
8244         * decl.c (create_primitive_vtable): Don't call make_decl_rtl.
8245
8246 2001-06-04  Alexandre Petit-Bianco  <apbianco@redhat.com>
8247
8248         * expr.c (force_evaluation_order): Match wrapped ctor calls, locate
8249         arguments accordingly.
8250
8251 2001-06-02  Joseph S. Myers  <jsm28@cam.ac.uk>
8252
8253         * gcj.texi: Move contents to just after title page.
8254
8255 2001-06-01  Alexandre Petit-Bianco  <apbianco@redhat.com>
8256
8257         * parse.y (type_literals:): Use `build_incomplete_class_ref' with
8258         builtin type.
8259         (patch_incomplete_class_ref): Build the class ref, build the class
8260         init if necessary, complete the tree.
8261         Fixes PR java/2605
8262
8263 2001-05-31  Alexandre Petit-Bianco  <apbianco@redhat.com>
8264
8265         * parse.y (lookup_field_wrapper): Test `name' code.
8266         (resolve_qualified_expression_name): Test `qual_wfl' code.
8267         (qualify_ambiguous_name): Handle `CONVERT_EXPR', fixe indentation,
8268         handle `qual_wfl' by code.
8269         (maybe_build_primttype_type_ref): Test `wfl' code.
8270
8271 2001-05-23  Theodore Papadopoulo  <Theodore.Papadopoulo@sophia.inria.fr>
8272
8273         * Make-lang.in ($(srcdir)/java/gcj.info): Added dependencies on
8274         fdl.texi.
8275         (java/gcj.dvi): Use TEXI2DVI instead of custom tex calls.  Create
8276         the dvi file in the java directory.
8277
8278 2001-05-25  Sam TH  <sam@uchicago.edu>
8279
8280         * gen-table.pl javaop.h jcf.h lex.h,
8281         parse.h: Fix header include guards.
8282
8283 2001-05-23  Joseph S. Myers  <jsm28@cam.ac.uk>
8284
8285         * jv-scan.c (version): Update copyright year.
8286
8287 2001-05-21  Per Bothner  <per@bothner.com>
8288
8289         * jcf-parse.c (read_class):  If class is from .class or .zip file
8290         and it's already been read, don't push/pop parser context.
8291
8292 2001-05-18  Per Bothner  <per@bothner.com>
8293
8294         * jvspec.c (lang_specific_pre_link):  Re-arrange the linker
8295         command line so the jvgenmain-generated main program comes first.
8296
8297 2001-05-15  Tom Tromey  <tromey@redhat.com>
8298
8299         * class.c (build_utf8_ref): Don't generate identifier based on
8300         utf8const contents.
8301
8302 2001-05-12  Richard Henderson  <rth@redhat.com>
8303
8304         * java-tree.def (JAVA_EXC_OBJ_EXPR): New.
8305         * expr.c (java_lang_expand_expr): Expand it.
8306         (process_jvm_instruction): Build JAVA_EXC_OBJ_EXPR instead of
8307         calling build_exception_object_ref.
8308         * parse.y (catch_clause_parameter): Likewise.
8309         (build_dot_class_method): Likewise.
8310         (try_reference_assignconv): Likewise.
8311         * check-init.c (check_init): Check JAVA_EXC_OBJ_EXPR not EXC_PTR_EXPR.
8312         * jcf-write.c (generate_bytecode_insns): Likewise.
8313
8314 2001-05-07  Alexandre Petit-Bianco  <apbianco@redhat.com>
8315
8316         * parse.y (build_unresolved_array_type): Set
8317         EXPR_WFL_QUALIFICATION on the newly created wfl.
8318         Fixes PR java/2538. Fixes PR java/2535.
8319
8320 2001-05-07  Alexandre Petit-Bianco  <apbianco@redhat.com>
8321
8322         * parse.y (fix_constructors): Removed unnecessary assignment to
8323         local. Moved assignment to `this$<n>', fixed comments and
8324         indentation.
8325         (build_wfl_wrap): Fixed indentation.
8326         Fixes PR java/2598, java/2579 and java/2658.
8327
8328 2001-05-03  Mo DeJong  <mdejong@redhat.com>
8329
8330         * lex.c (java_new_lexer): Call iconv_close on temp handle used to
8331         check for byte swap.
8332
8333 2000-05-02  Jeff Sturm  <jsturm@one-point.com>
8334
8335         * expr.c (build_class_init): Move MODIFY_EXPR
8336         outside of COND_EXPR.  Remove variable `call'.
8337
8338 2001-05-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8339
8340         * decl.c: NULL_PTR -> NULL.
8341         * jcf-write.c: Likewise.
8342
8343 2001-05-01  Tom Tromey  <tromey@redhat.com>
8344
8345         * Make-lang.in ($(srcdir)/java/gcj.info): Added `-I..'.
8346         (java/gcj.dvi): Added $(srcdir) to TEXINPUTS.
8347         * gcj.texi: Updated copyright text.  Include fdl.texi.
8348         (Top): Link to new node.
8349
8350 2001-05-01  Per Bothner  <per@bothner.com>
8351
8352         * parse.h (REGISTER_IMPORT):  Use tree_cons instead of chainon.
8353
8354 2001-05-01  Per Bothner  <per@bothner.com>
8355
8356         * parse.y (java_pop_parser_context):  The TREE_VALUE of a link in the
8357         import_list contains the name, not the TREE_PURPOSE.
8358
8359 2001-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8360
8361         * jcf-io.c (read_zip_member): Cast to long in comparison with
8362         signed value.
8363
8364         * jvspec.c (lang_specific_driver): Initialize variables.
8365
8366         * mangle.c (find_compression_record_match): Likewise.
8367
8368         * typeck.c (build_null_signature): Provide static prototype.  Mark
8369         parameter with ATTRIBUTE_UNUSED.
8370
8371         * verify.c (verify_jvm_instructions): Initialize variable.
8372
8373 2001-04-27  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
8374
8375         * parse.y (do_resolve_class): Check for cyclic inheritance during
8376         inner class resolution.
8377
8378 2001-04-27  Per Bothner  <per@bothner.com>
8379
8380         * parse.y (java_expand_classes):  Don't change ctxp_for_generation
8381         while iterating, since that could cause gc to lose stuff.
8382
8383 2001-04-26  Per Bothner  <per@bothner.com>
8384
8385         Fix method search wrt scope of inner classes to match JLS2.
8386         * typeck.c (build_null_signature):  New static function.
8387         (has_method):  New function.  Uses build_null_signature and lookup_do.
8388         * java-tree.h (has_method):  New declaration.
8389         * parse.y (find_applicable_accessible_methods_list):  Do not search
8390         context of inner classes here.
8391         (patch_method_invocation):  Search scope, ie. current and outer clases,
8392         for method matching simple name, to find class.
8393
8394 2001-04-26  Per Bothner  <per@bothner.com>
8395
8396         * jcf-write.c (generate_bytecode_insns case SWITCH_EXPR):
8397         Fix thinko:  If a single case, use if_icmpeq, not ifeq.
8398
8399         * constants.c (find_methodref_with_class_index):  New function.
8400         (find_methodref_index):  Use find_methodref_with_class_index.
8401         * java-tree.h (find_methodref_with_class_index):  New declaration.
8402         * jcf-write.c (generate_bytecode_insns case CALL_EXPR):  Don't change
8403         DECL_CONTEXT, instead use new find_methodref_with_class_index function.
8404         If context changed from interface to class, don't use invokeinterface.
8405
8406 2001-04-25  Per Bothner  <per@bothner.com>
8407
8408         * verify.c (verify_jvm_instructions):  For field instructions,
8409         check that field index is valid.  For invoke instructions, check that
8410         method index is valid.
8411
8412 2001-04-25  Alexandre Oliva  <aoliva@redhat.com>
8413
8414         * config-lang.in (target_libs): Copy from $libgcj_saved.
8415
8416 2001-04-25  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
8417
8418         * decl.c (init_decl_processing): Add new class "protectionDomain"
8419         field.
8420         * class.c (make_class_data): Set initial value for "protectionDomain".
8421
8422 2001-04-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8423
8424         * jvspec.c (lang_specific_driver): Fix memory allocation
8425         deficit, by using concat in lieu of xmalloc/sprintf.
8426
8427 2001-04-20  Per Bothner  <per@bothner.com>
8428
8429         Fixes to compile multiple .class files at once.
8430         * decl.c (init_decl_processing):  Don't set CLASS_LOADED_P.
8431         * java-tree.h (CLASS_PARSED_P):  New macro.
8432         (CLASS_LOADED_P):  Re-define to use TYPE_SIZE and CLASS_PARSED_P.
8433         * jcf-parse.c (jcf_parse_source):  Inline into read_class.
8434         (read_class):  Avoid some code duplication.
8435         Don't call JCF_FINISH for a .class file - might be needed later.
8436         (jcf_parse):  Don't call layout_class here.  Check/set CLASS_PARSED_P
8437         rather than CLASS_LOADED_P, since latter implies class laid out.
8438         (yyparse):  Do layout_class and JCF_FINISh here instead, in pass 2.
8439         * parse.y:  Don't need to set CLASS_LOADED_P for array types.
8440
8441 2001-04-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8442
8443         * Make-lang.in (java/boehm.o): Depend on toplev.h.
8444
8445         * boehm.c: Include toplev.h.
8446
8447 2001-04-06  Tom Tromey  <tromey@redhat.com>
8448             Alexandre Petit-Bianco  <apbianco@redhat.com>
8449
8450         Fix for PR gcj/1404 and PR gcj/2332:
8451         * parse.y (build_array_from_name): If we use the type_wfl then
8452         accumulate dimensions from the original type as well.
8453         (build_unresolved_array_type): Don't modify TYPE_OR_WFL in place.
8454
8455 2001-04-06  Tom Tromey  <tromey@redhat.com>
8456
8457         * parse.y (analyze_clinit_body): Return true if the second operand
8458         of a METHOD_EXPR is nonzero.
8459
8460 2001-04-06  Tom Tromey  <tromey@redhat.com>
8461
8462         * Make-lang.in ($(srcdir)/java/parse-scan.c): Run bison from build
8463         directory.
8464         ($(srcdir)/java/parse.c): Likewise.
8465
8466 2001-04-05  Alexandre Petit-Bianco  <apbianco@redhat.com>
8467
8468         * gcj.texi: Use `which-gcj' instead of `which-g77.'
8469         (version-gcc): Initialized.
8470         (which-gcj): Likewise.
8471
8472 2001-04-04  Alexandre Petit-Bianco  <apbianco@redhat.com>
8473
8474         * java-tree.h (struct lang_decl): New macro
8475         `DECL_FIXED_CONSTRUCTOR_P.' New field `fixed_ctor.'
8476         * parse.y (build_instance_initializer): New function.
8477         (add_instance_initializer): Use it.
8478         (java_fix_constructors): Set `current_class' before fix pass.
8479         (fix_constructors): Just return if already fixed. Move `super()'
8480         invocation ahead. Use `build_instance_initializer.'
8481         Fixes PR java/1315.
8482
8483 2001-04-04  Alexandre Petit-Bianco  <apbianco@redhat.com>
8484
8485         * parse.y (resolve_qualified_expression_name): Pass field's
8486         DECL_CONTEXT to `not_accessible_p.'
8487         (not_accessible_p): Changed parameters order in `inherits_from_p'
8488         invocation.
8489
8490 2001-03-27  Andrew Haley  <aph@cambridge.redhat.com>
8491
8492         * lang-options.h: Add flag_check_references.
8493
8494 2001-04-04  Per Bothner  <per@bothner.com>
8495
8496         * java-tree.h (CONSTANT_VALUE_P):  New macro.
8497         * jcf-write.c (generate_classfile):  Use CONSTANT_VALUE_P.
8498         * parse.y (maybe_build_class_init_for_field):  New static function.
8499         (resolve_expression_name, resolve_field_access):  Use
8500         maybe_build_class_init_for_field instead of build_class_init
8501         This does not do the init if the field is compile-time-constant.
8502         (resolve_field_access):  Simplify.
8503
8504         * parse.y (fold_constant_for_init):  Merge test into switch.
8505
8506 2001-04-03  Zack Weinberg  <zackw@stanford.edu>
8507
8508         * Make-lang.in (buffer.o, check-init.o, class.o): Don't depend
8509         on gansidecl.h.
8510         * buffer.c, jvgenmain.c: Don't include gansidecl.h.
8511
8512 2001-04-02  Zack Weinberg  <zackw@stanford.edu>
8513
8514         * expr.c (pop_type_0): Save the result of the first
8515         lang_printable_name call in a scratch buffer, so it
8516         won't be clobbered by the second call.
8517
8518 2001-03-30  Alexandre Petit-Bianco  <apbianco@redhat.com>
8519
8520         * parse-scan.y (array_type:): Rewritten.
8521         (type_declaration:): `empty_statement' replaces `SC_TK.'
8522         (class_member_declaration:): `empty statement' added.
8523         (method_body:): Simplified.
8524         (static_initializer:): Likewise.
8525         (primary_no_new_array:): Use `type_literals.'
8526         (type_literals:): New rule.
8527         (dims:): Set and update `bracket_count.'
8528         Fixes PR java/1074. Fixes PR java/2412.
8529
8530 2001-03-28  Hans Boehm  <boehm@acm.org>
8531
8532         * boehm.c (PROCEDURE_OBJECT_DESCRIPTOR): Set to use `build_int_2.'
8533         (get_boehm_type_descriptor): Set type on returned value to be a
8534         pointer length integer.
8535
8536 2001-03-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8537
8538         * expr.c (pop_type_0): Call `concat' rather than building the
8539         string manually.
8540         (pop_type): Add format specifier in call to `error'.
8541
8542         * parse.y (patch_method_invocation): Avoid casting away
8543         const-ness.
8544
8545 2001-03-28  Jeffrey Oldham  <oldham@codesourcery.com>
8546
8547         * jvgenmain.c (do_mangle_classname): End string constant with '\0'.
8548
8549 2001-03-28  Richard Henderson  <rth@redhat.com>
8550
8551         IA-64 ABI Exception Handling:
8552         * Make-lang.in (except.o): Don't depend on eh-common.h.
8553         * check-init.c (check_init): Handle EXC_PTR_EXPR.
8554         * decl.c (init_decl_processing) [throw_node]: No _Jv_Sjlj_Throw.
8555         [soft_exceptioninfo_call_node]: Remove.
8556         [eh_personality_libfunc, lang_eh_runtime_type]: New.
8557         (end_java_method): No emit_handlers.
8558         * except.c (java_set_exception_lang_code): Remove.
8559         (method_init_exceptions): Don't call it.
8560         (prepare_eh_table_type): No CATCH_ALL_TYPE.
8561         (build_exception_object_ref): New.
8562         (expand_end_java_handler): Update for except.h name changes.
8563         (emit_handlers, expand_resume_after_catch): Remove.
8564         * expr.c (java_lang_expand_expr): Update for except.h name changes.
8565         (process_jvm_instruction): Use build_exception_object_ref.
8566         * java-tree.h (JTI_SOFT_EXCEPTIONINFO_CALL_NODE): Remove.
8567         (soft_exceptioninfo_call_node): Remove.
8568         (build_exception_object_ref): Declare.
8569         * jcf-write.c (generate_bytecode_insns) [CALL_EXPR]: No
8570         soft_exceptioninfo_call_node.  Move processing ...
8571         [EXC_PTR_EXPR]: ... here.
8572         * parse.h (BUILD_ASSIGN_EXCEPTION_INFO): Remove dead code.
8573         * parse.y (catch_clause_parameter): Use build_exception_object_ref.
8574         (source_end_java_method): No java_set_exception_lang_code or
8575         emit_handlers.
8576         (build_dot_class_method): Use build_exception_object_ref.
8577         (try_reference_assignconv): Check EXC_PTR_EXPR not
8578         soft_exceptioninfo_call_node.
8579
8580 2001-03-28  Richard Henderson  <rth@redhat.com>
8581
8582         * java-tree.h (throw_node): Define as a single member of
8583         java_global_trees instead of a separate array.
8584         (JTI_THROW_NODE): New.
8585         * decl.c (throw_node): Don't declare.
8586         (init_decl_processing): Init a scalar throw_node.
8587         Don't register it for gc.
8588         * check-init.c (check_init): Reference scalar throw_node.
8589         * expr.c (build_java_athrow): Likewise.
8590         * jcf-write.c (generate_bytecode_insns): Likewise.
8591         * parse.h (BUILD_THROW): Likewise.
8592
8593 2001-03-28  Richard Henderson  <rth@redhat.com>
8594
8595         * decl.c (end_java_method): Do not save and restore
8596         flag_non_call_exceptions.
8597         * parse.y (source_end_java_method): Likewise.
8598         * lang.c (flag_exceptions): Don't declare.
8599         (java_init_options): Set flag_non_call_exceptions.  Set
8600         flag_exceptions here ...
8601         (java_init): ... not here.
8602
8603 2001-03-27  Richard Henderson  <rth@redhat.com>
8604
8605         * expr.c, parse.h: Use USING_SJLJ_EXCEPTIONS instead of
8606         exceptions_via_longjmp.
8607
8608         * lang.c (flag_new_exceptions): Don't declare it.
8609         (java_init_options): Or set it.
8610
8611 2001-03-27  Richard Henderson  <rth@redhat.com>
8612
8613         * decl.c (end_java_method): Rename asynchronous_exceptions to
8614         flag_non_call_exceptions.
8615         * parse.y (source_end_java_method): Likewise.
8616
8617 2001-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8618
8619         * Make-lang.in: Depend on $(SYSTEM_H), not system.h.
8620
8621 2001-03-26  Mark Mitchell  <mark@codesourcery.com>
8622
8623         * parse.h (DECL_END_SOURCE_LINE): Don't rely on DECL_FRAME_SIZE.
8624
8625 2001-03-26  Alexandre Petit-Bianco  <apbianco@redhat.com>
8626
8627         * parse.y (find_as_inner_class): Follow current package
8628         indications not to mistakingly load an unrelated class.
8629
8630 2001-03-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8631
8632         * constants.c (PUTN): Use memcpy, not bcopy.
8633
8634         * lex.c (java_read_char): Use memmove, not bcopy.
8635
8636         * parse.y (java_parser_context_resume): Use memcpy, not bcopy.
8637
8638 2001-03-23  Per Bothner  <per@bothner.com>
8639
8640         * verify.c (verify_jvm_instructions):  Replace 3 pop_type by POP_TYPE
8641         macro for better error pin-pointing.
8642         * java-tree.h:  Fix typo in comment.
8643
8644         * jcf-write.c (generate_bytecode_insns):  Changes to TRY_FINALLY_EXPR.
8645         Don't include jsr/goto in exception range.
8646         Check if start and end of exception range are the same (also TRY_EXPR).
8647         Don't emit jsr after try_block if CAN_COMPLETE_NORMALLY is false.
8648         However, do emit the following goto even if try_block is empty.
8649         Defer freeing exception_decl until after the finalizer, to make
8650         sure the local isn't reused in the finalizer.  Fixes PR java/1208.
8651
8652         * parse.y (java_complete_lhs):  If the try-clause is empty, just
8653         return the finally-clause and vice versa.
8654
8655 2001-03-23  Alexandre Petit-Bianco  <apbianco@redhat.com>
8656
8657         * gcj.texi (Input Options): documented the check for attribute
8658         `gnu.gcc.gccj-compiled' and the `-fforce-classes-archive-check' flag.
8659         * java-tree.h (flag_force_classes_archive_check): Declared extern.
8660         * jcf-parse.c (HANDLE_GCJCOMPILED_ATTRIBUTE): New macro.
8661         (jcf_parse): Check for the right classes archive if necessary.
8662         * jcf-reader.c (get_attribute): Define `MATCH_ATTRIBUTE' and use it.
8663         (jcf_parse_fields): Fixed indentation.
8664         * jcf-write.c (append_gcj_attribute): New function.
8665         (generate_classfile): Compute the attribute count, invoke
8666         `append_gcj_attribute'.
8667         * jcf.h (typedef struct JCF): `seen_in_zip' and `java_source'
8668         turned into bit-fields. New bit-field `right_zip.'
8669         (JCF_ZERO): Set `right_zip' to zero.
8670         * lang-options.h (-fforce-classes-archive-check): Added flag.
8671         * lang.c (flag_force_classes_archive_check): New flag.
8672         (lang_f_options): New entry `force-classes-archive-check.'
8673         Fixes PR java/1213.
8674
8675 2001-02-07  Andrew Haley  <aph@redhat.com>
8676
8677         * gcj.texi (Configure-time Options): Add -fcheck-references.
8678         * expr.c (build_java_indirect_ref): New function.
8679         (java_check_reference): New function.
8680         (build_java_array_length_access): Use build_java_indirect_ref to
8681         check for null references.
8682         (build_java_arrayaccess): Likewise.
8683         (build_get_class): Likewise.
8684         (build_field_ref): Likewise.
8685         (invoke_build_dtable): Likewise.
8686         (build_invokeinterface): Likewise.
8687         * lang.c (lang_f_options): Add flag_check_references.
8688         * jvspec.c (jvgenmain_spec): Add flag_check_references.
8689         * java-tree.h (flag_check_references): New variable.
8690         * lang.c (flag_check_references): Likewise.
8691         * parse.y (patch_invoke): Use java_check_reference.
8692         (patch_assignment): Allow for extra nesting in
8693         _Jv_CheckArrayStore.
8694
8695 2001-03-23  Bryce McKinlay  <bryce@albatross.co.nz>
8696
8697         * gjavah.c (cxx_keywords): Update from the definitive list in cp/lex.c.
8698         * lex.c (cxx_keywords): Likewise.
8699
8700 2001-03-21  Alexandre Petit-Bianco  <apbianco@redhat.com>
8701
8702         * parse.y (qualify_ambiguous_name): Broaden `length'
8703         recognition. Help MODIFY_EXPR be resolved as expression names.
8704         Fixes PR java/2066. Fixes PR java/2400.
8705
8706 2001-03-21  Bryce McKinlay  <bryce@albatross.co.nz>
8707
8708         * gjavah.c (process_file): Mark interface definitions with
8709         "__attribute__ ((java_interface))".
8710
8711 2001-03-21  Alexandre Petit-Bianco  <apbianco@redhat.com>
8712
8713         * class.c (layout_class): Fixed push_super_field's second
8714         argument. Fixes PR java/2333.
8715         (jdep_resolve_class): Reset TYPE_SIZE if `error_mark_node', it's
8716         too early to lay innerclasses out.
8717
8718 2001-03-20  Tom Tromey  <tromey@redhat.com>
8719             Alexandre Petit-Bianco <apbianco@redhat.com>
8720
8721         * parse.y (patch_assignment): Handle the case of a SAVE_EXPR
8722         inside an array reference. Insertion of the array store check
8723         rewritten. Fixes PR java/2299.
8724
8725 2001-03-20  Tom Tromey  <tromey@redhat.com>
8726
8727         * lex.c (java_read_unicode): Only accept leading `u's.
8728
8729 2001-03-20  Tom Tromey  <tromey@redhat.com>
8730
8731         * jcf-parse.c (read_class): Initialize `class'.
8732
8733 2001-03-20  Matt Kraai  <kraai@alumni.carnegiemellon.edu>
8734
8735         * jcf_parse.c (jcf_parse): Eliminate unused variable.
8736
8737 2001-03-19  Mark Mitchell  <mark@codesourcery.com>
8738
8739         * class.c (build_class_ref): Use SET_DECL_ASSEMBLER_NAME.
8740         (layout_class): Likewise.
8741         (layout_class_method): Likewise.
8742         (emit_register_classes): Likewise.
8743         * decl.c (builtin_function): Likewise.
8744         (give_name_to_locals): Likewise.
8745
8746 2001-03-19  Per Bothner  <per@bothner.com>
8747
8748         * jcf-parse.c (load_inner_classes):  Check CLASS_LOADED_P
8749         before trying to load an inner class.
8750
8751         Fixes to process to command-line .class files in two passes.
8752         * java-tree.h (JAVA_FILE_P, CLASS_FILE_P, ZIP_FILE_P):  New flags.
8753         (CLASS_FROM_CURRENTLY_COMPILED_SOURCE_P):  Rename to ..
8754         (CLASS_FROM_CURRENTLY_COMPILED_P):  ... because it is more general now.
8755         * class.c (is_compiled_class):  Fix for renamed flag.
8756         * parse.y (maybe_create_class_interface_decl):  Likewise.
8757         * jcf-parse.c (yyparse):  Also set if compiling .class files.
8758         * jcf-parse.c (read_class);  Read current_class.
8759         (jcf_parse):  Make static.
8760         (load_inner_classes):  New function, with code moved from jcf_parse,
8761         because we need to inner classes after the command-line files are read.
8762         (yyparse):  Set finput to NULL when it doesn't need to be closed.
8763         Reduce use of main_jcf (basically only for archive) and
8764         use finput instead of main_jcf->read_state.
8765         Inline jcf_figure_file_type into yyparse.
8766         Set JAVA_FILE_P, CLASS_FILE_P, or ZIP_FILE_P on filename list name.
8767         Defer load_inner_classes and parse_class_file to a second pass,
8768         after we've correctly mapped command-line .clas fiels to classes.
8769         (jcf_figure_file_type):  Removed.
8770         * jcf.h (JCF_ZIP, JCF_CLASS, JCF_SOURCE):  Removed flags.
8771         (JCF_ZERO):  Also clear zipd field.
8772         * zipfile.h:  Conditionalize on JCF_H insread of JCF_ZIP.
8773
8774 2001-03-18  Matt Kraai  <kraai@alumni.carnegiemellon.edu>
8775
8776         * jcf-parse.c (yyparse): Change ch from char * to char.
8777
8778 2001-03-19  Per Bothner  <per@bothner.com>
8779
8780         * jvspec.c (lang_specific_driver):  Check for .zip and .jar files.
8781         Add constructed filelist-file at end, following -xjava.  Thus any .o
8782         and library files are not affected by the -xjava.  Also wrap
8783         explicit @FILE with -xjava and -xnone.
8784
8785 2001-03-19  Andrew Haley  <aph@cambridge.redhat.com>
8786
8787         * class.c (build_static_field_ref): Call make_decl_rtl() after
8788         setting the DECL_EXTERNAL flag.
8789
8790 2001-03-17  Per Bothner  <per@bothner.com>
8791
8792         * decl.c (clear_binding_level):  Fix initializer (broke 03-15).
8793
8794         * jcf-write.c (generate_bytecode_insns):  Handle emitting iinc
8795         when result is is needed (target is STACK_TARGET).
8796
8797         * parse.h (JDEP_SOLV):  Removed.
8798         * parse.y (register_incomplete_type):  Use JDEP_TO_RESOLVE instead.
8799
8800         * parse.y (incomplete_class_list): Removed.
8801         (obtain_incomplete_type): Don't use or set incomplete_class_list.
8802         It doesn't work if resolve_class changes the name of an array type
8803         that is on the list and then someone else looks for the modified name.
8804         Also, seems liable to break when compiling multiple source files at
8805         once.  So the simplest is to just remove incomplete_class_list -
8806         it is only a minor space win and it is not even clear it saves time.
8807
8808         * parse.y (resolve_class):  Remove unneeded promote_type.
8809
8810 2001-03-15  Per Bothner  <per@bothner.com>
8811
8812         * java-tree.h (BLOCK_IS_IMPLICIT):  New flag.
8813         * parse.h (BLOCK_EXPR_ORIGIN):  Removed macro.
8814         * parse.y (declare_local_variables, maybe_absorb_scoping_blocks):
8815         Use BLOCK_IS_IMPLICIT rather than BLOCK_EXPR_ORIGIN.
8816
8817         * jcf-parse.c (yyparse):  Set/reset input_filename for source file.
8818         * parse.y (java_expand_classes):  Likewise.
8819
8820         * parse.y (expand_start_java_method):  Was only called once and had a
8821         misleading name, so inline in caller java_complete_expand_method.
8822         (enter_a_block):  Likewise inline in enter_block and remove.
8823
8824         Remove junk from when gcc/java was created (by copying from C/C++).
8825         * decl.c (keep_next_level_flag, keep_next_if_subblocks):  Remove.
8826         (struct binding_level):  Remove fields keep, keep_if_subblocks,
8827         more_cleanups_ok, have_cleanups (which have never been used).
8828         (pushlevel, poplevel):  Remove related useless code.
8829
8830         * class.c (make_class_data):  The class_dtable_decl (i.e. the
8831         vtable for Class) should be external, except when compiling Class.
8832
8833         * jvspec.c (lang_specific_driver):  Fix -C handling.
8834         Check -save-temps to see if temp @FILE should be deleted.
8835         Follow-up to/fix for February 16 patch.
8836
8837         * verify.c (verify_jvm_instructions):  Better error msgs for dup.
8838         (type_stack_dup):  Remove no-longer neded error check.
8839
8840 2001-03-15  Bryce McKinlay  <bryce@albatross.co.nz>
8841
8842         * mangle.c (mangle_record_type): Rename 'from_pointer' argument
8843         to 'for_pointer'. If this type is for a pointer (argument) mangling,
8844         don't surround the element with 'N..E' if the type name is
8845         unqualified.
8846
8847 2001-03-14  Mark Mitchell  <mark@codesourcery.com>
8848
8849         * class.c (build_static_field_ref): Use COPY_DECL_RTL,
8850         DECL_RTL_SET_P, etc.
8851         (make_method_value): Likewise.
8852         (get_dispatch_table): Likewise.
8853
8854         * decl.c (push_jvm_slot): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
8855
8856 2001-03-07  Tom Tromey  <tromey@redhat.com>
8857
8858         * config-lang.in (lang_requires): Define.
8859
8860 2001-03-07  Brad Lucier  <lucier@math.purdue.edu>
8861
8862         * typeck.c (convert): Check flag_unsafe_math_optimizations,
8863         not flag_fast_math.
8864
8865 2001-03-05  Per Bothner  <per@bothner.com>
8866
8867         Fix a problem where rest_of_decl_compilation applied to
8868         class_dtable_decl causes problems because it was done too early,
8869         before output file was opened.
8870         * decl.c (init_decl_processing):  Remove init of class_dtable_decl.
8871         * class.c (class_dtable_decl):  Add macro - element of class_roots.
8872         (make_class_data):  Define class_dtable_decl.
8873         * java-tree.h (JTI_CLASS_DTABLE_DECL, class_dtable_decl):  Removed.
8874
8875 2001-03-01  Zack Weinberg  <zackw@stanford.edu>
8876
8877         * java/class.c, java/decl.c, java/java-tree.h: Replace all
8878         uses of 'boolean' with 'bool'.
8879
8880 2001-03-01  Zack Weinberg  <zackw@stanford.edu>
8881
8882         * lang-specs.h: Add zero initializer for cpp_spec field to all
8883         array elements.
8884
8885 2001-02-16  Per Bothner  <per@bothner.com>
8886
8887         Handle compiling multiple input files at once, and @FILE syntax.
8888         * gcj.texi:  Updated documentation to match.
8889         * java-tree.h (flag_filelist_file, init_src_parse):  New declarations.
8890         * jcf-parse.c (parse_source_file):  Split into ...
8891         (parse_source_file_1):  New function - and:
8892         (parse_source_file_2):  New function.
8893         (yyparse):  On -ffilelist-file, open and scan named file.
8894         On first pass over files, only do parse_source_file_1.
8895         A new second pass calls parse_source_file_2 for each file to compile.
8896         (init_jcf_parse):  Call init_src_parse.
8897         * jvspec.c (INDIRECT_FILE_ARG):  New flag.
8898         (lang_specific_driver):  Support @FILELIST-FILE syntax, as well
8899         as multiple input file combined in one compilation.
8900         * lang-options.h:  Add -ffilelist-file
8901         * lang.c (flag_filelist_file):  New flag variable.
8902         (lang_f_options):  Handle -ffilelist-file.
8903         * lex.c (java_init_lex): Don't clear ctxp->incomplete_class.
8904         * parse.h (struct parse_ctxt):  Remove fields incomplete_class and
8905         gclass_list - use global fields of src_parse_roots instead.
8906         * parse.y (src_parse_roots):  New array.
8907         (incomplete_class_list, gclass_list):  New macros.
8908         (push_parser_context, java_pop_parser_context,
8909         java_parser_context_resume):  Don't fiddle with deleted fields.
8910         (various):  Use incomplete_class gclass_list and global macros
8911         instead of parse_ctxt fields - the lists are global.
8912         (init_src_parse):  New function.
8913
8914 2001-02-23  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
8915
8916         * decl.c (set_block): Set NAMES and BLOCKS from BLOCK.
8917
8918 2001-02-20  Alexandre Petit-Bianco  <apbianco@redhat.com>
8919
8920         * parse.y (check_inner_class_access): Moved declaration of local
8921         `enclosing_decl_type' to the right location.
8922
8923 2001-02-19  Bryce McKinlay  <bryce@albatross.co.nz>
8924
8925         * parse.y (parser_check_super_interface): Don't call
8926         check_pkg_class_access for an inner interface.
8927         (parser_check_super): Don't call check_pkg_class_access for inner
8928         class.
8929         (do_resolve_class): Simplify enclosing type loop. Don't call
8930         check_pkg_class_access if CL and DECL are not set.
8931         (find_in_imports_on_demand): Set DECL if class_type needed to be
8932         loaded. Don't call check_pkg_class_access for an inner class.
8933         (check_inner_class_access): Rewritten to implement member access
8934         rules as per spec 6.6.1.
8935         (check_pkg_class_access): Handle the empty package correctly.
8936         (in_same_package): New function. Determine if two classes are in the
8937         same package.
8938
8939 2001-02-18  Bryce McKinlay  <bryce@albatross.co.nz>
8940
8941         * typeck.c (build_java_array_type): Don't try to poke a public `clone'
8942         method into array types.
8943         * parse.y (patch_method_invocation): Bypass access check on clone call
8944         to array instance.
8945
8946 2001-02-15  Alexandre Petit-Bianco  <apbianco@redhat.com>
8947
8948         * expr.c (build_instanceof): Check for arrays when trying fold to
8949         false.
8950
8951 2001-02-15  Jim Meyering  <meyering@lucent.com>
8952
8953         * Make-lang.in (java.install-common): Depend on `installdirs'.
8954         (java.install-info): Likewise.
8955
8956 2001-02-15  Bryce McKinlay  <bryce@albatross.co.nz>
8957
8958         * Make-lang.in (jvspec.o): Modify rule to match that of cp/g++spec.o.
8959
8960 2001-02-14  Tom Tromey  <tromey@redhat.com>
8961             Alexandre Petit-Bianco  <apbianco@cygnus.com>
8962
8963         Fix for PR java/1261.
8964         * typeck.c (build_java_array_type): Add public `clone' method to
8965         arrays.
8966         * parse.y (resolve_qualified_expression_name): Use current_class
8967         when checking for inaccessibility.
8968         (patch_method_invocation): Fixed error message when accessibility
8969         denied.  Added `from_super' argument.
8970
8971 2001-02-14  Alexandre Petit-Bianco  <apbianco@redhat.com>
8972
8973         * parse.y (resolve_class): Don't build a fake decl. Use the one
8974         already built.
8975         * typeck.c (build_java_array_type): Build and assign decl to array
8976         type.
8977
8978 2001-02-14  Alexandre Petit-Bianco  <apbianco@redhat.com>
8979
8980         * parse.y (not_accessible_p): Changed leading comment. Added extra
8981         `where' argument. Use it to enforce protected access rules.
8982         (resolve_qualified_expression_name): Added extra argument to
8983         not_accessible_p.
8984         (patch_method_invocation): Use argument `primary' to provide
8985         not_accessible_p with an extra argument.
8986         (lookup_method_invoke): Added extra argument to not_accessible_p.
8987         (search_applicable_method_list): Likewise.
8988
8989 2001-02-13  Alexandre Petit-Bianco  <apbianco@redhat.com>
8990
8991         * parse.y (resolve_qualified_expression_name): Try to resolve as
8992         an inner class access only if `decl' is a TYPE_DECL.
8993
8994 2001-02-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8995
8996         * decl.c (classdollar_identifier_node): Initialize.
8997         * java-tree.h (enum java_tree_index): New entry
8998         `JTI_CLASSDOLLAR_IDENTIFIER_NODE.'
8999         (classdollar_identifier_node): New macro.
9000         (ID_CLASSDOLLAR_P): Likewise.
9001         * parse.y (build_dot_class_method): Use `classdollar_identifier_node.'
9002         (build_dot_class_method_invocation): Likewise.
9003         (find_applicable_accessible_methods_list): `class$' can't be
9004         inherited.
9005
9006 2001-02-09  Raja R Harinath  <harinath@cs.umn.edu>
9007
9008         * Make-lang.in (java/mangle_name.o): Add 'make' prereqs.
9009
9010 2001-02-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
9011
9012         * Manke-lang.in (JVGENMAIN_OBJS): Added `errors.o'
9013         * jvgenmain.c (error): Reversed 2001-02-09 patch. `error' is now
9014         gone.
9015
9016 2001-02-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
9017
9018         * mangle_name (append_unicode_mangled_name): Emit `_' or `U'
9019         outside of the `__U' sequence too.
9020         (unicode_mangling_length): Count `_' or `U' outside of the `__U'
9021         sequence too.
9022
9023 2001-02-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
9024
9025         * jvgenmain.c (error): Reversed 2001-02-01 deletion.
9026
9027 2001-02-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9028
9029         * Make-lang.in (JAVA_OBJS): Added java/mangle_name.o
9030         (JVGENMAIN_OBJS): Likewise.
9031         * java-tree.h (append_gpp_mangled_name): New prototype.
9032         * jcf-parse.c (ggc_mark_jcf): Argument now `void *.'
9033         Removed cast calling `gcc_add_root.'
9034         * jvgenmain.c (mangle_obstack): New global, initialized.
9035         (main): Use it.
9036         (do_mangle_class): Constify local `ptr.'
9037         Removed macro `MANGLE_NAME.' Removed cast in `for.' Call
9038         append_gpp_mangle_name and update `count' if necessary.
9039         Use `mangle_obstack.'
9040         * mangle.c (append_unicode_mangled_name): Removed.
9041         (append_gpp_mangled_name): Likewise.
9042         (unicode_mangling_length): Likewise.
9043         (mangle_member_name): Return type set to `void.'
9044         (mangle_field_decl): Don't append `U' in escaped names.
9045         (mangle_method_decl): Likewise.
9046         (mangle_member_name): Just use `append_gpp_mangled_name.'
9047         * mangle_name.c: New file.
9048
9049 2001-02-07  Per Bothner  <per@bothner.com>
9050
9051         * check-init.c (check_init):  Fix TRY_FINALLY_EXPR logic.
9052
9053         * check-init.c (check_init):  Don't call done_alternative after
9054         processing loop code, as a LOOP_EXPR never terminates normally.
9055
9056 2001-02-08  Joseph S. Myers  <jsm28@cam.ac.uk>
9057
9058         * gcj.texi: Change sources.redhat.com reference to gcc.gnu.org.
9059
9060 2001-02-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9061
9062         * jcf-parse.c (HANDLE_SYNTHETIC_ATTRIBUTE): Don't handle field
9063         DECLs.
9064
9065 2001-02-06  Tom Tromey  <tromey@redhat.com>
9066
9067         * lex.c (java_new_lexer): Longer error message.
9068
9069 2001-02-05  Jeff Sturm  <jeff.sturm@commerceone.com>
9070             Alexandre Petit-Bianco  <apbianco@cygnus.com>
9071
9072         * typeck.c (build_prim_array_type): Added leading comment.
9073         (build_java_array_type): Moved locals out of
9074         block. Always create the `data' field, fixed alignment to match
9075         C++.
9076
9077 2001-02-04  Tom Tromey  <tromey@redhat.com>
9078
9079         * expr.c (java_lang_expand_expr): Don't bother recomputing
9080         `length'.  Use rest_of_decl_compilation, not make_decl_rtl.
9081         Fixes PR java/1866.
9082
9083 2001-02-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9084
9085         * parse.y (process_imports): Save the original name of the import
9086         for better error report.
9087
9088 2001-02-04  Bryce McKinlay  <bryce@albatross.co.nz>
9089
9090         * Make-lang.in (jvspec.o): Add DRIVER_DEFINES to the list
9091         of macros used when compiling jvspec.c.
9092         * jvspec.c (lang_specific_driver): Link with the shared
9093         libgcc by default.
9094
9095 2001-02-04  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
9096
9097         * check-init.c (check_init): Call internal_error instead of fatal.
9098         * expr.c (java_lang_expand_expr): Likewise.
9099         * jcf-parse.c (get_constant): Likewise.
9100         * mangle.c (java_mangle_decl): Likewise.
9101         * parse.y (make_nested_class_name, java_complete_lhs): Likewise.
9102         (operator_string): Likewise.
9103         * check-init.c (check_init): Call abort instead of fatal.
9104         * class.c (build_class_ref): Likewise.
9105         * constants.c (write_constant_pool): Likewise.
9106         * decl.c (start_java_method): Likewise.
9107         * expr.c (push_type, java_stack_pop, java_stack_swap): Likewise.
9108         (java_stack_dup, encode_newarray_type): Likewise.
9109         (build_java_array_length_access): Likewise.
9110         (build_java_check_indexed_type, expand_java_pushc): Likewise.
9111         (build_java_soft_divmod, build_invokeinterface): Likewise.
9112         * java-tree.h (INNER_CLASS_P): Likewise.
9113         * jcf-parse.c (parse_signature, get_name_constant): Likewise.
9114         (give_name_to_class, get_class_constant): Likewise.
9115         * jcf-write.c (CHECK_PUT, CHECK_OP, get_access_flags): Likewise.
9116         (find_constant_index, generate_bytecode_conditional): Likewise.
9117         (generate_bytecode_insns, perform_relocations): Likewise.
9118         * lex.c (java_unget_unicode, java_lex): Likewise.
9119         * mangle.c (mangle_type, mangle_record_type): Likewise.
9120         (mangle_pointer_type, mangle_array_type, init_mangling): Likewise.
9121         (finish_mangling): Likewise.
9122         * parse.h (MARK_FINAL_PARMS): Likewise.
9123         * parse.y (pop_current_osb, unreachable_stmt_error): Likewise.
9124         (obtain_incomplete_type, java_complete_class): Likewise.
9125         (java_check_regular_methods, java_complete_expand_method): Likewise.
9126         (cut_identifier_in_qualified, check_deprecation): Likewise.
9127         (patch_invoke, find_applicable_accessible_methods_list): Likewise.
9128         (java_complete_lhs, lookup_name_in_blocks): Likewise.
9129         (check_final_variable_indirect_assignment, build_unaryop): Likewise.
9130         * typeck.c (set_local_type, parse_signature_type): Likewise.
9131         (parse_signature_string, build_java_signature): Likewise;
9132         (set_java_signature): Likewise.
9133         * verify.c (type_stack_dup, CHECK_PC_IN_RANGE): Likewise.
9134         * class.c (add_method): Call fatal_error instead of fatal.
9135         (build_static_field_ref): Likewise.
9136         * expr.c (build_known_method_ref, expand_invoke): Likewise.
9137         * jcf-parse.c (get_constant, jcf_parse): Likewise.
9138         * lex.c (java_new_new_lexer): Likewise.
9139         * jv-scan.c (main): Likewise.
9140         (fatal_error): Renamed from fatal.
9141         * jcf-parse.c (yyparse): Call fatal_io_error instead of
9142         pfatal_with_name.
9143         * jcf-parse.c (jcf_parse_source): Call fatal_io_error, not fatal.
9144         (yyparse): Likewise.
9145         * jcf-write.c (make_class_file_name, write_classfile): Likewise.
9146         * lex.c (java_get_line_col): Likewise.
9147         * jcf-parse.c (load_class): Make errors non-fatal.
9148         * lex.c (byteswap_init, need_byteswap): Only #ifdef HAVE_ICONV.
9149
9150 2001-02-01  Bryce McKinlay  <bryce@albatross.co.nz>
9151
9152         * jvgenmain.c (class_mangling_suffix): Remove unused string.
9153         (error): Remove unused function.
9154         (main): Don't use "__attribute__ alias" on generated class symbol.
9155
9156 2001-01-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9157
9158         * jcf-parse.c (init_jcf_parse): Added cast to ggc_add_root's last
9159         argument.
9160         * parse.y (finish_method_declaration): Code accounting for WFLed
9161         method DECL_NAMEs deleted.
9162         (check_abstract_method_definitions): Likewise.
9163         (resolve_type_during_patch): Layout resolved type.
9164         * typeck.c (lookup_do): Removed unused local.
9165
9166 2001-01-30  Bryce McKinlay  <bryce@albatross.co.nz>
9167
9168         * java-tree.h: Remove JTI_INTEGER_NEGATIVE_ONE_NODE.
9169         * decl.c (init_decl_processing): Use integer_minus_one_node, not
9170         integer_negative_one_node.
9171         * expr.c (build_java_binop): Likewise.
9172
9173 2001-01-24  Jeff Sturm  <jeff.sturm@commerceone.com>
9174
9175         * zextract.c (read_zip_archive): Read file_offset before writing
9176         zipd and consequently clobbering the header contents.
9177
9178 2001-01-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9179
9180         * Make-lang.in: Remove all dependencies on defaults.h.
9181         * decl.c: Don't include defaults.h.
9182         * expr.c: Likewise.
9183         * parse.y: Likewise.
9184
9185 2001-01-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9186
9187         * ChangeLog (2001-01-21): Fixed typo.
9188         * class.c (layout_class_method): Code accounting for WFLed
9189         method DECL_NAMEs deleted.
9190         * constant.c (find_methodref_index): Likewise.
9191         * decl.c (lang_mark_tree): Mark `wfl' field in struct lang_decl.
9192         * java-tree.h (DECL_FUNCTION_WFL): New macro.
9193         (struct lang_decl): New field `wfl'.
9194         (java_get_real_method_name): Prototype deleted.
9195         * mangle.c (mangle_method_decl): Code accounting for WFLed
9196         method DECL_NAMEs deleted.
9197         * parse.h (GET_METHOD_NAME): Macro deleted.
9198         * parse.y (reset_method_name): Deleted.
9199         (method_header): Set DECL_FUNCTION_WFL.
9200         (check_abstract_method_header): Code accounting for WFLed method
9201         DECL_NAMEs deleted.
9202         (java_get_real_method_name): Deleted.
9203         (check_method_redefinition): Code accounting for WFLed method
9204         DECL_NAMEs deleted. Use DECL_FUNCTION_WFL.
9205         (java_check_regular_methods): Likewise.
9206         (java_check_abstract_methods): Likewise.
9207         (java_expand_classes): Don't call `reset_method_name.'
9208         (search_applicable_method_list): Use DECL_NAMEs instead of
9209         GET_METHOD_NAME.
9210         * typeck.c (lookup_do): Code accounting for WFLed method
9211         DECL_NAMEs deleted.
9212
9213 2001-01-25  Richard Earnshaw  <rearnsha@arm.com>
9214
9215         * lex.c (java_read_char): Check for EOF from getc first.
9216
9217 2001-01-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9218
9219         * class.c (layout_class): Don't lay the superclass out if it's
9220         already being laid out.
9221         * jcf-parse.c (handle_innerclass_attribute): New function.
9222         (HANDLE_INNERCLASSES_ATTRIBUTE): Invoke
9223         handle_innerclasses_attribute.
9224         (jcf_parse): Don't load an innerclasses if it's already being
9225         laid out.
9226         * jcf-write.c (append_innerclass_attribute_entry): Static
9227         `anonymous_name' and its initialization deleted. `ocii' and `ini'
9228         to be zero for anonymous classes.
9229
9230 2001-01-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9231
9232         * class.c (set_constant_value): Set DECL_FIELD_FINAL_IUD if
9233         necessary.
9234         * jcf-parse.c (set_source_filename): Use
9235         MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC if necessary.
9236
9237 2001-01-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9238
9239         * expr.c (build_jni_stub): Set DECL_CONTEXT on `meth_var' so it
9240         gets a unique asm name.
9241
9242 2001-01-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9243
9244         * jcf-parse.c (HANDLE_END_METHODS): Nullify current_method.
9245         (HANDLE_START_FIELD): Invoke MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC
9246         if necessary.
9247         (HANDLE_SYNTHETIC_ATTRIBUTE): New macro.
9248         * jcf-reader.c (get_attribute): Handle `Synthetic' attribute.
9249         * parse.y (lookup_package_type_and_set_next): Deleted.
9250         (resolve_package): Removed unnecessary code.
9251         (find_applicable_accessible_methods_list): `finit$' can't be
9252         inherited.
9253         * verify.c (pop_argument_types): Added missing prototype.
9254
9255 2001-01-23  Bryce McKinlay  <bryce@albatross.co.nz>
9256
9257         * config-lang.in: Disable java by default.
9258
9259 2001-01-23  Tom Tromey  <tromey@redhat.com>
9260
9261         * gcj.texi (Copying): New node.
9262         Added copyright information.
9263
9264 2001-01-21  Per Bothner  <per@bothner.com>
9265
9266         Various fixes to allow compiling a compressed .jar/.zip archive.
9267         * zipfile.h (struct ZipFileCache):  Replace by struct ZipFile.
9268         (struct ZipFile):  Add fields name and next (from  ZipFileCache).
9269         (struct ZipDirectory):  New field zipf points to owning ZipFile.
9270         * jcf.h (struct ZipDirectory):  Add forward declaration.
9271         (struct JCF):   Declare zipd field to have type struct ZipDirectory.
9272         Remove seen_in_zip and zip_offset fields.
9273         (JCF_SEEN_IN_ZIP):  New macro.
9274         * zextract.c (read_zip_archive):  Set ZipDirectory's zipf field.
9275         * jcf-io.c:  Change all ZipFileCache to ZipFile.
9276         (read_zip_member):  New function.
9277         (open_in_zip):  Call read_zip_member.
9278         * jcf-parse.c (find_in_current_zip):  Remove function.
9279         (read_class):  Merge in find_in_current_zip functionality.
9280         Call read_zip_member if needed.
9281         (parse_zip_file_entries):  Use read_zip_member.
9282         (process_zip_dir):  Update for removed and added JCF fields.
9283         (jcf_figure_file_type):  Re-use, don't copy initial ZipFile struct.
9284
9285 2001-01-21  Per Bothner  <per@bothner.com>
9286
9287         Minor optimization of static ggc roots.
9288         * jcf-parse.c (parse_roots):  New static field.
9289         (current_field, current_method, current_file_list):  Replace by macros
9290         naming fields of parse_roots.
9291         (init_jcf_parse):  Combine 3 ggc_add_tree_root calls to 1.
9292         * class.c (class_roots):  New static field.
9293         (registered_class, fields_ident, info_ident, class_list):
9294         New macros naming fields of parse_roots.
9295         (build_static_field_ref):  Don't register roots here.
9296         (layout_class):  Static field list replaced by macro class_list.
9297         (init_class_processing):  Call ggc_add_tree_root for 4 roots.
9298         Initialize fields_ident and info_ident here.
9299
9300 2001-01-21  Per Bothner  <per@bothner.com>
9301
9302         * jcf-parse.c (ggc_mark_jcf):  New function.
9303         (init_jcf_parse):  Register current_jcf as ggc root.
9304
9305 2001-01-21  Per Bothner  <per@bothner.com>
9306
9307         * lang.c (put_decl_node):  Print method's name.
9308
9309 2001-01-21  Per Bothner  <per@bothner.com>
9310
9311         * verify.c (VERIFICATION_ERROR_WITH_INDEX):  New macro.
9312         (verify_jvm_instructions):  Use it, for better error messages on loads.
9313
9314 2001-01-21  Per Bothner  <per@bothner.com>
9315
9316         * verify.c (merge_type_state):  Still may have to merge even if
9317         LABEL_VERIFIED (label).
9318
9319 2001-01-21  Per Bothner  <per@bothner.com>
9320
9321         * parse.y (method_header):  Don't set the DECL_NAME of a FUNCTION_DECL
9322         to a EXPR_WITH_FILE_LOCATION - that is just too fragile and wrong.
9323
9324 2001-01-19  Per Bothner  <per@bothner.com>
9325
9326         * expr.c (pop_type_0):  Only return object_ptr_type_node on mismatch
9327         if expeting an interface type.  Refines Tom's change of 2000-09-12.
9328
9329 2001-01-18  Per Bothner  <per@bothner.com>
9330
9331         * gcj.texi (Input Options): Mention .java files.
9332
9333 2001-01-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9334
9335         * lang-options.h (-Wunsupported-jdk11): Removed.
9336         * lang.c (flag_not_overriding): Deleted.
9337         (flag_static_local_jdk1_1): Likewise.
9338         (lang_W_options): Removed "unsupported-jdk11" entry.
9339         * parse.y (java_check_methods): Removed dead code.
9340
9341 2001-01-17  Tom Tromey  <tromey@redhat.com>
9342
9343         Changes suggested by Per Bothner:
9344         * gcj.texi (Input Options): Don't mention input files.
9345         (Code Generation): Updated --main information.
9346         (Invoking jcf-dump): Mention that --javap is incomplete.
9347         From Alexandre Petit-Bianco:
9348         (Warnings): Don't mention -Wunsupported-jdk11.
9349         My stuff:
9350         (Compatibility): Mention JDK 1.2-ness of libraries.
9351         (Resources): Mention resources used when writing gcj.
9352
9353 2001-01-17  Tom Tromey  <tromey@redhat.com>
9354
9355         * gcj.texi: New file.
9356         * Make-lang.in ($(srcdir)/java/gcj.info): New target.
9357         (java.info): Depend on gcj.info.
9358         (java/gcj.dvi): New target.
9359         (java.dvi): Depend on gcj.dvi.
9360         (java.install-info): Wrote.
9361
9362 2001-01-16  Jeff Sturm  <jeff.sturm@appnet.com>
9363
9364         * expr.c (java_lang_expand_expr): Use TREE_SYMBOL_REFERENCED after
9365         having called make_decl_rtl.
9366
9367 2001-01-14  Per Bothner  <per@bothner.com>
9368
9369         Various patches to emit better messages on verification errors.
9370         * expr.c (push_type_0):  Return error indication on stack overflow,
9371         instead of callinfg fatal.
9372         (push_type):  Now just call push_type_0 (nd fatal on overflow).
9373         (pop_type_0):  Return detailed error message (in a char** argument).
9374         (pop_type):  If pop_type_0 fails, print error message.
9375         (pop_argument_types):  Moved to verify.c.
9376         * verify.c (pop_argument_types):  Moved from expr.c.
9377         Return a (possible) error message, rather than void.
9378         (POP_TYPE, POP_TYPE_CONV, PUSH_TYPE, PUSH_PENDING):  New macros.
9379         (verify_jvm_instruction):  Use new macros, improving error messages.
9380         For case OPCODE_astore use object_ptr_type_node.
9381         * java-tree.h (TYPE_UNDERFLOW, TYPE_UNEXPECTED):  New macros.
9382         (pop_type_0, push_type_0, pop_argument_types):  Update accordingly.
9383
9384         * parse.y (java_complete_lhs case EXPR_WITH_FILE_LOCATION): If body is
9385         constant, return body without wrapper.  (Improves constant folding.)
9386         * lex.c (build_wfl_node):  Clear TREE_TYPE from returned node.
9387
9388 2001-01-13  Per Bothner  <per@bothner.com>
9389
9390         * expr.c (expand_java_field_op):  Assigning to a final field outside
9391         an initializer does not violate JVM spec, so should be warning, not
9392         error.  (Sun's verifier does not complain - though MicroSoft's does.)
9393
9394 2001-01-12  Joseph S. Myers  <jsm28@cam.ac.uk>
9395
9396         * gjavah.c (version), jcf-dump.c (version): Update copyright year
9397         to 2001.
9398
9399 2001-01-11  Bryce McKinlay  <bryce@albatross.co.nz>
9400
9401         * parse.y (resolve_expression_name): Permit instance variables from
9402         enclosing context in super constructor call.
9403         (resolve_qualified_expression_name): Permit enclosing class's qualified
9404         "this" in super constructor call.
9405
9406 2001-01-10  Mark Mitchell  <mark@codesourcery.com>
9407
9408         * class.c (build_utf8_ref): Remove last argument in call to
9409         make_decl_rtl; use make_function_rtl instead of make_decl_rtl.
9410         (build_class_ref): Likewise.
9411         (build_static_field_ref): Likewise.
9412         (get_dispatch_table): Likewise.
9413         (layout_class_method): Likewise.
9414         (emit_register_classes): Likewise.
9415         * constants.c (build_constant_data_ref): Likewise.
9416         * decl.c (builtin_function): Likewise.
9417         (create_primitive_vtable): Likewise.
9418         * expr.c (build_known_method_def): Likewise.
9419         (build_jni_stub): Likewise.
9420         (java_lang_expand_expr): Likewise.
9421
9422 2001-01-10  Tom Tromey  <tromey@redhat.com>
9423
9424         * jvspec.c (jvgenmain_spec): Omit -fencoding from cc1 invocation.
9425
9426 2001-01-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9427
9428         * java-tree.h (lang_printable_name_wls): New prototype.
9429         * lang.c (put_decl_name): Removed dead code. Use DECL_CONTEXT
9430         rather than `current_class' to print type name. Don't prepend type
9431         names when printing constructor names.
9432         (lang_printable_name_wls): New function.
9433         * jcf-parse.c (jcf_parse_source): Pass NULL `file' argument to
9434         `build_expr_wfl', alway set EXPR_WFL_FILENAME_NODE.
9435         * parse.y (patch_method_invocation): Message tuned for constructors.
9436         (not_accessible_p): Grant `private' access from within
9437         enclosing contexts.
9438
9439 2001-01-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9440
9441         All files with updated copyright when applicable.
9442         * Make-lang.in (JVGENMAIN_OBS): Removed java/mangle.o.
9443         * class.c (mangle_class_field): Function removed.
9444         (append_gpp_mangled_type, mangle_static_field, mangle_field): Likewise.
9445         (utf8_cmp, cxx_keyword_p): Moved to lex.c.
9446         (build_class_ref): Call `java_mangle_class_field' instead of
9447         `mangle_class_field.'
9448         (build_dtable_decl): Rewritten to call `java_mangle_vtable.'
9449         (layout_class): Call `java_mangle_decl' instead of
9450         `mangle_static_field.'
9451         (cxx_keywords): Initialized static array moved to `lex.c.'
9452         (layout_class_method): Changed leading comment. Simplified to
9453         call `java_mangle_decl.' Local `ptr' moved in for loop body.
9454         * decl.c (lang_mark_tree): Mark field `package_list.'
9455         * java-tree.h (TYPE_PACKAGE_LIST): New macro.
9456         (struct lang_type): New field `package_list.'
9457         (unicode_mangling_length): Prototype removed.
9458         (append_gpp_mangled_name, append_gpp_mangled_classtype,
9459         emit_unicode_mangled_name): Likewise.
9460         (cxx_keyword_p): New prototype.
9461         (java_mangle_decl, java_mangle_class_field,
9462         java_mangle_class_field_from_string, java_mangle_vtable): Likewise.
9463         * jcf-parse.c (jcf_parse_source): Constify `file' argument to
9464         `build_expr_wfl.'
9465         * jvgenmain.c (main_method_prefix): Global variable removed.
9466         (main_method_suffix): Likewise.
9467         (do_mangle_classname): New function.
9468         (main): Call it. Format changed to accommodate new mangling scheme.
9469         * lex.c: (utf8_cmp): Conditionally prototyped.
9470         (cxx_keywords): Moved from class.c, conditionally defined.
9471         (utf8_cmp, cxx_keyword_p): Likewise.
9472         * mangle.c (obstack.h, ggc.h): Included.
9473         (mangle_field_decl): New function.
9474         (mangle_method_decl, mangle_type, mangle_pointer_type,
9475         mangle_array_type, mangle_record_type,
9476         find_compression_pointer_match, find_compression_array_match,
9477         find_compression_record_match,
9478         find_compression_array_template_match, set_type_package_list,
9479         entry_match_pointer_p, emit_compression_string, init_mangling,
9480         finish_mangling, compression_table_add, mangle_member_name): Likewise.
9481         (mangle_obstack): New global.
9482         (MANGLE_RAW_STRING): New macro.
9483         (unicode_mangling_length): Turned static.
9484         (append_unicode_mangled_name): Renamed from
9485         `emit_unicode_mangled_name.'  Turned static. `mangle_obstack'
9486         replaces `obstack', removed from the parameter list.
9487         (append_gpp_mangled_name): Turned static. `mangle_obstack'
9488         replaces parameter `obstack', removed from the parameter list. Call
9489         `append_unicode_mangled_name' instead of `emit_unicode_mangled_name.
9490         (append_gpp_mangled_classtype): Removed.
9491         (compression_table, compression_next): New static variables.
9492         * parse.y (temporary_obstack): Extern declaration removed.
9493
9494 2001-01-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9495
9496         * parse.y (patch_binop): Compute missing type in error situations.
9497
9498 2001-01-05  Bryce McKinlay  <bryce@albatross.co.nz>
9499
9500         * class.c (make_class_data): Push initial value for "arrayclass".
9501         * decl.c (init_decl_processing): Add new class field "arrayclass".
9502
9503 2001-01-05  Bryce McKinlay  <bryce@albatross.co.nz>
9504
9505         From patha@softlab.ericsson.se:
9506         * parse.y (switch_label): Use build, not build1, to construct
9507         DEFAULT_EXPR.
9508
9509 2001-01-04  Neil Booth  <neil@daikokuya.demon.co.uk>
9510
9511         * lang.c (lang_decode_option): Change -MA to -MP.
9512         * jcf-depend.c (jcf_dependency_add_target, jcf_dependency_set_target):
9513         Update to new prototype; do quote targets.
9514         (jcf_dependency_write): Update.
9515
9516 2000-12-22  Bryce McKinlay  <bryce@albatross.co.nz>
9517
9518         Shorten primitive array allocation path:
9519         * decl.c (init_decl_processing): Use _Jv_NewPrimArray not _Jv_NewArray
9520         to create new primitive arrays.
9521         * expr.c (build_newarray): If generating native code, call
9522         soft_newarray_node with a reference to the primitive TYPE identifier
9523         instead of type_value.
9524
9525 2000-12-17  Bryce McKinlay  <bryce@albatross.co.nz>
9526
9527         Fix for PRs gcj/312 and gcj/253:
9528         * parse.y (valid_ref_assignconv_cast_p): Load classes for source and
9529         dest if they arn't already.
9530         * class.c (layout_class): Call maybe_layout_super_class on
9531         superinterfaces also, but only if compiling from bytecode.
9532
9533         Fix for PR gcj/373:
9534         * parse.y (create_class): Set ACC_STATIC if class is declared in an
9535         interface.
9536
9537 2000-12-15  Tom Tromey  <tromey@redhat.com>
9538
9539         * jcf-parse.c (jcf_parse_source): Set wfl_operator if not already
9540         set.
9541
9542 2000-12-14  Andrew Haley  <aph@redhat.com>
9543
9544         * boehm.c (mark_reference_fields): Change test to correctly detect
9545         bitmap overflow.
9546
9547 2000-12-15  Andreas Jaeger  <aj@suse.de>
9548
9549         * config-lang.in (lang_dirs): Added.
9550
9551 2000-12-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9552
9553         * parse.y (end_artificial_method_body): Fixed undefined behavior.
9554         Credits go to rth for finding it.
9555
9556 2000-12-13  Mike Stump  <mrs@wrs.com>
9557
9558         * parse.y (check_static_final_variable_assignment_flag): Fix spelling.
9559
9560 2000-11-07  Tom Tromey  <tromey@cygnus.com>
9561
9562         * Make-lang.in (JAVA_LEX_C): Added chartables.h.
9563         * lex.c (java_ignorable_control_p): Removed.
9564         (java_letter_or_digit_p): Removed.
9565         (java_start_char_p): New function.
9566         (java_read_char): Return `int', not `unicode_t'.  Changed
9567         callers.
9568         (java_read_unicode): Likewise.
9569         (java_read_unicode_collapsing_terminators): Likewise.
9570         (java_get_unicode): Likewise.
9571         (java_new_lexer): Initialize hit_eof.
9572         (java_parse_end_comment): Take `int' argument.
9573         (java_parse_doc_section): Likewise.
9574         (java_parse_escape_sequence): Don't allow backlash-newline.
9575         Return `int'.
9576         * lex.h (JAVA_DIGIT_P): Removed.
9577         (_JAVA_LETTER_OR_DIGIT_P): Removed.
9578         (_JAVA_IDENTIFIER_IGNORABLE): Removed.
9579         (JAVA_START_CHAR_P): Renamed from JAVA_ID_CHAR_P.
9580         (JAVA_PART_CHAR_P): New macro.
9581         (UEOF): Now -1.
9582         (JAVA_CHAR_ERROR): Now -2.
9583         (java_lexer): New field `hit_eof'.
9584         * chartables.h: New file.
9585         * gen-table.pl: new file.
9586
9587 2000-11-20  Tom Tromey  <tromey@cygnus.com>
9588             Alexandre Petit-Bianco  <apbianco@cygnus.com>
9589
9590         * parse.y (java_complete_lhs): Only allow compound assignment of
9591         reference type if type is String.
9592
9593 2000-12-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9594
9595         * Make-lang.in (java/jcf-path.o:): libgcj.jar replaces libgcj.zip.
9596         jcf-path.c: Likewise.
9597
9598 2000-12-09  Anthony Green  <green@redhat.com>
9599
9600         * zipfile.h (ZipDirectory): Declare size, uncompressed_size,
9601         filestart and filename_length as int values.
9602
9603 2000-12-07  Mo DeJong  <mdejong@redhat.com>
9604
9605         * jcf-io.c (find_class): Correct the logic that tests to see if a
9606         .java file is newer than its .class file. The compiler was
9607         incorrectly printing a warning when file mod times were equal.
9608
9609 2000-12-07  Zack Weinberg  <zack@wolery.stanford.edu>
9610
9611         * jvgenmain.c: Use ISPRINT not isascii.
9612
9613 2000-12-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9614
9615         * parse.y (end_artificial_method_body): Fixed typo.
9616
9617 2000-12-04  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9618
9619         * parse.y (patch_method_invocation): Pick the correct enclosing
9620         context when creating inner class instances.
9621         Fixes gcj/332.
9622
9623 2000-11-26  Joseph S. Myers  <jsm28@cam.ac.uk>
9624
9625         * gjavah.c (version), jcf-dump.c (version), jv-scan.c (version):
9626         Update copyright year to 2000.
9627
9628 2000-11-23  Anthony Green  <green@redhat.com>
9629
9630         * jcf-parse.c (init_jcf_parse): Register current_file_list root.
9631         Move current_file_list out of yyparse and make it static.
9632
9633         * expr.c: Declare quick_stack and tree_list_free_list as static
9634         (init_expr_processing): Register quick_stack and
9635         tree_list_free_list roots.
9636
9637 2000-11-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9638
9639         * parse.y (build_outer_field_access): New local `decl_ctx', use
9640         it. Check for field's context and current class immediate outer
9641         context inheritance.
9642         (outer_field_access_p): Consider fields inherited from the last
9643         enclosing context.
9644         (build_access_to_thisn): Stop at the last enclosing context if
9645         necessary.
9646         Fixes gcj/367.
9647
9648 2000-11-23  J"orn Rennecke <amylaar@redhat.com>
9649
9650         * Make-lang.in (jvspec.o): Depend on $(CONFIG_H).
9651
9652 2000-11-22  Bryce McKinlay  <bryce@albatross.co.nz>
9653
9654         * jcf-parse.c (get_constant): Call UT8_CHAR_LENGTH on `utf8', not the
9655         scratch buffer.
9656
9657 2000-11-20  Tom Tromey  <tromey@cygnus.com>
9658
9659         * jv-scan.c (help): Document --complexity.
9660         (options): Added --complexity.
9661         (flag_complexity): New global.
9662         (main): Call `report'.
9663         * parse-scan.y (complexity): New global.
9664         (if_then_statement, if_then_else_statement,
9665         if_then_else_statement_nsi, switch_block_statement_group,
9666         while_expression, do_statement, for_begin, continue_statement,
9667         throw_statement, catch_clause, finally, method_invocation,
9668         conditional_and_expression, conditional_or_expression,
9669         conditional_expression): Update complexity.
9670         (reset_report): Reset complexity.
9671         (report): New function.
9672
9673 2000-11-20  Tom Tromey  <tromey@cygnus.com>
9674
9675         * lex.c (yylex): Added STRICT_TK case.
9676         * parse.y (STRICT_TK): Added.
9677         * parse-scan.y (STRICT_TK): Added.
9678         * Make-lang.in ($(srcdir)/java/keyword.h): Added missing `\' and
9679         `;'.  Use 4, not 3, with -k option.  Correctly rename resulting
9680         file.
9681         * keyword.h: Rebuilt.
9682         * keyword.gperf (strictfp): Added.
9683
9684 2000-11-20  Tom Tromey  <tromey@cygnus.com>
9685
9686         * lex.c (yylex): Recognize floating point constants with leading
9687         0.
9688
9689 2000-11-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9690
9691         * java-tree.h (cyclic_inheritance_report): Constify.
9692         * parse.y (cyclic_inheritance_report): Likewise.
9693
9694 2000-11-17  Zack Weinberg  <zack@wolery.stanford.edu>
9695
9696         * parse.y (goal): Remove call to ggc_add_string_root.
9697
9698 2000-11-16  Zack Weinberg  <zack@wolery.stanford.edu>
9699
9700         * jcf-parse.c (get_constant), parse.y (do_merge_string_cste):
9701         Create string in scratch buffer, then pass to build_string.
9702
9703 2000-11-13  Joseph S. Myers  <jsm28@cam.ac.uk>
9704
9705         * parse.y (issue_warning_error_from_context): Add
9706         ATTRIBUTE_PRINTF.
9707
9708 2000-11-11  Anthony Green  <green@redhat.com>
9709
9710         * jcf-parse.c (process_zip_dir): Add finput parameter.
9711         (jcf_figure_file_type): Call process_zip_dir with appropriate
9712         argument.
9713
9714 2000-11-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9715
9716         * decl.c (copy_lang_decl): Use memcpy, not bcopy.
9717         * jcf-parse.c (jcf_figure_file_type): Likewise.
9718
9719 2000-11-09  Joseph S. Myers  <jsm28@cam.ac.uk>
9720
9721         * parse.y (create_new_parser_context): Use memset () instead of
9722         bzero ().
9723
9724 2000-11-08  Tom Tromey  <tromey@cygnus.com>
9725
9726         * gjavah.c (process_file): Only include gcj/cni.h when generating
9727         CNI stubs.
9728
9729 2000-11-07  Joseph S. Myers  <jsm28@cam.ac.uk>
9730
9731         * expr.c (note_instructions), jcf-io.c (find_class), jcf-parse.c
9732         (init_outgoing_cpool), lex.c (java_init_lex): Use memset ()
9733         instead of bzero ().
9734
9735 2000-11-05  Tom Tromey  <tromey@cygnus.com>
9736
9737         * lex.h (JAVA_FLOAT_RANGE_ERROR): Typo fix.
9738         * lex.c (IS_ZERO): New define.
9739         (java_perform_atof): Error on floating point underflow.
9740
9741 2000-11-04  Tom Tromey  <tromey@cygnus.com>
9742
9743         * lex.c (java_parse_escape_sequence): Only read two octal
9744         characters if the first one is greater than 3.  Don't allow
9745         "octal" numbers to include the digits 8 or 9.
9746
9747 2000-11-05  Joseph S. Myers  <jsm28@cam.ac.uk>
9748
9749         * Make-lang.in (java.distdir): Remove.
9750
9751 2000-11-03  Tom Tromey  <tromey@cygnus.com>
9752
9753         * Make-lang.in (java.dvi): New target.
9754         Partial fix for PR other/567.
9755
9756         * lang-options.h: Mention -Wout-of-date.
9757         * jcf-dump.c (flag_newer): New global.
9758         * gjavah.c (flag_newer): New global.
9759         * jcf-io.c (find_class): Only warn when flag_newer set.
9760         * lang.c (flag_newer): New global.
9761         (struct string_option): New declaration.
9762         (lang_W_options): New global.
9763         (process_option_with_no): New function.
9764         (lang_decode_option): Use it.
9765
9766         * class.c (cxx_keyword_p): Accept keywords with trailing `$'s.
9767         * gjavah.c (cxx_keyword_subst): Handle any number of trailing
9768         `$'.
9769
9770         * lex.h (_JAVA_IDENTIFIER_IGNORABLE): New macro.
9771         (JAVA_ID_CHAR_P): Also try java_ignorable_control_p.
9772         * lex.c (java_read_unicode): Removed `term_context' argument.
9773         Recognize any number of `u' in `\u'.
9774         (java_read_unicode_collapsing_terminators): New function.
9775         (java_get_unicode): Use it.
9776         (java_lineterminator): Removed.
9777         (yylex): Produce error if character literal is newline or single
9778         quote.  Return if eof found in middle of `//' comment.  EOF in
9779         `//' comment is only an error if pedantic.
9780         (java_ignorable_control_p): New function.
9781         (java_parse_end_comment): Return if eof found in middle of
9782         comment.
9783         Include flags.h.
9784         * jv-scan.c (pedantic): New global.
9785
9786 2000-10-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9787
9788         * parse.y (outer_field_access_p): Inherited fields aren't
9789         consider outer fields.
9790         (maybe_build_thisn_access_method): Use
9791         PURE_INNER_CLASS_TYPE_P instead of INNER_CLASS_TYPE_P.
9792         (resolve_expression_name): Trigger an error if a static field
9793         is being accessed as an outer field.
9794
9795 2000-10-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9796
9797         * Make-lang.in (LIBGCJ_ZIP_FILE): Define with `$(prefix)'.
9798         Fixes gcj/365.
9799
9800 2000-10-27  Zack Weinberg  <zack@wolery.stanford.edu>
9801
9802         * Make-lang.in: Move all build rules here from Makefile.in,
9803         adapt to new context.  Wrap all rules that change the current
9804         directory in parentheses.  Expunge all references to $(P).
9805         When one command depends on another and they're run all at
9806         once, use && to separate them, not ;.  Add OUTPUT_OPTION to
9807         all object-file generation rules.  Delete obsolete variables.
9808
9809         * Makefile.in: Delete.
9810         * config-lang.in: Delete outputs= line.
9811
9812 2000-10-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9813
9814         * parse.y (patch_method_invocation): NULLify this_arg when already
9815         inserted.
9816         (maybe_use_access_method): Handle call to methods unrelated to the
9817         current class. Fixed comment.
9818         Fixes gcj/361.
9819
9820 2000-10-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9821
9822         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Check inherited type in
9823         scope.
9824
9825 2000-10-24  Tom Tromey  <tromey@cygnus.com>
9826
9827         * lex.c (java_new_lexer): Initialize new fields.  Work around
9828         broken iconv() implementations.
9829         (java_read_char): Swap bytes if required.  Use fallback decoder if
9830         required.
9831         (byteswap_init, need_byteswap): New globals.
9832         (java_destroy_lexer): Only close iconv handle if it is in use.
9833         * lex.h (java_lexer): New fields read_anything, byte_swap,
9834         use_fallback.
9835         Made out_buffer unsigned.
9836
9837 2000-10-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9838
9839         * parse.y (register_incomplete_type): Include JDEP_FIELD as a case
9840         where an enclosing context can be set on the jdep.
9841         (do_resolve_class): Fixed identation.
9842
9843 2000-10-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9844
9845         * gjavah.c (NEED_PEEK_ATTRIBUTE, NEED_SKIP_ATTRIBUTE): Define
9846
9847         * jcf-reader.c (peek_attribute, skip_attribute): Only define
9848         when requested.
9849
9850         * parse.h (yyerror): If JC1_LITE, mark with ATTRIBUTE_NORETURN.
9851
9852         * verify.c (CHECK_PC_IN_RANGE): Cast result of stmt-expr to void.
9853
9854 2000-10-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9855
9856         * jcf-write.c (OP1): Update `last_bc'.
9857         (struct jcf_block): Fixed indentation and typo in comments.  New
9858         field `last_bc'.
9859         (generate_bytecode_insns): Insert `nop' if `jsr' immediately
9860         follows `monitorenter'.
9861         * parse.y (patch_synchronized_statement): New local `tmp'. Call
9862         `patch_string'.
9863         Fixes gcj/232.
9864
9865 2000-10-16  Tom Tromey  <tromey@cygnus.com>
9866
9867         * jvspec.c (lang_specific_driver): Recognize -MF and -MT.
9868         * lang-specs.h: Added %{MA}, %{MF*}, %{MT*}.
9869         * lang-options.h: Added -MA, -MT, -MF..
9870         * lang.c (lang_decode_option): Recognize -MA, -MT, -MF.
9871         (DEPEND_TARGET_SET): New macro.
9872         (DEPEND_FILE_ALREADY_SET): Likewise.
9873         (init_parse): Handle new flags.
9874         * jcf.h (jcf_dependency_print_dummies): Declare.
9875         * Make-lang.in (s-java): Added mkdeps.o.
9876         * Makefile.in (BACKEND): Added mkdeps.o.
9877         (../gcjh$(exeext)): Added mkdeps.o.
9878         (../jcf-dump$(exeext)): Added mkdeps.o.
9879         * jcf-depend.c: Include mkdeps.h.
9880         (struct entry, dependencies, targets, MAX_OUTPUT_COLUMNS,
9881         add_entry): Removed.
9882         (jcf_dependency_reset): Rewrote.
9883         (dependencies): New global.
9884         (jcf_dependency_set_target): Rewrote.
9885         (jcf_dependency_add_target): Likewise.
9886         (jcf_dependency_add_file): Likewise.
9887         (munge): Removed.
9888         (print_ents): Removed.
9889         (jcf_dependency_write): Rewrote.
9890         (print_dummies): New global.
9891         (jcf_dependency_print_dummies): New function
9892         (jcf_dependency_write): Call deps_dummy_targets if required.
9893
9894 2000-10-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9895
9896         * gjavah.c (add_class_decl): Removed unused variables `tname',
9897         `tlen' and `name_index'.
9898         * java-tree.h (BUILD_FILENAME_IDENTIFIER_NODE): New macro.
9899         * jcf-parse.c (jcf_parse_source): Use it and set EXPR_WFL_FILENAME
9900         in `wfl_operator' with value.
9901         (yyparse): Use BUILD_FILENAME_IDENTIFIER_NODE.
9902         (jcf_figure_file_type): Fixed identation.
9903         * lex.c (java_get_line_col): Use EOF. Tuned `^' placement.
9904         * parse.y (analyze_clinit_body): New function.
9905         (static_initializer:): Reset `current_static_block'.
9906         (java_parser_context_restore_global): Set EXPR_WFL_FIILENAME_NODE in
9907         `wfl_operator' with new value.
9908         (lookup_cl): Use EXPR_WFL_FILENAME.
9909         (maybe_yank_clinit): Handle bogus <clinit> bodies, call
9910         analyze_clinit_body.
9911         (build_outer_field_access): Access to this$<n> built from
9912         current_class, not its outer context.
9913         (build_access_to_thisn): Fixed leading comment. Tidied things up.
9914         (resolve_qualified_expression_name): Handle `T.this' and `T.this.f()'.
9915         (patch_method_invocation): Use `is_static_flag' when already
9916         initialized.
9917         (patch_newarray): Removed assignment in ternary operator.
9918
9919 2000-10-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9920
9921         * except.c (free_eh_ranges): Don't free `whole_range'.
9922
9923 2000-10-15  Anthony Green  <green@redhat.com>
9924
9925         * decl.c (init_decl_processing): Call init_class_processing before
9926         anything else.
9927
9928 2000-10-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9929
9930         * check-init.c (check_init): Fixed leading comment. Use
9931         LOCAL_FINAL_P.
9932         * decl.c (push_jvm_slot): Use MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC.
9933         (give_name_to_locals): Likewise.
9934         (lang_mark_tree): Handle FIELD_DECL. Register `am' and `wfl'
9935         fields in lang_decl_var.
9936         * java-tree.h (DECL_FUNCTION_SYNTHETIC_CTOR,
9937         DECL_FUNCTION_ALL_FINAL_INITIALIZED): New macros.
9938         (FIELD_INNER_ACCESS): Removed ugly cast, macro rewritten.
9939         (FIELD_INNER_ACCESS_P, DECL_FIELD_FINAL_IUD, DECL_FIELD_FINAL_LIIC,
9940         DECL_FIELD_FINAL_IERR, DECL_FIELD_FINAL_WFL): New macros.
9941         (LOCAL_FINAL): Rewritten.
9942         (LOCAL_FINAL_P, FINAL_VARIABLE_P, CLASS_FINAL_VARIABLE_P
9943         MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC): New macros.
9944         (struct lang_decl): Fixed comments. Added `synthetic_ctor' and
9945         `init_final' fields.
9946         (struct lang_decl_var): Fixed leading comment. Added `am', `wfl',
9947         `final_uid', `final_liic', `final_ierr' and `local_final' fields.
9948         (TYPE_HAS_FINAL_VARIABLE): New macro.
9949         (struct lang_type): Added `afv' field.
9950         * parse.y (check_static_final_variable_assignment_flag): New function.
9951         (reset_static_final_variable_assignment_flag): Likewise.
9952         (check_final_variable_local_assignment_flag): Likewise.
9953         (reset_final_variable_local_assignment_flag): Likewise.
9954         (check_final_variable_indirect_assignment): Likewise.
9955         (check_final_variable_global_assignment_flag): Likewise.
9956         (add_inner_class_fields): Use LOCAL_FINAL_P.
9957         (register_fields): Handle local finals and final variables.
9958         (craft_constructor): Set DECL_FUNCTION_SYNTHETIC_CTOR.
9959         (declare_local_variables): Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC.
9960         (source_start_java_method): Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC
9961         on local finals.
9962         (java_complete_expand_methods): Loop to set
9963         TYPE_HAS_FINAL_VARIABLE. Call
9964         `reset_final_variable_local_assignment_flag' and
9965         `check_final_variable_local_assignment_flag' accordingly before
9966         and after constructor expansion. Call
9967         `reset_static_final_variable_assignment_flag'
9968         before expanding <clinit> and after call
9969         `check_static_final_variable_assignment_flag' if the
9970         current_class isn't an interface. After all methods have been
9971         expanded, call `check_final_variable_global_assignment_flag' and
9972         `check_static_final_variable_assignment_flag' if the current class
9973         is an interface.
9974         (maybe_yank_clinit): Fixed typo in comment.
9975         (build_outer_field_access_methods): Removed old sanity check. Use
9976         FIELD_INNER_ACCESS_P. Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC.
9977         Don't create access methods for finals.
9978         (resolve_field_access): Use `CLASS_FINAL_VARIABLE_P'.
9979         (java_complete_tree): Likewise. Reset DECL_FIELD_FINAL_IUD if
9980         existing DECL_INIT has been processed.
9981         (java_complete_lhs): Likewise.
9982         (check_final_assignment): Filter input on `lvalue''s TREE_CODE.
9983         Test for COMPONENT_REF to get to the FIELD_DECL. Implemented new
9984         logic.
9985         (patch_assignment): Use LOCAL_FINAL_P.
9986         (fold_constant_for_init): Reset DECL_FIELD_FINAL_IUD if
9987         DECL_INITIAL is nullified.
9988         Fixes gcj/163.
9989
9990 2000-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9991
9992         * Make-lang.in (parse.c, parse-scan.c): Create atomically.
9993
9994         * Makefile.in (parse.c, parse-scan.c): Likewise.
9995
9996 2000-10-12  Mark Mitchell  <mark@codesourcery.com>
9997
9998         * class.c (temporary_obstack): Remove.
9999         (make_class): Don't mess with obstascks.
10000         (push_class): Likewise.
10001         (set_super_info): Likewise.
10002         (add_method_1): Likewise.
10003         (add_method): Likewise.
10004         (add_field): Likewise.
10005         (build_utf8_ref): Likewise.
10006         (build_class_ref): Likewise.
10007         (build_static_field_ref): Likewise.
10008         (finish_class): Likewise.
10009         (push_super_field): Likewise.
10010         (layout_class): Likewise.
10011         (layout_class_methods): Likewise.
10012         (init_class_processing): Likewise.
10013         * constants.c (get_tag_node): Likewise.
10014         (build_constant_data_ref): Likewise.
10015         * decl.c (ggc_p): Remove.
10016         (copy_lang_decl): Use ggc_alloc.
10017         (complete_start_java_method): Don't mess with obstacks.
10018         (start_java_method): Likewise.
10019         (end_java_method): Likewise.
10020         * except.c (link_handler): Use xmalloc.
10021         (free_eh_ranges): New function.
10022         (method_init_exceptions): Use it.
10023         (add_handler): Use xmalloc.
10024         (expand_start_java_handler): Don't mess with obstacks.
10025         (prepare_eh_table_type): Likewise.
10026         (expand_end_java_handler): Likewise.
10027         * expr.c (push_value): Likewise.
10028         (create_label_decl): Likewise.
10029         (build_jni_stub): Likewise.
10030         (java_lang_expand_expr): Likewise.
10031         (note_instructions): Use xrealloc.
10032         (java_push_constant_from_pool): Don't mess with obstacks.
10033         (process_jvm_instruction): Likewise.
10034         * java-tree.h (cyclic_inheritance_report): Remove duplicate
10035         declaration.
10036         * jcf-parse.c (get_constant): Don't mess with obstacks.
10037         (read_class): Likewise.
10038         (jcf_parse): Likewise.
10039         * lex.c (expression_obstack): Remove.
10040         (java_lex): Don't use obstack_free.
10041         * parse.h (exit_java_complete_class): Don't mess with obstacks.
10042         (MANGLE_OUTER_LOCAL_VARIABLE_NAME): Adjust.
10043         (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID): Likewise.
10044         (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_STRING): Likewise.
10045         * parse.y (gaol): Add more GC roots.
10046         (add_inner_class_fields): Adjust calls to MANGLE_* macros.
10047         (lookup_field_wrapper): Likewise.
10048         (obtain_incomplete_type): Don't mess with obstacks.
10049         (build_alias_initializer_parameter_list): Adjust calls to MANGLE_*
10050         macros.
10051         (craft_constructor): Don't mess with obstacks.
10052         (safe_layout_class): Likewise.
10053         (java_complete_class): Likewise.
10054         (source_end_java_method): Likewise.
10055         (build_outer_field_access_methods): Likewise.
10056         (build_outer_method_access_method): Likewise.
10057         (maybe_build_thisn_access_method): Likewise.
10058         (build_dot_class_method_invocation): Likewise.
10059         (java_complete_tree): Likewise.
10060         (java_complete_lhs): Likewise.
10061         (do_merge_string_cste): Likewise.
10062         (patch_string_cst): Likewise.
10063         (array_constructor_check_entry): Likewise.
10064         * typeck.c (build_java_array_type): Likewise.
10065         (parse_signature_string): Likewise.
10066         (build_java_signature): Likewise.
10067
10068 2000-10-12  Tom Tromey  <tromey@cygnus.com>
10069
10070         Fix for PR gcj/356:
10071         * gjavah.c (add_class_decl): Don't special-case inner classes.
10072         (add_namelet): Likewise.
10073
10074 2000-10-11  Rodney Brown  <RodneyBrown@mynd.com>
10075
10076         * java-tree.h: Constify current_encoding.
10077         * lang.c: Constify current_encoding.
10078
10079 2000-10-10  Jeff Sturm  <jeff.sturm@appnet.com>
10080
10081         * jvgenmain.c (class_mangling_suffix): Omit `.'.
10082         (main): Use `$' when NO_DOLLAR_IN_LABEL is not set, otherwise `.'.
10083
10084 2000-10-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10085
10086         * expr.c (java_lang_expand_expr): Reinstall 1999-08-14 Anthony's
10087         patch. Fixes gcj/340.
10088
10089 2000-10-10  Tom Tromey  <tromey@cygnus.com>
10090
10091         * lex.c (java_new_lexer): Initialize out_first and out_last
10092         fields.
10093         * lex.h (java_lexer): Added out_buffer, out_first, out_last.
10094
10095 2000-10-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10096
10097         * parse.y (pop_current_osb): New function.
10098         (array_type:): Use `dims:', changed actions
10099         accordingly. Suggested by Anthony Green.
10100         (array_creation_expression:): Used pop_current_osb.
10101         (cast_expression:): Likewise.
10102         (search_applicable_method_list): Fixed indentation.
10103
10104 2000-10-08  Anthony Green  <green@redhat.com>
10105
10106         * parse.y (array_type_literal): Remove production.
10107         (type_literals): Refer to array_type, not array_type_literal.
10108
10109 2000-10-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10110
10111         Patch contributed by Corey Minyard.
10112         * decl.c (check_local_named_variable): New function.
10113         (tree check_local_unnamed_variable): Likewise.
10114         (find_local_variable): Splitted. Call check_local_{un}named_variable.
10115
10116 2000-10-07  Anthony Green  <green@redhat.com>
10117
10118         * class.c (layout_class): Handle case where superclass can't be
10119         layed out yet.
10120
10121 2000-10-07  Joseph S. Myers  <jsm28@cam.ac.uk>
10122
10123         * Makefile.in (keyword.h): Refer to GNU FTP site for updated
10124         gperf.
10125
10126 2000-10-05  Tom Tromey  <tromey@cygnus.com>
10127
10128         * jvspec.c (jvgenmain_spec): Added `-fdollars-in-identifiers'.
10129         * jvgenmain.c (class_mangling_prefix): Removed.
10130         (class_mangling_suffix): New global.
10131         (main): Use it.
10132         * gjavah.c (cxx_keyword_subst): Mangle C++ keywords by appending
10133         `$'.
10134         (print_method_info): Handle overrides for static and final
10135         methods.
10136         (process_file): Generate declaration for class object field.
10137         * class.c (cxx_keywords): New array.
10138         (utf8_cmp): New function.
10139         (cxx_keyword_p): New function.
10140         (layout_class_method): Mangle C++ keywords by appending `$'.
10141         (mangle_field): New function.
10142         (mangle_class_field): Use mangle_field.  Mangle class name as
10143         `class$'.
10144         (mangle_static_field): Use mangle_field.
10145
10146 2000-10-03  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10147
10148         * decl.c (find_local_variable): Removed uncessary type check and
10149         fixed range check typo. From Corey Minyard.
10150
10151 2000-09-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10152
10153         * decl.c (give_name_to_locals): New local `code_offset'. Call
10154         `maybe_adjust_start_pc'.
10155         * expr.c (note_instructions): New function.
10156         (expand_byte_code): Don't collect insn starts here.
10157         (peek_opcode_at_pc): New function.
10158         (maybe_adjust_start_pc): Likewise.
10159         * java-tree.h (maybe_adjust_start_pc): Declare.
10160         (note_instructions): Likewise.
10161         * jcf-parse.c (parse_class_file): Call `note_instructions'.
10162
10163 2000-09-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10164
10165         * parse.y (field_access:): Fixed indentation.
10166         (qualify_ambiguous_name): Properly qualify `this.a[b].c'.
10167
10168 2000-09-07  Tom Tromey  <tromey@cygnus.com>
10169
10170         Fix for PR gcj/307:
10171         * parse.y (patch_binop): Use JNUMERIC_TYPE_P, not
10172         JPRIMITIVE_TYPE_P, for arithmetic operators.
10173         (patch_method_invocation): Indentation fix.
10174         (try_builtin_assignconv): Handle boolean specially.  Fixed typo.
10175         (valid_builtin_assignconv_identity_widening_p): Handle boolean.
10176         (do_unary_numeric_promotion): Cleaned up code.
10177         (valid_cast_to_p): Handle boolean correctly.
10178
10179 2000-09-27  Tom Tromey  <tromey@cygnus.com>
10180
10181         * lex.c (java_read_unicode): Reset bs_count when finished with
10182         `\u' sequence.
10183
10184 2000-10-01  Mark Mitchell  <mark@codesourcery.com>
10185
10186         Convert to GC.
10187         * Make-lang.in (s-java): Don't depend on ggc-callbacks.o.
10188         * Makefile.in (BACKEND): Don't include ggc-callbacks.o.
10189         (typeck.o): Depend on ggc.h.
10190         * class.c (add_method_1): Use GC functions for allocation.
10191         (init_class_processing): Register roots.
10192         * decl.c (ggc_p): Set to 1.
10193         (pending_local_decls): Make it static.
10194         (push_jvm_slot): Use GC functions for allocation.
10195         (init_decl_processing): Register roots.
10196         (give_name_to_locals): Use GC functions for allocation.
10197         (lang_mark_tree): New function.
10198         * java-tree.h (MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Use GC
10199         functions for allocation.
10200         * jcf-parse.c (jcf_parse_source): Use ggc_strdup.
10201         * lex.c (java_lex): Use build_string, rather than replicating it
10202         inline.
10203         * parse.y (goal): Add more roots.
10204         (mark_parser_ctxt): New function.
10205         * typeck.c: Include ggc.h.
10206
10207 2000-09-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10208
10209         * parse.y (maybe_yank_clinit): Also keep <clinit> if its body
10210         contains something else than MODIFY_EXPR.
10211
10212 2000-09-23  Mark Mitchell  <mark@codesourcery.com>
10213
10214         * Make-lang.in (JAVA_SRCS): Include java-tree.h.
10215         * Makefile.in (parse.o): Depend on ggc.h.
10216         (class.o): Likewise.
10217         (constants.o): Likewise.
10218         (decl.o): Likewise.
10219         (expr.o): Likewise.
10220         (jcf-parse.o): Likewise.
10221         (jcf-write.o): Likewise.
10222         (mangle.o): Likewise.
10223         * class.c: Include ggc.h.
10224         (build_static_field_ref): Register GC roots.
10225         (layout_class): Likewise.
10226         (init_class_processing): Likewise.
10227         * constants.c: Include ggc.h.
10228         (current_constant_pool_data_ref): Remove.
10229         (tag_nodes): Move it to ...
10230         (get_tag_node): ... here.  Register GC roots.
10231         * decl.c: Include ggc.h.  Remove many global tree definitions.
10232         (throw_node): Define.
10233         (java_global_trees): Likewise.
10234         (predef_filenames): Make the size a constant.
10235         (init_decl_processing): Adjust accordingly.
10236         (init_decl_processing): Call init_jcf_parse.  Register GC roots.
10237         * expr.c: Include ggc.h.
10238         (init_expr_processing): Register GC roots.
10239         (build_invokeinterface): Likewise.
10240         * java-tree.h: Replace extern tree declarations with macros.
10241         (java_global_trees): New variable.
10242         (java_tree_index): New enumeration.
10243         (init_jcf_parse): Declare.
10244         * jcf-parse.c: Include ggc.h.
10245         (current_class): Remove declaration.
10246         (main_class): Likewise.
10247         (all_class_list): Likewise.
10248         (predefined_filename_p): Adjust for constant size of
10249         predef_filenames.
10250         (init_jcf_parse): New function.
10251         * jcf-write.c: Include ggc.h.
10252         (generate_classfile): Register GC roots.
10253         (append_synthetic_attribute): Likewise.
10254         (append_innerclass_attribute_entry): Likewise.
10255         * lang.c: Include ggc.h.
10256         (lang_print_error): Register GC roots.
10257         * parse.h (struct parser_ctxt): Rename fields to avoid conflicts
10258         with macros.
10259         * parse.y: Include ggc.h.
10260         (wfl_operator): Remove.
10261         (goal): Register GC roots.
10262         (java_pop_parser_context): Adjust for new field names.
10263         (java_parser_context_save_global): Likewse.
10264         (java_parser_context_restore_global): Likewise.
10265         (java_parser_context_suspend): Likewise.
10266         (java_parser_context_resume): Likewise.
10267         (verify_constructor_circularity): Register GC roots.
10268         (lookup_cl): Likewise.
10269         (java_reorder_fields): Likewise.
10270         (build_current_this): Likewise.
10271         (class_in_current_package): Likewise.
10272         (argument_types_convertible): Likewise.
10273         (patch_cast): Rename wfl_op parameter to avoid macro conflicts.
10274
10275 2000-09-14  Tom Tromey  <tromey@cygnus.com>
10276
10277         * lex.h: Use HAVE_ICONV_H, not HAVE_ICONV.
10278
10279 2000-09-13  Tom Tromey  <tromey@cygnus.com>
10280
10281         * jcf-parse.c: Include <locale.h>.
10282         * jv-scan.c: Include <locale.h>.
10283
10284 2000-09-12  Tom Tromey  <tromey@cygnus.com>
10285
10286         * expr.c (pop_type_0): Return `Object' if trying to merge two
10287         interface types.
10288         * verify.c (merge_types): Don't return `TYPE_UNKNOWN' for
10289         interface types; `Object' is always a valid supertype.
10290
10291 2000-09-12  Tom Tromey  <tromey@cygnus.com>
10292
10293         Fix for PR gcj/33:
10294         * jv-scan.c (help): Document --encoding.
10295         (options): Added `encoding' entry.
10296         (OPT_ENCODING): New define.
10297         (main): Handle --encoding.
10298         Include <langinfo.h> if nl_langinfo exists.
10299         * lang-options.h: Document --classpath, --CLASSPATH, --main, and
10300         --encoding.
10301         * jcf-parse.c Include <langinfo.h> if we have nl_langinfo.
10302         (parse_source_file): Correctly call java_init_lex.  Added `finput'
10303         argument.  Use nl_langinfo to determine default encoding.
10304         * java-tree.h (current_encoding): Declare.
10305         * parse.y (java_parser_context_restore_global): Don't restore
10306         `finput'.
10307         (java_parser_context_save_global): Don't set `finput' field.
10308         (java_pop_parser_context): Don't restore `finput'.  Free old lexer
10309         if required.
10310         * lang.c (current_encoding): New global.
10311         (lang_decode_option): Recognize `-fencoding='.
10312         (finish_parse): Don't close finput.
10313         * parse.h (struct parser_ctxt): Removed `finput' and
10314         `unget_utf8_value' fields.  Added `lexer' field.
10315         (java_init_lex): Fixed declaration.
10316         * lex.c (java_new_lexer): New function.
10317         (java_destroy_lexer): Likewise.
10318         (java_read_char): Added `lex' argument.  Handle iconv case.
10319         (java_read_unicode): Added `lex' argument.  Count backslashes in
10320         lexer structure.
10321         (java_init_lex): Added `finput' and `encoding' arguments.  Set
10322         `lexer' field in ctxp.
10323         (BAD_UTF8_VALUE): Removed.
10324         (java_lex): Handle seeing UEOF in the middle of a string literal.
10325         * lex.h: Include <iconv.h> if HAVE_ICONV defined.
10326         (java_lexer): New structure.
10327         (UNGETC): Removed.
10328         (GETC): Removed.
10329         (DEFAULT_ENCODING): New define.
10330         (java_destroy_lexer): Declare.
10331
10332 2000-09-12  Tom Tromey  <tromey@cygnus.com>
10333
10334         Fix for PR gcj/343:
10335         * lex.c (java_init_lex): Initialize java_io_serializable.
10336         * parse.y (java_io_serializable): New global.
10337         (valid_ref_assignconv_cast_p): An array can be cast to
10338         serializable.
10339
10340 2000-09-10  Zack Weinberg  <zack@wolery.cumb.org>
10341
10342         * decl.c, expr.c: Include defaults.h if not already included.
10343         Don't define the *_TYPE_SIZE macros.
10344
10345 2000-09-09  Geoffrey Keating  <geoffk@cygnus.com>
10346
10347         * typeck.c (build_java_array_type): Correct first parameter
10348         in ADJUST_FIELD_ALIGN invocation.
10349
10350 2000-09-06  Tom Tromey  <tromey@cygnus.com>
10351
10352         * lang-specs.h: Also recognize `-femit-class-files'.
10353
10354 2000-09-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10355
10356         * verify.c (merge_types): Load the types to merge if necessary.
10357
10358 2000-09-02  Anthony Green  <green@redhat.com>
10359
10360         * jcf-io.c: Include zlib.h.
10361         (open_in_zip): Read compressed class file archives.
10362         * zipfile.h (ZipDirectory): Add uncompressed_size and
10363         compression_method fields.
10364         * zextract.c (read_zip_archive): Collect file compression info.
10365
10366 2000-08-15  Bryce McKinlay  <bryce@albatross.co.nz>
10367
10368         * parse.y (do_resolve_class): Also explore superclasses of
10369         intermediate enclosing contexts when searching for inner classes.
10370
10371 2000-08-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10372
10373         * parse.y (variable_declarator_id:): Better error message.
10374         (expression_statement:): Use YYNOT_TWICE.
10375         (cast_expression:): Likewise.
10376         (assignment:): Likewise.
10377
10378 2000-08-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10379
10380         * parse.y (do_merge_string_cste): New locals. Create new
10381         STRING_CSTs each time, use memcpy. Fixes gcj/311.
10382
10383 2000-08-07  Hans Boehm  <boehm@acm.org>
10384
10385         * boehm.c (mark_reference_fields): Set marking bits for all words in
10386         a multiple-word record.
10387         (get_boehm_type_descriptor): Use the procedure marking descriptor for
10388         java.lang.Class.
10389
10390 2000-08-31  Mike Stump  <mrs@wrs.com>
10391
10392         * Make-lang.in (jc1$(exeext), gcjh$(exeext), jv-scan$(exeext),
10393         jcf-dump$(exeext)): Make parallel safe.
10394
10395 2000-08-29  Zack Weinberg  <zack@wolery.cumb.org>
10396
10397         * jcf-parse.c (set_source_filename): Constify a char *.
10398         * jcf-write.c (append_innerclasses_attribute,
10399         make_class_file_name): Constify a char *.  Don't recycle a
10400         variable for an unrelated purpose.
10401         * parse.y: (build_alias_initializer_parameter_list): Constify a char *.
10402         (breakdown_qualified): Do not modify IDENTIFIER_POINTER strings.
10403
10404 2000-08-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10405
10406         * expr.c (can_widen_reference_to): Fixed indentation.
10407         * java-tree.h (CLASS_METHOD_CHECKED_P): Added leading comment.
10408         * parse.y: `finit$' replaces `$finit$' in comments.
10409         (try_builtin_assignconv): Fixed leading comment.
10410
10411 2000-08-25  Greg McGary  <greg@mcgary.org>
10412
10413         * gjavah.c (cxx_keyword_subst): Use ARRAY_SIZE.
10414
10415 2000-08-24  Greg McGary  <greg@mcgary.org>
10416
10417         * lang.c (lang_decode_option): Use ARRAY_SIZE.
10418         * parse.y (BINOP_LOOKUP): Likewise.
10419
10420 2000-08-22  Andrew Haley  <aph@cygnus.com>
10421
10422         * javaop.h (WORD_TO_INT): Mask lower 32 bits of a jword before
10423         sign extending. Fixes gcj/321.
10424         * jcf-parse.c (get_constant): Mask lower 32 bits of a jint before
10425         combining to make a jlong. Fixes gcj/321.
10426
10427 2000-08-21  Nix  <nix@esperi.demon.co.uk>
10428
10429         * lang-specs.h: Do not process -o or run the assembler if
10430         -fsyntax-only.
10431
10432 2000-08-16  Andrew Haley  <aph@cygnus.com>
10433
10434         * typeck.c (build_java_array_type): Rewrite code to do array
10435         alignment.  Take into account back-end macros when aligning array
10436         data.  Remove setting of TYPE_USER_ALIGN; Java doesn't allow the
10437         user to set alignment. Fixes gcj/252 and 160.
10438
10439 2000-08-09  Tom Tromey  <tromey@cygnus.com>
10440
10441         * parse.y (check_abstract_method_definitions): Now return `int'.
10442         Check implemented interfaces.  Fixes PR gcj/305.
10443
10444         * parse.y (patch_switch_statement): Disallow `long' in switch
10445         expressions.  Fixes PR gcj/310.
10446
10447 2000-08-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10448
10449         * decl.c (finit_leg_identifier_node): New global.
10450         (init_decl_processing): Use `finit$' to initialize
10451         finit_identifier_node. Use `$finit$' to initialize
10452         finit_leg_identifier_node.
10453         * expr.c (expand_java_field_op): Use ID_FINIT_P.
10454         * java-tree.h (finit_identifier_node): Changed attached comment.
10455         (finit_leg_identifier_node): New declaration.
10456         (ID_FINIT_P): Take finit_identifier_node and
10457         finit_leg_identifier_node into account. This is a backward
10458         compatibility hack.
10459
10460 2000-08-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10461
10462         * jcf-write.c (generate_bytecode_conditional): Re-installed lost
10463         Jan 6 2000 patch.
10464         (generate_bytecode_insns): Check `nargs' before emitting it.
10465         * verify.c (merge_type_state): Fixed typo.
10466         * ChangeLog: Fixed typo in some jcf-write.c entries mentioning
10467         generate_bytecode_{conditional,insns}.
10468
10469 2000-08-13  Anthony Green  <green@redhat.com>
10470
10471         * check-init.c (check_init): Add case for BIT_FIELD_REF (required
10472         for -pg builds).
10473
10474 2000-08-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10475
10476         * class.c (maybe_layout_super_class): Fixed indentation.
10477         * java-tree.h (CLASS_METHOD_CHECKED_P): New macro.
10478         (java_check_methods): New function declaration.
10479         * jcf-parse.c (get_constant): Let `char_len' go up to 3. Use `str'
10480         instead of `str_ptr'.
10481         * jcf-write.c (generate_bytecode_insns): Emit number the of args
10482         of a `invokeinterface' at the right time.
10483         * parse.h (WFL_STRIP_BRACKET): New macro.
10484         (SET_TYPE_FOR_RESOLUTION): Use it.
10485         * parse.y (build_unresolved_array_type): Reuse `type_or_wfl'.
10486         (check_class_interface_creation): Don't check for cross package
10487         innerclass name clashes.
10488         (method_header): Behave properly if MDECL is `error_mark_node'.
10489         (method_declarator): Return `error_mark_node' if bogus current
10490         class.
10491         (resolve_class): Apply WFL_STRIP_BRACKET on `cl' if necessary.
10492         (resolve_and_layout): New local `decl_type', set and used. Call
10493         java_check_methods.
10494         (java_check_methods): New method.
10495         (java_layout_classes): Use it.
10496         (resolve_qualified_expression_name): No EH check necessary in
10497         access$<n>.
10498         (java_complete_lhs): Use VAR_DECL's DECL_INITIAL when evaluating
10499         `case' statement.
10500         (patch_assignment): Set DECL_INITIAL on integral final local.
10501
10502 2000-08-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10503
10504         * java-tree.h (flag_extraneous_semicolon): New extern.
10505         * lang-options.h: (-Wextraneous-semicolon): New option.
10506         * lang.c (flag_redundant): Fixed typo in leading comment.
10507         (flag_extraneous_semicolon): New global.
10508         (lang_decode_option): Set `flag_extraneous_semicolon' when
10509         -Wall. Decode `-Wextraneous-semicolon'.
10510         * parse.y (type_declaration:): Removed `SC_TK' hack, added
10511         `empty_statement' rule.
10512         (class_body_declaration): Likewise.
10513         (method_body:): Accept `;' as a method body.
10514         (static_initializer:): Removed `SC_TK' hack.
10515         (constructor_block_end:): Likewise.
10516         (empty_statement:): Report deprecated empty declaration. Fixes
10517         gcj/295
10518
10519 2000-08-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10520
10521         * parse.y (build_dot_class_method_invocation): Changed parameter
10522         name to `type'. Build signature from `type' and convert it to a
10523         STRING_CST if it's an array.
10524         (patch_incomplete_class_ref): `build_dot_class_method_invocation'
10525         to use `ref_type' directly.
10526
10527 2000-08-06  Ovidiu Predescu  <ovidiu@cup.hp.com>
10528
10529         * lang-options.h: Added a comma after the last element to avoid
10530         syntax errors when other languages define additional options.
10531
10532 2000-08-04  Zack Weinberg  <zack@wolery.cumb.org>
10533
10534         * Make-lang.in (jc1, jv-scan): Depend on $(BACKEND), not stamp-objlist.
10535         * Makefile.in: Add BACKEND; delete OBJS, OBJDEPS.
10536         (jc1): Link with $(BACKEND).
10537         (jv-scan): Depend on version.o, not all of $(OBJS) or $(BACKEND).
10538
10539 2000-08-02  Zack Weinberg  <zack@wolery.cumb.org>
10540
10541         * jvspec.c: Adjust type of second argument to
10542         lang_specific_driver, and update code as necessary.
10543
10544         * class.c (build_dtable_decl): Initialize dummy.
10545
10546 2000-08-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10547
10548         * parse.y (maybe_yank_clinit): When generating bytecode: non empty
10549         method bodies not to rule out discarding `<clinit>'; don't use
10550         <clinit> to initialize static fields with constant initializers.
10551
10552 2000-08-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10553
10554         * gjavah.c (print_method_info): Added `synth' parameter. Skip
10555         synthetic methods.
10556         (method_synthetic): New global.
10557         (HANDLE_METHOD): Recognize synthetic method and tell
10558         `print_method_info' about it.
10559         (HANDLE_END_METHOD): Do not issue an additional `;\n' if we're
10560         processing a synthetic method.
10561         * jcf-reader.c (skip_attribute): New function.
10562         ( skip_attribute): Likewise.
10563
10564 2000-08-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10565
10566         * parse.y (build_outer_field_access): Fixed comments.
10567         (fix_constructors): Emit the initialization of this$<n> before
10568         calling $finit$.
10569         (resolve_qualified_expression_name): Build an access to `decl' if
10570         necessary.
10571
10572 2000-07-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10573
10574         * parse-scan.y (curent_class): Non longer const.
10575         (inner_qualifier, inner_qualifier_length): Deleted.
10576         (current_class_length): New global.
10577         (bracket_count): Fixed typo in leading comment.
10578         (anonymous_count): New global.
10579         (class_instance_creation_expression:): Handle anonymous classes.
10580         (anonymous_class_creation:): New rule.
10581         (push_class_context): Rewritten.
10582         (pop_class_context): Likewise.
10583         (INNER_QUALIFIER): Macro deleted.
10584         (report_class_declaration): call `push_class_context' when
10585         entering the function. `fprintf' format modified not to use
10586         INNER_QUALIFIER.
10587         (report_class_declaration): Assign `package_name' and
10588         `current_class' to NULL separately.
10589
10590 2000-07-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10591
10592         * expr.c (build_invokeinterface): Call layout_class_methods on
10593         target interface.
10594
10595 2000-07-27  Tom Tromey  <tromey@cygnus.com>
10596             Anthony Green  <green@cygnus.com>
10597             Alexandre Petit-Bianco  <apbianco@cygnus.com>
10598
10599         * class.c (make_class_data): Create vtable for abstract classes.
10600         (get_dispatch_table): Changed to cope with abstract classes.
10601
10602 2000-07-27  Tom Tromey  <tromey@cygnus.com>
10603
10604         * parse.y (patch_method_invocation): Don't reverse the argument
10605         list when dealing with anonymous class constructors. Fixed typo in
10606         comment.
10607
10608 2000-07-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10609
10610         * parse.y (build_alias_initializer_parameter_list): Reverse
10611         crafted list when building aliases for anonymous class
10612         constructors.
10613
10614 2000-07-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10615
10616         * parse.y (jdep_resolve_class): Don't bother checking potential
10617         innerclass access if `decl' is NULL.
10618         (find_in_imports_on_demand): TREE_PURPOSE of `import' contains the
10619         WFL.
10620
10621 2000-07-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10622
10623         * parse.c: Remove (again.)
10624
10625 2000-07-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10626
10627         * parse.y (find_as_inner_class): Removed 2000-07-19 patches.
10628         * jcf-parse.c (HANDLE_INNERCLASSES_ATTRIBUTE): Local `decl' moved
10629         outside the `if' statement, alias to innerclass removed, `decl'
10630         used to mark the class complete.
10631
10632 2000-07-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10633
10634         * parse.y (simple_name:): Fixed typo in error message.
10635
10636 2000-07-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10637
10638         * parse.y (java_complete_lhs): LOOP_EXPR:, SWITCH_EXPR: the node
10639         or its first operand can be error marks.
10640
10641 2000-07-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10642
10643         * parse.h (SET_TYPE_FOR_RESOLUTION): Use GET_CPC.
10644         * parse.y (method_header): Likewise.
10645
10646 2000-07-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10647
10648         * parse.y (process_imports): Consider that one might be trying to
10649         import an innerclass. Fixes gcj/254
10650
10651 2000-07-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10652
10653         * parse.y (find_as_inner_class): Handle the case where the
10654         enclosing context of an innerclass has been loaded as bytecode.
10655
10656 2000-07-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10657
10658         * parse.y (simple_name:): Reject `$' in type names.
10659         (resolve_type_during_patch): Use `type' as a second
10660         argument to resolve_no_layout. Fixes gcj/257.
10661
10662 2000-07-18  Bryce McKinlay  <bryce@albatross.co.nz>
10663
10664         * parse.y (find_most_specific_methods_list): Select the only
10665         non-abstract method even if max has been set.
10666         Fixes gcj/285, gcj/298.
10667
10668 2000-07-18  Jeff Sturm  <jeff.sturm@appnet.com>
10669
10670         * lang-specs.h: Added %(jc1) to java compiler options.
10671
10672 2000-07-14  Zack Weinberg  <zack@wolery.cumb.org>
10673
10674         * .cvsignore: New file.
10675
10676 2000-07-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10677
10678         * parse.y (not_accessible_p): Access granted to innerclasses
10679         (indirectly) extending the reference type. Fixes gcj/249.
10680
10681 2000-07-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10682
10683         * parse.y (patch_method_invocation): Fixed comment.
10684         (maybe_use_access_method): Build this$<n>s to the context of the
10685         target method, or a type that extends it. Fixes gcj/242.
10686
10687 2000-07-13  Mark Mitchell  <mark@codesourcery.com>
10688
10689         * parse.c: Remove.
10690
10691 2000-07-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10692
10693         * parse.y (fold_constant_for_init): Avoid bullish conversion.
10694
10695 2000-07-13  Tom Tromey  <tromey@cygnus.com>
10696
10697         * lang-specs.h: Added %{I*}.
10698
10699 2000-07-13  Zack Weinberg  <zack@wolery.cumb.org>
10700
10701         * lang-specs.h: Use the new named specs.  Remove unnecessary braces.
10702
10703 2000-07-12  Mark Mitchell  <mark@codesourcery.com>
10704
10705         * parse-scan.c: Remove.
10706
10707 2000-07-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10708
10709         * class.c (set_super_info): Handled protected inner classes.
10710         (common_enclosing_context_p): Bail early if arguments aren't both
10711         inner classes.
10712         (get_access_flags_from_decl): Handle private and protected inner
10713         classes.
10714         * java-tree.h (TYPE_PROTECTED_INNER_CLASS): New macro.
10715         (CLASS_PROTECTED): Likewise.
10716         (struct lang_type): New bitfield `poic'.
10717         * parse.y (jdep_resolve_class): Call check_inner_class_access on
10718         inner classes only.
10719         (check_inner_class_access): Renamed arguments, added
10720         comments. Handles protected inner classes (fixes gcj/225)
10721         (not_accessible_p): Fixed comments. Avoid handling inner classes.
10722
10723 2000-07-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10724
10725         * parse.y (resolve_qualified_expression_name): Verify qualified
10726         access to `this'. Fixes gcj/239.
10727
10728 2000-07-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10729
10730         * jcf-write.c (generate_classfile): Don't install ConstantValue
10731         for null pointers.
10732
10733 2000-07-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10734
10735         * parse.y (resolve_qualified_expression_name): Handle inner class
10736         access. Fixes gcj/256.
10737
10738 2000-07-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10739
10740         * jcf-write.c (generate_classfile): Properly install the
10741         ConstantValue attribute and the initial value constant pool index
10742         on string constants.
10743         * parse.y (java_complete_lhs): Keep DECL_INITIAL when emitting
10744         class files.
10745
10746 2000-07-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10747
10748         * parse.h (BUILD_PTR_FROM_NAME): Surround with a do/while
10749         construct.
10750         * parse.y (find_as_inner_class): Fixed typo.
10751         (do_resolve_class): Explore enclosing contexts when searching for
10752         innerclasses. Removed curly brackets around BUILD_PTR_FROM_NAME.
10753         (check_inner_class_access): Check `decl' which can be null in case
10754         of previous errors.
10755
10756 2000-07-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10757
10758         * java-tree.h (java_debug_context): Declared `extern'.
10759         (safe_layout_class): Likewise.
10760         * parse.y (resolve_field_access): Field must be `static' in order
10761         to be replaced by its initial value. Added comments.
10762         (find_applicable_accessible_methods_list): Fixed typo.
10763         (find_most_specific_methods_list): Methods found in innerclasses
10764         take over methods founds in the enclosing contexts.
10765         (java_complete_tree): Loosen restrictions on the type of DECLs
10766         that can be replaced by their initialization values.
10767         (valid_ref_assignconv_cast_p): Removed call to `enclosing_context_p'.
10768
10769 2000-07-05  Tom Tromey  <tromey@cygnus.com>
10770
10771         * Make-lang.in (PARSE_DIR): New macro.
10772         (PARSE_RELDIR): Likewise.
10773         (PARSE_C): Likewise.
10774         (PARSE_SCAN_C): Likewise.
10775         ($(PARSE_C)): New target.
10776         ($(PARSE_SCAN_C)): Likewise.
10777         (SET_BISON): New macro.
10778         (BISONFLAGS): Likewise.
10779         (JAVABISONFLAGS): Likewise.
10780
10781 2000-07-02  Bryce McKinlay  <bryce@albatross.co.nz>
10782
10783         * gjavah.c (HANDLE_METHOD): Call print_method_info with a NULL stream
10784         argument on the first pass for CNI as well as JNI.
10785         (print_method_info): Set up method name on the first pass only.
10786
10787 2000-07-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10788
10789         * parse.y (parser_qualified_classname): Removed parameter
10790         `is_static'.
10791         (create_interface): Removed first passed parameter to
10792         parser_qualified_classname.
10793         (create_class): Likewise. Don't install alias on static
10794         innerclasses. Fixes gcj/275.
10795
10796 2000-07-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10797
10798         * parse.y (maybe_generate_pre_expand_clinit): Don't build a
10799         debugable statement with empty_stmt_node. Fixes gcj/272
10800
10801 2000-07-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10802
10803         * expr.c (build_instanceof): Layout type after it's loaded. Fixes
10804         gcj/271.
10805
10806 2000-06-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10807
10808         * jcf-write.c (push_long_const): Appropriately cast short negative
10809         constant to jword.
10810
10811 2000-06-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10812
10813         * parse.y (verify_constructor_super): Use loop variable
10814         `m_arg_type' initialized with `mdecl_arg_type'.
10815
10816 2000-06-29  Tom Tromey  <tromey@cygnus.com>
10817
10818         * parse.y (resolve_field_access): Handle case where `type_found'
10819         is NULL.
10820
10821 2000-06-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10822
10823         * expr.c (lookup_field): The same field can be found through two
10824         different interface. Don't declare it ambiguous in that case.
10825
10826 2000-06-27  Tom Tromey  <tromey@cygnus.com>
10827
10828         * lex.c (java_lineterminator): Don't recognize \r after \n.  If \r
10829         follows \r, then unget it at a lower level.
10830
10831 2000-06-26  Tom Tromey  <tromey@cygnus.com>
10832
10833         * parse.y (resolve_field_access): Pass decl, not DECL_INITIAL, to
10834         java_complete_tree.
10835
10836 2000-06-25  Tom Tromey  <tromey@cygnus.com>
10837
10838         * parse.y (for_statement): Wrap expression in a WFL if it is a
10839         constant.  For PR gcj/268.
10840
10841 2000-06-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10842
10843         * parse.y (do_resolve_class): Minor optimiztion in the package
10844         list search. Removed unnecessary test and return statement.
10845         (valid_ref_assignconv_cast_p): Order of arguments to
10846         enclosing_context_p fixed.
10847
10848 2000-06-24  Tom Tromey  <tromey@cygnus.com>
10849
10850         * expr.c (lookup_field): Print error and return error_mark_node if
10851         field reference is ambiguous.
10852
10853         * parse.y (check_abstract_method_definitions): Also check if
10854         `other_method' is abstract.
10855
10856 2000-06-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10857
10858         * class.c (set_super_info): Handle ACC_PRIVATE for (inner)
10859         classes.
10860         * java-tree.h (TYPE_PRIVATE_INNER_CLASS): New macro.
10861         (struct lang_type): New field `pic'.
10862         (CLASS_PRIVATE): New macro.
10863         * parse.y (check_inner_class_access): New function.
10864         (jdep_resolve_class): Call it.
10865
10866 2000-06-23  Tom Tromey  <tromey@cygnus.com>
10867
10868         * parse.y (patch_incomplete_class_ref): Initialize the returned
10869         class.  For PR gcj/260.
10870
10871 2000-06-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10872
10873         * except.c (prepare_eh_table_type): Use `CATCH_ALL_TYPE'.
10874
10875 2000-06-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10876
10877         * check-init.c (ENABLE_JC1_CHECKING): Replaces ENABLE_CHECKING for
10878         Java specific checks.
10879         * expr.c (build_instanceof): CLASS_INTERFACE and CLASS_FINAL usage
10880         screened by DECL_P.
10881         * java-tree.def (CASE_EXPR): Marked 'e'.
10882         (DEFAULT_EXPR): Likewise.
10883         * jcf-parse.c (set_source_filename): CLASS_COMPLETE_P usage
10884         screened by DECL_P.
10885         * jcf-write.c (ENABLE_JC1_CHECKING): Replaces ENABLE_CHECKING for
10886         Java specific checks.
10887         (generate_bytecode_insns): Test try_block for BLOCK before using
10888         BLOCK_EXPR_BODY.
10889         * parse.y (build_wfl_wrap): Added `location' argument. Set
10890         EXPR_WFL_LINECOL accordingly.
10891         (dim_expr:): Wrap constants with WFLs.
10892         (method_declarator): Use TREE_TYPE not TYPE_NAME on GET_CPC.
10893         (resolve_package): Check for `stmt' not being a BLOCK before
10894         building a debuggable statement with it.
10895         (make_qualified_primary): Added extra parameter to build_wfl_wrap
10896         invocation.
10897         (resolve_field_access): Make sure `decl' is a DECL before treating
10898         it as such.
10899         (maybe_build_primttype_type_ref): Make sure `wfl''s node is an
10900         IDENTIFIER_NODE before treating it as such.
10901         (patch_new_array_init): Make sure `elt' is a TREE_LIST before
10902         treating it as such.
10903         (find_applicable_accessible_methods_list): CLASS_INTERFACE macro
10904         to be applied only on non array types.
10905
10906 2000-06-16  Per Bothner  <per@bothner.com>
10907
10908         * java-tree.h (LABEL_RETURN_LABELS, LABEL_PENDING_CHAIN):  Don't
10909         define in terms of DECL_RESULT, as that fails when --enable-checking.
10910
10911 2000-06-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10912
10913         * jcf-write.c (CHECK_PUT): Add static prototype.  Make pointer
10914         types the same in comparison.
10915         (CHECK_OP): Add static prototype.
10916
10917 2000-06-13  Jakub Jelinek  <jakub@redhat.com>
10918
10919         * typeck.c (build_java_array_type): Set TYPE_USER_ALIGN.
10920         * parse.y (java_complete_class): Set DECL_USER_ALIGN.
10921         * parse.c: Rebuilt.
10922
10923 2000-06-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10924
10925         * decl.c (create_primitive_vtable): Prototype.
10926
10927         * jcf-write.c (generate_bytecode_insns): Initialize variable
10928         `saved_context'.
10929
10930         * lang.c (lang_get_alias_set): Mark parameter with ATTRIBUTE_UNUSED.
10931
10932 2000-06-09  Bryce McKinlay  <bryce@albatross.co.nz>
10933
10934         * parse.y (find_applicable_accessible_methods_list): Use a hashtable
10935         to track searched classes, and do not search the same class more than
10936         once. Call find_applicable_accessible_methods_list on immediate
10937         superclass, instead of search_applicable_method_list on all ancestors.
10938         Fix for PR gcj/238.
10939
10940 2000-06-09  Bryce McKinlay  <bryce@albatross.co.nz>
10941
10942         * parse.y (register_fields): Permit static fields in inner classes
10943         if they are final. Fix for PR gcj/255.
10944
10945 2000-06-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10946
10947         * parse.h (REGISTER_IMPORT): Use `chainon' to link new entries.
10948         * parse.y (find_in_imports): Returned type changed to void,
10949         leading comment fixed.
10950         (register_package): New function.
10951         (qualify_and_find): Likewise.
10952         (package_declaration:): Use `register_package'.
10953         (single_type_import_declaration:): Removed local variable
10954         `node'. Added missing `;' for consistency.
10955         (type_import_on_demand_declaration:): Use `chainon' to link new
10956         entries.
10957         (lookup_field_wrapper): Lookup local variables defined in outer
10958         contexts first.
10959         (java_complete_class): Don't reverse the list of imported on demand.
10960         (do_resolve_class): Reorganized. Removed local variable
10961         `original_name'. Call `qualify_and_find' with the current package
10962         name, invoke `find_in_imports_on_demand' right after. Call
10963         `qualify_and_find' with the packages we've seen so far. Fixed
10964         operations numbering in comments.
10965         (java_expand_class): Don't reverse `package_list'.
10966         (find_most_specific_methods_list): New local variables `abstract'
10967         and `candidates'. Use them to pick the right method.
10968
10969 2000-06-06  Tom Tromey  <tromey@ferrule.cygnus.com>
10970
10971         * parse.y (check_modifiers_consistency): Don't subtract out
10972         `PUBLIC_TK' from argument to THIS_MODIFIER_ONLY.
10973
10974 2000-06-04  Philipp Thomas  <pthomas@suse.de>
10975
10976         * Makefile.in (INTLLIBS): New.
10977         (LIBS): Add above.
10978         (DEPLIBS): Ditto.
10979
10980 2000-06-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10981
10982         * class.c (get_dispatch_table): Build the vtable dummy entry list
10983         element with a null purpose. Fixed leading comment.
10984         (build_dtable_decl): Build an accurate dtable type when appropriate
10985         and use it.
10986
10987 2000-06-02  Richard Henderson  <rth@cygnus.com>
10988
10989         * lang.c (lang_get_alias_set): New.
10990
10991 2000-05-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10992
10993         * parse.y (resolve_field_access): Complete the DECL_INITIAL tree
10994         before using it as the accessed field.
10995
10996 2000-05-31  Tom Tromey  <tromey@cygnus.com>
10997
10998         * java-tree.h (boolean_array_vtable, byte_array_vtable,
10999         char_array_vtable, short_array_vtable, int_array_vtable,
11000         long_array_vtable, float_array_vtable, double_array_vtable):
11001         Declare.
11002         * expr.c (get_primitive_array_vtable): New function.
11003         (create_primitive_vtable): New function.
11004         (java_lang_expand_expr): Enable code to statically generate
11005         arrays.
11006         * decl.c (init_decl_processing): Create primitive vtables.
11007         (boolean_array_vtable, byte_array_vtable, char_array_vtable,
11008         short_array_vtable, int_array_vtable, long_array_vtable,
11009         float_array_vtable, double_array_vtable): Define.
11010
11011 2000-05-26  Zack Weinberg  <zack@wolery.cumb.org>
11012
11013         * java/parse.y (find_applicable_accessible_methods_list):
11014         Don't add an uninitialized value to the list.
11015
11016 2000-05-25  Tom Tromey  <tromey@cygnus.com>
11017
11018         * parse.y (resolve_field_access): Don't check DECL_LANG_SPECIFIC
11019         when trying to see if field's class should be initialized.  Always
11020         initialize field's declaring class, not qualified class.
11021         For PR gcj/162.
11022
11023         * parse.y (array_constructor_check_entry): Pass `wfl_value', not
11024         `wfl_operator', to maybe_build_primttype_type_ref.
11025         Fixes PR gcj/235.
11026
11027 2000-05-23  Bryce McKinlay  <bryce@albatross.co.nz>
11028
11029         * parse.y (patch_method_invocation): Don't try to lookup methods
11030         in primitive types.
11031
11032 2000-05-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11033
11034         * parse.y (resolve_field_access): Call the appropriate <clinit>
11035         before accessing the length of a static array. Craft a decl for
11036         the field while its time. Fixes PR gcj/129.
11037
11038 2000-05-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11039
11040         * parse.y (resolve_package): Correctly set `*next' (was off by
11041         one.)
11042         (resolve_qualified_expression_name): Fixed comment.
11043
11044 2000-04-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11045
11046         * jcf-parse.c (jcf_parse_source): Reset current_class and
11047         current_function_decl to NULL before parsing a new file.
11048
11049 2000-04-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11050
11051         * parse.y (block_end:): If the collected block doesn't feature a
11052         statement, insert an empty statement.
11053
11054 2000-04-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11055
11056         * parse.y (maybe_yank_clinit): New function.
11057         (maybe_generate_pre_expand_clinit): Always link <clinit> at the
11058         end of the list of methods belonging to a class.
11059         (java_complete_expand_method): Check whether <clinit> is really
11060         necessary and expand it accordingly.
11061
11062 2000-04-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11063
11064         * parse.y (fold_constant_for_init): Let VAR_DECL and FIELD_DECL be
11065         processed by the method's switch statement.
11066
11067 2000-05-19  Tom Tromey  <tromey@cygnus.com>
11068
11069         * java-tree.h: Added init state enum.
11070         * decl.c (emit_init_test_initialization): Initialize class
11071         initialization check variable by looking at class' state.
11072
11073 2000-05-19  Tom Tromey  <tromey@cygnus.com>
11074
11075         * java-tree.h (build_instanceof): Declare.
11076         (build_get_class): Declare.
11077         * parse.y (patch_binop): Use build_instanceof.
11078         * expr.c (build_instanceof): New function.  If class is final,
11079         don't make a function call.
11080         (expand_java_INSTANCEOF): Use it.
11081         (build_get_class): New function.
11082
11083 2000-05-18  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>
11084
11085         * jcf-write.c (generate_classfile): Scan the source_file for
11086         slashes with the right pointer variable.
11087
11088 2000-05-17  Andrew Cagney  <cagney@b1.cygnus.com>
11089
11090         * lang.c (lang_decode_option): Update -Wunused flags by calling
11091         set_Wunused.
11092         * decl.c (poplevel): Replace warn_unused with warn_unused_label.
11093
11094 2000-05-09  Zack Weinberg  <zack@wolery.cumb.org>
11095
11096         * check_init.c (check_init): Constify local char *.
11097         * class.c (push_class): Constify local char *.
11098         * java_tree.h: Update prototypes.
11099         * jcf-io.c (open_class): Constify filename parameter and
11100         return value.
11101         (find_class): Remove redundant string copy.  Cast return from
11102         open_class.
11103         * jcf-parse.c (read_class, parse_class_file, yyparse):
11104         Constify local char *.
11105         * jcf-write.c (generate_bytecode_insns, generate_classfile):
11106         Constify local char *.
11107         * jcf.h (JCF): Constify filename and classname.
11108         (JCF_FINISH): Cast args to FREE to char * when appropriate.
11109         * lang.c (init_parse): Constify parameter and return value.
11110         * lex.c (java_get_line_col): Constify filename parameter.
11111         * parse.h: Constify parser_ctxt.filename.  Update prototypes.
11112         * parse.y (java_parser_context_suspend,
11113         issue_warning_error_from_context, safe_layout_class): Constify
11114         local char *.
11115         * parse.c: Regenerate.
11116
11117 2000-05-08  Tom Tromey  <tromey@cygnus.com>
11118
11119         * expr.c (build_jni_stub): Cache the result of
11120         _Jv_LookupJNIMethod.
11121
11122 2000-05-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11123
11124         * decl.c (predef_filenames_size): Now 7.
11125         (predef_filenames): New seventh entry.
11126
11127 2000-05-04  Tom Tromey  <tromey@cygnus.com>
11128
11129         * boehm.c (mark_reference_fields): Don't mark RawData fields.
11130         Keep track of when we've seen a reference field after a
11131         non-reference field.
11132         (get_boehm_type_descriptor): Handle case where we see
11133         non-reference fields but no trailing reference field.
11134         * decl.c (rawdata_ptr_type_node): Define.
11135         (init_decl_processing): Initialize rawdata_ptr_type_node.
11136         * java-tree.h (rawdata_ptr_type_node): Declare.
11137
11138 2000-05-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11139
11140         * jcf-dump.c (SPECIAL_IINC): Ensure arguments match format
11141         specifiers in calls to fprintf.
11142
11143 2000-05-03  Andrew Haley  <aph@cygnus.com>
11144
11145         * expr.c (build_java_jsr): Use emit_jump, not expand_goto.
11146
11147         * javaop.h (WORD_TO_INT): New function.
11148         (IMMEDIATE_s4): Use WORD_TO_INT.
11149         * jcf.h (JPOOL_INT): Ditto.
11150
11151         * gjavah.c (decode_signature_piece): Don't treat `$' as namespace
11152         separator.
11153
11154 2000-04-19  Tom Tromey  <tromey@cygnus.com>
11155
11156         * class.c (add_method_1): Set both DECL_EXTERNAL and METHOD_NATIVE
11157         on native function.
11158         * jcf-parse.c (parse_class_file): Call build_jni_stub for native
11159         JNI methods.
11160         * expr.c (build_jni_stub): New function.
11161         * lang-specs.h: -fjni and -femit-class-file are incompatible.
11162         * parse.c: Rebuilt.
11163         * parse.y (java_complete_expand_methods): Expand a native method
11164         and call build_jni_stub if -fjni given.
11165         * lang-options.h: Document -fjni.
11166         * lang.c (flag_jni): New global.
11167         (lang_f_options): Added `jni' entry.
11168         * java-tree.h (soft_lookupjnimethod_node,
11169         soft_getjnienvnewframe_node, soft_jnipopsystemframe_node):
11170         Declare.
11171         (flag_jni): Declare.
11172         (build_jni_stub): Declare.
11173         (struct lang_decl): Added `native' flag.
11174         (METHOD_NATIVE): Redefined to use `native' field of lang specific
11175         structure.
11176         * decl.c (soft_lookupjnimethod_node, soft_getjnienvnewframe_node,
11177         soft_jnipopsystemframe_node): New globals.
11178         (init_decl_processing): Set them.  _Jv_InitClass only takes one
11179         argument.
11180
11181         * java-tree.def: Put into `C' mode.
11182
11183 2000-04-27  Tom Tromey  <tromey@cygnus.com>
11184
11185         Fix for PR gcj/2:
11186         * expr.c (expand_invoke): Generate check to see if object pointer
11187         is null in nonvirtual invocation case.
11188         * java-tree.h (soft_nullpointer_node): Declare.
11189         * decl.c (soft_nullpointer_node): New global.
11190         (init_decl_processing): Initialize soft_nullpointer_node.
11191         * parse.y (invocation_mode): Return INVOKE_NONVIRTUAL for `final'
11192         or `private' methods.
11193         (patch_invoke): Handle INVOKE_NONVIRTUAL case.
11194
11195 2000-04-26  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11196
11197         * decl.c (complete_start_java_method): Don't call _Jv_InitClass
11198         from <clinit>
11199
11200 2000-04-26  Tom Tromey  <tromey@cygnus.com>
11201
11202         * zextract.c (find_zip_file_start): New function.
11203         (read_zip_archive): Use it.
11204
11205 2000-04-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11206
11207         * parse.y (register_incomplete_type): Handle JDEP_ANONYMOUS.
11208
11209 2000-04-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11210
11211         * class.c (common_enclosing_context_p): New function.
11212         * java-tree.h (common_enclosing_context_p): Added prototype.
11213         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Relaxed test to allow
11214         classes sharing an outer context with the current instance.
11215         * parse.y (build_access_to_thisn): Fixed leading comment.
11216         (verify_constructor_super): New local `supper_inner'. Skip
11217         enclosing context argument in the case of inner class constructors.
11218         (patch_method_invocation): Insert proper context as second
11219         parameter to pure inner class constructor super invocations.
11220
11221 2000-04-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11222
11223         * parse.y (end_class_declaration): Reset the interface number
11224         counter.
11225
11226 2000-04-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11227
11228         * parse.y (source_start_java_method): Deleted unnecessary code.
11229         (patch_method_invocation): Fixed comment.
11230
11231 2000-04-24  Robert Lipe <robertlipe@usa.net>
11232
11233         * parse.h (_jdep): Member `kind' now ENUM_BITFIELD.
11234
11235 2000-04-23  Tom Tromey  <tromey@cygnus.com>
11236
11237         * boehm.c (mark_reference_fields): Use int_byte_position.
11238
11239 2000-04-22  Tom Tromey  <tromey@cygnus.com>
11240
11241         * boehm.c (mark_reference_fields): Only call byte_position on
11242         non-static fields.
11243
11244 2000-04-22  Tom Tromey  <tromey@cygnus.com>
11245
11246         * boehm.c (mark_reference_fields): Added `last_view_index'
11247         argument.  Use DECL_FIELD_OFFSET to determine field's offset.
11248
11249 2000-04-20  Mo DeJong  <mdejong@cygnus.com>
11250
11251         * parse.h (INTERFACE_INNER_MODIFIERS): New macro.
11252         * parse.y (check_class_interface_creation): Fixed comments. Select
11253         permitted modifiers for (inner) interfaces. Changed error message
11254         to report rejected modifiers used with local classes.
11255
11256 2000-04-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11257
11258         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Immediate inner classes
11259         of directly inherited type considered in scope.
11260         * parse.y (do_resolve_class): Search inherited classes for inner
11261         classes.
11262
11263 2000-04-20  Tom Tromey  <tromey@cygnus.com>
11264
11265         * parse.y (not_accessible_p): Use member's class, not current
11266         class, when doing inheritance check for protected reference.
11267         Fixes PR gcj/124.
11268
11269 2000-04-20  Jason Schroeder  <shrode@subnature.com>
11270
11271         * jcf-dump.c (SPECIAL_IINC): Fixed typo printing iinc instruction.
11272
11273 2000-04-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11274
11275         * parse.y (lookup_field_wrapper): Search for final local aliases.
11276         (resolve_expression_name): Let lookup_field_wrapper search for
11277         final local aliases. Force the value of `name' if one is found.
11278         (qualify_ambiguous_name): CONVERT_EXPR is enough to now we have
11279         an expression name. Fixed comments.
11280
11281 2000-04-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11282
11283         * parse.y (yyerror): `msg' can be null, don't use it in that case.
11284
11285 2000-04-19  Tom Tromey  <tromey@cygnus.com>
11286
11287         * gjavah.c (cxx_keyword_subst): Avoid potential infinite loop.
11288
11289 2000-04-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11290
11291         * parse.y (maybe_make_nested_class_name): Use `obstack_grow0'.
11292
11293 2000-04-18  Tom Tromey  <tromey@cygnus.com>
11294
11295         PR gcj/211:
11296         * gjavah.c (utf8_cmp): Changed return value.
11297         (cxx_keyword_subst): Handle all C++ keywords.  Allocate new return
11298         result.
11299         (cxx_keywords): New global.
11300         (get_field_name): Handle new result of cxx_keyword_subst.
11301         (print_method_info): Likewise.
11302
11303 2000-04-17  Bryce McKinlay  <bryce@albatross.co.nz>
11304
11305         * gjavah.c (print_name_for_stub_or_jni): Don't prefix method names
11306         with a newline, for CNI.
11307         (print_stub_or_jni): Print a space or newline before method name for
11308         CNI as well as JNI.
11309         (print_cxx_classname): Don't write leading "::" in CNI stub method.
11310         (process_file): Include gcj/cni.h if generating CNI stubs.
11311
11312 2000-04-16  Tom Tromey  <tromey@cygnus.com>
11313
11314         * gjavah.c (decompile_method): Use print_field_name.
11315         Fixes PR gcj/205.
11316
11317 2000-04-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11318
11319         * parse.y (java_expand_classes): Reverse the package list once.
11320         (java_complete_lhs): PLUS_EXPR: don't try rhs and lhs at string
11321         reduction.
11322         (patch_binop): New temp `cn'. Call patch_string on LHS/RHS of
11323         the `==' and `!=' operators.
11324
11325 2000-04-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11326
11327         * jcf-write.c (generate_bytecode_insns): At invocation time,
11328         always relate an interface method to the type of its selector.
11329
11330 2000-04-05  Tom Tromey  <tromey@cygnus.com>
11331
11332         Fix for PR gcj/2:
11333         * expr.c (expand_invoke): Generate check to see if object pointer
11334         is null in nonvirtual invocation case.
11335         * java-tree.h (soft_nullpointer_node): Declare.
11336         * decl.c (soft_nullpointer_node): New global.
11337         (init_decl_processing): Initialize soft_nullpointer_node.
11338         * parse.y (invocation_mode): Return INVOKE_NONVIRTUAL for `final'
11339         or `private' methods.
11340         (patch_invoke): Handle INVOKE_NONVIRTUAL case.
11341
11342 2000-04-05  Tom Tromey  <tromey@cygnus.com>
11343
11344         Fix for PR gcj/140:
11345         * parse.y (check_final_assignment): Recognize assignments to the
11346         `length' field of an array when generating class files.
11347
11348 2000-04-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11349
11350         * class.c (decl_hash): Prototype removed.
11351         (decl_compare): Likewise.
11352
11353 2000-04-05  Tom Tromey  <tromey@cygnus.com>
11354
11355         * parse.h (THIS_MODIFIER_ONLY): Changed meaning of `v' parameter.
11356         * parse.y (check_modifiers_consistency): Check for final/volatile
11357         clash.  Fixes PR gcj/164.
11358
11359 2000-04-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11360
11361         * class.c: (java_hash_hash_tree_node): Renamed from `decl_hash',
11362         made global.
11363         (java_hash_compare_tree_node): Renamed from `decl_compare, made
11364         global.
11365         (add_method_1): Use `java_hash_hash_tree_node' and
11366         `java_hash_compare_tree_node'.
11367         * java-tree.h: (java_hash_hash_tree_node): Prototyped.
11368         (java_hash_compare_tree_node): Likewise.
11369         * parse.y (find_applicable_accessible_methods_list): Create,
11370         delete and use a hash table to remember already searched interfaces.
11371
11372 2000-04-03  Matt Welsh  <mdw@cs.berkeley.edu>
11373
11374         * jcf-depend.c (add_entry): Fixed bug where list was always replaced
11375         with latest entry.
11376
11377 2000-04-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11378
11379         * boehm.c (mark_reference_fields, set_bit): Prototype.
11380         (set_bit): Un-ANSI-fy definition.
11381
11382         * class.c (init_test_hash_newfunc, decl_hash, decl_compare):
11383         Prototype.
11384
11385         * decl.c (emit_init_test_initialization): Likewise.
11386
11387         * gjavah.c (jni_print_char): Likewise.
11388
11389         * parse.y (create_new_parser_context): Likewise.
11390
11391 2000-03-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11392
11393         * expr.c (java_lang_expand_expr): Added Anthony's Thu Jan 6 2000
11394         patch missing hunk. Fixed indentation.
11395
11396 2000-03-30  Tom Tromey  <tromey@cygnus.com>
11397
11398         * gjavah.c (D_NAN_MASK): Only define as word-reversed when
11399         HOST_FLOAT_WORDS_BIG_ENDIAN and HOST_WORDS_BIG_ENDIAN disagree.
11400
11401 2000-03-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11402
11403         * parse-scan.y (pop_class_context): Reset `inner_qualifier_length'
11404         when negative *before* using it as an array index.
11405         * ChangeLog: Fixed typo.
11406
11407 2000-03-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11408
11409         * parse-scan.y (pop_class_context): Reset `inner_qualifier_length'
11410         to 0 when it reaches -1.
11411
11412 2000-03-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11413
11414         * jcf-parse.c (get_constant): Properly cast `num' during the
11415         invocation of `add_double'.
11416         * jcf-write.c (push_long_const): Properly cast `lo' before
11417         comparing it to short bounds.
11418         * parse-scan.y (interface_declaration:): Rule re-arrange so that
11419         `interface_body:' is reduced after the current interface is
11420         pushed.
11421
11422 2000-03-26  Tom Tromey  <tromey@cygnus.com>
11423
11424         * jvspec.c (jvgenmain_spec): Add `%{<...}' construct for each
11425         Java-specific `-f' option.
11426
11427 2000-03-26  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
11428
11429         * decl.c (init_decl_processing): Only call initialize_sizetypes once.
11430         Adjust order of making types.
11431         Make bitsize_*_node values.
11432
11433 2000-03-25  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
11434
11435         * class.c (make_field_value): Use byte_position.
11436         * expr.c (JAVA_ARRAY_LENGTH_OFFSET): Use byte_position.
11437         (java_array_data_offset): Likewise.
11438         * java-tree.h (MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Add case to
11439         bzero call.
11440
11441 2000-03-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11442
11443         * parse.y (check_abstract_method_definitions): New local
11444         `end_type_reached'. Make sure we also consider `end_type'.
11445         (java_check_abstract_method_definitions): Make sure we eventually
11446         consider `java.lang.Object'.
11447         (maybe_use_access_method): Don't use access method if not in the
11448         context of a pure inner class or if the method's context is right.
11449         (find_applicable_accessible_methods_list): New static flag
11450         `object_done'. Don't search abstract classes as interfaces. Fixed
11451         indentation. Fixed the `java.lang.Object' only search. Search
11452         class interface(s) first, then fully search enclosing contexts.
11453         (find_most_specific_methods_list): Pick the closest candidate when
11454         they're all abstract.
11455
11456 2000-03-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11457
11458         * jcf-write.c (generate_bytecode_insns): TRY_FINALLY_EXPR:
11459         properly initialize `finished_label'. Don't emit gotos for empty
11460         try statements.
11461
11462 2000-03-19  Martin v. Loewis  <loewis@informatik.hu-berlin.de>
11463
11464         * except.c (emit_handlers): Clear catch_clauses_last.
11465
11466 2000-03-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11467
11468         * parse.y (check_method_types_complete): New function.
11469         (create_class): Reset anonymous class counter only when seeing an
11470         non inner classe.
11471         (java_complete_class): JDEP_METHOD: Don't recompute signature
11472         if incomplete.
11473
11474 2000-03-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11475
11476         * class.c (build_static_ref): Fixed indentation in comment.
11477         * java-tree.def (TRY_EXPR): Fixed typo in name.
11478         (CLASS_LITERAL): Likewise.
11479         * java-tree.h: (TYPE_DOT_CLASS): New macro.
11480         (struct lang_type): New field `dot_class'.
11481         * jcf-write.c (generate_bytecode_insns): Fixed error message.
11482         (generate_classfile): Method `class$' is synthetic.
11483         * parse.y (build_do_class_method): New function.
11484         (build_dot_class_method_invocation): Likewise.
11485         (java_complete_expand_methods): Expand TYPE_DOT_CLASS if necessary.
11486         (resolve_qualified_expression_name): Handle CLASS_LITERAL.
11487         (qualify_ambiguous_name): Likewise.
11488         (patch_incomplete_class_ref): Invoke synthetic method if necessary.
11489         (build_try_statement): Fixed leading comment.
11490
11491 2000-03-17  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
11492
11493         * class.c (make_field_value): Properly handle sizes.
11494         (get_dispatch_vector): Use tree_low_cst and host_integerp.
11495         (layout_class_method): Count using trees.
11496         * decl.c (push_promoted_type): Set TYPE_{MIN,MAX}_VALUE with copy_node.
11497         * expr.c (java_array_data_offset): Use int_bit_position.
11498         (build_newarray, build_anewarray): Use host_integerp and tree_low_cst.
11499         (build_invokevirtual): Use tree_low_cst and do computations with trees.
11500
11501 2000-03-16  Tom Tromey  <tromey@cygnus.com>
11502
11503         * lang.c (flag_hash_synchronization): New global.
11504         (lang_f_options): Added `hash-synchronization'.
11505         * lang-options.h: Mention -fhash-synchronization.
11506         * java-tree.h (flag_hash_synchronization): Declare.
11507         * expr.c (java_lang_expand_expr): Only push `sync_info' value when
11508         hash table synchronization is disabled.
11509         * decl.c (init_decl_processing): Only push `sync_info' value when
11510         hash table synchronization is disabled.
11511         * class.c (make_class_data): Only push `sync_info' field when hash
11512         table synchronization is disabled.  Removed dead code.
11513
11514 2000-03-16  Tom Tromey  <tromey@cygnus.com>
11515
11516         * lang.c (lang_decode_option): Enable -Wunused when -Wall given.
11517
11518 2000-03-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11519
11520         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Disregard anonymous
11521         classes.
11522         * parse.y (patch_method_invocation): Handle anonymous classes
11523         creation in static context.
11524
11525 2000-03-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11526
11527         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): New macro.
11528         * parse.y (resolve_qualified_expression_name): Use it.
11529         (patch_method_invocation): Likewise.
11530
11531 2000-03-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11532
11533         * parse.y (register_incomplete_type): JDEP_ENCLOSING set
11534         depending on the type of dependency which dictates what the
11535         current class is.
11536         (unresolved_type_p): Resolved types limited to the current class.
11537
11538 2000-03-15  Tom Tromey  <tromey@cygnus.com>
11539
11540         * decl.c (init_decl_processing): Set type of `sync_info' to be
11541         pointer to Object.
11542
11543         * boehm.c (get_boehm_type_descriptor): Correctly compute `bits'.
11544         Correctly compute bit number for current slot.  Zero `high' and
11545         `low' in DS_LENGTH case.  Don't skip inherited fields.  Use
11546         mark_reference_fields.
11547         (mark_reference_fields): New function.
11548
11549 2000-03-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11550
11551         * parse.y (register_incomplete_type): Fixed initialization of
11552         JDEP_ENCLOSING.
11553
11554 2000-02-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11555
11556         * parse-scan.y (inner_qualifier, inner_qualifier_length): New
11557         static globals.
11558         (push_class_context, pop_class_context): New function.
11559         (class_body:): Call pop_class_context.
11560         (interface_body:): Likewise.
11561         (INNER_QUALIFIER): New macro.
11562         (report_class_declaration): Changed output format and use
11563         INNER_QUALIFIER. Call push_class_context.
11564
11565 2000-02-14  Andrew Haley  <aph@cygnus.com>
11566
11567         * check-init.c (check_init): Add new cases for unary and binary
11568         tree nodes.
11569
11570 2000-03-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11571
11572         * parse.y (resolve_package): Set `next' once a type name has been
11573         progressively discovered.
11574         (resolve_qualified_expression_name): Propagate resolution only if
11575         there are remaining qualifiers. Take into account `q' might have
11576         been cleared after re-qualification.
11577         * parse.y (patch_method_invocation): New local `resolved'.
11578         Section dealing with qualified expression rewritten to use
11579         resolve_field_access.
11580
11581 2000-03-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11582
11583         * parse.h (PUSH_CPC): Fixed indentation.
11584         (DEBUG_CPC): New macro.
11585         (SET_CPC_INITIALIZER_STMT, SET_CPC_STATIC_INITIALIZER_STMT,
11586         SET_CPC_INSTANCE_INITIALIZER_STMT): New macros.
11587         * parse.y (class_body_declaration:): Use
11588         SET_CPC_INSTANCE_INITIALIZER_STMT.
11589         (method_declaration:): Check for null current_function_decl.
11590         (static_initializer:): Use SET_CPC_STATIC_INITIALIZER_STMT.
11591         (java_parser_context_pop_initialized_field): Better handling of
11592         empty lists.
11593         (maybe_make_nested_class_name): Mark nested class name as
11594         qualified when necessary.
11595         (end_class_declaration): Don't call java_parse_context_resume when
11596         one or more error occurred.
11597         (add_inner_class_fields): Use SET_CPC_INITIALIZER_STMT.
11598         (register_fields): Use SET_CPC_STATIC_INITIALIZER_STMT and
11599         SET_CPC_INITIALIZER_STMT.
11600         (method_header): Check for inner classes declaring static methods.
11601         (resolve_qualified_expression_name): Handle situation where `this'
11602         is implied.
11603
11604 2000-03-13  Hans Boehm <boehm@acm.org>
11605
11606         * typeck.c (build_prim_array_type): Correctly set the high word too.
11607
11608 2000-03-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11609
11610         * parse.y (java_complete_expand_methods): Leave <clinit> out of
11611         ordinary methods.
11612         (maybe_generate_pre_expand_clinit): Put <clinit> at the end of the
11613         list of methods for interfaces.
11614
11615 2000-03-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11616
11617         * parse.y (qualify_ambiguous_name): Properly handle expressions
11618         using `null'.
11619
11620 2000-03-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11621
11622         * parse.y (check_final_assignment): Extended to process
11623         COMPOUND_EXPR.
11624         (patch_assignment): Have check_final_assignment called only once.
11625
11626 2000-03-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11627
11628         * java-tree.h (IS_INIT_CHECKED): New flag.
11629         * check-init.c (check_init): Test and set IS_INIT_CHECKED.
11630         * parse.y (patch_string): Call force_evaluation_order on the
11631         completed string concatenation tree.
11632         * expr.c (force_evaluation_order): Call force_evaluation_order on
11633         function's arguments too.
11634
11635 2000-03-06  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
11636
11637         * decl.c (emit_init_test_initialization): Mark KEY as unused.
11638         * expr.c (build_newarray): Cast TREE_INT_CST_LOW to HOST_WIDE_INT.
11639         (build_anewarray): Likewise.
11640         * parse.y (patch_newarray): Likewise.
11641         * parse.c: Regenerated.
11642
11643 2000-03-06  Bryce McKinlay  <bryce@albatross.co.nz>
11644
11645         * decl.c (init_decl_processing): Added new class fields `depth',
11646         `ancestors', and `idt' to class_type_node. Use
11647         _Jv_LookupInterfaceMethodIdx for soft_lookupinterfacemthod_node.
11648         * class.c (make_class_data): Push initial values for new fields.
11649         * java-tree.h: Updated prototype for `build_invokeinterface'.
11650         * expr.c (build_invokeinterface): Changed parameters to accept
11651         `method' tree. Calculate index of `method' in its declaring
11652         interface. Build call to _Jv_LookupInterfaceMethodIdx.
11653         (expand_invoke): Call `build_invokeinterface' with new parameters.
11654         * parse.y (patch_invoke): Call `build_invokeinterface' with new
11655         parameters.
11656
11657 2000-03-06  Bryce McKinlay <bryce@albatross.co.nz>
11658
11659         * typeck.c (lookup_do): Search superinterfaces first
11660         when looking up an interface method. From Godmar Back
11661         <gback@cs.utah.edu>
11662
11663 2000-03-06  Tom Tromey  <tromey@cygnus.com>
11664
11665         * Make-lang.in (JAVA_SRCS): Added boehm.c, lex.c.
11666
11667 2000-03-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11668
11669         * java-tree.h (lookup_argument_method2): Declared.
11670         (safe_layout_class): Prototype moved from parse.h.
11671         * parse.h (safe_layout_class): Prototype moved to java-tree.h.
11672         * parse.y (java_check_regular_methods): Local `super_class' gone.
11673         Call lookup_argument_method2 instead of lookup_argument_method.
11674         Perform modifier match for methods found declared in implemented
11675         interfaces. Fixed indentation problem. Overriding/hiding error
11676         report to take place only for methods found in classes.
11677         * typeck.c (lookup_argument_method): Changed leading
11678         comment. Re-written by calling lookup_do.
11679         (lookup_argument_method2): New function.
11680         (lookup_java_method): Re-written by calling lookup_do.
11681         (lookup_do): New function.
11682
11683 2000-03-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11684
11685         * check-init.c (check_init): Removed dead code. Handle (blank)
11686         final variables.
11687         * parse.y (declare_local_variables): New local `final_p', set it
11688         and use it to initialize LOCAL_FINAL.
11689         (check_final_assignment): Only check FIELD_DECLs.
11690
11691 2000-02-17  Tom Tromey  <tromey@cygnus.com>
11692
11693         * Makefile.in (JAVA_OBJS): Added boehm.o.
11694         (boehm.o): New target.
11695         * Make-lang.in (JAVA_SRCS): Added boehm.c.
11696         * java-tree.h (flag_use_boehm_gc): Declare.
11697         (get_boehm_type_descriptor): Declare.
11698         * lang.c (lang_f_options): Added `use-boehm-gc'.
11699         (flag_use_boehm_gc): New global.
11700         * lang-options.h: Added -fuse-boehm-gc.
11701         * boehm.c: New file.
11702         * class.c (get_dispatch_table): If class uses a Boehm type
11703         descriptor, put it in the vtable.
11704         (make_class_data): Removed dead code.
11705
11706 2000-03-03  Per Bothner  <per@bothner.com>
11707
11708         * decl.c (init_decl_processing):  Initialize sizetype properly.
11709
11710 2000-03-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11711
11712         * java-tree.h (LOCAL_CLASS_P): New flag usage and macro.
11713         (PURE_INNER_CLASS_DECL_P, PURE_INNER_CLASS_TYPE_P): New macros.
11714         * jcf-dump.c (HANDLE_INNERCLASSES_ATTRIBUTE): New macro.
11715         * jcf-parse.c (HANDLE_INNERCLASSES_ATTRIBUTE): Likewise.
11716         (jcf_parse): New local `current'. Load innerclasses seen in outer
11717         context being processed.
11718         * jcf-reader.c (HANDLE_INNERCLASSES_ATTRIBUTE): New macro.
11719         * jcf-write.c (append_innerclasses_attribute): New function.
11720         (append_innerclasses_attribute_entry): Likewise.
11721         (get_access_flags): Handle static classes. Set anonymous and local
11722         classes to be private.
11723         (generate_classfile): Attribute count adjusted. Call
11724         append_innerclasses_attribute.
11725         * parse.h (SKIP_THIS_AND_ARTIFICIAL_PARMS): Use
11726         PURE_INNER_CLASS_TYPE_P.
11727         * parse.y (parser_qualified_classname): New parameter `is_static',
11728         produce non qualified name accordingly.
11729         (block_statement:): Set LOCAL_CLASS_P when declaring local class.
11730         (create_interface): Added argument to parser_qualified_classname.
11731         (create_class): Added argument to parser_qualified_classname. Setup
11732         alias for top level classes. Use PURE_INNER_CLASS_DECP_P.
11733         (add_inner_class_fields): Fixed indentation.
11734         (method_declarator): Use PURE_INNER_CLASS_DECP_P.
11735         (method_declarator): Fixed typo in comment.
11736         (craft_constructor): Use PURE_INNER_CLASS_DECP_P.
11737         (build_current_thisn): Likewise.
11738         (patch_method_invocation): Likewise.
11739
11740 2000-03-01  Martin von Loewis  <loewis@informatik.hu-berlin.de>
11741
11742         * decl.c (current_function_decl): Move to toplev.c.
11743
11744 2000-02-28  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
11745
11746         * java-tree.h (LABEL_PC): Relect name changes in ../tree.h.
11747         (DECL_BIT_INDEX): Use underlying representation.
11748         * parse.h (DECL_INHERITED_SOURCE_LINE): Likewise.
11749
11750 2000-02-27  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
11751
11752         * expr.c (build_java_ret): Pass proper type to size_binop.
11753
11754 2000-02-25  Anthony Green  <green@cygnus.com>
11755
11756         * expr.c (build_class_init): Mark the decl to be ignored by
11757         check_init.
11758         * java-tree.h (DECL_BIT_INDEX): Move definition from check-init.c
11759         * check-init.c: Move DECL_BIT_INDEX to java-tree.h
11760         * class.c (init_test_hash_newfunc): New function.
11761         (decl_hash): New function.
11762         (decl_compare): New function.
11763         * decl.c (emit_init_test_initialization): New function.
11764         (complete_start_java_method): Traverse the init test hashtable,
11765         calling emit_init_test_initialization.
11766         (always_initialize_class_p): Define.
11767         * expr.c (build_class_init): Use initialization tests when
11768         emitting class initialization code.
11769         (always_initialize_class_p): Declare.
11770         * jcf-parse.c (parse_class_file): Set always_initialize_class_p to
11771         1.
11772         * java-tree.h: Include hash.h.
11773         (DECL_FUNCTION_INIT_TEST_TABLE): Define.
11774         (struct lang_decl): Add init_test_table field.
11775         (init_test_hash_entry): Define.
11776
11777 2000-02-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11778
11779         * gjavah.c (main): Avoid using `argi' to report unimplemented
11780         options.
11781
11782 2000-02-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11783
11784         * jcf-write.c (generate_bytecode_insns): TRY_FINALLY_EXPR:
11785         initialize locals to avoid warnings. Local `exception_type' moved
11786         into if statement.
11787
11788 2000-02-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11789
11790         * parse.y (resolve_expression_name): Use `orig' as a second
11791         argument to resolve_field_access.
11792         (resolve_field_access): Removed unnecessary code when dealing with
11793         static fields.
11794
11795 2000-02-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11796
11797         * class.c (push_super_field): Don't push the field twice.
11798         * jcf-parse.c (parse_source_file): Call java_reorder_fields.
11799         * parse.h (java_reorder_fields): Prototyped.
11800         * parse.y (java_reorder_fields): New function.
11801         (java_layout_class): Simplified not to worry about re-ordering.
11802
11803 2000-02-23  Tom Tromey  <tromey@cygnus.com>
11804
11805         * gjavah.c (print_name): In JNI case, correctly quote string.
11806         (print_method_info): Don't handle overrides in JNI mode.
11807
11808 2000-02-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11809
11810         * parse.y (init_decl_processing): `_Jv_IsInstanceOf' returned
11811         value type set to `boolean_type_node'.
11812
11813 2000-01-18  Joerg Brunsmann  <joerg.brunsmann@fernuni-hagen.de>
11814
11815         * jcf-dump.c (main): Test for correct condition after
11816         output file creation.
11817
11818 2000-02-19  Anthony Green  <green@cygnus.com>
11819
11820         * jcf-depend.c (add_entry): Fix test for first list entry.
11821
11822 2000-02-19  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
11823
11824         * class.c (build_class_ref, push_super_field): Set DECL_SIZE_UNIT.
11825         * constants.c (build_constants_constructor): Likewise.
11826
11827 2000-02-19  Anthony Green  <green@cygnus.com>
11828
11829         * jcf-depend.c (add_entry): Add entries to the end of the list.
11830
11831 1999-11-03  Pekka Nikander  <pekka.nikander@hut.fi>
11832
11833         * decl.c (INT_TYPE_SIZE): Define if necessary.
11834         (expand_java_return): Handle the case of a native integer smaller
11835         than a JVM integer.
11836
11837 2000-02-18  Martin von Loewis  <loewis@informatik.hu-berlin.de>
11838
11839         * gjavah.c (help): Use GCCBUGURL.
11840         * jv-scan.c (help): Likewise.
11841         * jcf-dump.c (help): Likewise.
11842
11843 2000-02-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11844
11845         * jcf-write.c (generate_bytecode_insns): Don't generate empty
11846         `finally' clauses.
11847
11848 2000-02-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11849
11850         * jcf-parse.c (load_class): Call `fatal' if no file containing
11851         the target class are found.
11852
11853 2000-02-16  Zack Weinberg  <zack@wolery.cumb.org>
11854
11855         * Makefile.in (PARSE_C, PARSE_SCAN_C): Move dependencies on
11856         lex.c, lex.h, and PARSE_H to...
11857         (parse.o, parse-scan.o): ...here, respectively.
11858
11859         * lex.c: Split out code that may trigger SIGFPE from yylex()
11860         to its own function.
11861         * lex.h (JAVA_FLOAT_RANGE_ERROR): Don't set value.
11862
11863 2000-02-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11864
11865         * Make-lang.in (jvspec.o): Depend on $(GCC_H), not gcc.h.
11866
11867 2000-02-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11868
11869         * parse.y (outer_field_access_p): Stop in time when outer contexts
11870         are exhausted.
11871         (resolve_qualified_expression_name): Properly qualify *everything*
11872         after a package.type to be resoled as expression names.
11873         (find_applicable_accessible_methods_list): Save/restore `class' to
11874         isolate it from a possible outer context search.
11875
11876 2000-02-15  Tom Tromey  <tromey@cygnus.com>
11877
11878         * gjavah.c (jni_print_char): New function.
11879         (print_full_cxx_name): Use it.
11880         (decode_signature_piece): Likewise.
11881         (print_cxx_classname): Likewise.
11882
11883 2000-02-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11884
11885         * Makefile.in (jv-scan, jcf-dump, gcjh): Depend on and link with
11886         version.o.
11887         (jcf-dump.o, gjavah.o, jv-scan.o): Depend on version.h.
11888
11889         * gjavah.c: Include version.h.
11890
11891         * jcf-dump.c: Likewise.
11892
11893         * jv-scan.c: Likewise.
11894
11895 2000-02-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11896
11897         * parse.y (outer_field_access_fix): First parameter now a tree
11898         node. Check for assignment to final. First argument to
11899         build_outer_field_access_fix modified to accommodate prototype.
11900         (build_outer_field_access): Don't check for assignment to final
11901         here.
11902         (java_complete_lhs): MODIFY_EXPR case: Check for `error_mark_node'
11903         possibly returned by outer_field_access_fix. Changed
11904         outer_field_access_fix's first argument.
11905         (check_final_assignment): $finit$'s context is OK.
11906         (patch_unaryop): Use node instead of its line/column value when
11907         calling outer_field_access_fix.
11908
11909 2000-02-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11910
11911         * parse.y (interface_declaration:): No longer tagged
11912         <node>. Re-installed default action.
11913         (class_member_declaration:): Handle inner interfaces.
11914         (interface_member_declaration): Handle inner interfaces and
11915         classes.
11916         (create_interface): Push error if one seen. Suspend parsing
11917         context when processing an inner interface.
11918         (register_fields): Inner class static field limitations not to
11919         apply to inner interfaces.
11920
11921 2000-02-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11922
11923         * jcf-parse.c (load_class): Update `java_error_count' when a
11924         class' file can't be found.
11925         (parse.y): Avoid (byte)code generation when errors seen.
11926
11927 2000-02-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11928
11929         * parse.y (java_complete_lhs): Handle TRUNC_DIV_EXPR. Ensure `fatal'
11930         decodes a valid node.
11931         (patch_binop): Handle TRUNC_DIV_EXPR.
11932
11933 2000-02-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11934
11935         * parse.y (resolve_package): New local `acc'. Try to progressively
11936         build and guess a package and type name.
11937
11938 2000-02-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11939
11940         * parse.y (find_applicable_accessible_methods_list): Load and
11941         layout the search class if necessary.
11942         (java_complete_tree): Keep to original type of the folded initial
11943         value.
11944
11945 2000-02-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11946
11947         * class.c (layout_class): Set and test CLASS_BEING_LAIDOUT.
11948         Generate error message if circularity is detected. New static
11949         local `list'.
11950         * java-tree.h (CLASS_BEING_LAIDOUT): New flag usage, new macro.  *
11951         * jcf-write.c (generate_bytecode_insns): Very simply handle
11952         SAVE_EXPR.
11953         * parse.y (java_check_circular_reference): Use
11954         `cyclic_inheritance_report' during report, if necessary.
11955         (java_complete_lhs): fixed comment with `THROW_EXPR:' case. Avoid
11956         walking NEW_ARRAY_INIT twice.
11957
11958 2000-02-09  Tom Tromey  <tromey@cygnus.com>
11959
11960         * parse.y (check_class_interface_creation): Allow inner classes to
11961         be `private' or `protected', check modifiers' consistency. Prevent
11962         block local classes from bearing any modifiers.
11963
11964 2000-02-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11965
11966         * except.c (check_start_handlers): Re-add prototype lost in last
11967         patch.
11968         (maybe_start_try): Remove excess argument to `check_start_handlers'.
11969
11970 2000-02-09  Andrew Haley  <aph@cygnus.com>
11971
11972         * decl.c (clear_binding_level): Remove excess initializer.
11973         (maybe_poplevels): Remove unused variable.
11974         (force_poplevels): Ditto.
11975         (struct binding_level): Add comment.
11976
11977 2000-02-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11978
11979         * jcf-write.c (generate_classfile): Don't consider
11980         pre-initialization with reference value (use <clinit> instead.)
11981         * parse.y (java_fix_constructors): No generated constructor for
11982         interfaces.
11983         (build_outer_field_access): Removed debug message.
11984         (outer_field_expanded_access_p): Adapted to bytecode generation.
11985         (build_outer_field_access_method): Use fix_method_argument_names.
11986         (build_outer_method_access_method): Fixed indentation. Added
11987         comment. Handle access method generation for static and also void
11988         methods.
11989         (build_access_to_thisn): Inserted debug message.
11990         (maybe_build_thisn_access_method): Use fix_method_argument_names.
11991         (resolve_qualified_expression_name): Fixed comment.
11992         (not_accessible_p): Adapted to bytecode generation. Added comment.
11993         (patch_method_invocation): Added comment.
11994         (maybe_use_access_method): Fixed leading comment. Handle static
11995         methods.
11996         (java_complete_lhs): Don't shortcut handling of initialized upon
11997         declaration String type static fields when generating bytecode.
11998         (patch_unaryop): Handle outer field access when generating
11999         bytecode.
12000
12001 2000-02-03  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12002
12003         * java-tree.h (FIELD_THISN): New macro.
12004         * jcf-write.c (append_synthetic_attribute): New function.
12005         (generate_classfile): Set "Synthetic" attribute on this$<n>,
12006         val$<name> fields, access$<n> and $finit$ methods. Fixed indentation.
12007         * parse.y (add_inner_class_fields): Set FIELD_THISN for created
12008         this$<n> fields.
12009         (build_outer_field_access): Turned on access functions usage and
12010         generation when compiling to bytecode.
12011         (maybe_use_access_method): Likewise.
12012
12013 2000-01-25  Andrew Haley  <aph@cygnus.com>
12014
12015         * java-except.h (struct eh_range): Add `expanded' field.
12016         (maybe_start_try): Add end_pc arg.
12017         (maybe_end_try): Ditto.
12018         * java-tree.h (force_poplevels): new function.
12019         * expr.c (expand_byte_code): Don't call maybe_start_try or
12020         maybe_end_try.
12021         * except.c (add_handler): Reset expanded.
12022         (expand_start_java_handler): Set expanded.
12023         (check_start_handlers): Don't expand a start handler that's
12024         already been expanded.
12025         (maybe_start_try): Add end_pc arg.  Only expand a handler which
12026         ends after end_pc.
12027         (expand_end_java_handler): call force_poplevels.
12028         (force_poplevels): new function.
12029         * decl.c (binding_level): Add start_pc of binding level.
12030         (maybe_pushlevels): Call maybe_start_try when pushing binding
12031         levels.
12032         (maybe_poplevels): Call maybe_end_try when popping binding levels.
12033         (LARGEST_PC): Define.
12034         (clear_binding_level): Use LARGEST_PC.
12035
12036         * java-tree.h (DEBUG_JAVA_BINDING_LEVELS): new define.
12037         * decl.c (DEBUG_JAVA_BINDING_LEVELS): new define.
12038         (binding_depth, is_class_level, current_pc): new variables.
12039         (struct binding_level): ditto.
12040         (indent): new function.
12041         (push_jvm_slot): add debugging info.
12042         (maybe_pushlevels): ditto.
12043         (maybe_poplevels): ditto.
12044         (pushlevel): ditto.
12045         (poplevel): ditto.
12046         (start_java_method): ditto.
12047         (give_name_to_locals): comment only.
12048         * except.c (binding_depth, is_class_level, current_pc):
12049         new variables.
12050         (expand_start_java_handler): add debugging info.
12051         (expand_end_java_handler): ditto.
12052
12053 2000-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12054
12055         * gjavah.c (overloaded_jni_method_exists_p): Add prototype.
12056         (print_name_for_stub_or_jni, process_file): Constify a char*.
12057
12058 2000-02-03  Tom Tromey  <tromey@cygnus.com>
12059
12060         * jcf-io.c (jcf_print_utf8_replace): Handle UTF-8 input.
12061
12062 2000-01-31  Scott Bambrough  <scottb@netwinder.org>
12063
12064         * gcc/java/javaop.h (WORDS_TO_DOUBLE): Allow WORDS_TO_DOUBLE to
12065         assemble doubles correctly when HOST_FLOAT_WORDS_BIG_ENDIAN is
12066         defined to be 1.
12067
12068 2000-02-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12069
12070         * java-tree.def (INSTANCE_INITIALIZERS_EXPR): New tree code.
12071         * java-tree.h (TYPE_II_STMT_LIST): New macro.
12072         (struct lang_type): New field `ii_block'.
12073         * lex.c (java_init_lex): Use CPC_INITIALIZER_LIST,
12074         CPC_STATIC_INITIALIZER_LIST and CPC_INSTANCE_INITIALIZER_LIST.
12075         * parse.h (struct parser_ctxt): New field `instance_initializers'.
12076         (CPC_INITIALIZER_LIST, CPC_STATIC_INITIALIZER_LIST,
12077         CPC_INSTANCE_INITIALIZER_LIST, CPC_INITIALIZER_STMT,
12078         CPC_STATIC_INITIALIZER_STMT, CPC_INSTANCE_INITIALIZER_STMT): New
12079         macros.
12080         * parse.y (add_instance_initializer): New function.
12081         (in_instance_initializer): New static global.
12082         (class_body_declaration:): Link instance initializer block.
12083         (static_initializer:): Use CPC_STATIC_INITIALIZER_STMT.
12084         (array_creation_expression:): Remove unused local.
12085         (java_parser_context_push_initialized_field): Fixed leading
12086         comment. Use CPC_STATIC_INITIALIZER_LIST, CPC_INITIALIZER_LIST and
12087         CPC_INSTANCE_INITIALIZER_LIST.
12088         (java_parser_context_pop_initialized_field): Likewise.
12089         (add_inner_class_fields): Use CPC_INITIALIZER_STMT.
12090         (register_fields): Use CPC_STATIC_INITIALIZER_STMT and
12091         CPC_INITIALIZER_STMT.
12092         (fix_constructors): New local `class_type'. Use it. Call
12093         add_instance_initializer.
12094         (java_complete_lhs): New case INSTANCE_INITIALIZERS_EXPR.
12095         (patch_return): Forbid return in instance initializers.
12096         (patch_throw_statement): Enforce exception handling in the context
12097         of instance initializers.
12098
12099 2000-02-03  Tom Tromey  <tromey@cygnus.com>
12100
12101         * Make-lang.in (java.mostlyclean): Remove executables in
12102         `mostlyclean'.
12103
12104 2000-01-31  Scott Bambrough  <scottb@netwinder.org>
12105
12106         * gcc/java/gjavah.c (D_NAN_MASK): Alternate definition required when
12107         HOST_FLOAT_WORDS_BIG_ENDIAN is defined to be 1.
12108         (java_float_finite): Convert to use union Word from javaop.h.
12109         (java_double_finite): Convert to use union DWord from javaop.h.
12110
12111 2000-02-02  Tom Tromey  <tromey@cygnus.com>
12112
12113         * gjavah.c (options): Added `jni' entry.
12114         (help): Document -jni.
12115         (flag_jni): New global.
12116         (process_file): Handle JNI output.  Don't print text from
12117         -prepend, -add, etc, when generating stubs.  Only remove `.class'
12118         suffix if it actually exists.
12119         (main): Create a `.c' file when run with `--jni --stubs'.  Create
12120         correct output file name with `--jni'.
12121         (print_include): Mangle header name differently in JNI case.
12122         (HANDLE_METHOD): In JNI mode, call print_method_info to generate
12123         method list.
12124         (print_method_info): Handle JNI case.  Put signature info into
12125         method name.  Handle case when STREAM is NULL.
12126         (print_name_for_stub_or_jni): New function.
12127         (print_stub_or_jni): Renamed from `print_stub'.  Handle JNI.
12128         (print_cxx_classname): Handle JNI.
12129         (print_full_cxx_name): Likewise.
12130         (decode_signature_piece): Likewise.
12131         (overloaded_jni_method_exists_p): New function.
12132         (struct method_name): Added `signature' and `sig_length' fields.
12133         (HANDLE_END_FIELD): Do nothing in JNI mode.
12134
12135 2000-02-02  Tom Tromey  <tromey@cygnus.com>
12136
12137         * jv-scan.c: Include version.c, <getopt.h>.
12138         (LONG_OPT, OPT_HELP, OPT_VERSION): New macros.
12139         (options): New array.
12140         (usage): New function.
12141         (version): New function.
12142         (main): Use getopt_long to parse command line.
12143         * jcf-dump.c: Include version.c, <getopt.h>.
12144         (LONG_OPT, OPT_classpath, OPT_CLASSPATH, OPT_HELP, OPT_VERSION,
12145         OPT_JAVAP): New macros.
12146         (options): New array.
12147         (usage): Return `void'.  Changed message.
12148         (help): New function.
12149         (version): New function.
12150         (main): Use getopt_long_only to parse command line.
12151         * gjavah.c: Include <getopt.h>.
12152         (LONG_OPT, OPT_classpath, OPT_CLASSPATH, OPT_HELP, OPT_TEMP,
12153         OPT_VERSION, OPT_PREPEND, OPT_FRIEND, OPT_ADD, OPT_APPEND, OPT_M,
12154         OPT_MM, OPT_MG, OPT_MD, OPT_MMD): New macros.
12155         (options): New array.
12156         (java_no_argument): Removed.
12157         (help): Updated with missing options.
12158         (main): Use getopt_long_only to parse command line.
12159         (usage): Changed message.
12160
12161 2000-02-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12162
12163         * java-tree.def (NEW_ANONYMOUS_ARRAY_EXPR): New tree code.
12164         * parse.h (ANONYMOUS_ARRAY_BASE_TYPE, ANONYMOUS_ARRAY_DIMS_SIG,
12165         ANONYMOUS_ARRAY_INITIALIZER): New access macros.
12166         * parse.y (array_creation_expression:): Handle anonymous arrays.
12167         (build_array_from_name): Don't set `ret_name' if null.
12168         (resolve_qualified_expression_name): New case NEW_ANONYMOUS_ARRAY_EXPR.
12169         (qualify_ambiguous_name): Likewise.
12170         (java_complete_expand_class): Likewise.
12171
12172 2000-02-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12173
12174         * java-tree.def (SYNCHRONIZED_EXPR): Fixed typo.
12175         * parse.h (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID): New macro.
12176         (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_STR): Likewise.
12177         (SKIP_THIS_AND_ARTIFICIAL_PARMS): Use DECL_FINIT_P.
12178         (AIPL_FUNCTION_FINIT_INVOCATION): Replaces
12179         AIPL_FUNCTION_COMPLETED_INVOCATION.
12180         (AIPL_FUNCTION_CTOR_INVOCATION): Replaces
12181         AIPL_FUNCTION_INVOCATION_READY.
12182         (AIPL_FUNCTION_DECLARATION): New enum entry.
12183         * parse.y (reorder_static_initialized): New function.
12184         (java_parser_context_pop_initialized_field): Use it.
12185         (add_inner_class_fields): Use
12186         MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID. Comment
12187         augmented. Install marker after last alias initializer, if any.
12188         (generate_finit): Fixed typo. Don't try to retain only the used
12189         fields.
12190         (method_header): Compute and set DECL_FUNCTION_NAP.
12191         (method_declarator): Fixed comment. Insert alias initializer in
12192         parameter list.
12193         (build_alias_initializer_parameter_list): Fixed leading
12194         comment. New case for AIPL_FUNCTION_DECLARATION. Old enum value
12195         replaced by new ones. Use MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID.
12196         (java_complete_expand_class): Code to retain only used aliases
12197         removed.
12198         (java_complete_expand_methods): New local `first_decl'. Generate
12199         $finit$ first, then expand the constructors, regular methods and
12200         <clinit>.
12201         (java_complete_expand_method): Don't report error on missing
12202         return statement if previously detected bogus.
12203         (fix_constructors): Don't patch constructor parameters list.
12204         (patch_method_invocation): Use new AIPL enum values. Reverse
12205         alias initializer list for anonymous classes.
12206
12207 2000-01-30  Anthony Green  <green@redhat.com>
12208
12209         * jcf-write.c (generate_bytecode_insns): Use TYPE_IS_WIDE to
12210         determine how many stack slots to pop.
12211
12212 2000-01-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12213
12214         * parse.y (formal_parameter:): Set `$$' to NULL_TREE for better
12215         error handling/recovery.
12216         * java-tree.h (SYNCHRONIZED_EXPR): Fixed typo in comment.
12217
12218 2000-01-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12219
12220         * java-tree.h (ARG_FINAL_P, FIELD_LOCAL_ALIAS,
12221         FIELD_LOCAL_ALIAS_USED): New macros.
12222         (DECL_FUNCTION_NAP): New macro.
12223         (struct lang_decl): New field `nap'.
12224         (TYPE_FINIT_STMT_LIST, TYPE_CLINIT_STMT_LIST): New macros.
12225         (struct lang_type): New fields `finit_stmt_list' and
12226         `clinit_stmt_list'.
12227         (CLASS_HAS_FINIT_P): Defined using TYPE_FINIT_STMT_LIST.
12228         * parse.h (MANGLE_OUTER_LOCAL_VARIABLE_NAME): New macro.
12229         (SKIP_THIS_AND_ARTIFICIAL_PARMS, MARK_FINAL_PARMS,
12230         UNMARK_FINAL_PARMS, CRAFTED_PARAM_LIST_FIXUP): New macros.
12231         (AIPL_FUNCTION_CREATION, AIPL_FUNCTION_COMPLETED_INVOCATION,
12232         AIPL_FUNCTION_INVOCATION_READY): New enum fields.
12233         (BUILD_THROW): Macro line separator re-indented.
12234         * parse.y (end_class_declaration): New function.
12235         (maybe_generate_pre_expand_clinit): New name for
12236         java_pre_expand_clinit. Create <clinit> off TYPE_CLINIT_STMT_LIST,
12237         pre-expand static fields.
12238         (maybe_generate_clinit): Function deleted.
12239         (check_for_static_method_reference): Prototype's parameter list
12240         indented.
12241         (generate_finit): New name for maybe_generate_finit. Changed
12242         leading comment. Function rewritten to use
12243         TYPE_FINIT_STMT_LIST. Call build_alias_initializer_parameter_list.
12244         (build_alias_initializer_parameter_list): New function.
12245         (java_parser_context_pop_initialized_field): Likewise.
12246         (add_inner_class_fields): Likewise.
12247         (type_declaration:): Call end_class_declaration.
12248         (class_member_declaration:): Likewise.
12249         (formal_parameter_list:): Fixed typos.
12250         (formal_parameter:): Use ARG_FINAL_P to mark created tree list
12251         element. Improved error handling.
12252         (block_statement:): Call end_class_declaration.
12253         (anonymous_class_creation:): Likewise.
12254         (create_anonymous_class): Fixed comments.
12255         (create_class): Call add_inner_class_fields.
12256         (register_fields): Set FIELD_LOCAL_ALIAS according to ARG_FINAL_P.
12257         (method_header): Use MARK_FINAL_PARMS.
12258         (finish_method_declaration): Use UNMARK_FINAL_PARMS.
12259         (method_declarator): Propagate final argument flag.
12260         (craft_constructor): New local `artificial'. Call
12261         build_alias_initializer_parameter_list. Use
12262         CRAFTED_PARAM_LIST_FIXUP, assign DECL_FUNCTION_NAP.
12263         (source_start_java_method): Mark parm decls with LOCAL_FINAL if
12264         necessary.
12265         (complete_expand_class): Get rid of unused outer context local
12266         alias fields.
12267         (java_complete_expand_methods): Fixed leading
12268         comment. Generate/pre-expand <clinit> first. Changed method
12269         expansion order to regular, $finit$, constructors, <clinit>.
12270         (java_complete_expand_method): Set current_function_decl.
12271         (fix_constructors): Fix constructor parameter list to account for
12272         outer context local alias initializers.
12273         (verify_constructor_super): Use SKIP_THIS_AND_ARTIFICIAL_PARMS.
12274         (resolve_expression_name): Lookup outer context local aliases. New
12275         local `access', use it.
12276         (patch_method_invocation): Patch inner class ctor invocation with
12277         outer context local aliases initialization values. $finit$
12278         invocation patching now includes things generated with
12279         build_alias_initializer_parameter_list.
12280         (argument_types_convertible): Use SKIP_THIS_AND_ARTIFICIAL_PARMS.
12281         (build_super_invocation): Likewise.
12282         (patch_assignment): Changed comment.
12283
12284 2000-01-27  Andrew Haley  <aph@cygnus.com>
12285
12286         * jcf-write.c (emit_goto): RESERVE 3 bytes for insn.
12287         (emit_if): Ditto.
12288         (emit_jsr): Ditto.
12289
12290 2000-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12291
12292         * parse.h (OBSOLETE_MODIFIER_WARNING): Don't use ANSI string
12293         concatenation.
12294         (OBSOLETE_MODIFIER_WARNING2): New macro allowing two args.
12295
12296         * parse.y (register_fields): Don't pass a format specifier to
12297         OBSOLETE_MODIFIER_WARNING.
12298         (check_abstract_method_header): Use OBSOLETE_MODIFIER_WARNING2
12299         instead of OBSOLETE_MODIFIER_WARNING, and don't pass a format
12300         specifier.
12301         (check_modifiers): Change function into a macro.
12302         (check_class_interface_creation): Pass a literal format string.
12303
12304 2000-01-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12305
12306         * buffer.h: PROTO -> PARAMS.
12307         * check-init.c: Likewise.
12308         * class.c: Likewise.
12309         * constants.c: Likewise.
12310         * convert.h: Likewise.
12311         * decl.c: Likewise.
12312         * except.c: Likewise.
12313         * expr.c: Likewise.
12314         * gjavah.c: Likewise.
12315         * java-except.h: Likewise.
12316         * java-tree.h: Likewise.
12317         * jcf-depend.c: Likewise.
12318         * jcf-dump.c: Likewise.
12319         * jcf-parse.c: Likewise.
12320         * jcf-path.c: Likewise.
12321         * jcf-reader.c: Likewise.
12322         * jcf-write.c: Likewise.
12323         * jcf.h: Likewise.
12324         * jv-scan.c: Likewise.
12325         * jvgenmain.c: Likewise.
12326         * jvspec.c: Likewise.
12327         * lang.c: Likewise.
12328         * lex.c: Likewise.
12329         * lex.h: Likewise.
12330         * parse-scan.y: Likewise.
12331         * parse.h: Likewise.
12332         * parse.y: Likewise.
12333         * typeck.c: Likewise.
12334         * verify.c: Likewise.
12335         * xref.c: Likewise.
12336         * xref.h: Likewise.
12337         * zextract.c: Likewise.
12338         * zipfile.h: Likewise.
12339
12340 2000-01-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12341
12342         * class.c (make_class): Use MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC.
12343         (is_compiled_class): Remove test on TYPE_LANG_SPECIFIC, use TYPE_JCF.
12344         * constants.c (build_constant_data_ref): Check for cached
12345         current_constant_pool_data_ref. Cache current_constant_pool_data_ref
12346         in TYPE_CPOOL_DATE_REF.
12347         * java-tree.h (TYPE_JCF, TYPE_CPOOL, TYPE_CPOOL_DATA_REF,
12348         MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC:) New macros.
12349         (struct lang_type): New fields `cpool' and `cpool_data_ref'.
12350         (LOCAL_FINAL): New macro.
12351         * jcf-parse.c (init_outgoing_cpool): Always allocate new outgoing
12352         constant pool -- don't try to reuse.
12353         (parse_zip_file_entries): Use TYPE_JCF, don't lazily allocate
12354         TYPE_LANG_SPECIFIC.
12355         (find_in_current_zip): Use TYPE_JCF.
12356         * parse.h (java_check_final): Prototype removed.
12357         * parse.y (create_class): Reversed Jan 12, 2000 extra argument patch.
12358         (maybe_create_class_interface_decl,
12359         check_class_interface_creation): Likewise.
12360         (java_expand_finals): Function removed.
12361         (class_declaration:): Reversed Jan 12, 2000 extra argument patch.
12362         (block_statement:): Fixed comment.
12363         (anonymous_class_creation:): Likewise.
12364         (check_class_interface_creation): Reversed Jan 12, 2000 extra
12365         argument patch.
12366         (check_class_interface_creation): Loosened error report on (inner)
12367         public class declarations. CPC_INNER_P replaces GET_CPC_LIST.
12368         (link_nested_class_to_enclosing): Reversed Jan 12, 2000 patch.
12369         (maybe_create_class_interface_decl): Reversed Jan 12, 2000 extra
12370         argument patch.
12371         (create_interface): Likewise.
12372         (anonymous_class_counter): New static global.
12373         (create_anonymous_class): Reversed Jan 12, 2000 extra argument
12374         patch. Fixed comments.
12375         (create_class): Reversed Jan 12, 2000 extra argument patch. Reset
12376         anonymous_class_counter when declaring a toplevel class.
12377         (craft_constructor): Fixed constructor name when handling
12378         anonymous classes. Anonymous class constructors to feature hidden
12379         this$<n> parameter.
12380         (java_fix_constructors): Added comment.
12381         (java_check_final): Function removed.
12382         (java_complete_expand_methods): Fixed comment. Don't generate
12383         class data, save its outgoing constant pool instead.
12384         (verify_constructor_super): Skip anonymous class constructor
12385         hidden this$<n> parameter.
12386         (java_expand_classes): New local `saved_ctxp'. Removed call to
12387         java_expand_finals and java_check_final. Expand anonymous class
12388         constructors. Generate class data.
12389         (build_super_invocation): Skip anonymous class hidden this$<n>
12390         parameter.
12391         * typeck.c (build_java_signature): Use TYPE_SIGNATURE and
12392         MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC.
12393         (set_java_signature): Likewise.
12394
12395 2000-01-18  Joerg Brunsmann  <joerg.brunsmann@fernuni-hagen.de>
12396
12397         * gjavah.c: Delete ACC_VISIBILITY define.
12398         * jcf.h: Add ACC_VISIBILITY define.
12399         * parse.y: final: rule tagged <value>.
12400         (java_check_regular_methods): Use ACC_VISIBILITY define for
12401         default package access check.
12402         (local_variable_declaration_statement): Use final: rule.
12403
12404 2000-01-17  Joerg Brunsmann  <joerg.brunsmann@fernuni-hagen.de>
12405
12406         * parse.y (format_parameter:): Use final: rule instead of modifiers:.
12407         (final:): New rule.
12408
12409 2000-01-17  Tom Tromey  <tromey@cygnus.com>
12410
12411         * gjavah.c (print_field_info): Allow non-static final fields.
12412
12413 2000-01-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12414
12415         * parse.h (enum jdep_code): New entry `JDEP_ANONYMOUS'.
12416         * parse.y (patch_anonymous_class): New function.
12417         (create_anonymous_class): Register incomplete type when the
12418         class/interface to extends/implement isn't known yet.
12419         (parser_check_super_interface): Simplify argument to CLASS_INTERFACE.
12420         (verify_constructor_super): Tuned error message.
12421
12422 2000-01-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12423
12424         * java-tree.h (FOR_LOOP_P): Replaces IS_FOR_LOOP_P.
12425         (ANONYMOUS_CLASS_P): New macro.
12426         (TYPE_SIGNATURE, TYPE_JCF): New macros.
12427         (INNER_CLASS_TYPE_P): Fixed typo in leading comment.
12428         * parse.y (create_class): Added leading argument.
12429         (maybe_create_class_interface_decl,
12430         check_class_interface_creation): Likewise.
12431         (craft_constructor): New function.
12432         (verify_constructor_super): Added argument in prototype.
12433         (class_declaration:): Inserted leading argument.
12434         (for_begin:): Use FOR_LOOP_P.
12435         (anonymous_class_creation): Create WFL of the anonymous class to
12436         instantiate. Call build_new_invocation. Added comments.
12437         (check_class_interface_creation): Handle parameter `anonymous' in
12438         verbose mode class creation announce.
12439         (link_nested_class_to_enclosing): Exclude anonymous classes.
12440         (maybe_create_class_interface_decl): Don't set DECL_CONTEXT on
12441         anonymous class, even though they appear to have an enclosing
12442         context.
12443         (create_interface): Pass extra argument to
12444         check_class_interface_creation.
12445         (create_anonymous_class): Set ANONYMOUS_CLASS_P to 1.
12446         (create_class): Call check_class_interface_creation and
12447         maybe_create_class_interface_decl with extra new argument. Don't
12448         add private this$<n> to anonymous classes.
12449         (method_declarator): Insert hidden this$<n> to anonymous class
12450         constructors.
12451         (java_fix_constructors): Deleted code creating default
12452         constructor. Call craft_constructor instead.
12453         (java_check_regular_methods): Set `saw_constructor' to 1 for
12454         anonymous classes.
12455         (fix_constructors): Pass extra argument to verify_constructor_super.
12456         (verify_constructor_super): New local `sdecl', use it. Search for
12457         matching constructor (possibly featuring arguments) in super
12458         class.
12459         (lookup_method_invoke): Craft constructor according to arguments
12460         list when dealing with anonymous class constructors.
12461         (build_super_invocation): Pass arguments to anonymous class super
12462         constructors.
12463         (search_loop): Use FOR_LOOP_P.
12464         (labeled_block_contains_loop_p): Likewise.
12465
12466 2000-01-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12467
12468         * class.c (set_super_info): Set CLASS_STATIC when appropriate.
12469         (enclosing_context_p): New function.
12470         (get_access_flags_from_decl): Handle CLASS_STATIC.
12471         (maybe_layout_super_class): Extra first argument passed to
12472         do_resolve_class.
12473         (layout_class_method): Use ID_FINIT_P, DECL_CLINIT_P and
12474         ID_INIT_P.
12475         * decl.c (access0_identifier_node): New global.
12476         (init_decl_processing): access0_identifier_node initialized.
12477         (pushdecl): Set DECL_CONTEXT only on non type decls.
12478         * expr.c (lookup_field): Lookup inner class fields in enclosing
12479         contexts.
12480         (expand_invoke): Use ID_INIT_P.
12481         (expand_java_field_op): Use DECL_CLINIT_P.
12482         * java-tree.def (CLASS_LITERAL): New tree code.
12483         * java-tree.h (DECL_FUNCTION_ACCESS_DECL,
12484         DECL_FUNCTION_INNER_ACCESS, FIELD_INNER_ACCESS): New macros.
12485         (struct lang_decl): New field `inner_access'.
12486         (enclosing_context_p): Prototyped.
12487         (DECL_INIT_P, DECL_FINIT_P, DECL_CLINIT_P, ID_INIT_P, ID_FINIT_P,
12488         ID_CLINIT_P): New macros.
12489         (CLASS_STATIC): New macro.
12490         (CLASS_ACCESS0_GENERATED_P): New macro.
12491         (OUTER_FIELD_ACCESS_IDENTIFIER_P, INNER_CLASS_DECL_P,
12492         TOPLEVEL_CLASS_DECL_P, INNER_CLASS_TYPE_P, TOPLEVEL_CLASS_TYPE_P,
12493         INNER_CLASS_P): New macros.
12494         (DECL_INNER_CLASS_LIST): New macro.
12495         * jcf-parse.c (yyparse): Avoid the use of ANSI string
12496         concatenation.
12497         * jcf-write.c (generate_bytecode_insns): binop: Change the type of
12498         the shift value to int. Fixed typo in comment.
12499         * lex.c (inst_id, wpv_id): Initialize.
12500         * mangle.c (unicode_mangling_length): Take `$' into account.
12501         * parse.h (DRECOVER, RECOVER): Terminate properly.
12502         (IDENTIFIER_INNER_CLASS_OUTER_FIELD_ACCESS): New macro.
12503         (typedef struct _jdep): New field `enclosing'.
12504         (JDEP_ENCLOSING): New macro.
12505         (IS_CLINIT): Deleted (DECL_CLINIT_P replaces it.)
12506         (struct parser_ctxt): New fields `marker_beginning', `marked_end'.
12507         (GET_CPC_LIST, CPC_INNER_P, GET_CPC, GET_CPC_UN, GET_CPC_UN_MODE,
12508         GET_CPC_DECL_NODE, GET_ENCLOSING_CPC, GET_NEXT_ENCLOSING_CPC,
12509         GET_ENCLOSING_CPC_CONTEXT): New macros.
12510         (PUSH_CPC, PUSH_ERROR, POP_CPC): New macros.
12511         (do_resolve_class): Added extra argument in prototype.
12512         * parse.y (resolve_class): Added extra argument in prototype.
12513         (maybe_create_class_interface_decl): Likewise.
12514         (maybe_use_access_method, build_wfl_wrap): New functions.
12515         (java_complete_expand_classes, java_complete_expand_class):
12516         Likewise.
12517         (java_parser_context_push_initialized_field,
12518         java_parser_context_suspend, java_parser_context_resume):
12519         Likewise.
12520         (maybe_make_nested_class_name, make_nested_class_name,
12521         set_nested_class_simple_name_value,
12522         link_nested_class_to_enclosing, find_as_inner_class,
12523         find_as_inner_class_do, check_inner_class_redefinition,
12524         build_thisn_assign, build_current_thisn, build_access_to_thisn,
12525         maybe_build_thisn_access_method, build_outer_field_access,
12526         build_outer_field_access_methods, build_outer_field_access_expr,
12527         build_outer_method_access_method, build_new_access_id,
12528         build_outer_field_access_method, outer_field_access_p,
12529         outer_field_expanded_access_p, outer_field_access_fix,
12530         build_incomplete_class_ref, patch_incomplete_class_ref,
12531         create_anonymous_class): Likewise.
12532         (inst_id, wpv_id): New static global variables.
12533         (synchronized:): New rule, tagged <node>.
12534         (type_declaration:): No longer tagged <node>. Call POP_CPC in sub
12535         rules.
12536         (anonymous_class_creation:): New rule, tagged <node>.
12537         (NEW_TK): Tagged <node>.
12538         (type_literals, array_type_literal): New rules, tagged <node>.
12539         (class_declaration:): Removed action when reducing by class_body:
12540         (class_body:): Set DECL_END_SOURCE_LINE and rule's returned value
12541         using GET_CPC in sub-rules.
12542         (class_member_declaration): Handle inner classes.
12543         (method_declaration): When reducing method_header:, reset
12544         current_function_decl when appropriate.
12545         (method_declarator:): Set the number of formal parameter to 0 for
12546         method declared without arguments.
12547         (constructor_declarator:): Likewise.
12548         (static_initializer:): List of elements kept in a list.
12549         (static:): Rule modifiers: replaces MODIFIER_TK. Enforce correct
12550         use of the keyword `static' for type declarations.
12551         (block_statement:): Handle inner class declarations.
12552         (primary_no_new_array:): Use type_literals:. Fixed comment. Handle
12553         type qualified `this'.
12554         (class_instance_creation_expression): Use anonymous_class_creation:
12555         to handle inner class instances creation. Handle qualified `new'.
12556         (something_dot_new): Added appropriate actions.
12557         (create_new_parser_context): New function.
12558         (java_push_parser_context, java_parser_context_save_global,
12559         java_parser_context_suspend): Use create_new_parser_context.
12560         (check_modifiers): Changed leading comment.
12561         (check_class_interface_creation): Handle interclasses.
12562         (add_superinterfaces): Fixed comment.
12563         (create_interface): Build qualified name from the raw_name instead
12564         of its matching WFL. Push the initialized fields list. raw_name added
12565         as an extra argument to maybe_create_class_interface_decl.
12566         (create_class): Build qualified name from the raw_name instead of
12567         its matching WFL. Removed assignment to current_parsed_class_un.
12568         Call PUSH_ERROR before returning an error. Suspend the current
12569         parser context when processing an inner class. Push the
12570         initialized fields list. raw_name added as an extra argument to
12571         maybe_create_class_interface_decl. Add the private this$<n>
12572         field.
12573         (duplicate_declaration_error_p): Use GET_CPC when calling find_field.
12574         (register_fields): Get the class type from GET_CPC and handle
12575         previous errors.  Added code to handle the creation of static
12576         fields in inner classes. Initialized fields initialization
12577         statements kept in a list of lists.
12578         (maybe_generate_finit): Initialized fields initialization
12579         statements kept in a list of lists. Use GET_CPC.
12580         (maybe_generate_clinit): Likewise.
12581         (method_header): Use GET_CPC and GET_CPC_UN.
12582         (parser_qualified_classname): Handle inner classes.
12583         (register_incomplete_type): Set JDEP_ENCLOSING using GET_CPC.
12584         (java_fix_constructors): Hide pointer to enclosing context
12585         instance in constructor list when dealing with inner classes.
12586         (jdep_resolve_class): Call resolve_class with extra first argument
12587         JDEP_ENCLOSING.
12588         (resolve_class): Add enclosing context as a first extra argument
12589         to do_resolve_class.
12590         (do_resolve_class): Call find_as_inner_class. Handle WFLs
12591         properly.
12592         (resolve_no_layout): Extra argument added to resolve_class
12593         invocation.
12594         (reset_method_name): Use DECL_CLINIT_P, DECL_FINIT_P.
12595         (java_get_real_method_name): Use GET_CPC_UN.
12596         (check_abstract_method_definitions): Use DECL_CLINIT_P.
12597         (java_check_abstract_methods): Handle static method declared in
12598         inner classes by an error.
12599         (java_check_regular_methods): Use DECL_CLINIT_P.
12600         (source_start_java_method): Also set DECL_MAX_LOCALS.
12601         (create_artificial_method): Call java_parser_context_save_global
12602         and java_parser_context_restore_global instead of saving/restoring
12603         the context by hand.
12604         (expand_start_java_method): Improved verbose mode message.
12605         (java_complete_expand_methods): Fixed leading comment. Use
12606         DECL_CLINIT_P.
12607         (fix_constructors): Added assignment to this$<n> if necessary.
12608         (java_expand_classes): Call java_complete_expand_classes instead
12609         of java_complete_expand_methods.
12610         (make_qualified_primary): Simplified.
12611         (merge_qualified_name): Optimized for missing left or right parts.
12612         (resolve_expression_name): Handle access to outer class fields from
12613         interclasses.
12614         (resolve_qualified_expression_name): New macro
12615         RESTORE_THIS_AND_CURRENT_CLASS, used. Handle creation of inner
12616         classes. Report error on non appropriate qualification of
12617         `new'. Handle qualified `this'.
12618         (not_accessible_p): Allow access to outer class private fields from
12619         inner classes.
12620         (patch_method_invocation): Handle method invocations through
12621         access methods and inner class constructor invocations.
12622         (find_applicable_accessible_methods_list): Search enclosing
12623         contexts of an inner class.
12624         (search_applicable_methods_list): Fixed typo.
12625         (argument_types_convertible): Handle inner class constructors'
12626         hidden outer context reference argument.
12627         (qualify_ambiguous_name): Handle qualified `this'.
12628         (java_complete_lhs): Handle use of field accessed through
12629         artificial access methods in various cases of assignments. Handle
12630         CLASS_LITERAL node.
12631         (check_final_assignment): Use DECL_CLINIT_P.
12632         (valid_ref_assignconv_cast_p): Handle the destination being an
12633         enclosing context of the source.
12634         (patch_unaryop): Handle use of field accessed through artificial
12635         access methods.
12636         (patch_return): Use DECL_CLINIT_P.
12637         (patch_throw_statement): Use DECL_CLINIT_P.
12638         (check_thrown_exceptions): Use DECL_FINIT_P and DECL_INIT_P.
12639         * verify.c (verify_jvm_instructions): Use ID_CLINIT_P and
12640         ID_INIT_P.
12641
12642 2000-01-16  Anthony Green  <green@cygnus.com>
12643
12644         * parse.y (build_string_concatenation): Only use
12645         StringBuffer(String) shortcut if String arg is constant.
12646
12647 2000-01-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12648
12649         * jcf-write.c (generate_bytecode_insns): binop: Change the type of
12650         the shift value to int. Fixed typo in comment.
12651
12652 2000-01-11  Mumit Khan  <khan@xraylith.wisc.edu>
12653
12654         * jcf-path.c: Delete PATH_SEPARATOR and DIR_SEPARATOR macros.
12655         * jcf-write.c: Likewise.
12656         * parse.y: Likewise.
12657         * parse.c: Regenerate.
12658
12659 2000-01-09  Anthony Green  <green@cygnus.com>
12660
12661         * jcf-write.c (generate_bytecode_insns): Emit invokeinterface
12662         bytecodes in the correct order.
12663
12664 2000-01-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12665
12666         * Makefile.in (jcf-dump, gcjh): Move ../errors.o before $(LIBS).
12667
12668 2000-01-06  Anthony Green  <green@cygnus.com>
12669
12670         * expr.c (java_lang_expand_expr): Switch to permanent obstack
12671         before building constant array decl.
12672
12673 2000-01-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12674
12675         * jcf-write.c (generate_bytecode_conditional): Fixed indentation in
12676         method invocation and typo in conditional expression.
12677         (generate_bytecode_insns): COND_EXPR can be part of a binop. Issue
12678         the appropriate NOTE_POP.
12679         * parse.y (patch_binop): Shift value mask to feature the right
12680         type.
12681
12682 1999-12-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12683
12684         * class.c (assume_compiled, assume_compiled_node): Add static
12685         prototype.
12686         (add_assume_compiled): Use xmalloc/xstrdup, not malloc/strdup.
12687
12688         * jcf-dump.c (ARRAY_NEW_NUM): Cast long to int in switch.
12689
12690         * jvgenmain.c (usage): Add static prototype with ATTRIBUTE_NORETURN.
12691
12692         * parse.h (OBSOLETE_MODIFIER_WARNING): Rename parameter `modifier'
12693         to `__modifier' to avoid stringifying it.
12694
12695         * parse.y (verify_constructor_circularity): Don't call a variadic
12696         function with a non-literal format string.
12697         (java_check_abstract_methods): Move unreachable code inside
12698         `continue' statement.
12699         (lookup_method_invoke): Call xstrdup, not strdup.
12700
12701         * expr.c (expand_java_field_op): Avoid the use of ANSI string
12702         concatenation.
12703
12704         * jcf-parse.c (yyparse): Likewise.
12705
12706         * jv-scan.c (main): Likewise.
12707
12708 1999-12-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12709
12710         * parse.h (ABSTRACT_CHECK, JCONSTRUCTOR_CHECK,
12711         ERROR_CANT_CONVERT_TO_BOOLEAN, ERROR_CANT_CONVERT_TO_NUMERIC,
12712         ERROR_CAST_NEEDED_TO_INTEGRAL): Avoid the use of ANSI string
12713         concatenation.
12714
12715         * parse.y (synchronized, variable_redefinition_error,
12716         check_class_interface_creation, create_interface, create_class,
12717         method_header, finish_method_declaration,
12718         check_modifiers_consistency, method_declarator,
12719         complete_class_report_errors, check_abstract_method_definitions,
12720         java_check_regular_methods, check_throws_clauses,
12721         java_check_abstract_methods, read_import_dir,
12722         check_pkg_class_access, declare_local_variables, fix_constructors,
12723         cut_identifier_in_qualified, resolve_expression_name,
12724         resolve_qualified_expression_name, patch_method_invocation,
12725         java_complete_lhs, patch_assignment, try_builtin_assignconv,
12726         patch_binop, patch_array_ref, patch_newarray, build_labeled_block,
12727         patch_exit_expr, patch_exit_expr, patch_switch_statement,
12728         patch_try_statement, patch_synchronized_statement,
12729         patch_throw_statement, check_thrown_exceptions,
12730         patch_conditional_expr): Likewise.
12731
12732 1999-12-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12733
12734         * Makefile.in (LIBDEPS): Added gcc's errors.o
12735         (../jcf-dump$(exeext):): Link with gcc's errors.o
12736         (../gcjh$(exeext):): Likewise.
12737         * expr.c (expand_java_NEW): Layout the entire target type instead of
12738         laying out its methods only.
12739         (lookup_field): Layout the class after having loaded it.
12740         * java-tree.h (java_debug_context): Declared.
12741         * jcf-io.c (toplev.h): Included.
12742         (find_class): Removed assignment to jcf's outofsynch
12743         field. Force source file to be read if newer than its matching
12744         class file. Tweaked debug messages.
12745         * jcf-parse.c (jcf_out_of_synch): Deleted.
12746         (read_class): Call to jcf_out_of_synch removed.
12747         * jcf.h (typedef struct JCF): Field `outofsynch' deleted.
12748         (jcf_out_of_synch): Prototype deleted.
12749         * parse.h (struct parser_ctxt): `minus_seen', `java_error_flag',
12750         `deprecated' and `class_err': integer turned into bit-fields.
12751         New bit-fields `saved_data_ctx' and `saved_data'. Fixed comments.
12752         * parse.y (package_list): New global.
12753         (package_declaration:): Record newly parsed package name.
12754         (extra_ctxp_pushed_p): Static global deleted.
12755         (java_parser_context_save_global): Create buffer context for the
12756         purpose of saving globals, if necessary.
12757         (java_parser_context_restore_global): Pop context pushed for the
12758         purpose of saving globals, if necessary.
12759         (java_debug_context_do): New prototype and function.
12760         (java_debug_context): Likewise.
12761         (do_resolve_class): Use already parsed package names to qualify
12762         and lookup class candidate.
12763         (java_pre_expand_clinit): Removed unnecessary local variable.
12764
12765 1999-12-17  Tom Tromey  <tromey@cygnus.com>
12766
12767         * gjavah.c (decode_signature_piece): Print "::" in JArray<>.  This
12768         fixes PR gcj/119.
12769         (process_file): Use `\n\' at end of each line in string.
12770
12771 1999-12-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12772
12773         * expr.c (expand_invoke): Layout the loaded class before
12774         attempting to use it.
12775         (expand_java_field_op): Allow final field assignments to take
12776         place in $finit$.
12777         * typeck.c (convert): Return error_mark_node if expr is null.
12778
12779 1999-12-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12780
12781         * class.c (class_depth): Return -1 if the class doesn't load
12782         properly.
12783         * expr.c (can_widen_reference_to): Check for errors during depth
12784         computation and return 0 accordingly.
12785         * jcf-parse.c (parse_source_file): Call java_fix_constructors to
12786         create default constructors and add an other error check.
12787         * parse.h (java_fix_constructors): Prototyped.
12788         * parse.y (java_pre_expand_clinit): Likewise.
12789         (build_super_invocation): Re-prototyped to feature one argument.
12790         (java_check_circular_reference): Directly use `current'.
12791         (java_fix_constructors): New function.
12792         (java_check_regular_methods): Don't create default constructors
12793         here, but abort if none were found.
12794         (java_complete_expand_methods): Pre-process <clinit> calling
12795         java_pre_expand_clinit.
12796         (java_pre_expand_clinit): New function.
12797         (fix_constructors): build_super_invocation invoked with the
12798         current method declaration as an argument.
12799         (build_super_invocation): Use the context of the processed method
12800         decl argument instead of current_class.
12801         * typeck.c (lookup_java_method): Take WFLs in method names into
12802         account.
12803
12804 1999-12-14  Per Bothner  <per@bothner.com>
12805
12806         * class.c (make_class_data): flag_keep_inline_functions to keep
12807         private methods in the method array.
12808
12809 1999-12-15  Anthony Green  <green@cygnus.com>
12810
12811         * check-init.c (check_init): Take into account both types of
12812         `throw's when checking for uninitialized variables.
12813
12814 1999-12-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12815
12816         * parse.y (java_complete_lhs): Force conversion of array
12817         dimensions to int_type_node, that's what runtime's ABI expects.
12818
12819 1999-12-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12820
12821         * parse.h (EXPR_WFL_QUALIFICATION): Temporary uses the third
12822         operand of a WFL, until the Java front-end gets fixed with regard
12823         to Mark Mitchell's gcc/tree.h patch (1999-12-04.)
12824
12825 1999-12-10  Andrew Haley  <aph@cygnus.com>
12826
12827         * parse.h (BUILD_THROW): Add support for sjlj-exceptions.
12828         decl.c (init_decl_processing): Add _Jv_Sjlj_Throw.
12829         expr.c (build_java_athrow): Add support for sjlj-exceptions.
12830         java-tree.h: Ditto.
12831         jcf-write.c: Ditto.
12832
12833 1999-12-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12834
12835         * expr.c (java_lang_expand_expr): Switch to permanent obstack
12836         before calling expand_eh_region_start and expand_start_all_catch.
12837         * except.c (expand_start_java_handler): Switch to permanent
12838         obstack before calling expand_eh_region_start.
12839         (expand_end_java_handler): Switch to permanent obstack before
12840         calling expand_start_all_catch.
12841
12842 1999-12-5  Anthony Green  <green@cygnus.com>
12843
12844         * decl.c (init_decl_processing): Mark throw_node as a noreturn
12845         function with side effects.
12846         (init_decl_processing): Mark all memory allocating DECLs with
12847         DECL_IS_MALLOC.
12848
12849 1999-12-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12850
12851         * except.c (expand_end_java_handler): Call
12852         expand_resume_after_catch and end_catch_handler.
12853
12854 1999-11-30  Anthony Green  <green@cygnus.com>
12855
12856         * verify.c (verify_jvm_instructions): Create new return label
12857         chain if non existent (don't rely on the verified state of the jsr
12858         target.)
12859
12860 1999-11-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12861
12862         * jcf-write.c (generate_bytecode_insns): Fixed indentation for
12863         COMPOUND_EXPR and FIX_TRUNC_EXPR cases.
12864
12865         * parse.y (patch_assignment): Removed bogus final class test on
12866         lhs when checking on whether to emit an ArrayStoreException runtime
12867         check.
12868         * expr.c (expand_java_arraystore): Likewise.
12869
12870 1999-11-28 Anthony Green <green@cygnus.com>
12871
12872         * decl.c (find_local_variable): Reuse single slot decls when
12873           appropriate.
12874
12875 1999-11-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12876
12877         * jcf-parse.c (saw_java_source): Global variable removed.
12878         (read_class): Don't use `saw_java_source'. Added extra braces.
12879         (yyparse): Code setting `saw_java_source' removed.
12880
12881 1999-11-24  Mark Mitchell  <mark@codesourcery.com>
12882
12883         * except.c (emit_handlers): Zero catch_clauses after emitting them.
12884
12885 1999-11-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12886
12887         * verify.c (merge_type_state): Non verified subroutines being
12888         considered more than once to trigger passive type merge.
12889
12890 1999-11-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12891
12892         * parse.y (catch_clause_parameter:): Still set `$$' to NULL_TREE
12893         in case of error. Error message tuned.
12894
12895 1999-11-21  Anthony Green  <green@cygnus.com>
12896
12897         * constants.c (find_methodref_index): Unwrap method names before
12898         inserting them in the constant pool.
12899
12900         * jcf-parse.c (jcf_parse): Display `interface' when appropriate.
12901
12902         * class.c (assume_compiled_node): New typedef.
12903         (assume_compiled_tree): New static data.
12904         (find_assume_compiled_node): New function.
12905         (add_assume_compiled): New function.
12906         (assume_compiled): New function.
12907         * class.c (make_class_data): Use assume_compiled.
12908         (is_compiled_class): Use assume_compiled.
12909
12910         * java-tree.h (add_assume_compiled): Declare.
12911
12912         * lang.c (lang_decode_option): Parse new options.
12913
12914 1999-11-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12915
12916         * class.c (layout_class): Always convert TYPE_SIZE_UNIT to
12917         int_type_node: that's what `_Jv_AllocObject' expects.
12918
12919 1999-11-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12920
12921         * parse.y (lookup_method_invoke): Use lang_printable_name to
12922         reliably build the type name during error report. Fixes PR gcj/97.
12923
12924 1999-11-09  Tom Tromey  <tromey@cygnus.com>
12925
12926         * jcf-path.c: Include <sys/stat.h>.
12927         (jcf_path_init): Search for libjava.zip.  Fixes PR gcj/84.
12928         (DIR_UP): New macro.
12929
12930 1999-11-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12931
12932         * parse.y (source_end_java_method): Resume permanent allocation,
12933         reversing Apr 27 1998 patch.
12934         (patch_string_cst): Pop obstacks after having pushed the permanent
12935         ones.
12936
12937 1999-11-05  Tom Tromey  <tromey@cygnus.com>
12938
12939         * class.c (finish_class): Emit inlined methods if any native
12940         methods exist in the class.  Fixes PR gcj/85.
12941
12942 1999-11-04  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12943
12944         * parse.y (resolve_qualified_expression_name): Handle PLUS_EXPR.
12945         (qualify_ambiguous_name): Likewise.
12946
12947 1999-11-03  Godmar Back <gback@cs.utah.edu>
12948
12949         * typeck.c: (lookup_java_method):  search all inherited
12950         interfaces when looking up interface method.
12951
12952 1999-11-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12953
12954         * parse.y (method_header:): Issue error message for rule `type
12955         error'.
12956         (synchronized:): Error report when not using synchronized.
12957
12958 1999-11-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12959
12960         * parse.y (resolve_qualified_expression_name): Prevent `this' from
12961         being used before the superclass constructor has been called.
12962         (complete_function_arguments): Use CALL_EXPLICIT_CONSTRUCTOR_P
12963         instead of `CALL_THIS_CONSTRUCTOR_P'.
12964
12965 1999-10-30  Todd T. Fries <todd@lighthouse.fries.net>
12966
12967         * check-init.c: Fix typo in comment.
12968
12969 1999-10-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12970
12971         * class.c (add_method_1): Set DECL_INLINE to 1 for private, static
12972         and final method.
12973
12974 1999-10-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12975
12976         * parse.y (expression_statement:): Call function to report
12977         improper invocation of a constructor.
12978         (parse_ctor_invocation_error): New function.
12979
12980 1999-10-26  Mark Mitchell  <mark@codesourcery.com>
12981
12982         * decl.c (poplevel): Don't set BLOCK_TYPE_TAGS or call
12983         remember_end_note.
12984
12985 1999-10-21  Tom Tromey  <tromey@cygnus.com>
12986
12987         * jvgenmain.c (main): _Jv_Compiler_Properties now an extern; set
12988         in generated `main'.
12989
12990 1999-10-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12991
12992         * parse.y (resolve_qualified_expression_name): Handle MODIFY_EXPR.
12993         (qualify_ambiguous_name): Likewise.
12994
12995 1999-10-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12996
12997         * parse.y (java_complete_tree): fold_constant_for_init to work on
12998         permanent_obstack.
12999         (java_complete_lhs): Likewise.
13000         (array_constructor_check_entry): Complete an initializer element
13001         on permanent_obstack.
13002
13003 1999-10-19  Tom Tromey  <tromey@cygnus.com>
13004
13005         * jcf-parse.c (parse_source_file): Call jcf_dependency_add_file.
13006         From Mike Moreton <mike@pillim.demon.co.uk>.
13007
13008 1999-10-15  Greg McGary  <gkm@gnu.org>
13009
13010         * java-tree.h (flag_bounds_check): Remove extern decl.
13011         * lang.c (flag_bounds_check): Remove global variable.
13012         (lang_f_options): Remove "bounds-check" entry.
13013         (lang_init_options): Default flag_bounds_check to "on".
13014
13015 1999-10-14  Tom Tromey  <tromey@cygnus.com>
13016
13017         * jvgenmain.c (usage): New function.
13018         (main): Use it.  Also, handle `-D' options.
13019         * jvspec.c (lang_specific_driver): Recognize -D.
13020         (jvgenmain_spec): Added `%{D*}' to jvgenmain invocation.
13021
13022         * jvspec.c (jvgenmain_spec): Use `%umain', not just `%u'.
13023
13024 1999-10-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13025
13026         * jcf-dump.c (print_constant, disassemble_method): Don't call a
13027         variadic function with a non-literal format string.
13028
13029         * parse-scan.y (report_main_declaration): Likewise.
13030
13031         * parse.h (ERROR_CAST_NEEDED_TO_INTEGRAL): Likewise.
13032
13033         * parse.y (read_import_dir, patch_assignment, patch_binop,
13034         patch_array_ref): Likewise.
13035
13036         * typeck.c (build_java_array_type): Likewise.
13037
13038         * verify.c (verify_jvm_instructions): Likewise.
13039
13040 1999-10-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13041
13042         * jcf-write.c (RELOCATION_VALUE_1): Fixed integer value from 0 to 1.
13043
13044 1999-10-07  Anthony Green  <green@cygnus.com>
13045
13046         * jcf-write.c (generate_classfile): Use UNSAFE_PUTx in cases
13047         where CHECK_PUT may fail for valid reasons.
13048
13049         * jcf-write.c (UNSAFE_PUT1, UNSAFE_PUT2, UNSAFE_PUT3,
13050         UNSAFE_PUTN): New macros.
13051
13052 1999-10-04  Tom Tromey  <tromey@cygnus.com>
13053
13054         * lex.h (BUILD_OPERATOR2): Return ASSIGN_ANY_TK in `lite' case as
13055         well.  Fixes Java PR gcj/59.
13056         * parse-scan.y (yyerror): Report errors.
13057
13058 1999-09-24  Glenn Chambers  <GChambers@provsol.com>
13059
13060         * decl.c (insert_block): Remove unconditional `abort'.
13061
13062 1999-09-24  Bernd Schmidt  <bernds@cygnus.co.uk>
13063
13064         * decl.c (builtin_function): No longer static.  New arg CLASS.  Arg
13065         FUNCTION_CODE now of type int.  All callers changed.
13066         Set the builtin's DECL_BUILT_IN_CLASS.
13067
13068 1999-09-23  Tom Tromey  <tromey@cygnus.com>
13069
13070         * jvspec.c (lang_specific_driver): Don't read spec file if
13071         -fsyntax-only given.
13072
13073 1999-09-22  Tom Tromey  <tromey@cygnus.com>
13074
13075         * lang-specs.h: Added `%(jc1)' to the jc1 spec.
13076
13077         * javaop.h (WORD_TO_FLOAT): Use `inline' unconditionally.
13078         (WORDS_TO_LONG): Likewise.
13079         (WORDS_TO_DOUBLE): Likewise.
13080
13081 1999-09-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13082
13083         * jcf-write.c (RELOCATION_VALUE_0): New macro.
13084         (RELOCATION_VALUE_1): Likewise.
13085         (emit_iinc, emit_reloc, push_constant1, push_constant2,
13086         push_in_const, push_long_const): Prototyped.
13087         (push_constant1): Argument `index' is of type HOST_WIDE_INT.
13088         (push_constant2): Likewise.
13089         (push_int_const): Cast find_constant1's integer arguments to `jword'.
13090         (find_constant_wide): Cast find_constant2's integer arguments to
13091         `jword'.
13092         (find_constant_index): Cast find_constant2's and find_constant2's
13093         integer arguments to `jword'.
13094         (emit_pop): Argument `value' is of type HOST_WIDE_INT.
13095         (emit_switch_reloc): Use RELOCATION_VALUE_0.
13096         (emit_if): Use RELOCATION_VALUE_1.
13097         (emit_goto): Likewise.
13098         (emit_jsr): Likewise.
13099         (generate_bytecode_insns): Use RELOCATION_VALUE_0. Cast second
13100         argument to push_long_const to HOST_WIDE_INT.
13101
13102 1999-09-15  Andreas Schwab  <schwab@suse.de>
13103
13104         * Makefile.in (parse.o): Depend on $(JAVA_TREE_H).
13105
13106 1999-09-20  Nick Clifton  <nickc@cygnus.com>
13107
13108         * lang.c (lang_decode_option): Extend comment.
13109
13110 1999-09-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13111
13112         * parse.y (java_method_add_stmt): Test against GET_CURRENT_BLOCK
13113         instead of fndecl.
13114
13115 1999-09-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13116
13117         * gjavah.c (get_field_name, print_method_info, print_include,
13118         add_namelet): Use xmalloc, not malloc.
13119
13120         * jcf-depend.c (add_entry): Likewise.  Use xstrdup, not strdup.
13121         (munge): Use xrealloc, not realloc, trust xrealloc to handle a
13122         NULL pointer.
13123
13124         * jcf-io.c (open_in_zip, find_class): Use xstrdup, not strdup.
13125
13126         * jcf-parse.c (jcf_out_of_synch, yyparse): Likewise.
13127
13128         * jcf-path.c (add_entry): Likewise.
13129
13130         * jcf.h (ALLOC, REALLOC): Use xmalloc/xrealloc, not malloc/realloc.
13131
13132         * jv-scan.c (xmalloc): Remove definition.
13133
13134         * jvgenmain.c (xmalloc): Likewise.
13135
13136         * jvspec.c (lang_specific_driver): Use xcalloc, not xmalloc/bzero.
13137
13138         * lex.c (java_store_unicode): Use xrealloc, not realloc.
13139
13140         * parse-scan.y: Use concat, not of xmalloc/assign/strcpy.  Use
13141         concat, not xmalloc/sprintf.
13142         (java_push_parser_context): Use xcalloc, not xmalloc/bzero.
13143         (xstrdup): Remove definition.
13144
13145         * parse.y (duplicate_declaration_error_p,
13146         constructor_circularity_msg, verify_constructor_circularity,
13147         check_abstract_method_definitions, java_check_regular_methods,
13148         java_check_abstract_methods, patch_method_invocation,
13149         check_for_static_method_reference, patch_assignment, patch_binop,
13150         patch_cast, array_constructor_check_entry, patch_return,
13151         patch_conditional_expr): Use xstrdup, not strdup.
13152
13153         * zextract.c (ALLOC): Use xmalloc, not malloc.
13154
13155 1999-09-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13156
13157         * Make-lang.in (jvspec.o): Depend on system.h and gcc.h.
13158
13159         * jvspec.c: Include gcc.h.  Don't include gansidecl.h.
13160         (do_spec, lang_specific_pre_link, lang_specific_driver,
13161         input_filename, input_filename_length): Don't declare.
13162         (main_class_name, jvgenmain_spec, lang_specific_driver):
13163         Constify a char*.
13164         (lang_specific_driver): All calls to the function pointer
13165         parameter now explicitly call `fatal'.
13166
13167 1999-09-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13168
13169         * parse.y (find_applicable_accessible_methods_list): Search
13170         abstract classes as interfaces.
13171
13172 1999-09-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13173
13174         * class.c (finish_class): We're now outside a valid method
13175         declaration. Tell the rest of gcc so.
13176
13177 1999-09-08  Bruce Korb  autogen@linuxbox.com
13178
13179         * Makefile.in: Give the gperf user a hint about why "gperf -F" fails.
13180
13181 1999-09-07  Tom Tromey  <tromey@cygnus.com>
13182
13183         * gjavah.c (add_class_decl): Generate include for gcj/array.h, not
13184         java-array.h.
13185         (decode_signature_piece): Don't emit "::" in JArray<>.
13186         (print_namelet): Only print trailing `;' when printing a class.
13187
13188 1999-09-10  Bernd Schmidt  <bernds@cygnus.co.uk>
13189
13190         * java-tree.h: Delete declarations for all tree nodes now moved to
13191         global_trees.
13192         * decl.c: Delete their definitions.
13193
13194 1999-09-04  Mark Mitchell  <mark@codesourcery.com>
13195
13196         * Make-lang.in (jc1): Depend on ggc-callbacks.o.
13197         * Makefile.in (OBJS): Add ggc-callbacks.o.
13198         (OBJDEPS): Likewise.
13199
13200 1999-09-03  Tom Tromey  <tromey@cygnus.com>
13201
13202         * parse.y (strip_out_static_field_access_decl): Return operand if
13203         it satisfies JDECL_P.
13204
13205 1999-09-02  Tom Tromey  <tromey@cygnus.com>
13206
13207         * gjavah.c (decode_signature_piece): Emit "::" in JArray<>.
13208         Handle nested arrays, like `[[I'.
13209
13210 1999-09-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13211
13212         * class.c (finish_class): Remove unused parameter, all callers
13213         changed.
13214
13215         * expr.c (build_java_athrow): Change return type to void.
13216         (java_lang_expand_expr): Make sure each case in switch returns a
13217         value.
13218
13219         * java-tree.h (finish_class): Fix prototype to take void args.
13220
13221         * jcf-dump.c (usage): Mark with ATTRIBUTE_NORETURN.
13222         (main): Issue return from main, not exit.
13223
13224         * jcf-parse.c (parse_class_file): Fix call to `finish_class'.
13225
13226         * jcf.h (jcf_unexpected_eof): Mark with ATTRIBUTE_NORETURN.
13227
13228         * jv-scan.c (main): Issue return from main, not exit.
13229
13230         * parse.y (check_abstract_method_definitions,
13231         java_check_abstract_method_definitions): Add static prototypes.
13232         (java_complete_expand_methods): Fix call to `finish_class'.
13233
13234         * verify.c (verify_jvm_instructions): Initialize variables `oldpc'
13235         and `prevpc'.
13236
13237 1999-08-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13238
13239         * lang.c (language_string): Constify.
13240
13241 1999-08-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13242
13243         * Makefile.in (LIBS): Fix definition so we link with $(CLIB).
13244         Remove hacks for stuff which comes from libiberty.
13245
13246         * Make-lang.in: Likewise.
13247
13248 1999-08-30  Hans-Peter Nilsson  <hp@axis.se>
13249
13250         * Makefile.in (xref.o): Depend on xref.c explicitly.
13251
13252 1999-08-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13253
13254         * java-tree.h (lang_printable_name): Constify a char*.
13255
13256         * lang.c (lang_printable_name): Likewise.
13257
13258 1999-08-27  Jeffrey A Law  (law@cygnus.com)
13259
13260         * gjavah.c, jcf-write.c, verify.c: Do not use C++ style
13261         comments in C code.
13262
13263 1999-08-26  Tom Tromey  <tromey@cygnus.com>
13264
13265         * gjavah.c (print_cxx_classname): Print "::" before qualified
13266         name.
13267
13268 1999-08-26  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13269
13270         * parse.y (lookup_cl): Changed leading comment. Now does its best
13271         to set the column number.
13272         (qualify_ambiguous_name): Take WFL wrappers into account.
13273
13274 1999-08-25  Gregg Townsend  <gmt@cs.arizona.edu>
13275
13276         * verify.c (verify_jvm_instructions): Don't check instruction
13277         validity beyond end of method.
13278
13279 1999-08-25  Tom Tromey  <tromey@cygnus.com>
13280
13281         * jvspec.c (lang_specific_driver): Correctly handle --help again.
13282
13283 1999-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13284
13285         * gjavah.c (print_name, print_base_classname, utf8_cmp,
13286         cxx_keyword_subst, generate_access, name_is_method_p,
13287         get_field_name, print_field_name, super_class_name, print_include,
13288         decode_signature_piece, print_class_decls, usage, help,
13289         java_no_argument, version, add_namelet, print_namelet): Add static
13290         prototype.
13291         (print_base_classname, utf8_cmp, cxx_keyword_subst,
13292         name_is_method_p): Constify a char*.
13293         (get_field_name): Likewise.  Prefer xstrdup over malloc/strcpy.
13294         Provide a final else clause in an if-else-if.
13295         (print_field_info): Add missing final arg in function call to
13296         `print_field_name'.
13297         (print_method_info, decompile_method, decode_signature_piece,
13298         print_c_decl, print_full_cxx_name, print_stub,
13299         print_mangled_classname, super_class_name, print_include,
13300         add_namelet, add_class_decl, print_class_decls, process_file,
13301         help): Constify a char*.
13302
13303         * jcf-write.c (jcf_handler, push_constant1, push_constant2,
13304         push_int_const, find_constant_wide, find_constant_index,
13305         push_long_const, field_op, maybe_wide, emit_dup, emit_pop,
13306         emit_iinc, emit_load_or_store, emit_load, emit_store, emit_unop,
13307         emit_binop, emit_reloc, emit_switch_reloc, emit_case_reloc,
13308         emit_if, emit_goto, emit_jsr, call_cleanups,
13309         make_class_file_name): Add static prototypes.
13310         (generate_bytecode_return, generate_bytecode_insns): Pass a
13311         NULL_PTR, not a NULL_TREE.
13312
13313         * jv-scan.c: Include "jcf.h".
13314         (main): Declare using DEFUN macro.
13315
13316         * jvspec.c (find_spec_file, lang_specific_pre_link,
13317         lang_specific_driver): Add prototypes.
13318         (find_spec_file): Constify a char*.
13319
13320         * keyword.gperf (hash, java_keyword): Add prototypes.
13321
13322         * lang.c (lang_print_error): Add static prototype.
13323         (lang_init): Prefer memcpy over bcopy to avoid casts.
13324
13325         * lex.c (yylex): Add static prototype.
13326
13327         * parse-scan.y: Include "lex.c" earlier.
13328
13329         * parse.h: Remove redundant declaration for `yylex'.
13330
13331         * parse.y (java_decl_equiv, binop_compound_p, search_loop,
13332         labeled_block_contains_loop_p): Add static prototypes.
13333         (not_accessible_p): Make static to match prototype.
13334
13335         * verify.c (start_pc_cmp): Don't needlessly cast away const.
13336
13337 1999-08-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13338
13339         * parse.y (check_method_redefinition): Changed leading comment.
13340         (check_abstract_method_definitions): New function.
13341         (java_check_abstract_method_definitions): New function.
13342         (java_check_regular_methods): Call it.
13343         (verify_constructor_super): Fixed indentation.
13344         (lookup_method_invoke): Likewise.
13345
13346 1999-08-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13347
13348         * parse.y (method_header): Return a null pointer if the current
13349         class node is null.
13350         (finish_method_declaration): Return if the current function decl
13351         is null.
13352         (source_start_java_method): Likewise.
13353         (java_method_add_stmt): Likewise.
13354
13355 1999-08-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13356
13357         * class.c (emit_register_class): Removed unnecessary call to
13358         start_sequence.
13359         * parse.y (labeled_block_contains_loop_p): Removed unused local
13360         variable.
13361
13362 1999-08-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13363
13364         * parse.y (java_refold): Added prototype.
13365
13366 1999-08-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13367
13368         * parse.y (BINOP_COMPOUND_CANDIDATES): New macro.
13369         (java_stabilize_reference): Removed unnecessary `else'.
13370         (java_complete_lhs): Set flag to remember boolean. Call
13371         java_refold. Added comments.
13372         (java_decl_equiv): New function.
13373         (binop_compound_p): Likewise.
13374         (java_refold): Likewise.
13375         (patch_unaryop): Striped static field access assigned to decl and
13376         op. Changed promotion scheme for ++/-- operators.
13377         (search_loop): New function.
13378         (labeled_block_contains_loop_p): Likewise.
13379         (patch_loop_statement): Call labeled_block_contains_loop_p. Added
13380         comment.
13381         (patch_bc_statement): Call search_loop. Fixed comment.
13382
13383 1999-08-14  Anthony Green  <green@cygnus.com>
13384
13385         * expr.c (java_lang_expand_expr): Mark static array data as
13386         referenced.
13387
13388 1999-08-10  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
13389
13390         * jvgenmain.c (main): NUL-terminate name_obstack.
13391
13392 1999-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13393
13394         * check-init.c (check_bool2_init, done_alternative): Add static
13395         prototypes.
13396
13397         * class.c (add_interface_do, maybe_layout_super_class): Likewise.
13398         (add_method, build_utf8_ref, build_class_ref,
13399         append_gpp_mangled_type, layout_class_method): Constify a char*.
13400
13401         * decl.c (push_promoted_type, make_binding_level): Add static
13402         prototypes.
13403         (push_promoted_type, pushdecl): Constify a char*.
13404
13405         * except.c (find_handler_in_range, link_handler,
13406         check_start_handlers): Add static prototypes.
13407
13408         * expr.c (process_jvm_instruction): Constify a char*.
13409
13410         * gjavah.c (main): Constify a char*.
13411
13412         * java-tree.h (verify_jvm_instructions, process_jvm_instruction):
13413         Constify a char*.
13414
13415         * jcf-depend.c (free_entry, add_entry, munge, print_ents): Add
13416         static prototypes.
13417         (add_entry, jcf_dependency_set_target, jcf_dependency_add_target,
13418         munge, print_ents): Constify a char*.
13419
13420         * jcf-dump.c (disassemble_method): Constify a char*.
13421         (print_constant_pool, print_exception_table): Add static prototypes.
13422         (print_constant, print_exception_table, main, disassemble_method):
13423         Constify a char*.
13424
13425         * jcf-io.c (find_classfile, find_class): Likewise.
13426
13427         * jcf-parse.c (JPOOL_UTF_DATA, find_in_current_zip): Likewise.
13428         (set_source_filename, predefined_filename_p): Add static prototypes.
13429         (set_source_filename, get_constant, get_class_constant,
13430         find_in_current_zip): Constify a char*.
13431
13432         * jcf-path.c (free_entry, append_entry, add_entry, add_path): Add
13433         static prototypes.
13434         (add_entry, add_path, jcf_path_classpath_arg,
13435         jcf_path_CLASSPATH_arg, jcf_path_include_arg): Constify a char*.
13436
13437         * jcf-reader.c (get_attribute, jcf_parse_preamble,
13438         jcf_parse_constant_pool, jcf_parse_class, jcf_parse_fields,
13439         jcf_parse_one_method, jcf_parse_methods,
13440         jcf_parse_final_attributes): Add static prototypes.
13441         (get_attribute): Constify a char*.
13442
13443         * jcf.h (find_class, find_classfile, jcf_dependency_set_target,
13444         jcf_dependency_add_target, jcf_path_classpath_arg,
13445         jcf_path_CLASSPATH_arg, jcf_path_include_arg): Constify a char*.
13446
13447         * jv-scan.c (main): Constify a char*.
13448         (gcc_obstack_init): Add prototype arguments.
13449
13450         * jvgenmain.c (gcc_obstack_init): Likewise.
13451         (main): Constify a char*.
13452
13453         * lang.c (put_decl_string, put_decl_node, java_dummy_print): Add
13454         static prototypes.
13455         (put_decl_string, lang_print_error): Constify a char*.
13456         (lang_init): Remove redundant extern prototype.
13457
13458         * mangle.c (emit_unicode_mangled_name): Constify a char*.
13459
13460         * typeck.c (convert_ieee_real_to_integer, parse_signature_type):
13461         Add static prototypes.
13462         (get_type_from_signature): Constify a char*.
13463
13464         * verify.c (check_pending_block, type_stack_dup, start_pc_cmp ):
13465         Add static prototypes.
13466         (start_pc_cmp): Prefer PTR over GENERIC_PTR.
13467         (verify_jvm_instructions): Constify a char*.
13468
13469         * xref.c (xref_flag_value): Likewise.
13470
13471         * xref.h (xref_flag_value): Likewise.
13472
13473         * zextract.c (makeword, makelong): Add static prototypes.
13474         (makeword, makelong): Constify a uch*.
13475
13476 1999-08-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13477
13478         * lang.c (java_dummy_print): Constify a char*.
13479         (lang_print_error): Likewise.
13480         (lang_init): Remove redundant prototype for `print_error_function'.
13481         (lang_init_source): Likewise.
13482         (lang_identify): Constify a char*.
13483
13484 1999-08-09  Tom Tromey  <tromey@cygnus.com>
13485
13486         * javaop.h (WORD_TO_FLOAT): only inline if building with gcc.
13487         (WORDS_TO_LONG): Likewise.
13488         (WORDS_TO_DOUBLE): Likewise.
13489
13490 1999-08-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13491
13492         * Makefile.in (lang.o): Depend on $(RTL_H) $(EXPR_H).
13493
13494         * expr.c (java_stack_pop, java_array_data_offset,
13495         build_java_throw_out_of_bounds_exception, case_identity,
13496         build_java_check_indexed_type): Add static prototypes.
13497         (linenumber_table, expand_invoke, expand_java_field_op,
13498         build_primtype_type_ref, expand_byte_code): Constify a char*.
13499
13500         * java-tree.h (build_primtype_type_ref, linenumber_table):
13501         Constify a char*.
13502         (java_lang_expand_expr): Add prototype.
13503
13504         * lang.c: Include rtl.h and expr.h.  Remove extern prototype for
13505         `java_lang_expand_expr'.
13506
13507         * lex.c (java_lex_error): Constify a char*.
13508         (java_get_unicode, java_read_char, java_allocate_new_line,
13509         java_unget_unicode, java_sneak_unicode): Prototype.
13510
13511         * parse-scan.y (current_class, package_name, method_declarator,
13512         report_class_declaration, yyerror): Constify a char*.
13513
13514         * parse.h (java_report_errors): Prototype.
13515         (yyerror): Constify a char*.
13516
13517         * parse.y (classitf_redefinition_error, check_modifiers,
13518         parse_jdk1_1_error, lookup_package_type,
13519         lookup_package_type_and_set_next, get_printable_method_name,
13520         purify_type_name): Constify a char*.
13521         (build_super_invocation, maybe_generate_finit,
13522         verify_constructor_super, parser_add_interface,
13523         add_superinterfaces, jdep_resolve_class, note_possible_classname,
13524         java_complete_expand_methods, java_expand_finals,
13525         cut_identifier_in_qualified, java_stabilize_reference,
13526         do_unary_numeric_promotion, operator_string, do_merge_string_cste,
13527         merge_string_cste): Prototype.
13528         (single_type_import_declaration, yyerror,
13529         variable_redefinition_error, build_array_from_name,
13530         build_unresolved_array_type, check_class_interface_creation,
13531         resolve_class, complete_class_report_errors,
13532         note_possible_classname, read_import_dir,
13533         find_in_imports_on_demand, resolve_package, fix_constructors,
13534         check_deprecation, lookup_method_invoke,
13535         maybe_build_primttype_type_ref, array_constructor_check_entry):
13536         Constify a char*.
13537         (java_complete_expand_methods, java_expand_finals): Make static.
13538         (convert_narrow): Remove static prototype.
13539
13540 1999-08-03  J"orn Rennecke <amylaar@cygnus.co.uk>
13541
13542         * Makefile.in (decl.o): Depends on $(srcdir)/../defaults.h.
13543
13544 1999-08-02  Richard Henderson  <rth@cygnus.com>
13545
13546         * decl.c: Include defaults.h instead of expr.h.
13547         * parse.y: Likewise.
13548
13549 1999-08-02  Jakub Jelinek  <jj@ultra.linux.cz>
13550
13551         * java/decl.c (start_java_method): Change all uses of
13552         PROMOTE_PROTOTYPES, so that it tests it as a C expression.
13553         Ensure expr.h is included.
13554         * java/expr.c (pop_arguments): Ditto.
13555         * java/parse.y (expand_start_java_method): Ditto.
13556
13557 1999-08-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13558
13559         * Makefile.in (ALL_CFLAGS): Add '-W -Wall'.
13560
13561 1999-07-31  Bernd Schmidt  <bernds@cygnus.co.uk>
13562
13563         * decl.c: Include "function.h".
13564         * except.c: Likewise.
13565         * parse.y: Likewise.
13566         * Makefile.in: Update dependencies.
13567
13568 1999-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13569
13570         * expr.c (build_java_soft_divmod): Provide a default case in switch.
13571         (java_lang_expand_expr): Mark parameters `target', `tmode' and
13572         `modifier' with ATTRIBUTE_UNUSED.
13573
13574         * gjavah.c (process_file): Add braces around ambiguous `else'.
13575
13576         * jcf-dump.c (print_access_flags, localvar_free): Change return
13577         type to void.
13578
13579         * parse.y (java_complete_expand_method): Initialize variable
13580         `exception_copy'.
13581         (resolve_qualified_expression_name): Likewise for `field_decl'.
13582         (patch_method_invocation): Likewise for `class_to_search'.
13583         (qualify_ambiguous_name): Likewise for `name' and `ptr_type'.
13584         (patch_assignment): Likewise for `lhs_type'.
13585
13586         * verify.c (verify_jvm_instructions): Remove unused variable
13587         `caller'.
13588
13589 1999-07-25  Richard Henderson  <rth@cygnus.com>
13590
13591         * decl.c (va_list_type_node): New.
13592
13593 1999-07-25  Anthony Green  <green@cygnus.com>
13594
13595         * gjavah.c (print_stub): New function.
13596         (METHOD_IS_NATIVE): New macro.
13597         (print_mangled_classname): Make static.
13598         (HANDLE_END_FIELD): Don't emit fields during stub generation.
13599         (process_file): Perform stub generation.
13600         (HANDLE_METHOD): Don't emit class decls during stub
13601         generation.
13602         (HANDLE_END_METHOD): Take into account stub generation.
13603         (print_method_info): Handle stub generation.
13604         (print_stub): New function.
13605         (print_cxx_classname): Make signature consistant with others.
13606         (help): Describe -stubs option.
13607         (main): Create stub file.
13608         (version): Use version.c.
13609         (print_full_cxx_name): New function.
13610         (print_c_decl): Use print_full_cxx_name.
13611
13612 1999-07-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13613
13614         * check-init.c (check_init): Handle MAX_EXPR.
13615
13616 1999-07-15  Andrew Haley  <aph@cygnus.com>
13617
13618         * lang.c (flag_use_divide_subroutine): New variable.
13619         * typeck.c: (convert_ieee_real_to_integer): Bounds check
13620         fp-to-integer conversion.
13621         (convert): Call convert_ieee_real_to_integer when flag_fast_math
13622         is not set.
13623
13624         * expr.c (build_java_soft_divmod): New function.
13625         (build_java_binop): Call build_java_soft_divmod if
13626         flag_use_divide_subroutine is set.
13627         * decl.c: soft_idiv_node, soft_irem_node, soft_ldiv_node, tree
13628         soft_lrem_node: new builtin functions.
13629         (init_decl_processing) Initialize the new builtins.
13630         * java-tree.h soft_idiv_node, soft_irem_node, soft_ldiv_node, tree
13631         soft_lrem_node: new builtin functions.
13632         (build_java_soft_divmod): New function.
13633         * parse.y: Call build_java_soft_divmod if
13634         flag_use_divide_subroutine is set.
13635         * parse.c: Rebuilt.
13636
13637         * jvspec.c (lang_specific_driver): Always allow an extra arg (for
13638         a --specs= arg) even if not linking.
13639         * lang-options.h (DEFINE_LANG_NAME ("Java")): Add
13640         -fuse-divide-subroutine
13641
13642 1999-07-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13643
13644         * parse.y (resolve_and_layout): Check methods only once.
13645         (resolve_qualified_expression_name): Verify thrown exceptions
13646         compatibility.
13647         (check_thrown_exceptions): Reject exceptions thrown in
13648         initializer. Error message tuned.
13649
13650 1999-07-14  Andrew Haley  <aph@cygnus.com>
13651
13652         * expr.c (expand_expr): Do not return the last statement in a
13653         block as the block's value.
13654
13655 1999-07-03  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13656
13657         * expr.c (force_evaluation_order): Save the COMPOUND_EXPR'ed
13658         CALL_EXPR, to avoid order of evaluation changes.
13659
13660 1999-07-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13661
13662         * parse.y (qualify_ambiguous_name): Do not use
13663         IDENTIFIER_LOCAL_VALUE when name is a STRING_CST.
13664
13665 1999-07-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13666
13667         * check-init.c (check_init): Handle MAX_EXPR.
13668         * expr.c (force_evaluation_order): Force method call arguments to
13669         be evaluated in left-to-right order.
13670         * parse.y (qualify_ambiguous_name): Loop again to qualify
13671         NEW_ARRAY_EXPR properly.
13672
13673 1999-06-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13674
13675         * parse.y (patch_invoke): Resolve unresolved invoked method
13676         returned type.
13677         (qualify_ambiguous_name): STRING_CST to qualify expression for
13678         type name resolution.
13679
13680 1999-06-24  Andrew Haley  <aph@cygnus.com>
13681
13682         * class.c (finish_class): Whenever a deferred method is
13683         output, rescan the list of methods to see if a new candidate for
13684         output can be found.
13685
13686 1999-06-28  Tom Tromey  <tromey@cygnus.com>
13687
13688         * jvspec.c (lang_specific_driver): Recognize --help.
13689
13690 1999-06-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13691
13692         * parse.y (resolve_package): Fixed bogus return statement.
13693         (patch_method_invocation): Resolve method invocation beginning with
13694         a package name qualifier.
13695
13696 1999-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13697
13698         * Make-lang.in (java.stage1): Depend on stage1-start.
13699         (java.stage2): Likewise for stage2-start.
13700         (java.stage3): Likewise for stage3-start.
13701         (java.stage4): Likewise for stage4-start.
13702
13703 1999-06-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13704
13705         * parse.y (java_complete_lhs): When doing cross referencing, don't
13706         try to keep file location on a WFL expanded as a CALL_EXPR.
13707
13708 1999-06-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13709
13710         * parse.y (finish_method_declaration): Insert a RETURN_EXPR when
13711         compiling to class file a void method with an empty method body.
13712         As a side effect, the bytecode backend will generate the
13713         appropriate `return' instruction.
13714
13715 1999-06-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13716
13717         * parse.y (lookup_package_type_and_set_next): New function prototype.
13718         (resolve_package): Search current and imported packages.
13719         (lookup_package_type_and_set_next): New function.
13720
13721 1999-06-22  Andrew Haley  <aph@cygnus.com>
13722
13723         * verify.c (verify_jvm_instructions): Check for pending blocks
13724         before invalid PC test and opcode switch, not after.
13725
13726 1999-06-21  Andrew Haley  <aph@cygnus.com>
13727
13728         * except.c (find_handler_in_range): The upper limit for exception
13729         ranges is exclusive, not inclusive: (start <= pc < end).
13730         (link_handler): find child pointer which points to outer by
13731         searching sibling list: previous code incorrectly assumed that
13732         outer->outer->first_child must point to outer.
13733         * verify.c (verify_jvm_instructions): FIXME added to code for
13734         `athrow'.
13735         (verify_jvm_instructions): Do not assume that the last block
13736         processed in a subroutine is a block which ends with a `ret'
13737         instruction.  With some control flows it is possible that the last
13738         block ends with an `athrow'.
13739
13740 1999-06-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13741
13742         * parse.y (qualify_ambiguous_name): Reorganized the post
13743         evaluation of non WFL leading expression nodes.
13744
13745 1999-06-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13746
13747         * parse.y (qualify_ambiguous_name): Handle ARRAY_REF after
13748         CONVERT_EXPR.
13749
13750 1999-06-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13751
13752         * parse.y (qualify_ambiguous_name): Handle qualified expression
13753         beginning with a STRING_CST.
13754
13755 1999-06-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13756
13757         * parse.y (register_fields): Set DECL_INITIAL on both
13758         pre-initialized static and public fields.
13759         (resolve_field_access): Static field access expressions to always
13760         use pointer types.
13761         (qualify_ambiguous_name): Work out buried CALL_EXPR for proper
13762         qualification. CONVERT_EXPR to be resolved as an expression name.
13763         (java_complete_lhs): Identify and access qualified final
13764         initialized field in switch statement case expression.
13765         (fold_constant_for_init): Pre-initialized field decl constant to
13766         be folded.
13767
13768 1999-06-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13769
13770         * parse.y (note_possible_classname): Mark returned node with
13771         QUALIFIED_P only if the original class name contained a '/'.
13772
13773 1999-06-05  Anthony Green  <green@cygnus.com>
13774
13775         * Make-lang.in (gcjh): More parallel build fixes.
13776
13777 1999-06-03  Mike Stump  <mrs@wrs.com>
13778
13779         * Make-lang.in (JCF_DUMP_SOURCES, jvgenmain): Fix parallel builds.
13780
13781 1999-06-02  Anthony Green  <green@cygnus.com>
13782
13783         * except.c (link_handler): Chain exception handlers in order.
13784
13785 1999-06-02  Anthony Green  <green@cygnus.com>
13786
13787         * expr.c (expand_byte_code): Fill unreachable bytecode regions
13788         with nops and process as usual in order to always set correct EH
13789         ranges.  Emit detailed warnings about unreachable bytecodes.
13790
13791 1999-06-02  Anthony Green  <green@cygnus.com>
13792
13793         * class.c (build_utf8_ref): Mark cinit and utf8 tree nodes as
13794         constant.
13795
13796 1999-05-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13797
13798         * parse.y (lookup_field_wrapper): Unified returned value to NULL
13799           or the searched field decl.
13800
13801 1999-05-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13802
13803         * parse.y (fold_constant_for_init): Convert numerical constant
13804         values to the type of the assigned field.
13805
13806 1999-05-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13807
13808         * expr.c (lookup_field): Relaxed the test on class loading error
13809         detection.
13810         * parse.y (fold_constant_for_init): Enabeled old code.
13811
13812 1999-05-26  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13813
13814         * parse.y (valid_ref_assignconv_cast_p): Let `_Jv_CheckCast'
13815         decide the validity of the cast of a java.lang.Cloneable reference
13816         to an array.
13817         (patch_conditional_expr): Fixed first argument passed to
13818         binary_numeric_promotion.
13819
13820 1999-05-26  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13821
13822         * parse.y (qualify_ambiguous_name): Take into account that a
13823         CONVERT_EXPR might specify a type as a WFL.
13824
13825 1999-05-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13826
13827         * parse.y (patch_assignment): Save the rhs before using it as an
13828         argument to _Jv_CheckArrayStore.
13829
13830 1999-05-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13831
13832         * lex.c (java_parse_doc_section): Fixed `tag' buffer size.
13833
13834 1999-05-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13835
13836         * lex.c (java_lex): Accepts `+' or `-' after the beginning of a
13837         floating point literal only when the exponent indicator has been
13838         parsed.
13839
13840 1999-05-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13841
13842         * parse.y (formal_parameter:): Construct argument tree list
13843         element even if a yet unsupported final parameter was encountered.
13844
13845 1999-05-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13846
13847         * parse.y (finish_method_declaration): Issue errors for native or
13848         abstract methods declared with a method body, as well as for non
13849         native or non abstract methods with no method body.
13850
13851 1999-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13852
13853         * class.c (build_utf8_ref): Initialize variable `field'.
13854
13855         * decl.c (init_decl_processing): Initialize variable `field'.
13856
13857         * expr.c (build_known_method_ref): Mark parameters `method_type',
13858         `method_signature' and `arg_list' with ATTRIBUTE_UNUSED.
13859         (process_jvm_instruction): Likewise for parameter `length'.
13860
13861         * jvspec.c (lang_specific_driver): Mark variables `saw_math',
13862         `saw_libc', `saw_gc', `saw_threadlib' and `saw_libgcj' with
13863         ATTRIBUTE_UNUSED.
13864
13865         * parse.y (maybe_generate_clinit): Remove unused variable
13866         `has_non_primitive_fields'.
13867         (find_in_imports_on_demand): Initialize variables `node_to_use'
13868         and `cl'.
13869         (patch_binop): Likewise for variable `prom_type'.
13870         (patch_unaryop): Likewise for variable `prom_type'.
13871
13872         * verify.c (verify_jvm_instructions): Likewise for variable `last'.
13873
13874         * xref.c (xref_table): Add missing initializer.
13875
13876 1999-05-14  Tom Tromey  <tromey@cygnus.com>
13877
13878         * java-except.h (struct eh_range): Removed unused `next' member.
13879         * verify.c (verify_jvm_instructions): Call check_nested_ranges
13880         after adding all exception handlers.  Sort exception ranges in
13881         order of start PC.
13882         (struct pc_index): New structure.
13883         (start_pc_cmp): New function.
13884         * except.c (add_handler): Return `void'.  Don't call link_handler;
13885         instead construct an ordinary linked list and do range
13886         coalescing.
13887         (check_nested_ranges): New function.
13888         (link_handler): Changed interface to allow merging of eh_ranges.
13889         Split overlapping ranges.  Return `void'.
13890
13891 1999-05-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13892
13893         * parse.y (constructor_block_end:): New rule, tagged <node>.
13894         (constructor_body:): Use `constructor_block_end' instead of
13895         `block_end'.
13896
13897 1999-05-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13898
13899         * parse.y (statement_nsi:): Pop `for' statement block.
13900         (java_complete_lhs): Labeled blocks containing no statement are
13901         marked as completing normally.
13902
13903 1999-05-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13904
13905         * xref.c (xref_set_current_fp): New function, defined.
13906         * xref.h (xref_set_current_fp): New function, prototyped.
13907
13908 1999-05-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13909
13910         * check-init.c (check_init): Take into account that
13911         LABELED_BLOCK_STMT can be empty.
13912
13913 1999-05-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13914
13915         * parse.y (java_check_regular_methods): Warning check on not
13916         overriding methods with default access in other packages does not
13917         apply to `<clinit>'.
13918         (java_complete_lhs): If block body is an empty_stmt_node, replace
13919         it by NULL_TREE. This prevents gcc from generating an irrelevant
13920         warning.
13921
13922 1999-05-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13923
13924         * check-init.c (check_init): Removed code accepting to see things
13925         falling through default:, when doing xrefs.
13926         * java-tree.h (do_not_fold): New global variable, declared.
13927         * parse.y (do_not_fold): New global variable, defined.
13928         (java_complete_expand_method): Set `do_not_fold' to the value of
13929         `flag_emit_xref'. When doing xrefs: copy the thrown exceptions,
13930         and reinstall them after them have been purged; do not check for
13931         initializations; do not issue missing return errors.
13932         (java_complete_lhs): Do not attempt to patch INSTANCEOF_EXPR nodes
13933         when doing xrefs.
13934         (patch_binop): Skip the fold part when doing xrefs.
13935         (build_string_concatenation): Skip the concatenation part when
13936         doing xrefs.
13937         (patch_synchronized_statement): Do not generate a try-finally when
13938         doing xrefs.
13939         (patch_throw_statement): When doing xrefs, do not call BUILD_THROW
13940         and keep the location where the throw was seen.
13941         * typeck.c (convert): When `do_not_fold' is set, do not attempt
13942         any treatment on the converted node an simply return a NOP_EXPR of
13943         the targeted type.
13944         * xref.c (xref_get_data): New function, defined.
13945         * xref.h (xref_get_data): New function, declared.
13946         (XREF_GET_DATA): Use xref_get_data.
13947
13948 1999-05-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13949
13950         * gjavah.c (print_include): Cast the result of `strlen' to int
13951         when comparing against a signed value.
13952         (add_namelet): Likewise.
13953
13954 1999-05-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13955
13956         * expr.c (expand_invoke): Mark parameter `nargs' with
13957         ATTRIBUTE_UNUSED.
13958         (PRE_LOOKUP_SWITCH): Likewise for variable `match'.
13959
13960         * jcf-io.c (jcf_unexpected_eof): Mark parameter `count' with
13961         ATTRIBUTE_UNUSED.
13962
13963         * jcf-reader.c (get_attribute): Cast a value to long
13964         when comparing against a signed expression.  Likewise.
13965
13966         * lex.h: Never define HOST_WIDE_INT, HOST_BITS_PER_WIDE_INT or
13967         HOST_BITS_PER_CHAR.
13968
13969 1999-05-11  Andrew Haley  <aph@cygnus.com>
13970
13971         * parse.y (source_end_java_method): If the current method contains
13972         any exception handlers, force asynchronous_exceptions: this is
13973         necessary because signal handlers in libjava may throw exceptions.
13974         * decl.c (end_java_method): Ditto.
13975
13976 1999-05-11  Tom Tromey  <tromey@cygnus.com>
13977
13978         * Make-lang.in (jvspec.o): Don't define WITH_THREAD_x or WITH_GC_x
13979         flags.
13980         * jvspec.c (THREAD_NAME): Removed.
13981         (GC_NAME): Likewise.
13982         (MATHLIB): Likewise.
13983         (WITHLIBC): Likewise.
13984         (GCLIB): Likewise.
13985         (THREADLIB): Likewise.
13986         (MATH_LIBRARY): Likewise.
13987         (lang_specific_driver): Don't add `-l' options to command line.
13988         Instead, add a single --specs option.  Recognize `-L' options and
13989         use them to search for spec file.
13990         (find_spec_file): New function.
13991         (SPEC_FILE): New define.
13992
13993 1999-05-11  Dave Brolley  <brolley@cygnus.com>
13994
13995         * lang-options.h: -MD, -MMD, -M and -MM not needed here for
13996         cpplib-enabled build.
13997
13998 1999-05-05  Per Bothner  <bothner@cygnus.com>
13999
14000         * class.c (make_field_value):  DECL_INITIAL may be a string literal;
14001         temporarily zero it while calling rest_of_decl_compilation.
14002
14003         * java-tree.h (string_ptr_type_node):  Add declaration.
14004         * decl.c:  Define and initialize string_ptr_type_node.
14005         * parse.y (patch_string_cst):  Use string_ptr_type_node.
14006
14007         * parse.h (LOOP_HAS_LABEL_P, LOOP_HAS_LABEL_SKIP_P):  Removed.
14008         * parse.y (for_statement):  Now unconditionally exit_block.
14009         (finish_labeled_statement):  No longer exit_block if for-loop.
14010         (patch_loop_statement):  Check harder if the loop is already labeled.
14011
14012         * parse.y (patch_initialized_static_field):  Removed function.
14013         (maybe_generate_clinit):  Removed special handling for interfaces.
14014         (java_complete_expand_methods):  Do a preliminary java_complete_tree
14015         on <clinit> to determine if it can be removed.
14016         (java_complete_expand_method):  Remove special handling for <clinit>.
14017         (java_complete_lhs):  For BLOCK and EXPR_WITH_FILE_LOCATION
14018         optimize if we get back empty_stmt_node.
14019         For MODIFY_EXPR, re-do checking of static initializers.
14020         (fold_constant_for_init):  Don't return immediate if VAR_DECL.
14021         For VAR_DECL, pass correct context.
14022
14023         * verify.c (verify_jvm_instructions):  Better error messages.
14024
14025 1999-05-03  Tom Tromey  <tromey@cygnus.com>
14026
14027         * parse-scan.y (interface_declaration): Call
14028         report_class_declaration for interfaces.
14029
14030 1999-04-30 20:54 -0400  Zack Weinberg  <zack@rabi.columbia.edu>
14031
14032         * Makefile.in: Remove -v from bison command lines.
14033
14034 1999-04-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14035
14036         * check-init.c (check_init): Exclude a case of error when doing
14037         xrefs.
14038         * class.c (layout_class_method): Don't generate the error message
14039         twice when compiling from source.
14040         * lang-options.h: Added `-Wredundant-modifers' and
14041         `-Wunusupported-jdk11' flags and help text.
14042         * lang.c (lang_decode_option): Added support for
14043         `-Wunsupported-jdk11' and `-Wredundant-modifiers'.
14044         flag_static_local_jdk11 and flag_redundant set accordingly.
14045         * lex.c (java_lex): Call BUILD_OPERATOR on CCB_TK.
14046         * parse.h (EXPR_WFL_ADD_COL): New macro.
14047         (DECL_END_SOURCE_LINE): Likewise.
14048         (DECL_INHERITED_SOURCE_LINE): Likewise.
14049         * parse.y (static_ref_err): New function, prototyped.
14050         (CCB_TK): Now tagged <operator>.
14051         (class_body:): Remember the location of the closing '}' of a class
14052         definition when doing xrefs.
14053         (block:): Likewise.
14054         (block_end:): Likewise.
14055         (create_class): Remember the location of the inherited class
14056         identifier when doing xrefs.
14057         (register_fields): Added test on first operand of `init' before
14058         testing it TREE_CODE.
14059         (method_header): Store the location of the class identifier in the
14060         class decl when doing xrefs.
14061         (finish_method_declaration): Don't combine first/last method line
14062         when doing xref.
14063         (java_check_regular_methods): Warning check on not overriding
14064         methods with default access on other packages move before check on
14065         static methods. Initialization of `aflags' also moved up.
14066         (resolve_expression_name): Call static_ref_err to report the error.
14067         (static_ref_err): New function, implemented.
14068         (resolve_field_access): Returned simplified static field access
14069         when doing xrefs.
14070         (resolve_qualified_expression_name): Check for illegal use of
14071         static fields in a non static context. Call static_ref_err to
14072         report error in various places.
14073         (java_complete_tree): Do not fold initialized static fields when
14074         doing xrefs.
14075         (java_complete_lhs): Likewise.
14076
14077 1999-04-29  Anthony Green  <green@cygnus.com>
14078
14079         * expr.c (generate_name): Use ASM_GENERATE_INTERNAL_LABEL to
14080         create internal labels.
14081         (lookup_label): Ditto.
14082
14083 1999-04-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14084
14085         * class.c (layout_class_method): Generate <clinit>'s rtl for
14086         interfaces.
14087         * decl.c (complete_start_java_method): Don't call _Jv_InitClass
14088         for interfaces' <clinit>.
14089         * expr.c (lookup_field): Search for fields in interfaces.
14090         (expand_invoke): Fixed indentation.
14091         (expand_java_field_op): Likewise. Use IS_CLINIT.
14092         * parse.h (JPRIMITIVE_TYPE_OR_VOID_P): Macro removed.
14093         (IS_CLINIT): New macro.
14094         * parse.y (type_declaration:): Call maybe_generate_clinit after an
14095         interface was parsed.
14096         (maybe_generate_clinit): Don't generate if the current class is an
14097         interface with only fields of primitive types.
14098         (reset_method_name): Use IS_CLINIT.
14099         (java_complete_expand_method): Expand <clinit> when it exists for
14100         interfaces. Use IS_CLINIT.
14101         (resolve_expression_name): Use DECL_CONTEXT instead of
14102         current_class to build static field references.
14103         (java_complete_lhs): Use IS__CLINIT. Don't use SAVE_EXPR on
14104         ARRAY_REF when doing xreferencing.
14105         (check_final_assignment): Fixed typo in leading comment. Use
14106         IS_CLINIT.
14107         (patch_array_ref): Don't fully expand array references when
14108         xreferencing.
14109         (patch_return): Use IS_CLINIT.
14110         (patch_throw_statement): Likewise.
14111
14112 1999-04-22  Tom Tromey  <tromey@cygnus.com>
14113
14114         * Make-lang.in (JAVA_SRCS): Added check-init.c.
14115
14116 1999-04-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14117
14118         * decl.c (predef_filenames, predef_filenames_size): New globals
14119         (init_decl_processing): predef_filenames and predef_filenames_size
14120         initialized.
14121         * java-tree.h (predef_filenames, predef_filenames_size): Declared
14122         extern.
14123         * jcf-parse.c (predefined_filename_p): New function.
14124         (yyparse): Check that files on the command line are specified only
14125         once and issue a warning otherwise.
14126         * parse.h (JPRIMITIVE_TYPE_OR_VOID_P): New macro.
14127         * parse.y (source_end_java_method): Nullify NOP method bodies, to
14128         avoid a gcc warning with -W -Wall turned on.
14129         (java_expand_classes): Abort if errors were encountered.
14130         (java_complete_lhs): If the cross reference flag is set, wrap
14131         field DECL node around a WFL when resolving expression name.
14132
14133 1999-04-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14134
14135         * lang.c (lang_decode_option): Fixed returned value when parsing
14136         `-fxref=...' and `-Wall'.
14137         * parse.y (source_end_java_method): Do not generate code when
14138         flag_emit_xref is set.
14139         (resolve_expression_name): Do not build static field access when
14140         flag_emit_xref is set.
14141         (resolve_field_access): No special treatment on `length' when
14142         flag_emit_xref is set. Do not build qualified static field access
14143         when flag_emit_xref is set.
14144         (patch_invoke): Keep the method DECL as operand 0 of the CALL_EXPR
14145         when flag_emit_xref is set.
14146         (patch_assignment): Do not generate array store runtime check when
14147         flag_emit_xref is set.
14148         * xref.c (xref_flag_value): Fixed function declaration
14149         indentation.
14150         (xset_set_data): New function.
14151         * xref.h (xref_set_data): Added prototype for new function.
14152         (typedef struct xref_flag_table): New field data.
14153         (XREF_GET_DATA): New macro.
14154
14155 1999-04-19  Tom Tromey  <tromey@cygnus.com>
14156
14157         * xref.h (enum): Removed trailing comma.
14158
14159         * parse.y (resolve_qualified_expression_name): Added missing
14160         `break'.
14161
14162 1999-04-15  Anthony Green  <green@cygnus.com>
14163
14164         * gjavah.c: New prototypes for java_float_finite and
14165         java_double_finite.
14166
14167 1999-04-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14168
14169         * parse.y (patch_unaryop): Fixed ++/-- operator check on array
14170         references.
14171
14172 1999-04-06  Jeffrey A Law  (law@cygnus.com)
14173
14174         * Makefile.in (TREE_H): Add tree-check.h.
14175         (RTL_H): Add genrtl.h.
14176
14177 1999-04-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14178
14179         * parse.y (patch_assignment): Added ArrayStoreException runtime
14180         check.
14181
14182 1999-04-06  Per Bothner  <bothner@cygnus.com>
14183
14184         * expr.c (pop_type_0):  New function.
14185         (pop_type):  Use pop_type_0.
14186         * java-tree.h (pop_type_0):  New declaration.
14187         * verify.c (verify_jvm_instructions):  Check return instructions.
14188
14189         * parse.y (patch_binop):  Don't fold if non-constant and emiting
14190         class files.
14191
14192 1999-04-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14193
14194         * Makefile.in (gjavah.o): Depend on $(JAVA_TREE_H).
14195
14196         * gjavah.c: Include math.h earlier.  Include tree.h/java-tree.h.
14197         (main_jcf): Don't define.
14198         (process_file): Don't set `main_jcf'.
14199
14200         * java-tree.h (main_jcf): Don't declare.
14201
14202         * jcf-parse.c (main_jcf): Add static definition.
14203
14204         * lang.c (main_jcf): Don't define.
14205
14206 1999-04-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14207
14208         * class.c (add_method_1): Cast the argument of `bzero' to PTR.
14209
14210         * decl.c (copy_lang_decl): Likewise for `bcopy'.
14211
14212         * jcf-depend.c: Include "config.h", not <config.h>.
14213
14214         * jcf-parse.c (jcf_figure_file_type): Cast the arguments of
14215         `bcopy' to PTR.
14216
14217         * jcf-path.c: Include "config.h", not <config.h>.
14218
14219         * lex.c: Don't include various system header files.
14220         (java_init_lex): Cast the argument of `bzero' to PTR
14221
14222         * parse-scan.y (java_push_parser_context): Likewise.
14223
14224         * parse.y (java_push_parser_context): Likewise.
14225         (patch_bc_statement): Match format specifier to variable argument.
14226
14227         * xref.c: Don't include <stdio.h>.
14228
14229 1999-04-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14230
14231         * parse.y (struct parser_ctxt *ctxp): Now global.
14232         (declare_local_variables): Use WFL compound value for the
14233         declaration source line value, when doing cross-referencing.
14234
14235 1999-03-31  Tom Tromey  <tromey@cygnus.com>
14236
14237         * gjavah.c (print_field_info): Allow constants of other types.
14238         (print_include): Generate include when new name is proper prefix
14239         of already printed name.
14240         (add_namelet): Likewise.
14241         (cxx_keyword_subst): New function.
14242         (print_method_info): Use it.
14243         (print_field_name): New function.
14244         (get_field_name): New function.
14245         (print_field_info): Use get_field_name and print_field_name.
14246
14247 1999-03-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14248
14249         * Makefile.in (keyword.h): Generate using gperf language 'C', not
14250         'KR-C', so gperf uses the `const' keyword on strings.
14251
14252         * keyword.gperf (java_keyword): Const-ify a char*.
14253
14254 1999-03-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14255
14256         * parse.y (patch_bc_statement): Fixed identation and a bogus
14257         `printf' format.
14258
14259 1999-03-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14260
14261         * parse.y (patch_assignment): Allow static variables in other
14262         classes to be assigned.
14263
14264 1999-03-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14265
14266         * class.c (maybe_add_interface): Remove unused variable
14267         `interface_binfo'.
14268         (make_class_data): Use = for assignment, not ==.  Likewise.
14269         (emit_register_classes): Remove unused variable `decl'.
14270
14271         * lex.c: Fix comment so as not to contain an embedded `/*'.
14272
14273         * verify.c (verify_jvm_instructions): Remove unused variable
14274         `self_type'.
14275
14276 1999-03-27  Per Bothner  <bothner@cygnus.com>
14277
14278         * parse.y (complete_loop_body):  Rename to finish_loop_body.
14279         (complete_labeled_statement):  Rename to finish_labeled_statement.
14280         (complete_for_loop):  Rename to finish_for_loop.
14281         (complete_method_declaration):  Rename to finish_method_declaration.
14282
14283         * java-tree.h (continue_identifier_node):  New global node.
14284         * decl.c:  Define and initialize continue_identifier_node.
14285         * parse.y (generate_labeled_block):  Remove - no longer needed.
14286         (build_loop_body):  Use continue_identifier_node for continue block.
14287         (finish_labeled_statement):  Also do pop_labeled_block actions.
14288         (java_complete_lhs):  POP_LOOP even if error.
14289         (build_labeled_block):  Special handling for continue_identifier_node.
14290         (patch_loop_statement):  Re-organize.
14291         (patch_bc_statement):  Re-write.
14292
14293 1999-03-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14294
14295         * parse.h (EXPR_WFL_GET_LINECOL): Set a line and column count
14296         using a WFL compound value.
14297         * parse.y (xref.h): Include.
14298         (maybe_create_class_interface_decl): Set DECL_SOURCE_LINE to the
14299         WFL compound value.
14300         (register_fields): Set WFL compound value to lineno if doing
14301         xrefs.
14302         (java_complete_expand_method): Call expand_xref if flag_emit_xref
14303         is set.
14304         * xref.c (system.h, jcf.h, parse.h, obstack.h): Include.
14305         * xref.h (expand_xref): Prototype renamed from xref_generate.
14306
14307 1999-03-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14308
14309         * parse.h (BLOCK_CHAIN_DECL): New use GET_CURRENT_BLOCK.
14310         (GET_CURRENT_BLOCK): New macro.
14311         * parse.y (current_static_block): New global variable.
14312         (method_body:): Define action.
14313         (complete_method_declaration): Set current_function_decl to NULL
14314         when work on the current method is done.
14315         (declare_local_variables): Use GET_CURRENT_BLOCK.
14316         (java_method_add_stmt): Likewise.
14317         (java_complete_expand_method): Disable the use of `this' when
14318         expanding <clinit>.
14319         (enter_a_block): If no current method exist, use
14320         current_static_block to link static initializer blocks.
14321         (exit_block): Rewritten to use current_static_block when no current
14322         method decl exists.
14323         (lookup_name_in_blocks): Use GET_CURRENT_BLOCK.
14324         (patch_return): Forbid the use of `return' in static initializers.
14325         (patch_throw_statement): Fixed indentation. Issue specific error
14326         for uncaught thrown checked exception in static initializer
14327         blocks. Removed FIXME.
14328
14329 1999-03-25  Zack Weinberg  <zack@rabi.columbia.edu>
14330
14331         * java/Make-lang.in: Remove all references to gcj.o/gcj.c.
14332         Link gcj from gcc.o.
14333
14334 1999-03-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14335
14336         * parse.y (find_applicable_accessible_methods_list): When dealing
14337         with interface: ensure that a given interface or java.lang.Object
14338         are searched only once.
14339
14340 1999-03-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14341
14342         * gjavah.c (print_c_decl): Remove unused argument `flags'.
14343
14344         * jcf-dump.c (print_access_flags): Add braces around if-else.
14345
14346         * jvspec.c (lang_specific_driver): Wrap variable `len' in macro
14347         COMBINE_INPUTS.
14348
14349         * lex.c (build_wfl_node): Add static prototype.
14350
14351         * lex.h (build_wfl_node): Remove static prototype.
14352
14353         * parse.y: Include lex.c early enough to declare everything needed.
14354         Ensure calls to `build_wfl_node' pass the proper arguments.
14355         (create_class): Remove unused variable `super_decl'.
14356         (get_printable_method_name): Initialize variable `name'.
14357
14358 1999-03-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14359
14360         * Changelog: Fixed 1999-03-22 typos.
14361         * lang.c (lang_decode_option): Fixed typo in error string in the
14362         XARG section.
14363
14364 1999-03-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14365
14366         * Makefile.in (JAVA_OBJS): Added entry xref.o.
14367         (xref.o): New rule.
14368         * java-tree.h (flag_emit_xref): Declared extern.
14369         * lang.c (xref.h): Included.
14370         (flag_emit_xref): New global variable.
14371         (lang_decode_option): Added support for -fxref.
14372         * xref.c: Created.
14373         * xref.h: Likewise.
14374
14375 1999-03-21  Manfred Hollstein  <manfred@s-direktnet.de>
14376
14377         * Make-lang.in ($(GCJ)$(exeext)): Add intl.o to list of files to be
14378         linked with.
14379
14380 1999-03-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14381
14382         * Makefile.in (jcf-dump.o): Depend on $(CONFIG_H)
14383         $(srcdir)/../system.h and $(JAVA_TREE_H).
14384         (jcf-io.o): Depend on $(JAVA_TREE_H).
14385         (mangle.o): Likewise.
14386
14387         * check-init.c (check_cond_init): Add static prototype.
14388
14389         * class.c (build_java_method_type, hashUtf8String,
14390         make_field_value, get_dispatch_vector, get_dispatch_table,
14391         append_gpp_mangled_type, mangle_static_field): Likewise.
14392         (strLengthUtf8): Hide unused definition.
14393         (hashUtf8String): Const-ify.
14394         (make_field_value): Un-ANSI-fy.
14395
14396         * constants.c: Move inclusion of jcf.h above java-tree.h.
14397         (set_constant_entry, find_class_or_string_constant,
14398         find_name_and_type_constant, get_tag_node,
14399         build_constant_data_ref): Add static prototype.
14400
14401         * decl.c (push_jvm_slot, builtin_function,
14402         lookup_name_current_level): Likewise.
14403         (builtin_function): Const-ify.
14404
14405         * except.c (expand_start_java_handler, expand_end_java_handler):
14406         Add static prototype.
14407
14408         * expr.c (flush_quick_stack, push_value, pop_value,
14409         java_stack_swap, java_stack_dup, build_java_athrow,
14410         build_java_jsr, build_java_ret, expand_java_multianewarray,
14411         expand_java_arraystore, expand_java_arrayload,
14412         expand_java_array_length, build_java_monitor, expand_java_pushc,
14413         expand_java_return, expand_java_NEW, expand_java_INSTANCEOF,
14414         expand_java_CHECKCAST, expand_iinc, expand_java_binop, note_label,
14415         expand_compare, expand_test, expand_cond, expand_java_goto,
14416         expand_java_call, expand_java_ret, pop_arguments, expand_invoke,
14417         expand_java_field_op, java_push_constant_from_pool): Likewise.
14418
14419         (decode_newarray_type, expand_iinc): Un-ANSI-fy.
14420         (build_java_arraynull_check): Mark parameters `node' and `type'
14421         with ATTRIBUTE_UNUSED.
14422         (note_label): Likewise for parameter `current_pc'.
14423         (expand_java_call, expand_java_ret): Hide unused definition.
14424
14425         * java-tree.h (make_class, build_constants_constructor,
14426         java_set_exception_lang_code, pop_labeled_block, emit_handlers,
14427         init_outgoing_cpool, register_class, emit_register_classes,
14428         java_layout_seen_class_methods): Prototype.
14429         (unicode_mangling_length): Const-ify.
14430         (append_gpp_mangled_name, append_gpp_mangled_classtype,
14431         emit_unicode_mangled_name, format_int, format_uint,
14432         jcf_trim_old_input, jcf_print_utf8, jcf_print_char,
14433         jcf_print_utf8_replace, open_class): Prototype.
14434
14435         * jcf-dump.c: Include "config.h", not <config.h>.  Don't include
14436         <stdio.h>.  Include tree.h/java-tree.h.
14437         (utf8_equal_string usage, process_class): Add static prototype.
14438         (open_class): Don't prototype this here.
14439         (utf8_equal_string): Match arguments to format specifiers.
14440         (HANDLE_CODE_ATTRIBUTE, BRANCH, JSR, RET, LOOKUP_SWITCH,
14441         TABLE_SWITCH, disassemble_method): Likewise.
14442
14443         * jcf-io.c: Include tree.h/java-tree.h.
14444         (open_class, find_classfile, jcf_print_utf8,
14445         jcf_print_utf8_replace): Const-ify.
14446
14447         * jcf-parse.c (parse_zip_file_entries, process_zip_dir,
14448         parse_class_file): Add static prototype.
14449         (find_in_current_zip): Match definition to existing static
14450         prototype.
14451
14452         * jcf-write.c: Include jcf.h before tree.h/java-tree.h.
14453         (alloc_chunk, append_chunk, append_chunk_copy, gen_jcf_label,
14454         finish_jcf_block, define_jcf_label, get_jcf_label_here,
14455         put_linenumber, localvar_alloc, localvar_free, get_access_flags,
14456         write_chunks, adjust_typed_op, generate_bytecode_conditional,
14457         generate_bytecode_return, perform_relocations, init_jcf_state,
14458         init_jcf_method, release_jcf_state, generate_classfile):
14459         Add static prototype.
14460         (emit_unop): Mark parameter `type' with ATTRIBUTE_UNUSED.
14461         (make_class_file_name): Const-ify.
14462
14463         * jcf.h (find_classfile): Const-ify.
14464
14465         * jv-scan.c (reset_report): Remove prototype.
14466
14467         * jvgenmain.c: Include jcf.h/tree.h/java-tree.h.
14468         (error): Rewrite to allow varargs.
14469
14470         * lang.c (lang_f_options): Const-ify.
14471
14472         * lex.c (java_parse_escape_sequence): Add static prototype.
14473         (java_allocate_new_line): Match definition to existing static
14474         prototype.
14475
14476         * mangle.c Include tree.h/java-tree.h.
14477         (unicode_mangling_length, emit_unicode_mangled_name,
14478         append_gpp_mangled_name, append_gpp_mangled_classtype): Const-ify.
14479
14480         * parse.h (jdep_code): Remove trailing comma in enumeration.
14481         (java_get_line_col): Move prototype outside of !JC1_LITE test.
14482         (reset_report): Add prototype.
14483
14484         * verify.c (push_pending_label, merge_types): Add static
14485         prototypes.
14486
14487         * zipfile.h (opendir_in_zip, open_in_zip): Prototype.
14488
14489 1999-03-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14490
14491         * parse.y (find_applicable_accessible_methods_list): Extend the
14492         search to superinterfaces when relevant.
14493         (search_applicable_methods_list): New function.
14494
14495 1999-03-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14496
14497         * class.c (unmangle_classname): Implemented stricter testing
14498         before setting the QUALIFIED_P flag on an identifier.
14499
14500 1999-03-16  Per Bothner  <bothner@cygnus.com>
14501
14502         * parse.y (java_complete_lhs):  Call force_evaluation_order
14503         after patch_newarray.
14504         (patch_binop):  Don't call fold if there are side effects.
14505
14506 1999-03-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14507
14508         * parse.y (java_stabilize_reference): Use save_expr instead of
14509         building a SAVE_EXPR node.
14510         (java_complete_lhs): Patch the resulting string of the `+='
14511         operator (if necessary) and complete the RHS after having built
14512         the cast.
14513
14514 1999-03-15  Per Bothner  <bothner@cygnus.com>
14515
14516         * class.c (make_class):  Don't set CLASS_P here (because
14517         this function is also called by build_java_array_type).
14518         (push_class):  Set CLASS_P here instead.
14519         * parse.h (TYPE_CLASS_P):  Check for TYPE_ARRAY_P is redundant.
14520
14521         * jcf-dump.c (print_access_flags):  Take extra parameter to indicate
14522         context.  If the context is class, perfer "super" over "synchronized".
14523         * jcf-write.c (generate_classfile):  Don't add ACC_SUPER if interface.
14524
14525         * parse.y (create_class):  Don't call parser_check_super here;
14526         it is not robust.  Always wait until later.
14527
14528         * parse.y (method_header):  For interfaces, set ACC_ABSTRACT (to
14529         match what JDK 1.2 does), but don't set ACC_PUBLIC.
14530
14531 1999-03-13  Per Bothner  <bothner@cygnus.com>
14532
14533         * lex.c (java_read_char):  UNGET invalid non-initial utf8 character.
14534         * lex.h (UNGETC):  Change misleading macro.
14535
14536 1999-03-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14537
14538         * parse.y (java_stabilize_reference): Return NODE when patching a
14539         COMPOUND_EXPR.
14540         (java_complete_lhs): Put parenthesis around truth values.
14541
14542 1999-03-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14543
14544         * class.c (layout_class_method): Don't make rtl for interface
14545         methods.
14546         * parse.h (GET_TYPE_NAME): New macro.
14547         * parse.y (if_then_statement:): Fixed indentation.
14548         (if_then_else_statement:): Likewise.
14549         (for_statement:): Fixed spacing.
14550         (try_statement:): Fixed indentation.
14551         (create_interface): Don't force interfaces to be abstract.
14552         (method_header): Abstract methods are OK in interfaces.
14553         (declare_local_variables): Fixed typo in comment.
14554         (java_complete_expand_method): Fixed indentation.
14555         (resolve_qualified_expression_name): Use GET_TYPE_NAME to report
14556         non accessible fields.
14557         (java_stabilize_reference): New function.
14558         (java_complete_lhs): Fixed indentation. Use
14559         java_stabilize_reference in compound assignment. Insert the
14560         cast. If not processing `+' fix string constants before processing
14561         binop.
14562
14563 1999-03-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14564
14565         * constants.c (find_class_or_string_constant): Cast variable `j'
14566         to a `jword' when comparing against one.
14567
14568         * expr.c (java_lang_expand_expr): Remove unused variables
14569         `has_finally_p' and `op0'.
14570
14571         * gjavah.c (print_field_info): Cast a value to jint when comparing
14572         against one.  Likewise for a jlong.
14573         (add_namelet): Likewise cast a `sizeof' to an int when comparing
14574         against a signed quantity.
14575
14576         * jcf-dump.c (print_signature_type): Remove unused variable `digit'.
14577         (print_signature): Don't needlessly dereference variable `str'
14578
14579         * jcf-reader.c (get_attribute): Mark variables `max_stack' and
14580         `max_locals' with ATTRIBUTE_UNUSED.
14581         (jcf_parse_class): Likewise for variable `index'.
14582
14583         * parse.h (reverse_jdep_list): Remove static prototype.
14584
14585         * parse.y (build_jump_to_finally): Remove prototype and definition.
14586         (reverse_jdep_list): Add static prototype.
14587
14588         * typeck.c (convert_ieee_real_to_integer): Remove unused variables
14589         `assignment' and `expr_decl'.
14590
14591         * verify.c (verify_jvm_instructions): Remove unused label `bad_ldc'.
14592
14593 1999-03-12  Andrew Haley  <aph@cygnus.com>
14594
14595         * jcf-path.c (add_entry): alloca len+2 rather than len+1 bytes;
14596         we'll need a directory separator and a null character.
14597
14598 1999-03-10  Per Bothner  <bothner@cygnus.com>
14599
14600         * jcf-write.c (generate_bytecode_insns):  Handle __builtin_fmod, for %.
14601
14602 Tue Mar  9 11:52:08 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14603
14604         * parse.y (method_header): Don't set ACC_ABSTRACT flags on
14605         interfaces.
14606
14607 1999-03-05  Per Bothner  <bothner@cygnus.com>
14608
14609         * lex.c (java_parse_end_comment):  Take extra parameter (next char).
14610
14611         * class.c (build_utf8_ref):  Fix possible name class/ambiguity.
14612
14613         * class.c (layout_class_method):  A static method in a base class
14614         is never overridden, so treat it like it doesn't exist.
14615         However, do complain about private non-static method overriding
14616         public static method.
14617
14618         * parse.y:  Don't set unused INITIALIZED_P flag.
14619         * java-tree.h (INITIALIZED_P):  Removed no-longer needed flag.
14620
14621         * parse.y (find_expr_with_wfl):  Optimize tail-calls.
14622         (build_array_from_name):  Re-order &index[string] to &string[index].
14623
14624         * parse.y (java_complete_lhs):  Don't call patch_assignment if rhs is
14625         error_mark (it might catch more errors, but it is more likely to lose).
14626
14627 1999-03-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14628
14629         * Makefile.in (jcf-parse.o): Depend on $(PARSE_H).
14630         (parse-scan.o): Depend on toplev.h.
14631
14632         * class.c (make_method_value): Add prototype.  Make it static.
14633         Remove unused second argument, caller changed.
14634
14635         * expr.c (java_lang_expand_expr): Remove unused variable
14636         `return_label'.
14637
14638         * java-tree.h: Don't prototype find_in_current_zip.
14639         Add prototypes for verify_constant_pool, start_java_method,
14640         end_java_method, give_name_to_locals, expand_byte_code,
14641         open_in_zip, set_constant_value, find_constant1, find_constant2,
14642         find_utf8_constant, find_string_constant, find_class_constant,
14643         find_fieldref_index, find_methodref_index, write_constant_pool,
14644         count_constant_pool_bytes and encode_newarray_type.
14645
14646         * jcf-dump.c: Remove unused variable `LONG_temp'.
14647
14648         * jcf-parse.c: Include parse.h.
14649         (jcf_parse_source): Remove unused parameter, all callers changed.
14650         (jcf_figure_file_type): Add static prototype.
14651         (find_in_current_zip): Likewise.  Also remove unused parameter,
14652         all callers changed.
14653         (read_class): Initialize variable `saved_pos'.
14654
14655         * jcf-reader.c (jcf_parse_preamble): Mark variables
14656         `minor_version' and `major_version' with ATTRIBUTE_UNUSED.
14657
14658         * lex.c (java_is_eol): Wrap prototype and definition in !JC1_LITE.
14659         (java_init_lex): Wrap variable `java_lang_imported' in !JC1_LITE.
14660         (java_parse_doc_section): Initialize variable `seen_star'.
14661         (java_lex): Wrap variable `number_beginning' in !JC1_LITE.
14662         (java_lex_error): Mark parameters `msg' and `forward' with
14663         ATTRIBUTE_UNUSED.
14664         (java_get_line_col): Mark parameters `filename' and `line' with
14665         ATTRIBUTE_UNUSED.
14666
14667         * parse-scan.y: Include toplev.h.
14668         (yyerror): Mark parameter `msg' with ATTRIBUTE_UNUSED.
14669
14670         * parse.h: use `struct JCF', not plain `JCF'.
14671         (java_parser_context_save_global, java_expand_classes
14672         java_parser_context_restore_global, java_parse): Add prototypes.
14673
14674         * typeck.c (convert_ieee_real_to_integer): Remove unused variable
14675         `node'.
14676
14677 1999-02-24  Per Bothner  <bothner@deneb.cygnus.com>
14678
14679         *  check-init.c (check_init):  COPYN takes word count, not bit count.
14680
14681 1999-02-26  Per Bothner  <bothner@cygnus.com>
14682
14683         * typeck.c (convert_ieee_real_to_integer):  Use save_expr instead of
14684         explicit build_decl.  (Avoids crash in reload when optimizing.)
14685
14686 1999-02-25  Per Bothner  <bothner@cygnus.com>
14687
14688         * decl.c (complete_start_java_method):  Handle synchronized method
14689         even when compiling from bytecode.
14690
14691 1999-02-26  Tom Tromey  <tromey@cygnus.com>
14692
14693         * gjavah.c (add_class_decl): Only generate `#include' if outer
14694         class is not the name of the class we are processing.  Correctly
14695         append `.h' in #include.
14696         (process_file): Clean up newlines around generated `#include's.
14697         (decode_signature_piece): Correctly handle inner classes.
14698         (struct include): New structure.
14699         (all_includes): New global.
14700         (print_include): New function.
14701         (add_class_decl): Use it.
14702         (process_file): Likewise.
14703         (add_class_decl): Generate include for java-array.h if array
14704         seen.
14705         (process_file): Don't generate java-array.h include.
14706
14707         * gjavah.c (add_namelet): Check for standard package names here.
14708         (add_class_decl): Don't check for standard package names here.
14709
14710 1999-02-25  Tom Tromey  <tromey@cygnus.com>
14711
14712         * parse.y (read_import_dir): Use `|=', not `+=', to set `found'.
14713         When reading a zip file, only use strncmp if both strings are
14714         bigger than the buffer length.  Initialize `k' when looping
14715         through zip file.
14716
14717 1999-02-24  Tom Tromey  <tromey@cygnus.com>
14718
14719         * gjavah.c (struct namelet): New structure.
14720         (add_namelet): New function.
14721         (print_namelet): New function.
14722         (print_class_decls): Use add_namelet and print_namelet to generate
14723         namespaces and not classes.
14724         (method_printed): New global.
14725         (HANDLE_END_METHOD): Examine method_printed.
14726         (print_method_info): Set method_printed when required.  Print
14727         error if function to be ignored is marked virtual.  Handle $finit$
14728         method.
14729         (METHOD_IS_FINAL): New macro.
14730         (print_field_info): Use it.
14731         (HANDLE_METHOD): Clear method_printed.
14732         (method_pass): New global.
14733         (HANDLE_END_FIELD): Call add_class_decl on the first pass.
14734         (process_file): Do two passes over both fields and methods.
14735         (HANDLE_METHOD): Examine method_pass.
14736         (root): New global.
14737         (add_class_decl): New function.
14738         (print_class_decls): Don't scan over entire constant pool.
14739
14740 1999-02-23  Tom Tromey  <tromey@cygnus.com>
14741
14742         * jvspec.c (lang_specific_driver): Recognize -fsyntax-only and
14743         disable linking in that case.
14744
14745 1999-02-20  Tom Tromey  <tromey@cygnus.com>
14746
14747         * jcf.h (UTF8_GET): Mask first byte of 3-byte encoding with 0x0f,
14748         not 0x1f.
14749
14750 1999-02-21  Per Bothner  <bothner@cygnus.com>
14751
14752         * decl.c (build_result_decl), java-tree.h:  New method.
14753         (complete_start_java_method):  Handle synchronized methods.
14754         Don't build DECL_RESULT here.  (Ordering dependency problem.)
14755         (start_java_method):  Call build_result_decl here instead  ...
14756         * parse.y (java_complete_expand_method):  ... and here.
14757         (expand_start_java_method): Don't call complete_start_java_method here.
14758         (java_complete_expand_method):  Call it here instead.
14759         * parse.h (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT):  Moved to ..
14760         * java-tree.h:  ... here.
14761
14762         * expr.c (force_evaluation_order):  Fix typo, don't handle ARRAY_REF.
14763         * parse.y (java_complete_lhs):  Don't call force_evaluation_order
14764         for ARRAY_REF - it doesn't work when array bounds are checked.
14765         (patch_array_ref):  Handle it here instead.
14766
14767         * jcf-write.c (generate_classfile):  Emit "Exceptions" attribute.
14768
14769 1999-02-19  Per Bothner  <bothner@cygnus.com>
14770
14771         Force left-to-right evaluation of binary operations etc.
14772         * expr.c (force_evaluation_order), java-tree.h:  New function.
14773         * parse.y (java_complete_lhs):  Pass binary operations, procedure
14774         calls, and ARRAY_REFs to force_evaluation_order.
14775         (various):  Set TREE_SIDE_EFFECTS more carefully.
14776
14777         Tolerate random (non-UTF8) encoding in comments without complaining.
14778         * lex.c (java_read_char):  Return 0xFFFE if bad UTF8 encoding.
14779         (java_is_eol):  Handle '\r' followed by '\n' instead of vice versa.
14780
14781         * parse.y (resolve_qualified_expression_name):  Handle error_mark.
14782         (java_complete_node case EXPR_WITH_FILE_LOCATION):  Likewise.
14783
14784         * parse.y (java_complete_lhs):  Ignore an empty statement in a
14785         COMPOUND_EXPR.  Don't complain about empty statement after return.
14786
14787 1999-02-19  Per Bothner  <bothner@cygnus.com>
14788
14789         * parse.y (obtain_incomplete_type):  Don't wrap unknown types
14790         in TREE_LIST - just chain the POINTER_TYPEs together.
14791         (resolve_class):  If type already resolved, return decl.
14792         After resolving, update TREE_TYPE(class_type), and name (if array).
14793         * parse.h (do_resolve_class), parse.y:  Make non-static.
14794         * class.c (maybe_layout_super_class):  Take this_class argument.
14795         Do do_resolve_class if necessary.
14796         (layout_class, layout_class_methods): Adjust calls appropriately.
14797         * parse.h (JDEP_TO_RESOLVE, JDEP_RESOLVED_DECL, JDEP_RESOLVED,
14798         JDEP_RESOLVED_P):  Redefined for new TREE_LIST-less convention.
14799         * typeck.c (build_java_array_type):  Don't call layout_class.
14800
14801 1999-02-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14802
14803         * parse.y (check_pkg_class_access): Allow private class access
14804         within the same package.
14805         (strip_out_static_field_access_decl): New function.
14806         (patch_unaryop): Call strip_out_static_field_access_decl on ++/--
14807         operator argument before testing its nature.
14808
14809 1999-02-03  Per Bothner  <bothner@cygnus.com>
14810
14811         * java-tree.def (FINALLY_EXPR):  Removed.  (Now uses TRY_FINALLY_EXPR.)
14812         (TRY_EXPR):  Simplify - it no longer has a finally clause.
14813         * check-init.c (check_init):  Handle TRY_FINALLY_EXPR.
14814         Simpler handling of TRY_EXPR, which no longer has a finally clause.
14815         * expr.c (java_lang_expand_expr):  Likewise.
14816         * java-tree.h (CATCH_EXPR_GET_EXPR):  Removed - no longer needed.
14817         * parse.h (java_get_catch_block), parse.y:  Removed - no longer needed.
14818         * parse.y (java_complete_lhs):  Add support for TRY_FIANLLY_EXPR.
14819         (build_try_statement):  Remove finally parameter and handling.
14820         (build_try_finally_statement):  New function.
14821         (patch_try_statement):   No longer need to support finally clause.
14822         (try_statement):  Update grammar action rules.
14823         * jcf-write.c (generate_bytecode_insns):  Handle TRY_FINALLY_EXPR.
14824         Simpler handling of TRY_EXPR, which no longer has a finally clause.
14825
14826 1998-11-26  Andrew Haley  <aph@viagra.cygnus.co.uk>
14827
14828         * jcf-parse.c (get_constant): Add braces around computation of 'd'
14829         when REAL_ARITHMETIC is not defined.  [Oct 26 fix got overwritten -PB]
14830
14831 1999-02-17  Andrew Haley  <aph@cygnus.com>
14832
14833         * class.c (build_utf8_ref): Back out broken patch which was
14834         intended to to output signatures using '.' as a separator.
14835
14836         * class.c (make_class_data): Output signatures using '.' as a
14837         separator, rather than '/'.
14838         (mangled_classname): Likewise.
14839         (make_field_value): Likewise.
14840         (make_method_value): Likewise.
14841         * constants.c (alloc_class_constant): Likewise.
14842         * expr.c (build_invokeinterface): Likewise.
14843
14844 1999-02-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14845
14846         * parse.y (valid_builtin_assignconv_identity_widening_p): Got rid
14847         of an ancient workaround.
14848
14849 1999-02-10  Jeffrey A Law  (law@cygnus.com)
14850
14851         * jvspec.c (xmalloc): Kill the prototype.  It does not belong
14852         here anymore.
14853
14854 1999-02-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14855
14856         * lex.c (yylex): Encode \0 as UTF8.
14857
14858 1999-02-10  Tom Tromey  <tromey@cygnus.com>
14859
14860         * jvspec.c (lang_specific_driver): Use libgcj, not libjava.
14861         * Makefile.in (jcf-path.o): Define LIBGCJ_ZIP_FILE.
14862         (libgcj_zip): Renamed.
14863         * jcf-path.c (add_entry): Use LIBGCJ_ZIP_FILE, not
14864         LIBJAVA_ZIP_FILE.
14865         (jcf_path_init): Use LIBGCJ_ZIP_FILE.
14866
14867         * jvspec.c (THREAD_NAME): Renamed -lqthreads to -lgcjcoop.
14868         (GC_NAME): Renamed -lgc to -lgcjgc.
14869
14870 1999-02-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14871
14872         * lex.c (java_lang_cloneable): Initialize.
14873         * parse.y (java_lang_cloneable): New static variable.
14874         (qualify_ambiguous_name): Take CONVERT_EXPR into account when
14875         doing one more qualification round.
14876         (valid_ref_assignconv_cast_p): Reject null source or
14877         destination. Allow an array to be cast into java.lang.Cloneable.
14878         (patch_cast): Swapped two first arguments to first call to
14879         valid_ref_assignconv_cast_p.
14880
14881 1999-02-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14882
14883         * parse.h: DECL_P renamed JDECL_P.
14884         * parse.y: DECL_P replaced by JDECL_P.
14885         (build_array_from_name): Always use pointer's type.
14886         (patch_bc_statement): Extra code to search continue target in a
14887         for loop. Fixed comments. Continue target is current loop when
14888         unlabeled.
14889
14890 1999-02-05  Andrew Haley  <aph@cygnus.com>
14891
14892         * class.c (make_class_data): The superclass of an interface should
14893         be null, not class Object.
14894
14895         * lex.c (java_lex): Sign extend hex literals.
14896
14897 1999-02-04  Andrew Haley  <aph@cygnus.com>
14898
14899         * class.c (build_utf8_ref): Output signatures using '.' as a
14900         separator, rather than '/'.
14901         (make_class_data): Likewise.
14902
14903 1999-02-03  Marc Espie <Marc.Espie@liafa.jussieu.fr>
14904
14905         * Make-lang.in ($(GCJ)(exeext)): Remove choose-temp.o, pexecute.o and
14906         mkstemp.o.  Get them from libiberty now.
14907
14908 1999-02-02  Jeffrey A Law  (law@cygnus.com)
14909
14910         * jcf-io.c: Do not include sys/stat.h or sys/wait.h
14911
14912 1999-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14913
14914         * jvspec.c (xmalloc): Fix the prototype to match the one obtained
14915         from libiberty.h
14916
14917 1999-02-02  Per Bothner  <bothner@cygnus.com>
14918
14919         Optimize: `return (a ? b : c)' as: `if (a) return b; else return c;'.
14920         * jcf-write.c (generate_bytecode_return):  New function.
14921         (generate_bytecode_insns):  Use it, for RETURN_EXPR.
14922
14923         * jcf-write.c (generate_bytecode_insns):  For REAL_CST that is 0 or 1,
14924         generate special [fd]const_[01] instructions.
14925
14926         * jcf-parse.c (yyparse):  Don't emit_register_classes if -fsyntax-only.
14927
14928         * verify.c (verify_jvm_instructions):  Do INVALIDATE_PC after
14929         handling OPCODE_lookupswitch or OPCODE_tableswitch.
14930
14931 1999-02-01  Per Bothner  <bothner@cygnus.com>
14932
14933         * parse.y (patch_method_invocation):  Handle calling static methods,
14934         even in the form EXPR.METHOD(ARGS), not just TYPE.METHOD(ARGS).
14935
14936         * parse.y (java_complete_lhs):  Don't complain about unreachable
14937         exit condition in a do-while statement.
14938
14939 1999-01-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14940
14941         * lex.c (java_read_char): Fixed utf8 decoding.
14942         (java_unicode_2_utf8): Fixed utf8 encoding in the 0x800-0xffff
14943         range.
14944         * parse.y (valid_builtin_assignconv_identity_widening_p): Fixed
14945         comments. Local variable `all_primitive' is gone. Broadened
14946         acceptance of `0' to floating point targets. `long' can now be
14947         widened to `double' or `float'.
14948         (valid_method_invocation_conversion_p): Added leading
14949         comment. Fixed tabulation.
14950         (build_string_concatenation): Optimize out left or right empty
14951         string constants.
14952
14953 1999-01-28  Per Bothner  <bothner@cygnus.com>
14954
14955         * jcf-write.c (localvar_alloc):  Only emit entry for
14956         LocalVariableTable if debug_info_level > DINFO_LEVEL_TERSE.
14957         (generate_bytecode_insns):  Only call put_linenumber if
14958         debug_info_level > DINFO_LEVEL_NONE.
14959         * jvspec.c (lang_specific_driver):  If no -O* or -g* option
14960         is specified, add -g1 (for compatibility wih javac).
14961
14962 1999-01-28  Hans-Peter Nilsson  <hp@axis.se>
14963
14964         * java/Makefile.in: Add missing dependencies for jcf-dump.o,
14965         gjavah.o, check-init.o, jv-scan.o
14966
14967 1999-02-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14968
14969         * Makefile.in (gjavah.o): Depend on $(CONFIG_H) and system.h.
14970
14971         * gjavah.c: Include config.h and system.h.
14972
14973         * javaop.h (inline): Don't define, its handled by system.h.
14974         (WORD_TO_FLOAT, WORDS_TO_LONG, WORDS_TO_DOUBLE): Change these
14975         from `inline' to `static inline'.
14976
14977         * jcf.h (inline): Don't define, its handled by system.h.
14978
14979         * lex.c (inline): Likewise.
14980
14981 1999-01-31  Zack Weinberg  <zack@rabi.columbia.edu>
14982
14983         * lang-specs.h: Map -Qn to -fno-ident.
14984
14985 1999-01-29  Richard Henderson  <rth@cygnus.com>
14986
14987         * check-init.c (check_init): Fix CLEANUP_POINT_EXPR typo.
14988
14989 1999-01-29  Tom Tromey  <tromey@cygnus.com>
14990
14991         * parse.h (BUILD_APPEND): If ARG is a non-String object reference,
14992         then cast it to Object before calling `append' method.
14993
14994 1999-01-28  Per Bothner  <bothner@cygnus.com>
14995
14996         * check-init.c (check_bool2_init, check_bool_init, check_init):
14997         Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR, and TRUTH_XOR_EXPR.
14998         * jcf-write.c (generate_bytecode_insns):  Likewise.
14999
15000 1999-01-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15001
15002         * jcf-parse.c (jcf_parse): Don't parse the same class file twice.
15003         * parse.y (patch_cast): Allow a boolean to be cast into a
15004         boolean.
15005
15006 1999-01-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15007
15008         * parse.y: (class_declaration:): Fixed indentation.
15009         (class_member_declaration:): Extra `;' after field declaration now
15010         accepted.
15011         (interface_declaration:): Removed debug messages in error reports.
15012         (patch_binop): Nodes created and returned inherit the orignal
15013         node's COMPOUND_ASSIGN_P flag value.
15014         (patch_cast): Fix cast from char to floating point.
15015
15016 1999-01-25  Andrew Haley  <aph@cygnus.com>
15017
15018         * except.c, java-except.h (expand_resume_after_catch): new
15019         function.
15020         * expr.c (java_lang_expand_expr): call expand_resume_after_catch
15021         to branch back to main flow of control after a catch block.
15022
15023 1999-01-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15024
15025         * Makefile.in (parse.o): Depend on $(CONFIG_H) and
15026         $(srcdir)/../system.h.
15027         (class.o): Depend on $(PARSE_H) and $(srcdir)/../output.h.
15028         (jcf-parse.o): Depend on $(srcdir)/../toplev.h.
15029         (jcf-write.o): Likewise.
15030         (jv-scan.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h.
15031         (mangle.o): Depend on $(srcdir)/../toplev.h.
15032         (parse-scan.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h.
15033         (zextract.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h.
15034
15035         * class.c: Include output.h and parse.h.
15036         (mangled_classname): Add the `const' keyword to a char*.
15037         (find_named_method): Hide unused function definition.
15038         (build_utf8_ref): Change type of variable `c' to unsigned char.
15039         Use ISALPHA/ISDIGIT instead of isalpha/isdigit.
15040         (build_class_ref): Add the `const' keyword to a char*.
15041         (layout_class_method): Remove unused variable `buf'.
15042
15043         * decl.c (find_local_variable): Remove unused variable `rtl'.
15044         (pushdecl): Likewise for variables `different_binding_level' and
15045         `oldglobal'.
15046         (pushlevel): Mark parameter `unused' with ATTRIBUTE_UNUSED.
15047         (maybe_build_cleanup): Likewise for parameter `decl'.
15048
15049         * except.c (expand_start_java_handler): Mark parameter `range'
15050         with ATTRIBUTE_UNUSED.
15051
15052         * expr.c: Include except.h.
15053         (pop_type): Remove unused variable `i'.
15054         (pop_value): Likewise for variables `n_words' and `i'.
15055         (expand_java_arrayload): Likewise for variable `convert'.
15056         (java_lang_expand_expr): Likewise for variables `op0', `type',
15057         `mode', `unsignedp', `node' and `elements'.
15058         (expand_byte_code): Likewise for variables `prev_eh_ranges' and
15059         `eh_ranges'.
15060         (process_jvm_instruction): Add a `const' qualifier to a char*.
15061
15062         * gjavah.c (output_directory): Add the `const' keyword to a char*.
15063         (temp_directory): Likewise.
15064         (print_c_decl): Likewise.
15065         (print_method_info): Likewise.
15066         (decode_signature_piece): Likewise.
15067         (print_mangled_classname): Likewise.
15068
15069         * java-except.h: Provide prototypes for maybe_start_try,
15070         maybe_end_try and add_handler.
15071
15072         * java-tree.h (mangled_classname): Add the `const' keyword to a char*.
15073         (parse_error_context): Likewise.  Also add ATTRIBUTE_PRINTF_2.
15074         (pushdecl_top_level, alloc_class_constant, unicode_mangling_length,
15075         init_expr_processing, push_super_field, init_class_processing,
15076         can_widen_reference_to, class_depth, verify_jvm_instructions,
15077         maybe_pushlevels, maybe_poplevels, process_jvm_instruction,
15078         set_local_type, merge_type_state, push_type, load_type_state,
15079         add_interface, find_in_current_zip, append_gpp_mangled_classtype,
15080         emit_unicode_mangled_name): Add prototypes.
15081
15082         * jcf-dump.c (print_constant): Add the `const' keyword to a char*.
15083         (print_signature_type): Use ISDIGIT, not isdigit.
15084         (print_signature): Remove unused variable `j'.
15085
15086         * jcf-io.c (jcf_filbuf_from_stdio): Cast the result of `fread' to
15087         int when comparing against one.
15088
15089         * jcf-parse.c: Include toplev.h.
15090
15091         * jcf-write.c: Likewise.  Don't include <string.h> or <sys/stat.h>.
15092         (localvar_free): Remove unused variable `i'.
15093         (generate_bytecode_conditional): Likewise for variable `kind'.
15094
15095         * jv-scan.c: Include config.h and system.h.  Remove redundant
15096         OS header and gansidecl.h includes.
15097         (warning): Add the `const' keyword to a char*.  Also add
15098         ATTRIBUTE_PRINTF_1 to the prototype.  Check ANSI_PROTOTYPES, not
15099         __STDC__, when determining whether to use ANSI-isms.
15100         (fatal): Likewise.  Also add ATTRIBUTE_UNUSED.
15101         (xmalloc): Don't redundantly prototype here.
15102         (main): Remove unused parameter `envp'.  Also fix the arguments
15103         passed to function `fatal' to match the format specifier.
15104
15105         * lang.c (java_tree_code_name): Add the `const' keyword to a char*.
15106
15107         * mangle.c: Include toplev.h.
15108         (emit_unicode_mangled_name): Declare parameter `len'.
15109
15110         * parse.y (parse_warning_context): Add the `const' keyword to a
15111         char*.  Also add ATTRIBUTE_PRINTF_2 to the prototype.  Check
15112         `ANSI_PROTOTYPES' not `__STDC__' for whether to use ANSI-isms.
15113         (issue_warning_error_from_context): Add the `const' keyword to
15114         a char*.
15115         (parse_error_context): Likewise.  Also check `ANSI_PROTOTYPES'
15116         not `__STDC__' for whether to use ANSI-isms.
15117
15118         * typeck.c (incomplete_type_error): Mark parameters `value' and
15119         `type' with ATTRIBUTE_UNUSED.
15120         (parse_signature_type): Use ISDIGIT, not isdigit.
15121
15122         * verify.c (check_pending_block): Add the `const' keyword to a char*.
15123         (verify_jvm_instructions): Likewise.  Remove unused variables
15124         `field_name' and `default_val'.
15125
15126         * zextract.c: Include config.h and system.h.  Remove redundant
15127         OS header includes.
15128
15129         * zipfile.h: Prototype `read_zip_archive'.
15130
15131 1999-01-21  Andrew Haley  <aph@cygnus.com>
15132
15133         * typeck.c (convert): Allow conversions to void type: some
15134         optimizations in gcc do this.
15135
15136 1999-01-21  Andrew Haley  <aph@cygnus.com>
15137
15138         * typeck.c (convert_ieee_real_to_integer): New function.
15139         (convert): When not using fast-math and using hardware fp, convert
15140         an IEEE NaN to zero.
15141
15142 1999-01-18  Andrew Haley  <aph@cygnus.com>
15143
15144         * parse.y (patch_binop): Do a type conversion from signed to
15145         unsigned and then back to signed when a ">>>" is found.
15146
15147 1999-01-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15148
15149         * java-tree.h: (check_for_initialization): Added prototype.
15150         * lex.c (java_parse_doc_section): `\n' breaks the `*/' string.
15151         * parse.y (do_resolve_class): Removed unused locals.
15152         (read_import_dir): Likewise.
15153         (resolve_qualified_expression_name): Array creation
15154         expressions are valid primary expressions.
15155         (qualify_ambiguous_name): Likewise.
15156         (patch_synchronized_statement): Removed unused local.
15157
15158 1999-01-17  Jeffrey A Law  (law@cygnus.com)
15159
15160         * Makefile.in (zextract.o): Add dependencies.
15161
15162         * Makefile.in: Do not put ^Ls at the start of a line.
15163
15164 1999-01-15  Per Bothner  <bothner@cygnus.com>
15165
15166         * expr.c (process_jvm_instruction):  Coerce to correct Throwable
15167         sub-type the result of the call that gets the exception value.
15168
15169         * parse.y (java_complete_expand_methods):  If flags_syntax_only,
15170         don't call finish_class.
15171
15172         * parse.y (java_check_regular_methods):  If METHOD_PRIVATE,
15173         clear found before continuing.
15174
15175         * verify.c (verify_jvm_instructions):  On an array load, allow
15176         and handle top of stack to be TYPE_NULL.
15177
15178         * gjavah.c (generate_access):  Translate Java package private or
15179         protected access to C++ public, but with a comment.
15180
15181 1999-01-13  Andrew Haley  <aph@cygnus.com>
15182
15183         * expr.c (generate_name): Name prefix changed to avoid clashes
15184         with assembler temp labels.
15185
15186         * parse.y (patch_synchronized_statement): Set TREE_SIDE_EFFECTS on
15187         MODIFY_EXPR.  Without this, code for the assignment may not be
15188         generated at all and the synchronized statement will read an
15189         uninitialized variable.
15190
15191 1999-01-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15192
15193         * class.c (maybe_layout_super_class): Fixed returned value.
15194         * lex.c: Added 1999 to the copyright.
15195         (java_init_lex): Initialize java_lang_imported.
15196         * lex.h: Added 1999 to the copyright.
15197         * parse.h: Added 1999 to the copyright.
15198         (REGISTER_IMPORT): Fixed typo in trailing macro.
15199         (CURRENT_OSB): New macro.
15200         (struct parser_ctxt): New fields osb_depth, osb_limit.
15201         * parse.y (java_lang_id): New global variable.
15202         (type_import_on_demand_declaration): Don't import java.lang.* twice.
15203         (array_creation_expression:): Use CURRENT_OSB.
15204         (dims:): Uses a stack to keep track of array dimensions.
15205         (cast_expression:): Use CURRENT_OSB.
15206         (find_expr_with_wfl): Return NULL if node found doesn't meet the
15207         conditions.
15208         (register_fields): Fixed typos in comment.
15209         (check_method_redefinition): Fixed comment indentation.
15210         (java_check_regular_methods): Set saved found wfl to NULL after
15211         having reinstalled it in the previously found DECL_NAME.
15212
15213 1999-01-10  Richard Henderson  <rth@cygnus.com>
15214
15215         * gjavah.c (java_float_finite): Use a union to do type punning.
15216         (java_double_finite): Likewise.
15217
15218 1999-01-09  Per Bothner  <bothner@cygnus.com>
15219
15220         * parse.y (build_new_array_init):  Don't set EXPR_WFL_LINECOL
15221         on CONSTRUCTOR (since that trashes TREE_CST_RTL).
15222         (patch_new_array_init):  Clear TREE_CONSTANT also if INDIRECT_REF.
15223         (register_fields):  Set TREE_STATIC on NEW_ARRAY_INIT, not on
15224         CONSTRUCTOR (which causes expand_expr to call output_constant_def).
15225         * expr.c (java_lang_expand_expr):  Check TREE_STATIC of NEW_ARRAY_INIT.
15226
15227 1999-01-08  Per Bothner  <bothner@cygnus.com>
15228
15229         * check-init.c (check_init):  If compiling to native, we don't
15230         see THROW_EXPR.  Instead, look for a call to throw_node (_Jv_Throw).
15231
15232 1999-01-08  Tom Tromey  <tromey@cygnus.com>
15233
15234         * parse-scan.y (variable_declarator_id): Set or increment
15235         bracket_count.
15236         (bracket_count): New global.
15237         (formal_parameter): Handle case where bracket pairs trail variable
15238         declarator id.
15239
15240 1999-01-07  Andrew Haley  <aph@viagra.cygnus.co.uk>
15241
15242         * jcf-parse.c (yyparse): variable len changed from a char to an
15243         int to prevent overflow.
15244
15245 1999-01-06  Per Bothner  <bothner@cygnus.com>
15246
15247         * java-tree.h:  Declare read_class.
15248         * jcf-parse.c (read_class):  New function.
15249         (load_class):  Now just call read_class.
15250
15251         * java-tree.h (java_parse_abort_on_error):  Only return if new errors.
15252         * jcf-parse.c (parse_source_file):  Declare save_error_count,
15253         which is needed by java_parse_abort_on_error macro,
15254         * parse.y (java_layout_classes, java_expand_classes):  Likewise.
15255
15256         * parse.y (register_fields):  Set TREE_STATIC flag of NEW_ARRAY_INIT
15257         constructor, if initializing a static field.
15258         (patch_new_array_init):  Set TREE_CONSTANT if it is.
15259         * expr.c (java_lang_expand_expr):  For a static array constructor
15260         of primitive elements, allocate the array itself statically.
15261         Disabled until we can set the vtable field statically.
15262
15263         * check-init.c:  New file.  Checks for definite assignment.
15264         * Makefile.in (JAVA_OBJS):  Add check-init.o.
15265         * parse.y (java_complete_expand_method): Call check_for_initialization.
15266         * parse.h (BLOCK_EXPR_DECLS, BLOCK_EXPR_BODY):  Moved to java-tree.h.
15267
15268 1999-01-06  Graham <grahams@rcp.co.uk>
15269
15270         * parse.y : include system.h instead of including
15271         standard headers directly with the exception of <dirent.h>.
15272
15273 1999-01-06  Per Bothner  <bothner@cygnus.com>
15274
15275         * lex.h:  Moved static function declarations to lex.c,
15276         to shut up some -Wall warnings.
15277         * lex.c:  Static function declarations moved here.
15278         * jcf-dump.c:  Small fixes to shut up -Wall warnings.
15279
15280 1999-01-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15281
15282         * Make-lang.in ($(GCJ).o): Depend on prefix.h.
15283
15284 1998-12-22  Per Bothner  <bothner@cygnus.com>
15285
15286         * expr.c (process_jvm_instruction):  Do load_type_state after JSR.
15287         * verify.c (verify_jvm_instructions):  Fix off-by-one error.
15288
15289         * jcf-write.c (CHECK_PUT):  Add (void) cast to avoid -Wall warnings.
15290         (localvar_alloc):  Change return type to void,
15291         (emit_unop):  Remove unused variable size.
15292
15293         * jcf-write.c (struct jcf_block):  Add new union.
15294         (PENDING_CLEANUP_PC, PENDING_EXIT_PC, UNDEFINED_PC):  New macros.
15295         (call_cleanups):  New functions.
15296         (struct jcf_partial):  New fields num_finalizers and return_value_decl.
15297         (generate_bytecode_insns):  Support CLEANUP_POINT_EXPR and
15298         WITH_CLEANUP_EXPR.  Handle cleanups in RETURN_EXPR and EXIT_BLOCK_EXPR.
15299         * lang.c (lang_init):  Call using_eh_for_cleanups.
15300         * parse.y (java_complete_lhs):  For SYNCHRONIZED_EXPR, defer
15301         completing operands to patch_synchronized_statement.
15302         Support CLEANUP_POINT_EXPR, WITH_CLEANUP_EXPR.
15303         (patch_synchronized_statement): Re-write suing CLEANUP_POINT_EXPR and
15304         WITH_CLEANUP_EXPR instead of TRY_EXPR.
15305
15306 1998-12-20  John F. Carr  <jfc@mit.edu>
15307
15308         * Make-lang.in: Comment out control-Ls; they upset some makes.
15309
15310 1998-12-18  Tom Tromey  <tromey@cygnus.com>
15311
15312         * parse.y (check_class_interface_creation): Use DIR_SEPARATOR
15313         consistently.
15314
15315 1998-12-17  Tom Tromey  <tromey@cygnus.com>
15316
15317         * parse.y (DIR_SEPARATOR): New define.
15318         (check_class_interface_creation): Use it.
15319
15320         * parse-scan.y (report_main_declaration): Recognize
15321         `java.lang.String' in argument to main.
15322
15323 1998-12-16  Per Bothner  <bothner@cygnus.com>
15324
15325         * parse.y (create_interface):  Remove bogus test.
15326
15327 1998-12-16  Per Bothner  <bothner@cygnus.com>
15328
15329         * jcf-parse.c (get_constant):  Set TREE_TYPE for string constants.
15330         (HANDLE_CONSTANTVALUE):  If flag_emit_class_files, call get_constant.
15331
15332 1998-12-16  Tom Tromey  <tromey@cygnus.com>
15333
15334         * parse-scan.y (qualified_name): Use correct sprintf format.
15335
15336 1998-12-15  Tom Tromey  <tromey@cygnus.com>
15337
15338         * gjavah.c (print_field_info): Changed how most negative number is
15339         printed.
15340
15341 1998-12-14  Per Bothner  <bothner@cygnus.com>
15342
15343         * parse.y (fold_constant_for_init):  New function.
15344         (resolve_expression_name):  Don't replace static final
15345         constant-initialized fields by its value.
15346         (java_complete_lhs):  New.  Same as java_complete_tree, except does
15347         not replace static final constant-initialized fields by their values.
15348         (register_fields):  If there is an initializer, set DECL_INITIAL and
15349         MODIFY_EXPR_FROM_INITIALIZATION_P.
15350         (java_complete_tree):  For MODIFY_EXPR, use java_complete_lhs for lhs.
15351         Only call patch_initialized_static_field if
15352         MODIFY_EXPR_FROM_INITIALIZATION_P.
15353         (patch_initialized_static_field):  If not valid constant, clear
15354         DECL_INITIAL.
15355
15356         * parse.y (lookup_field_wrapper):  Fix thinko.
15357
15358         * parse.y (java_complete_tree):  In EXPR_WITH_FILE_LOCATION,
15359         set and restore global lineno.
15360
15361 1998-12-14  Tom Tromey  <tromey@cygnus.com>
15362
15363         * gjavah.c (print_field_info): If value to print is the smallest
15364         value of its size, then print as hex to avoid later warnings from
15365         C++ compiler.
15366
15367 1998-12-14  Tom Tromey  <tromey@cygnus.com>
15368
15369         * gjavah.c (decompile_method): Decompile `return null'.
15370         (process_file): Generate `#pragma interface'.
15371         (method_declared): New global.
15372         (print_method_info): Set it.
15373         (HANDLE_CODE_ATTRIBUTE): Only print it method_declared set.
15374         (print_method_info): Handle abstract methods.
15375
15376 1998-12-13  Per Bothner  <bothner@cygnus.com>
15377
15378         * parse.y (patch_method_invocation):  If class_decl is null
15379         (e.g. an array type), use original type.
15380
15381         * parse.y (check_thrown_exceptions):  Temporary hack to suppress
15382         errors about uncaught exception from clone (of array, specifically).
15383
15384 1998-12-13  Tom Tromey  <tromey@cygnus.com>
15385
15386         * gjavah.c (decompile_method): Handle all types of `return'
15387         opcode.  Decompile `return this' and `return'.
15388         (method_access): New global.
15389         (print_method_info): Set it.
15390         (decompile_method): Don't decompile a synchronized method.
15391
15392 1998-12-13  Tom Tromey  <tromey@cygnus.com>
15393
15394         * jcf-reader.c (jcf_parse_one_method): Recognize
15395         HANDLE_END_METHOD.
15396         * gjavah.c (HANDLE_END_METHOD): New macro.
15397         (HANDLE_CODE_ATTRIBUTE): New macro.
15398         (decompile_method): New function.
15399         (print_method_info): Don't print `;\n' at end of function decl.
15400         Include java-opcodes.h.
15401         (decompiled): New global.
15402
15403 1998-12-12  Per Bothner  <bothner@cygnus.com>
15404
15405         * class.c (build_class_ref):  Handle PRIMTYPE.class if
15406         flag_emit_class_files.
15407         * expr.c (expand_java_field_op):  Don't optimize java.lang.XXX.TYPE
15408         if flag_emit_class_files.
15409         * parse.y (java_complete_tree):  Pre-liminary support for
15410         COMPONENT_REF - only to handle PRIMCLASS.TYPE.
15411
15412         * parse.y (patch_synchronized_statement):   Don't call monitorexit
15413         unless block CAN_COMPLETE_NORMALLY.  Propagate that flag properly.
15414
15415         * java-tree.h (DECL_LOCAL_STATIC_VALUE):  Removed - no longer used.
15416
15417         * zipfile.h (opendir_in_zip):  New declaration.
15418         * jcf-io.c (saw_java_source):  Moved to jcf-parse.c.
15419         (opendir_in_zip):  New function, using code from open_in_zip.
15420         (open_in_zip):  Call opendir_in_zip.
15421         (find_class):  Remove no-longer-used do_class_file parameter,
15422         but add source_ok parameter.  Change logic so if we find a .java file,
15423         we don't look for .class in later classpath emtries.
15424         * jcf-parse.c (load_class):  Pass saw_java_source to find_class.
15425         (jcf_figure_file_type):  Only call open_in_zip if correct magic number.
15426         * gjavah.c: Update call to find_class.
15427         * jcf-dump.c:  Likewise.
15428
15429         * jcf-write.c (put_linenumber):  Handle duplicate line numbers.
15430         (generate_bytecode_insns):  For EXPR_WITH_FILE_LOCATION, do
15431         nothing if body is empty_stmt_node.
15432         Various little fixes so SP gets correctly adjusted.
15433         For NEW_ARRAY_INIT, handle IGNORE_TARGET.
15434         For CALL_EXPR, test if static first.
15435         (generate_classfile):  Ignore fields that are DECL_ARTIFICIAL,
15436         such as the ones we create for Object and Class.
15437         Set and restore current_function_decl.
15438         * parse.y:  Check/set IS_AN_IMPORT_ON_DEMAND_P in read_import_dir.
15439         (note_possible_classname):  New function.
15440         (read_import_entry):  Removed.  Merged with read_import_dir.
15441         (read_import_dir):  Don't call find_class - that only gives us
15442         the first classpath entry having the needed package.
15443         Use the struct buffer data structure from buffer.h.
15444         (read_import_dir, find_in_imports_on_demand):  The remembered
15445         class names now use '.' (not '/') as package separator.
15446
15447         * parse.y (java_complete_expand_methods):  Call write_classfile
15448         here, and not in java_expand_classes (which only gets first class).
15449
15450 1998-12-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15451
15452         * parse.y (<type_declaration>):  Do maybe_generate_clinit last.
15453         (register_fields):  If a static fields has an initializer, just
15454         chain it on ctxp->static_initialized, and handle later.
15455         (java_complete_expand_methods):  Force <clinit> first.
15456         (resolve_expression_name, resolve_field_access):  Just get DECL_INITIAL
15457         - it's already been completed.
15458         (patch_initialized_static_field):  New function.
15459         (java_complete_field):  Call it.
15460
15461 1998-12-12  Per Bothner  <bothner@cygnus.com>
15462
15463         * expr.c (encode_newarray_type, build_new_array):  New functions.
15464         * java-tree.h:  Declare build_new_array.
15465         * jcf-write.c (patch_newarray):  Use build_new_array.
15466
15467         * expr.c (java_lang_expand_exp):  Support NEW_ARRAY_INIT.
15468         * jcf-write.c (generate_bytecode_insns):  Support NEW_ARRAY_INIT.
15469
15470         * parse.y (patch_new_array_init):  Re-organize.
15471         Now is passed the actual array (pointer) type of the value.
15472         Set the type of the CONSTRUCTOR to be an ARRAY_TYPE.
15473         (patch_array_constructor):  Removed - merged into patch_new_array_init.
15474         (java_complete_tree):  Update patch_new_array_init.
15475
15476         * jcf-write.c (find_constant_index):  New function.
15477         (generate_bytecode_insns):  Use find_constant_index.
15478         (generate_classfile):  Use find_constant_index for ConstantValue.
15479
15480 1998-12-11  Tom Tromey  <tromey@cygnus.com>
15481
15482         * expr.c (invoke_build_dtable): Renamed dtable -> vtable.
15483         * decl.c (init_decl_processing): Renamed dtable -> vtable.
15484         * class.c (make_class_data): Renamed dtable -> vtable, and
15485         dtable_method_count -> vtable_method_count.
15486
15487 1998-12-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15488
15489         * decl.c (long_zero_node, float_zero_node, double_zero_node): New
15490         global variables, initialized.
15491         * java-tree.h (long_zero_node, float_zero_node, double_zero_node):
15492         Declared new global variables.
15493         * lex.c (java_lex): Return long_zero_node, float_zero_node,
15494         double_zero_node, integer_zero_node upon direct matching.
15495         * parse.y (purify_type_name): Added function prototype.
15496         (duplicate_declaration_error_p): Consider new_type as potentially
15497         being a incomplete type. Use purify_type_name on type string.
15498         (method_header): saved_type: unused variable removed. Don't figure
15499         return type if method name is invalid.
15500         (java_complete_tree): Set CAN_COMPLETE_NORMALLY after `node' was
15501         processed by patch_unaryop.
15502         (patch_unaryop): Fixed typo in comment. Re-convert pre/post
15503         increment/decrement node into its original type after binary
15504         numeric promotion on its operands.
15505
15506 1998-12-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15507
15508         * parse.y (array_initializer:): Array init operand is NULL_TREE
15509         instead of a TREE_LIST of NULL_TREEs when parsing `{}'. `{,}' is
15510         now an error. Fixed indentation problems.
15511         (patch_string): Handle error_mark_node as an argument.
15512         (patch_new_array_init): Fixed indentation problems.
15513         (array_constructor_check_entry): Removed check on null wfl_value.
15514         Return an error if wfl_value's walk returns an error.
15515
15516 1998-12-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15517
15518         * java-tree.def (NEW_ARRAY_INIT): New Java tree code.
15519         * lex.c (java_lex): Remember column position before advancing one
15520         token. Retain location information on OCB_TK.
15521         * lex.h (typedef struct java_lc): Added new field.
15522         * parse.h (GET_SKIP_TYPE): New macro.
15523         (QUAL_DECL_TYPE): Redefined using GET_SKIP_TYPE.
15524         * parse.y (build_new_array_init, patch_new_array_init,
15525         patch_array_constructor, maybe_build_array_element_wfl,
15526         array_constructor_check_entry): New function prototypes.
15527         (switch_block:): Tagged <node>.
15528         (OCB_TK): Tagged <operator>.
15529         (array_initializer:): Installed actions.
15530         (variable_initializer): Build location information on element if
15531         necessary.
15532         (switch_statement:): Fixed indentation typo.
15533         (switch_block:): Redefined default action.
15534         (java_complete_tree): Handle NEW_ARRAY_INIT in MODIFY_EXPR:.
15535         (patch_assignment): Removed duplicate code.
15536         (maybe_build_array_element_wfl, build_new_array_init,
15537         patch_new_array_init, patch_array_constructor,
15538         array_constructor_check_entry): New functions.
15539
15540 1998-12-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15541
15542         * parse.y (array_initializer): Tagged <node>.
15543         (variable_initializer:): Use default rule.
15544         (array_initializer:): Defined actions.
15545         (variable_initializers:): Likewise.
15546         (resolve_qualified_expression_name): Use DECL_CONTEXT to build
15547         non-static field accesses.
15548         (patch_invoke): Fixed indentation typo.
15549         (java_complete_tree): Likewise.
15550         (build_labeled_block): Changed leading comment. Generate an error
15551         in case of duplicate loop labels.
15552         (patch_conditional_expr): Patch results of string concatenation
15553         operations.
15554
15555 1998-12-06  Per Bothner  <bothner@cygnus.com>
15556
15557         * constants.c (find_methodref_index):  When the class is an interface,
15558         generate CONSTANT_InterfaceMethodref instead of a CONSTANT_MethodRef.
15559
15560         * decl.c (finit_identifier_node):  Use "$finit$", rather than
15561         "<finit>" (which Sun's verifier rejects).
15562         * parse.y (maybe_generate_finit):  Leave out meaningless final flag.
15563         (generate_field_initialization_code):  Removed.
15564         (fix_constructors)  Don't add call to $finit$ here (wrong order).
15565         (patch_method_invocation):  Add $finit$ call here.
15566
15567         * java-tree.h (CALL_USING_SUPER):  New macro.
15568         * parse.y (patch_invoke):  Remove im local variable.
15569         (patch_method_invocation, patch_invoke):  Don't pass super parameter.
15570         (patch_invoke):  Use CALL_USING_SUPER instead of from_super parameter.
15571         (resolve_qualified_expression_name):  Maybe set CALL_USING_SUPER.
15572
15573         * jcf-write.c (get_access_flags):  Fix typo ACC_PUBLIC -> ACC_FINAL.
15574
15575         * parse.y (java_complete_tree):  Don't complain about unreachable
15576         statement if it is empty_stmt_node.
15577
15578         * jcf-write.c (find_constant_wide):  New function.
15579         (push_long_const):  Use find_constant_wide.
15580
15581         * jcf-write.c (generate_bytecode_insn):  Fix bug in switch handling.
15582         (generate_bytecode_insn):  Use correct dup variant for MODIFY_EXPR.
15583         Add "redundant" NOTE_PUSH/NOTE_POP uses so code_SP_max gets set.
15584         Emit invokeinterface when calling an interface method.
15585         Emit invokespecial also when calling super or private methods.
15586
15587         * jcf-write.c (generate_classfile):  Emit ConstantValue attributes.
15588
15589 1998-12-06  Per Bothner  <bothner@cygnus.com>
15590
15591         * jcf-dump.c (INVOKE):  If invokeinterface, print number of args.
15592
15593 1998-12-03  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15594
15595         * java-tree.h (java_layout_seen_class_methods): New function
15596         prototype.
15597         (LAYOUT_SEEN_CLASS_METHODS): Macro removed.
15598         * jcf-parse.c (parse_class_file): Call java_layout_seen_class_methods.
15599         * parse.h (PROMOTE_RECORD_IF_COMPLETE): New macro.
15600         * parse.y (method_declarator:): Defined action.
15601         (issue_warning_error_from_context): input_filename saved, set to
15602         the appropriate value and restored after java_error is called.
15603         (build_unresolved_array_type): Fixed comment.
15604         (register_fields): Use PROMOTE_RECORD_IF_COMPLETE.
15605         (method_header): Deal with return type the same way type are
15606         handled for fields and method's parameters and local variables
15607         types are handled.
15608         (check_method_redefinition): Removed extra CR.
15609         (declare_local_variables): Use PROMOTE_RECORD_IF_COMPLETE.
15610         (java_layout_seen_class_methods): New function.
15611         (java_layout_classes): Call java_layout_seen_class_methods.
15612
15613 1998-12-03  Per Bothner  <bothner@cygnus.com>
15614
15615         * parse,y (patch_synchronized_statement):  Set CAN_COMPLETE_NORMALLY.
15616
15617 1998-12-03  Per Bothner  <bothner@cygnus.com>
15618
15619         * jcf-dump.c (main):  Fix error message.
15620         * jcf-path.c (add_entry):  Style fix.
15621
15622 1998-12-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15623
15624         * class.c (layout_class_method): Call build_java_argument_signature
15625         on constructors too.
15626         * parse.y (check_method_redefinition): Use TYPE_ARGUMENT_SIGNATURE.
15627         (patch_method_invocation): Define a primary when resolving an
15628         expression name. Augmented comment on code checking illegal `this'
15629         usage. Loosened it test by accepting NEW_CLASS_EXPR.
15630
15631 1998-12-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15632
15633         * class.c (layout_class_method): Don't report error on non-static
15634         overriding static if the method is private.
15635         * java-tree.h (finish_class): Prototype added.
15636         * lex.c (java_get_line_col): Handle col argument -2 value.
15637         * parse.h: All static method declarations moved to parse.y.
15638         * parse.y: Now contains all static method declarations previously
15639         found in parse.h.
15640         (find_expr_with_wfl, missing_return_error,
15641         unreachable_stmt_error): New functions.
15642         (java_get_real_method_name): Identify constructors bearing class
15643         names in source code compiled classes only.
15644         (java_complete_expand_methods): Call missing_return_error.
15645         (invocation_mode): Private methods invoked as static methods.
15646         (java_complete_tree): Call unreachable_stmt_error.
15647
15648 1998-12-01  Tom Tromey  <tromey@cygnus.com>
15649
15650         * Makefile.in (+target): Removed.
15651         (+xmake_file): Likewise.
15652         (+tmake_file): Likewise.
15653         (.NOEXPORT): Removed duplicate.
15654
15655 1998-11-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
15656
15657         * Makefile.in (jc1, jv-scan): Link with $(SUBDIR_OBSTACK).
15658
15659         * jv-scan.c: Fix xmalloc prototype.  Provide an xmalloc definition.
15660
15661         * jvgenmain.c: Remove the xmalloc prototype, we get it from
15662         libiberty.h.  Provide an xmalloc definition.
15663
15664         * jvspec.c: Remove the xmalloc prototype.
15665
15666         * parse-scan.y: Include config.h and system.h.  Don't include
15667         OS headers or gansidecl.h.  Don't prototype xmalloc/xstrdup.
15668         Provide an xstrdup definition.
15669
15670 1998-11-26  Alexandre Oliva  <oliva@dcc.unicamp.br>
15671
15672         * jcf-path.c (add_entry): Recognize ".jar" too.
15673         * lang-specs.h: Likewise.
15674
15675 1998-11-26  Per Bothner  <bothner@cygnus.com>
15676
15677         * jcf-write.c (generate_bytecode_insns):  In Call_EXPR, handle
15678         soft_monitorenter_node, soft_monitorexit_node, throw_node.
15679
15680         * jcf-write.c (generate_bytecode_insns):
15681         Handle pre/post-increment/decrement of long.
15682
15683         * jcf-write.c (generate_bytecode_insns):
15684         Handle missing exception handler (finally for synchronized).
15685
15686 1998-11-25  Per Bothner  <bothner@cygnus.com>
15687
15688         * java-tree.h (end_params_node):  Declare global.
15689         * decl.c (end_params_node):  New global.
15690         (init_decl_processing, start_java_method):  Use end_params_node for
15691         end of list of parameter types.  Follows correct gcc conventions.
15692         * expr.c (pop_argument_types, pop_arguments):  Likewise.
15693         * lang.c (put_decl_node):  Likewise.
15694         * typeck.c (various places):  Likewise.
15695         * class.y (various places):  Likewise.
15696         * parse.y (various places):  Likewise.
15697
15698         * parse.y (java_complete_tree):  Move CAN_COMPLETE_NORMALLY.
15699         (build_jump_to_finally):  Add missing CAN_COMPLETE_NORMALLY.
15700
15701         * class.c:  Add #include flags.h, remove no-longer needed declaration.
15702
15703         * class.c (layout_class_method):  Remove commented-out code, re-format.
15704         Don't add vtable entry (or index) for private methods.
15705         * expr.c (expand_invoke):  A private method is implicitly final.
15706         * class.c (make_class_data):  If inlining or optimizing,
15707         skip private methods.
15708
15709         * class.c (finish_class):  New function.  Calls existing methods,
15710         but alls emits deferred inline functions.
15711         * jcf-parse.c (parse_class_file):  Call finish_class.
15712         * parse.y (java_complete_expand_methods):  Likewise.
15713
15714         * expr.c (build_java_binop):  Explicit default, to silence -Wall.
15715
15716         * expr.c (CHECK_PC_IN_RANGE):  Add void cast to kill warnings.
15717
15718 1998-11-25  Marc Espie <espie@quatramaran.ens.fr>
15719
15720         * jcf-write.c (generate_bytecode_conditional): Fix typo.
15721
15722 1998-11-24  Per Bothner  <bothner@cygnus.com>
15723
15724         * (generate_classfile): Always write class access flag with
15725         ACC_SUPER set.
15726
15727 1998-11-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15728
15729         * class.c (maybe_layout_super_class): New function.
15730         (layout_class): Reorganized. Loop on class methods dispatched into
15731         a new function. Call maybe_layout_super_class.
15732         (layout_class_methods, layout_class_method): New functions.
15733         * expr.c (expand_java_NEW): Call layout_class_methods on loaded
15734         class.
15735         (expand_invoke): Likewise.
15736         * java-tree.h (all_class_list): New global variable declared.
15737         (layout_class_methods, layout_class_method): New function
15738         prototypes.
15739         (LAYOUT_SEEN_CLASS_METHODS): New macro.
15740         * jcf-parse.c (all_class_list): New global variable.
15741         (load_class): Extended what class_or_name can be. Use parser
15742         context mechanism to save globals before calling jcf_parse.
15743         (jcf_parse_source): Don't parse twice if HAS_BEEN_ALREADY_PARSED_P
15744         is set on the file name.
15745         (jcf_parse): Layout class methods when Object is loaded, otherwise
15746         record class in all_class_list for delayed method layout.
15747         (parse_class_file): Use LAYOUT_SEEN_CLASS_METHODS.
15748         * lang.c (put_decl_node): Decode <init> into the decl context
15749         class name.
15750         * lex.c (java_allocate_new_line): Use xmalloc.
15751         * parse.h (INCOMPLETE_TYPE_P): Redefined to work with incomplete
15752         pointers, not TREE_LIST elements.
15753         (struct parser_ctxt): Fixed comment indentations, added comments
15754         and reordered some fields.
15755         (java_check_methods): Function prototype removed.
15756         * parse.y (java_push_parser_context): Use xmalloc.
15757         (java_parser_context_restore_global): Pop extra pushed ctxp only
15758         when there's nothing next.
15759         (maybe_create_class_interface_decl): Fixed comment, add new
15760         created class decl to all_class_list.
15761         (method_header): Use GET_REAL_TYPE on argument's types.
15762         (method_declarator): Use GET_REAL_TYPE, change type to the real
15763         type in TREE_LIST dependency node. Build argument list with the
15764         real type.
15765         (create_jdep_list): Use xmalloc. Removed allocation error message.
15766         (obtain_incomplete_type): Fixed leading comment. Broadened
15767         incoming argument meaning.
15768         (register_incomplete_type): Use xmalloc. Removed allocation error
15769         message.
15770         (safe_layout_class): Fixed leading comment.
15771         (jdep_resolve_class): Reversed if statement condition and switch
15772         if and else bodies.
15773         (resolve_and_layout): Fixed leading comment. Broadened incoming
15774         argument meaning.
15775         (complete_class_report_errors): New local variable name, for
15776         clarity. purify_type_name used for all error cases.
15777         (java_get_real_method_name): Stricter check on constructors.
15778         (java_check_regular_methods): Reverse methods list only if not
15779         already laid out. Layout artificial constructor.
15780         (java_check_methods): Deleted.
15781         (source_start_java_method): Obtain incomplete type for patchable
15782         method arguments.
15783         (java_layout_classes): Fixed leading comment. Use
15784         LAYOUT_SEEN_CLASS_METHODS, use a loop to check methods. Added else
15785         statement to layout operation, reuse LAYOUT_SEEN_CLASS_METHODS
15786         before returning. Fixed comments.
15787         (java_expand_classes): Check for errors up front.
15788         (patch_method_invocation): Class to search is resolved and laid
15789         out.
15790
15791 1998-11-24  Per Bothner  <bothner@cygnus.com>
15792
15793         * expr.c (java_lang_expand_expr):  Add missing emit_queue.
15794
15795         * javaop.h (int8):  Removed - not used.
15796         (jbyte):  Redefine portably with correct signedness.
15797
15798         * jcf-write.c (generate_bytecode_insns):  Don't free sw_state.cases.
15799
15800         * jcf-write.c (generate_bytecode_insns):  Fix typo
15801         OPCODE_getstatic to OPCODE_getfield.
15802
15803         * java-tree.def (CASE_EXPR, DEFAULT_EXPR):  Kind is 'x', not '1'.
15804         * parse.y (java_complete_tree):  For CASE_EXPR and DEFAULT_EXPR,
15805         set TREE_SIDE_EFFECTS (otherwise expand_expr may skip them).
15806
15807 1998-11-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15808
15809         * jcf-parse.c (jcf_parse_source): Function returned type is
15810         void. Added prototype.
15811         (jcf_parse): Function returned type is void.
15812         (yyparse): Remove call to fclose on the last parsed file.
15813
15814         * java-tree.h (jcf_parse): Changed jcf_parse prototype.
15815
15816 1998-11-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15817
15818         * class.c (unmangle_classname): Set QUALIFIED_P when appropriate.
15819         (layout_class): Cope with methods featuring WFL in decl names.
15820         * decl.c (unqualified_object_id_node): New global variable,
15821         initialized.
15822         (build_decl_no_layout): Removed.
15823         * expr.c (build_primtype_type_ref): Handle Double.
15824         (java_lang_expand_expr): Fixed indentations.
15825         * java-tree.h (CLASS_METHOD_CHECKED_P): Flag deleted.
15826         (flag_wall, flag_redundant, flag_not_overriding,
15827         flag_static_local_jdk1_1, unqualified_object_id_node): Global
15828         variable declarations.
15829         (build_decl_no_layout): Removed prototype.
15830         (java_get_real_method_name): Added prototype.
15831         (IS_UNCHECKED_EXPRESSION_P): Renamed IS_UNCHECKED_EXCEPTION_P.
15832         (java_parse_abort_on_error): Macro now just returns.
15833         * jcf-parse.c (jcf_parse_source): Check fclose returned
15834         value. Call emit_register_classes if java_report_errors returns
15835         zero.
15836         * lanc.c (flag_wall, flag_redundant, flag_not_overriding,
15837         flag_static_local_jdk1_1): New integer flags.
15838         (lang_decode_option): New flags set here.
15839         * parse.h (GET_REAL_TYPE, GET_METHOD_NAME): New macros.
15840         (OBSOLETE_MODIFIER_WARNING): Issue error message conditionally to
15841         the flag_redundant variable.
15842         (SET_TYPE_FOR_RESOLUTION): Consider Object being java.lang.Object
15843         when parsing java.lang.Object class.
15844         (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT): Added terminal
15845         NULL_TREE to build.
15846         (resolve_qualified_expression_name): Fixed indentation.
15847         (patch_array_ref): Changed prototype.
15848         (not_initialized_as_it_should_p): Prototype removed.
15849         (java_report_errors): Added function prototype.
15850         * parse.y (formal_parameter:): Changed error message for not yet
15851         supported final parameters.
15852         (class_type_list:): Set both PURPOSE and VALUE of created
15853         TREE_LIST to be class_type.
15854         (primary_no_new_array:): Handle class literals on primitive types.
15855         (parse_warning_context): Reinstalled correct force_error and
15856         do_warning flags setups.
15857         (java_report_errors): Changed prototype. Return java_error_count
15858         value.
15859         (variable_redefinition_error): Consider treating variable type as
15860         a fake pointer.
15861         (create_interface): Warn about redundant abstract modifier if
15862         flag_redundant is set. Changed error message.
15863         (lookup_field_wrapper): Save/restore globals before/after looking
15864         up field.
15865         (duplicate_declaration_error_p): Consider treating declaration
15866         type as a fake pointer.
15867         (register_fields): Extract real type from dependency node. Check
15868         for duplicate field declaration after type adjustment. Use
15869         DECL_INITIAL to store static final initialized values.
15870         (method_header): Extract real function type from dependency node.
15871         (check_abstract_method_header): Use GET_METHOD_NAME.
15872         (obtain_incomplete_type): Layout fake pointer type.
15873         (safe_layout_class): Don't try to check for methods before layout.
15874         (java_complete_class): Don't check for correct throws clause
15875         elements inheritance here.
15876         (resolve_and_layout): Broadened name parameter meaning.
15877         (reset_method_name): Use GET_METHOD_NAME.
15878         (java_get_real_method_name): New function.
15879         (java_check_regular_methods): Don't check methods in
15880         java.lang.Object.  Verify lineage of throws clause elements. Use
15881         flag_no_overriding in warning report.
15882         (check_throws_clauses): Don't check if class was from
15883         bytecode. Use IS_UNCHECKED_EXCEPTION_P macro.
15884         (java_check_methods): Don't set CLASS_METHOD_CHECKED_P flag.
15885         (declare_local_variables): Use flag_static_local_jdk1_1 to report
15886         warning on unsupported final local variables. Use build_decl
15887         instead of build_decl_no_layout. Get real local variable type from
15888         dependency node.
15889         (source_start_java_method): Get real parameter type from
15890         dependency node. Call build_decl instead of build_decl_no_layout.
15891         (java_layout_classes): Reverse tree and layout type and class as
15892         required. Mark class as loaded when done.
15893         (resolve_field_access): Fixed indentation. Restricted condition
15894         leading to static field access code generation. Set field_type
15895         decl's TREE_TYPE if QUAL_DECL_TYPE not available.
15896         (resolve_qualified_expression_name): Initialize type_found to
15897         null. Handle static field resolved during qualification. Fixed
15898         layout on non primitive field decl types.
15899         (not_accessible_p): Fixed typo in comment.
15900         (patch_method_invocation): Resolve and layout class to search from
15901         type.
15902         (lookup_method_invoke): Keep integer constant 0 as is. Resolve and
15903         layout non primitive type, if necessary. Make method node only to
15904         report errors.
15905         (find_applicable_accessible_methods_list): Consider WFL'ed method
15906         decl names. Fixed indentation.
15907         (argument_types_convertible): Resolve and layout target type if
15908         necessary.
15909         (java_complete_tree): Fixed indentation problems. Rewrote
15910         CALL_EXPR thrown exceptions check. Re-installed further processing
15911         of the assignment in certain cases.
15912         (patch_assignment): Call maybe_build_primttype_type_ref to perform
15913         inlining on class literals.
15914         (valid_builtin_assignconv_identity_widening_p): Cope with constant
15915         0 literal.
15916         (valid_method_invocation_conversion_p): Likewise.
15917         (patch_string): Temporary disable forbidden use of `this' in
15918         explicit constructor invocations when doing string concatenation
15919         within their scope.
15920         (patch_unaryop): Added comment. Reinstalled code to disable
15921         further check on assignment operation with cast expression RHS.
15922         (patch_switch_statement): Fixed indentation.
15923         (build_try_statement): Call build_decl instead of
15924         build_decl_no_layout.
15925         (patch_synchronized_statement): Likewise.
15926         (patch_throw_statement): Use IS_UNCHECKED_EXCEPTION_P instead of
15927         IS_UNCHECKED_EXPRESSION_P.
15928         (check_thrown_exceptions_do): Changed leading comment. Resolve and
15929         layout argument exception type.
15930         (purge_unchecked_exceptions): Use IS_UNCHECKED_EXCEPTION_P instead
15931         of IS_UNCHECKED_EXPRESSION_P.
15932
15933 1998-11-18  Anthony Green  <green@cygnus.com>
15934
15935         * jcf-parse.c (yyparse): Open class file in binary mode.
15936
15937 1998-11-15  Per Bothner  <bothner@cygnus.com>
15938
15939         * jvgenmain.c:  Need to #include "gansidecl.h" (to get PROTO).
15940
15941         * jcf-write.c (perform_relocations):  Move check out one loop.
15942
15943 1998-11-15  Anthony Green  <green@hoser.cygnus.com>
15944
15945         * Make-lang.in: Fix reference to srcdir.
15946         * jv-scan.c: Add missing xmalloc prototype.
15947         * jvgenmain.c: Ditto.
15948
15949 1998-11-15  Per Bothner  <bothner@cygnus.com>
15950
15951         * decl.c (error_mark_node), java-tree.h:  New global.
15952         * parse.y:  Use empty_stmt_node instead of size_zero_node.
15953         (build_if_else_statement):  If missing else, use empty_stmt_node.
15954
15955         * parse.y (not_initialized_as_it_should_p):  Removed, with its callers.
15956         (java_complete_expand_method):  Complain if return is missing.
15957         (java_check_regular_methods):  Comment out incorrect error check.
15958         (not_accessible_p):  Fix incorrect handling of protected methods.
15959         (patch_method_invocation):  Pass correct context to not_accessible_p.
15960         (find_applicable_accessible_methods_list):  Likewise.
15961         (qualify_ambiguous_name):  If ARRAY_REF, it's an expression name.
15962         (java_complete_tree):  For CASE_EXPR and DEFAULT_EXPR, set
15963         TREE_TYPE (to void_type_node);  otherwise expand_expr crashes.
15964         (patch_if_else_statement):  Fix setting of CAN_COMPLETE_NORMALLY.
15965
15966         * jcf-write.c (CHECK_OP, CHECK_PUT):  Add some error checking.
15967         (push_int_const):  Remove reundant NOTE_PUSH.
15968         (generate_bytecode_insns - case STRING_CST):  Do NOTE_PUSH.
15969         (- case SWITCH_EXPR):  Fix code generation bug.
15970         (- case PREDECREMENT_EXPR etc):  Remove redundant NOTE_PUSH.
15971         (generate_classfile):  More robust for abstract methods.
15972
15973 1998-11-15  Anthony Green  <green@cygnus.com>
15974
15975         * Makefile.in: jv-scan and jvgenmain all require libiberty.
15976         * Make-lang.in: Ditto.
15977
15978         * jv-scan.c: Remove xmalloc and xstrdup definitions.
15979         * jvgenmain: Ditto.
15980
15981 1998-11-15  Per Bothner  <bothner@cygnus.com>
15982
15983         * jcf-parse.c (HANDLE_EXCEPTIONS_ATTRIBUTE):  New macro.
15984
15985         * jcf-io.c (find_class):  Simpler/cleaner structure fixes a bug.
15986
15987 1998-11-14  Per Bothner  <bothner@cygnus.com>
15988
15989         Allow uses of interface types to verify.  This is not really
15990         type-safe, but it matches what Sun does, and is OK as long as
15991         there are appropriate run-time checks.
15992         * verify.c (merge_types):  If merging two interface types,
15993         just set the result to java.lang.Object.
15994         * expr.c (pop_type):  Any interface is matches by java.lang.Object.
15995
15996 1998-11-13  Tom Tromey  <tromey@cygnus.com>
15997
15998         * gjavah.c (main): Handle --output-class-directory argument.
15999         * jvspec.c (lang_specific_driver): Translate `-d' into
16000         -foutput-class-dir.
16001         * jcf.h (jcf_write_base_directory): Declare.
16002         * lang.c (lang_decode_option): Recognize -foutput-class-dir.
16003         * lang-options.h: Mention -foutput-class-dir.
16004         * jcf-write.c (jcf_write_base_directory): New global.
16005         (make_class_file_name): Put generated .class file into `-d'
16006         directory, or into source directory if -d not given.  Function now
16007         static.
16008         (write_classfile): Free class file name.  Handle case where class
16009         file name is NULL.
16010         (DIR_SEPARATOR): New macro.
16011         Include <sys/stat.h>
16012
16013         * Makefile.in (prefix): New macro.
16014
16015 1998-11-12  Per Bothner  <bothner@cygnus.com>
16016
16017         * parse.y (patch_invoke):  Do less if flag_emit_class_files.
16018         * expr.c (build_known_method_ref):  Don't check flag_emit_class_files
16019         here (done in patch_invoke instead).
16020         (case_identity):  Moved here from parse.y.
16021
16022         * java-tree.h (CAN_COMPLETE_NORMALLY):  New macro.
16023         * parse.y (java_complete_tree etc):  Maybe set CAN_COMPLETE_NORMALLY.
16024         * parse.y (java_complete_tree):  Re-order COMPOUND_EXPR in BLOCK
16025         so they can be efficiently scanned without recursion.
16026         Error it ! CAN_COMPLETE_NORMALLY first part of COMPOUND_EXPR.
16027         * expr.c (java_lang_expand_expr):  Expand statements of COMPOUND_EXPR
16028         in BLOCK iteratively, rather than recursively.
16029
16030         * parse.y (do_unary_numeric_promotion):  New function.
16031         (patch_unaryop, patch_binop, patch_array_ref):  Use it.
16032
16033         * parse.y (patch_newarray):  Various fixes.
16034
16035         Re-do handling of switch statements (for proper block scoping).
16036         * parse.y:  Add just a single block for the enture switch block,
16037         but don't create any "case blocks".
16038         (group_of_labels):  Rmeoved unneeded non-terminal.
16039         CASE_EXPR and DEFAULT_EXPR are added to current block.
16040         * expr.c (java_lang_expand_expr):  Inline SWITCH_EXPR here.
16041         Now also need to handle CASE_EXPR and DEFAULT_EXPR.
16042         * java-tree.h (SWITCH_HAS_DEFAULT):  New macro.
16043         * parse.y (wfl_operator, print_int_node): Make non-static.
16044         (java_complete_tree):  CASE_EXPR and DEFAULT_EXPR are now processed
16045         as part of recursive scan of block.
16046         (java_expand_switch ):  Removed - inlined into java_lang_expand_expr.
16047         (patch_switch_statement):  Most tests move dinto java_complete_tree.
16048
16049         * parse.y:  Make various production be non-typed (void).
16050         * parse.y (parse_error):  Merged into issue_warning_error_from_context.
16051         * parse.y (add_stmt_to_compound):  Don't create/change extra node.
16052         (patch_method_invocation_stmt):  Renamed to patch_method_invocation.
16053
16054         * jcf-write.c (struct jcf_handler):  New type.
16055         (struct jcf_switch_state):  New type.
16056         (SWITCH_ALIGN_RELOC, BLOCK_START_RELOC):  New relocation kinds.
16057         (alloc_handler, emit_unop, emit_reloc):  New functions.
16058         (adjust_typed_op):  Add extra parameter ("max type" offset).
16059         (emit_switch_reloc, emit_case-reloc):  New function.
16060         (generate_bytecode_conditional):  Handle REAL_TYPE comparisons.
16061         (generate_bytecode_insns):  Support REAL_CST, switch statements,
16062         exception handling, method calls, object/array creation, and more.
16063
16064         * class.c:  Remove some unused variables.
16065         * constants.c (find_string_constant):  New function.
16066         (count_constant_pool_bytes):  Fix to correctly handle wide constants.
16067         * decl.c (complete_start_java_method):  Don't _Jv_InitClass
16068         if flag_emit_class_files.
16069
16070 1998-11-12  Tom Tromey  <tromey@cygnus.com>
16071
16072         * jcf-io.c (find_class): Added explanatory comment.
16073
16074         * jcf-path.c (add_entry): Look for `.zip' at end of filename.  Add
16075         trailing slash to `.zip' entries.
16076
16077         * jvspec.c (lang_specific_driver): Correctly handle case where
16078         GC_NAME not defined.
16079
16080 1998-11-11  Tom Tromey  <tromey@cygnus.com>
16081
16082         * jvspec.c (GC_NAME): New define.
16083         (lang_specific_driver): Use GC_NAME.  Add GC_NAME to command line
16084         if required.
16085         * Make-lang.in (jvspec.o): Define WITH_GC_<name>.
16086
16087 1998-11-11  Per Bothner  <bothner@cygnus.com>
16088
16089         * jcf-dump.c (TABLE_SWITCH):  Fix typos.
16090
16091 1998-11-11  Tom Tromey  <tromey@cygnus.com>
16092
16093         * jcf-dump.c (main): Correctly recognize `--'-style long options.
16094
16095 1998-11-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16096
16097         * class.c (is_compiled_class): Call safe_layout_class for class
16098         compiled from source.
16099         * conver.h (convert_to_integer, convert_to_real,
16100         convert_to_pointer): Added prototypes.
16101         * decl.c (init_decl_processing): Non longer push the decls of
16102         `methodtable', `constants', `Class', `Field', `dispatchTable'
16103         `jexception' and `Method'.
16104         * expr.c (build_invokeinterface): New function.
16105         (expand_invoke): static variable CLASS_IDENT now in
16106         build_invokeinterface. Use build_invokeinterface.
16107         (expand_java_field_op): Moved code to inline
16108         java.lang.PRIMTYPE.TYPE into a function.
16109         (build_primtype_type_ref): New function.
16110         * java-tree.def (INSTANCEOF_EXPR): New tree code.
16111         * java-tree.h (CLASS_METHOD_CHECKED_P, METHOD_DEPRECATED,
16112         FIELD_DEPRECATED, CLASS_DEPRECATED): New flag macros.
16113         (DECL_CONSTRUCTOR_P): Fixed typo in comment.
16114         (DECL_LOCAL_STATIC_VALUE): New macro.
16115         (build_invokeinterface, build_primtype_type_ref): New function
16116         prototypes.
16117         (java_parse_abort_on_error): Macro rewritten.
16118         * jcf-parse.c (current_method): Add comment to declaration.
16119         (parse_zip_file_entries, process_zip_dir, void parse_source_file):
16120         Function prototypes fixed.
16121         (jcf_parse_source): push/pop parser context. save/restore global.
16122         (parse_source_file): Fixed leading comment. Now take a
16123         IDENTIFIER_NODE as an argument. Doesn't check methods, layout
16124         classes and pop the parser context anymore.
16125         (yyparse): Push parser context, save globals, parse the source
16126         file, restore globals and pop the parser context when processing a
16127         source file.
16128         * jcf.h (VERBOSE_SKELETON): Replaces SOURCE_FRONTEND_DEBUG define.
16129         * lex.c (java_parse_doc_section): New function.
16130         (java_lex): Call java_parse_doc_section when appropriate. Build an
16131         operator around INSTANCEOF_TK.
16132         * lex.h (java_lineterminator, java_sprint_unicode,
16133         java_unicode_2_utf8, java_lex_error, java_store_unicode):
16134         Prototypes rewritten.
16135         (java_parse_escape_sequence, java_letter_or_digit_p,
16136         java_parse_doc_section, java_parse_end_comment, java_get_unicode,
16137         java_read_unicode, java_store_unicode, java_read_char,
16138         java_allocate_new_line, java_unget_unicode, java_sneak_unicode):
16139         Added function prototypes.
16140         * parse.h (VERBOSE_SKELETON): Replaces SOURCE_FRONTEND_DEBUG
16141         define.
16142         (JNULLP_TYPE_P, CHECK_METHODS, CHECK_DEPRECATED, REGISTER_IMPORT):
16143         New macros
16144         (struct parser_ctxt): New fields: deprecated,
16145         current_parsed_class_un, gclass_list.
16146         (fix_method_argument_names, issue_warning_error_from_context,
16147         resolve_package, lookup_package_type): New function prototypes.
16148         (resolve_expression_name): Fixed function prototype.
16149         (find_applicable_accessible_methods_list): Fixed indentation, added
16150         extra argument in prototype.
16151         (check_final_assignment, build_null_of_type, check_deprecation,
16152         check_method_redefinition, reset_method_name,
16153         java_check_regular_methods, java_check_abstract_methods,
16154         maybe_build_primttype_type_ref): New function prototype.
16155         * parse.y (conver.h): Include.
16156         (INSTANCEOF_TK): Tagged <operator>.
16157         (single_type_import_declaration): Use REGISTER_IMPORT macro.
16158         (relational_expression:): Build binop for instanceof.
16159         (java_push_parser_context): Remember ctxp->gclass_list across
16160         contexts.
16161         (java_pop_parser_context): Simply return if no context
16162         exists. Remember gclass_list across contexts.
16163         (issue_warning_error_from_context): New function.
16164         (parse_error_context): Don't setup ctxp->elc here. Call
16165         issue_warning_error_from_context instead.
16166         (parse_warning_context): Likewise.
16167         (maybe_create_class_interface_decl): Removed DECL_ARTIFICIAL
16168         setup. Link new class/interface to ctxp->gclass_list.
16169         (add_superinterfaces): Register interface as incomplete if not
16170         loaded.
16171         (create_class): Remember class unqualified name in
16172         ctxp->current_parsed_class_un. Check class deprecation.
16173         (register_fields): Check field deprecation. Remember static final
16174         field value in DECL_LOCAL_STATIC_VALUE. Changed comment in part
16175         processing INIT.
16176         (method_header): New local variable ORIG_ARG. Use unqualified
16177         current class name for check on constructor errors. Promote return
16178         type if of record type. Argument list fix moved in
16179         fix_method_argument_names, called here. Check method deprecation.
16180         (fix_method_argument_names): New function.
16181         (method_declarator): Promote record typed arguments.
16182         (safe_layout_class): Check class methods before layout.
16183         (java_complete_class): Compute field layout when patched.
16184         (do_resolve_class): Try to load class after having it renamed
16185         after the package name.
16186         (get_printable_method_name): Use DECL_CONTEXT.
16187         (reset_method_name): New function.
16188         (check_method_redefinition): Use reset_method_name.
16189         (java_check_regular_methods): New local variable
16190         SAVED_FOUND_WFL. Temporarily reinstall overriding/hiding method
16191         names for error report. Check for compile-time error when method
16192         found has default (package) access.
16193         (java_check_abstract_methods): Now takes an interface DECL node as
16194         an argument. Also reinstall real name on unchecked
16195         overriding/hiding methods for error report.
16196         (java_check_methods): Fixed leading comment. Get classes to verify
16197         from ctxp->gclass_list. Use CHECK_METHODS macro and set
16198         CLASS_METHOD_CHECKED_P on class verification.
16199         (lookup_java_method2): Get real method name if necessary.
16200         (find_in_imports): Don't check package class access here.
16201         (resolve_package, lookup_package_type): New functions.
16202         (java_layout_classes): Fixed leading comment. Take classes to be
16203         laid out from ctxp->gclass_list.
16204         (java_complete_expand_methods): Don't expand native and abstract
16205         methods.
16206         (java_expand_classes): New function.
16207         (resolve_expression_name): Use additional argument ORIG.  Retrieve
16208         values of static final field of primitive types.
16209         (resolve_field_access): Handles static final field of promotive
16210         type.
16211         (resolve_qualified_expression_name): Handle STRING_CST as
16212         primaries and package name resolution. Check deprecation on found
16213         decls. Set where_found and type_found on non static field resolved
16214         during qualification. Layout non primitive field decl types.
16215         (check_deprecation): New function.
16216         (maybe_access_field): Simplified.
16217         (patch_method_invocation_stmt): Local variable CLASS_TYPE
16218         removed. Reverse method's argument when primary is a type. Don't
16219         use CLASS_TYPE to report problems, use IDENTIFIER_WFL
16220         instead. Include abstract class in the list of class searchable
16221         for constructors. Use DECL_CONTEXT of found method for access
16222         checks. Check method deprecation.
16223         (patch_invoke): Pay extra care to NEW_CLASS_EXPR type call when
16224         converting arguments. Handle INVOKE_INTERFACE.
16225         (lookup_method_invoke): Search constructor using existing
16226         infrastructure (don't rely on lookup_java_constructor anymore).
16227         (find_applicable_accessible_methods_list): Extra argument flag
16228         LC. Now include constructor in the search.
16229         (qualify_ambiguous_name): Conditional expression are primaries.
16230         (not_initialized_as_it_should_p): static final are always
16231         initialized.
16232         (java_complete_tree): Pass extra NULL argument to
16233         resolve_expression_name. Stricter test to carry on patching
16234         assignments. New case for INSTANCEOF_EXPR.
16235         (complete_function_arguments): Inline PRIMTYPE.TYPE read access.
16236         (check_final_assignment, maybe_build_primttype_type_ref): New
16237         functions.
16238         (patch_assignment): Detect resolved static finals and carry normal
16239         assignment error check on them. Inline PRIMTYPE.TYPE read access.
16240         (try_builtin_assignconv): Access constant 0 on all primitive
16241         types.
16242         (valid_builtin_assignconv_identity_widening_p): Accept identical
16243         types. Accept all promoted type on int type.
16244         (valid_ref_assignconv_cast_p): Accept a null pointer to be
16245         assigned to a reference.
16246         (valid_method_invocation_conversion_p): Accept to check null
16247         pointers.
16248         (build_binop): Merge declaration and initialization of local
16249         variable BINOP.
16250         (patch_binop): New case for INSTANCEOF_EXPR. NE_EXPR to accept all
16251         numeric types. Improved validity test for qualify operators on
16252         references.
16253         (patch_unaryop): Broadened rejection test for PREDECREMENT_EXPR
16254         and PREINCREMENT_EXPR. Also detect resolved static finals of a
16255         primitive type and issue the appropriate error message.
16256         (resolve_type_during_patch): Mark class loaded when resolved.
16257         (patch_cast): Allow null to be cased to reference types.
16258         (build_null_of_type): New function.
16259         (patch_array_ref): Handle array on references correctly.
16260         (patch_return): Removed unused local variable MODIFY. Force
16261         boolean to be returned as integers. Allows null to be returned by
16262         a function returning a reference.
16263         * typeck.c (convert_to_integer, convert_to_real,
16264         convert_to_pointer): Prototypes moved to convert.h
16265         (lookup_argument_method): Use method real name, if necessary.
16266
16267 1998-10-30  Tom Tromey  <tromey@cygnus.com>
16268
16269         * class.c (build_class_ref): Changed name of primitive classes to
16270         start with `_Jv_'.
16271
16272         * class.c (make_class_data): Renamed fields: nmethods to
16273         method_count, method_count to dtable_method_count.  Always set
16274         `state' field to 0.
16275         * decl.c (init_decl_processing): Likewise.
16276
16277 1998-10-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16278
16279         * class.c (layout_class): Don't mangle <finit>, produce
16280         __finit<class> instead. Don't verify artificial methods.
16281         * decl.c (finit_identifier_node): New declared global.
16282         (init_decl_processing): finit_identifier_node initialized.
16283         * java-tree.def (CONDITIONAL_EXPR): New Java tree code.
16284         * java-tree.h (finit_identifier_node): Declared as extern.
16285         (struct lang_decl): New field called_constructor.
16286         (DECL_CONSTRUCTOR_CALLS): Access macro to called_constructor.
16287         (CLASS_HAS_FINIT_P): New macro.
16288         (CALL_CONSTRUCTOR_P): Leading comment changed. Macro now checks
16289         explicit constructor invocation.
16290         (CALL_EXPLICIT_CONSTRUCTOR_P, CALL_THIS_CONSTRUCTOR_P,
16291         CALL_SUPER_CONSTRUCTOR_P): New macros.
16292         (write_classfile): Added prototype.
16293         * jcf-parse.c (jcf_parse_source): Parse and remember for
16294         generation if the file was seen on the command line.
16295         (parse_source_file): Don't write the class file here.
16296         (yyparse): Loop on files rewritten. Set current_jcf.
16297         (parse_zip_file_entries): Parse class file only if it was found.
16298         * lang.c (init_parse): Don't open command line provided filename
16299         here.
16300         (lang_parse): Don't set main_jcf anymore.
16301         * parse.h (ABSTRAC_CHECK): Capitalized arguments.
16302         (JCONSTRUCTOR_CHECK): New macro.
16303         (JBSC_TYPE_P): New macro.
16304         (IN_TRY_BLOCK_P, EXCEPTIONS_P): Fixed leading comment.
16305         (COMPLETE_CHECK_OP_2): New macro.
16306         (struct parse_ctxt): New field explicit_constructor_p.
16307         (check_class_interface_creation): Fixed prototype indentation.
16308         (patch_method_invocation_stmt): Prototype reflects added argument.
16309         (patch_invoke): Likewise.
16310         (complete_method_declaration, build_super_invocation,
16311         verify_constructor_circularity,
16312         build_this_super_qualified_invocation, get_printable_method_name,
16313         patch_conditional_expr, maybe_generate_finit, fix_constructors,
16314         verify_constructor_super, create_artificial_method,
16315         start_artificial_method_body, end_artificial_method_body,
16316         generate_field_initialization_code): New function prototypes.
16317         * parse.y: Fixed leading comment
16318         (constructor_header:, constructor_body:, block_end:): Rules tagged
16319         <node>.
16320         (type_declaration:): Call maybe_generate_finit.
16321         (method_declaration:): Action for method_body: placed in new
16322         function complete_method_declaration, called here.
16323         (constructor_declaration:): Defined actions. Removed leading
16324         FIXME.
16325         (constructor_header:): New rule with action.
16326         (constructor_body:): Rule rewritten using block_begin: and
16327         block_end:. Defined actions.
16328         (constructor_declarator:, explicit_constructor_invocation:):
16329         Defined actions.
16330         (block:): Use new rules block_begin: block_end:.
16331         (block_begin:, block_end:): New rules and actions.
16332         (block_statements:): Fixed error message for explicit
16333         constructors.
16334         (method_invocation:): Call build_this_super_qualified_invocation
16335         if primary is `this' or `super' was seen.
16336         (conditional_expression:): Action defined.
16337         (extra_ctxp_pushed_p): New static global flag.
16338         (java_parser_context_save_global): Create parser context if
16339         necessary. Use extra_ctxp_pushed_p to remember it.
16340         (java_parser_context_restore_global): Pop extra parser context if
16341         one exists.
16342         (build_array_from_name): Array on primitive types are marked
16343         loaded.
16344         (register_fields): Restore new name in field initializer
16345         expression if type was altered. Non static fields initialized upon
16346         declaration marked initialized.
16347         (maybe_generate_finit): New function.
16348         (maybe_generate_clinit): Use create_artificial_method,
16349         start_artificial_method_body, end_artificial_method_body. Generate
16350         debug info for enclosed initialization statements.
16351         (method_header): Fixed leading comment. Check constructor
16352         flags. Detect constructor declarations and set DECL_CONSTRUCTOR_P
16353         accordingly.
16354         (complete_method_declaration, constructor_circularity_msg,
16355         verify_constructor_circularity): New functions.
16356         (get_printable_method_name): New function.
16357         (check_method_redefinition): Don't rename <finit> methods. Fix
16358         declared constructor names. Error message for
16359         constructors modified.
16360         (java_check_regular_methods): Local variable seen_constructor
16361         renamed saw_constructor. Skip verification on constructors. Create
16362         default constructor with create_artificial_method.
16363         (java_check_methods): Removed unnecessary empty line.
16364         (create_artificial_method, start_artificial_method_body,
16365         end_artificial_method_body): New functions.
16366         (java_layout_classes): Changed leading comment. Reverse fields
16367         list if necessary. Always layout java.lang.Object if being
16368         defined.
16369         (java_complete_expand_methods): Verify constructor circularity.
16370         (java_complete_expand_method): Call fix_constructor on
16371         constructors.  Local variable no_ac_found removed. Restore
16372         bindings if method body expansion failed.
16373         (fix_constructors, verify_constructor_super,
16374         generate_field_initialization_code): New function.
16375         (java_expand_classes): Fixed leading comment. Write class file
16376         here.
16377         (resolve_expression_name): Check for illegal instance variable
16378         usage within the argument scope of an explicit constructor
16379         invocation.
16380         (resolve_qualified_expression_name): Pass extra from_super flag
16381         when invoking patch_method_invocation_stmt. New case for
16382         conditional expression when used as a primary. Check for error
16383         when acquiring super.
16384         (patch_method_invocation_stmt): Added extra argument super. New
16385         local variable is_static_flag. Set class_to_search according to
16386         the nature of the constructor invocation. Don't add `this'
16387         argument when expanding NEW_CLASS_EXPR. Check for illegal method
16388         invocation within the argument scope of explicit constructor
16389         invocation. Set is_static according to is_static_flag. Provide
16390         extra `super' argument to patch_invoke invocation.
16391         (patch_invoke): New argument from_super. Loop on arguments
16392         indentation fixed. Pass from_super to invocation_mode. New switch
16393         case INVOKE_SUPER. Fixed error message in switch default case.
16394         Don't use CALL_CONSTRUCTOR_P but rather a test on the tree node
16395         value.
16396         (invocation_mode): Return INVOKE_SUPER mode when appropriate.
16397         (lookup_method_invoke): Fixed prototypes in candidates list. Error
16398         message takes constructors into account.
16399         (find_applicable_accessible_methods_list): Fixed indentation.
16400         (qualify_ambiguous_name): Take explicit constructor invocation
16401         into account. Deal with a conditional expression as a primary to
16402         a method call.
16403         (java_complete_tree): Added local wfl_op3. New CONDITIONAL_EXPR
16404         case. Added extra argument to patch_method_invocation_stmt.
16405         Register calls made to explicit constructor `this'. Don't call
16406         save_expr in ARRAY_REF case when emitting class files. Check for
16407         illegal use of this when expanding explicit constructor invocation
16408         arguments.
16409         (complete_function_arguments): Set and reset parser context
16410         explicit_constructor_p field value when appropriate.
16411         (build_super_invocation, build_this_super_qualified_invocation):
16412         New functions.
16413         (patch_assignment): Fixed typo.
16414         (patch_unaryop): Check on final fields occurs only when a decl
16415         exits.
16416         (patch_return): Take constructors into account.
16417         (patch_conditional_expr): New function.
16418         * typeck.c (build_java_signature): Removed unnecessary empty line.
16419
16420 1998-10-28  Jeffrey A Law  (law@cygnus.com)
16421
16422         * Makefile.in (jcf-dump, gcjh): Link in $(LIBS) too.
16423
16424 1998-10-28  Tom Tromey  <tromey@cygnus.com>
16425
16426         * decl.c (init_decl_processing): Renamed fields.
16427         * class.c (make_class_data): Renamed bfsize, nfields, nsfields,
16428         interface_len, msize fields.
16429
16430         * class.c (make_class_data): Removed subclass_head and
16431         subclass_next fields.
16432         * decl.c (init_decl_processing): Removed subclass_head and
16433         subclass_next fields.
16434
16435 1998-10-28  Jeffrey A Law  (law@cygnus.com)
16436
16437         * jcf-write.c (emit_load_or_store): Avoid implicit int arguments.
16438         * mangle.c (emit_unicode_mangled_name): Similarly.
16439
16440 1998-10-26  Nick Clifton  <nickc@cygnus.com>
16441
16442         * jcf-parse.c (get_constant): Place braces around code to compute
16443         'd' when REAL_ARITHMETIC is not defined.
16444
16445 1998-10-25  H.J. Lu  (hjl@gnu.org)
16446
16447         * Make-lang.in (jv-scan$(exeext)): Add stamp-objlist to
16448         dependency.
16449
16450 1998-10-23  Tom Tromey  <tromey@cygnus.com>
16451
16452         * lang-specs.h: `.zip' files are input to jc1.
16453
16454 1998-10-22  Per Bothner  <bothner@cygnus.com>
16455
16456         * jvspecs.c:  Add (but don't enable) support for combining multiple
16457         .class and .java input filenames to a single jc1 invocation.
16458         Add support for -C flag (copile to .class files).
16459         Translate -classpath and -CLASSPATH arguments.
16460         * lang-specs.h:  Don't set %2 spec.
16461
16462 1998-10-22  Tom Tromey  <tromey@cygnus.com>
16463
16464         * jcf-path.c (add_entry): Don't add trailing separator if entry is
16465         a .zip file.
16466         (add_path): Don't add trailing separator to non-empty path
16467         elements.
16468
16469         * lang.c (lang_decode_option): Check for -fclasspath and
16470         -fCLASSPATH before examining other `-f' options.
16471
16472         * java-tree.h (finalize_identifier_node): Don't declare.
16473         * class.c (make_class_data): Don't push "final" field.
16474         * decl.c (init_decl_processing): Don't push "final" field.
16475         (finalize_identifier_node): Removed.
16476         (init_decl_processing): Don't set finalize_identifier_node.
16477
16478         * config-lang.in (stagestuff): Added jcf-dump and jv-scan.
16479
16480 1998-10-11  Anthony Green  <green@cygnus.com>
16481
16482         * Make-lang.in (java): Depend on jcf-dump and jv-scan.
16483         (JV_SCAN_SOURCES): New macro.
16484         (JCF_DUMP_SOURCES): Likewise.
16485         (jcf-dump$(exeext)): New target.
16486         (jv-scan$(exeext)): New target.
16487
16488 1998-10-22  Tom Tromey  <tromey@cygnus.com>
16489
16490         * Makefile.in (LEX): Removed.
16491         (LEXFLAGS): Likewise.
16492         (SET_BISON): New macro.
16493         (BISON): Removed.
16494         ($(PARSE_C)): Use SET_BISON.  Run bison from srcdir to avoid
16495         spurious diffs in parse.c.
16496         ($(PARSE_SCAN_C)): Likewise.
16497         (PARSE_DIR): New macro.
16498         (PARSE_C): Use it.
16499         (PARSE_SCAN_C): Likewise.
16500         (PARSE_RELDIR): New macro.
16501
16502         * jcf-io.c (saw_java_source): Define here, not in jcf-parse.c.
16503
16504         * jcf-io.c (find_class): Use saw_java_source to determine when to
16505         look for `.java' file.
16506         * jcf-parse.c (saw_java_source): New global.
16507         (yyparse): Set it if `.java' file seen.
16508
16509         * Make-lang.in (JAVA_SRCS): Added jcf-path.c.
16510         (GCJH_SOURCES): Likewise.
16511         * Makefile.in (datadir): New macro.
16512         (libjava_zip): Likewise.
16513         (JAVA_OBJS): Added jcf-path.o.
16514         (../jcf-dump$(exeext)): Depend on and link with jcf-depend.o.
16515         (../gcjh$(exeext)): Likewise.
16516         (jcf-path.o): New target.
16517         * java-tree.h (fix_classpath): Removed decl.
16518         * jcf-parse.c (fix_classpath): Removed.
16519         (load_class): Don't call fix_classpath.
16520         * parse.y (read_import_dir): Don't call fix_classpath.
16521         * lex.h: Don't mention classpath.
16522         * lex.c (java_init_lex): Don't initialize classpath.
16523         * jcf-io.c (classpath): Removed global.
16524         (find_class): Use jcf_path iteration functions.  Correctly search
16525         class path for .java file.
16526         (open_in_zip): New argument `is_system'.
16527         * jcf-dump.c (main): Call jcf_path_init.  Recognize all new
16528         classpath-related options.
16529         * lang.c (lang_decode_option): Handle -fclasspath, -fCLASSPATH,
16530         and -I.
16531         (lang_init): Call jcf_path_init.
16532         * lang-options.h: Mention -I, -fclasspath, and -fCLASSPATH.
16533         * lang-specs.h: Handle -I.  Minor cleanup to -M options.
16534         Correctly put braces around second string in each entry.
16535         * gjavah.c (main): Call jcf_path_init.  Recognize all the new
16536         classpath-related options.
16537         (help): Updated for new options.
16538         * jcf.h: Declare functions from jcf-path.c.  Don't mention
16539         `classpath' global.
16540         * jcf-path.c: New file.
16541
16542         * jcf-depend.c: Include jcf.h.
16543
16544         * jcf-write.c (localvar_alloc): Returns `void'.
16545         (localvar_free): Removed unused variable.
16546
16547         * lang.c (OBJECT_SUFFIX): Define if not already defined.
16548         (init_parse): Use OBJECT_SUFFIX, not ".o".
16549
16550 1998-10-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16551
16552         * class.c (emit_register_classes): Renamed from
16553         emit_register_class.
16554         * java-tree.h (emit_register_classes): Prototype renamed from
16555         emit_register_class.
16556         * jcf-parse.c (yyparse): Call emit_register_classes once before
16557         returning.
16558         * parse.y (java_expand_classes): No longer register classes.
16559
16560 1998-10-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16561
16562         * class.c (is_compiled_class): New local variable
16563         seen_in_zip. Identify classes found in currently compiled source
16564         file(s).
16565         * decl.c (complete_start_java_method): Fixed typo.
16566         * java-tree.h (CLASS_FROM_CURRENTLY_COMPILED_SOURCE_P,
16567         HAS_BEEN_ALREADY_PARSED_P, IS_A_COMMAND_LINE_FILENAME_P): New macros.
16568         (CLASS_P): Moved around.
16569         (java_parse_abort_on_error): Macro moved from jcf-parse.c
16570         * jcf-parse.c (java_parse_abort_on_error): Macro moved to
16571         java-tree.h
16572         (jcf_parse_source): Changed leading comment. Removed unnecessary
16573         fclose and CLASS_FROM_SOURCE_P marking.
16574         (parse_source_file): New local variables remember_for_generation
16575         and filename. Mark parsed file name identifier node. Removed block
16576         executed when parse_only was null. Set remember_for_generation.
16577         Use it as an argument to java_pop_parser_context.
16578         (yyparse): New local variables several_files, list, next node and
16579         current_file_list. Split ampersand separated file names into
16580         current_file_list. Iterate through the list and parse accordingly.
16581         * parse.h (java_pop_parser_context): New function prototype.
16582         * parse.y (ctxp_for_generation): New static global variable.
16583         (java_pop_parser_context): New argument generate. Link popped ctxp
16584         to ctxp_for_generation list accordingly.
16585         (java_complete_expand_methods): Fixed indentation.
16586         (java_expand_classes): New function.
16587
16588 1998-10-17  Per Bothner  <bothner@cygnus.com>
16589
16590         * Makefile.in:  Link with libiberty.a instead of memmove.o.
16591
16592 1998-10-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16593
16594         * lex.c (setjmp.h): No longer included.
16595         * lex.h (setjmp.h): Included.
16596         * parse.h (SET_TYPE_FOR_RESOLUTION): New macro.
16597         (duplicate_declaration_error_p): Renamed from
16598         duplicate_declaration_error.
16599         (build_array_from_name): New function prototype.
16600         * parse.y (setjmp.h): No longer included.
16601         (variable_declarator_id): Define action.
16602         (build_array_from_name): New function.
16603         (duplicate_declaration_error_p): Renamed from
16604         duplicate_declaration_error.  Fixed leading comment.
16605         (register_fields): Main `for' loop reorganized. Uses
16606         SET_TYPE_FOR_RESOLUTION and build_array_from_name.
16607         (method_declarator): Uses SET_TYPE_FOR_RESOLUTION and call
16608         build_array_from_name.
16609         (resolve_class): Set CLASS_LOADED_P on newly build array dimension
16610         types.
16611         (read_import_dir): Don't try to skip `.' and `..'.
16612         (declare_local_variables): Uses SET_TYPE_FOR_RESOLUTION and
16613         build_array_from_name. Main `for' loop reorganized.
16614         (resolve_qualified_expression_name): When building access to a
16615         field, use the type where the field was found, not its own type.
16616         (maybe_access_field): Use field DECL_CONTEXT if the type where the
16617         field was found is null.
16618         (qualify_ambiguous_name): Sweep through all successive array
16619         dimensions.
16620
16621 1998-10-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16622
16623         * java-tree.h (pop_labeled_block, lang_printable_name,
16624         maybe_add_interface, set_super_info, get_access_flags_from_decl,
16625         interface_of_p, inherits_from_p, fix_classpath,
16626         complete_start_java_method, emit_handlers, init_outgoing_cpool,
16627         make_class_data, register_class, alloc_name_constant): New
16628         function prototypes.
16629         * lang.c (lang_decode_option): Set argc argument unused. Fixed
16630         indentation. Added cast to remove warning.
16631         (lang_printable_name): Set v argument unused.
16632         (lang_print_error): Added argument to lang_printable_name call.
16633         (java_dummy_print, print_lang_decl, print_lang_type,
16634         print_lang_identifier, lang_print_xnode): All argument marked
16635         unused.
16636         * lex.c (java_unget_unicode): Removed unnecessary argument.
16637         (java_allocate_new_line): Unused local variable is gone.
16638         (java_read_char): Added parenthesis in expressions to remove
16639         warnings.  Added final return statement.
16640         (java_read_unicode): Added parenthesis in expression to remove
16641         warning.
16642         (java_parse_end_comment): Fixed java_unget_unicode invocation.
16643         (java_parse_escape_sequence): Likewise.
16644         (java_lex): Unused local variables are gone. Fixed
16645         java_unget_unicode invocation.
16646         * lex.h (set_float_handler): Prototype added when JC1_LITE not
16647         defined.
16648         * parse.h (ERROR_CANT_CONVERT_TO_BOOLEAN): Fixed
16649         lang_printable_name invocation in macro.
16650         (ERROR_CANT_CONVERT_TO_NUMERIC, ERROR_CAST_NEEDED_TO_INTEGRAL):
16651         Likewise.
16652         (duplicate_declaration_error): Suppressed unused argument in
16653         prototype.
16654         (identical_subpath_p): Function declaration is gone.
16655         (patch_invoke): Suppressed unused argument in prototype.
16656         (patch_cast, build_labeled_block, check_thrown_exceptions):
16657         Likewise.
16658         * parse.y (setjmp.h): Included
16659         (toplev.h): Likewise.
16660         (field_declaration:): Suppressed unused local
16661         (label_decl:): Fixed build_labeled_block invocation.
16662         (java_pop_parser_context): Put extra parenthesis around assignment
16663         in if.
16664         (yyerror): Suppressed unused local variables.
16665         (variable_redefinition_error): Fixed lang_printable_name
16666         invocation.
16667         (create_interface): Suppressed unused local variables.
16668         (create_class): Likewise.
16669         (duplicate_declaration_error): Suppressed unused argument. Fixed
16670         lang_printable_name invocation.
16671         (register_fields): Suppressed unused local variable. Fixed
16672         duplicate_declaration_error invocation.
16673         (method_header): Suppressed unused local variable.
16674         (method_declarator, parser_check_super): Likewise.
16675         (java_complete_class): Suppressed unused local variable. Fixed
16676         fatal error message.
16677         (complete_class_report_errors): Added default: in switch.
16678         (java_check_regular_methods): Fixed lang_printable_name
16679         invocations.
16680         (check_throws_clauses): Likewise.
16681         (java_check_abstract_methods): Suppressed unused local
16682         variable. Fixed lang_printable_name invocation.
16683         (read_import_entry): Added supplemental return statement.
16684         (read_import_dir): Suppressed unused local variables.
16685         (check_pkg_class_access, declare_local_variables): Likewise.
16686         (source_start_java_method): Suppressed unused extern variable
16687         declarations
16688         (expand_start_java_method): Suppressed unused extern and local
16689         variable declarations.
16690         (java_complete_expand_methods): Likewise.
16691         (java_complete_expand_method): Suppressed unused local variables.
16692         (make_qualified_name): Likewise.
16693         (resolve_qualified_expression_name): Added default: in
16694         switch. Fixed lang_printable_name invocation.
16695         (class_instance_creation_expression): Added parenthesis around
16696         expressions.
16697         (patch_method_invocation_stmt): Fixed lang_printable_name and
16698         patch_invoke invocations.
16699         (check_for_static_method_reference): Fixed lang_printable_name
16700         invocation.
16701         (patch_invoke): Suppressed unused arguments and local variables.
16702         (lookup_method_invoke): Suppressed unused local variables.
16703         (qualify_ambiguous_name): Added default: in switch.
16704         (identical_subpath_p): Function removed.
16705         (patch_assignment): Suppressed unused local variables. Suppressed
16706         unnecessary if statement. Fixed lang_printable_name invocations.
16707         (try_builtin_assignconv): Fixed lang_printable_name invocations.
16708         (valid_ref_assignconv_cast_p): Parenthesis around
16709         expression. Suppressed unused local variables.
16710         (build_binop): Suppressed unused local variables. fixed
16711         lang_printable_name invocations.
16712         (string_constant_concatenation): Suppressed unused local
16713         variables.
16714         (patch_unaryop): Fixed lang_printable_name invocation.
16715         (patch_cast): Suppressed unnecessary argument. Fixed
16716         lang_printable_name invocation.
16717         (patch_array_ref): Fixed lang_printable_name invocation.
16718         (patch_newarray, patch_return, patch_if_else_statement): Likewise.
16719         (build_labeled_block): Suppressed unused argument.
16720         (generate_labeled_block): Fixed build_labeled_block invocation.
16721         (build_loop_body): Suppressed unused local variables.
16722         (patch_loop_statement): Likewise.
16723         (patch_exit): Fixed lang_printable_name invocation.
16724         (patch_switch_statement): Likewise.
16725         (case_identity): First argument marked unused.
16726         (patch_try_statement): Fixed lang_printable_name invocations.
16727         (patch_synchronized_statement, patch_throw_statement): Likewise.
16728         (check_thrown_exceptions): Fixed check_thrown_exceptions and
16729         lang_printable_name invocations.
16730         (check_thrown_exceptions_do): Suppressed unused argument.
16731
16732 1998-10-14  Tom Tromey  <tromey@cygnus.com>
16733
16734         * jcf-write.c (write_classfile): Add output class file as target.
16735         * lang-options.h: Added -MD, -MMD, -M, and -MM.
16736         * jcf.h: Added declarations for dependency-tracking functions.
16737         * lang-specs.h: Handle -M, -MM, MD, and -MMD.
16738         * lang.c (lang_decode_option): Recognize -MD and -MMD.
16739         (finish_parse): Call jcf_dependency_write.
16740         (dependency_tracking): New global.
16741         (DEPEND_SET_FILE): New define.
16742         (DEPEND_ENABLE): New define.
16743         (init_parse): Enable dependency tracking if required.
16744         Include "flags.h".
16745         * Makefile.in (JAVA_OBJS): Added jcf-depend.o.
16746         (../jcf-dump$(exeext)): Depend on and link with jcf-depend.o.
16747         (../gcjh$(exeext)): Likewise.
16748         (jcf-depend.o): New target.
16749         * Make-lang.in (JAVA_SRCS): Added jcf-depend.c.
16750         (GCJH_SOURCES): Likewise.
16751         * jcf-io.c (open_class): Call jcf_dependency_add_file.  Added
16752         dep_name argument.
16753         (find_classfile): Added dep_name argument.
16754         (find_class): Compute name of dependency.
16755         (open_in_zip): Call jcf_dependency_add_file.
16756         * gjavah.c (output_file): No longer global.
16757         (usage): Don't mention "gjavah".
16758         (help): Likewise.
16759         (java_no_argument): Likewise.
16760         (version): Likewise.
16761         (main): Recognize and handle -M family of options.
16762         (print_mangled_classname): Return is void.
16763         (process_file): Handle case where output is suppressed.
16764         (HANDLE_END_FIELD): Likewise.
16765         (HANDLE_METHOD): Likewise.
16766         * jcf-depend.c: New file.
16767
16768 1998-10-13  Jeffrey A Law  (law@cygnus.com)
16769
16770         * java-tree.def: Add missing newline at EOF.
16771
16772 1998-10-13  Tom Tromey  <tromey@cygnus.com>
16773
16774         * jcf-dump.c (process_class): Use FATAL_EXIT_CODE, not -1.
16775         (main): Likewise.  Exit with SUCCESS_EXIT_CODE at end of
16776         function.
16777         Include <config.h> and "system.h".
16778         (disassemble_method): Undefine RET to avoid clash with
16779         config/i386/i386.h.
16780
16781 1998-10-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16782
16783         * decl.c (runtime_exception_type_node, error_exception_type_node):
16784         New global variables.
16785         (init_decl_processing): Initialized.
16786         * expr.c (java_lang_expand_expr): Set caught exception type to
16787         null if catch handler argument doesn't exit.
16788         * java-tree.def (SYNCHRONIZED_EXPR, THROW_EXPR): New Java specific
16789         tree codes.
16790         * java-tree.h (runtime_exception_type_node,
16791         error_exception_type_node): Global variables declared.
16792         (DECL_FUNCTION_THROWS): New macro.
16793         (DECL_FUNCTION_BODY): Modified comment.
16794         (DECL_SPECIFIC_COUNT): Likewise.
16795         (struct lang_decl): New field throws_list.
16796         (IS_UNCHECKED_EXPRESSION_P): New macro.
16797         * lex.c (java_lex): Generate location information for THROW_TK.
16798         * parse.h (PUSH_EXCEPTIONS, POP_EXCEPTIONS, IN_TRY_BLOCK_P,
16799         EXCEPTIONS_P): New macros.
16800         (enum jdep_code): New value JDEP_EXCEPTION.
16801         (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT,
16802         BUILD_ASSIGN_EXCEPTION_INFO, BUILD_THROW, SET_WFL_OPERATOR,
16803         PATCH_METHOD_RETURN_ERROR): New macros.
16804         (patch_method_invocation_stmt): Added new argument to prototype.
16805         (patch_synchronized_statement, patch_throw_statement,
16806         check_thrown_exceptions, check_thrown_exceptions_do,
16807         purge_unchecked_exceptions, check_throws_clauses): New function
16808         prototypes.
16809         * parse.y Fixed typo in keyword section.
16810         (throw:): Rule tagged <node>.
16811         (THROW_TK): Keyword tagged <operator>.
16812         (method_header:): Last argument to call to method_header passed
16813         from throws: rule.
16814         (throws:, class_type_list:, throw_statement:,
16815         synchronized_statement:, synchronized:): Defined actions.
16816         (method_header): New local variable current. Register exceptions
16817         from throws clause.
16818         (java_complete_tree): Complete and verify exceptions from throws
16819         clause.
16820         (complete_class_report_errors): Error message on exceptions not
16821         found
16822         (java_check_regular_methods): Fixed typo. Shortcut on private
16823         overriding methods. Changed error message on method
16824         redefinition. Check for throws clause compatibility.
16825         (check_throws_clauses): New function.
16826         (java_check_abstract_methods): Use DECL_NAME for wfl or current
16827         method. Changed error message on method redefinition.
16828         (currently_caught_type_list): New static variable.
16829         (java_complete_expand_methods): Purge unchecked exceptions from
16830         throws clause list. Call PUSH_EXCEPTIONS before walk and
16831         POP_EXCEPTIONS after.
16832         (resolve_qualified_expression_name): Pass new argument as NULL to
16833         patch_method_invocation_stmt.
16834         (patch_method_invocation_stmt): New argument ref_decl. Invoke
16835         PATCH_METHOD_RETURN_ERROR when returning with error. Reverse
16836         argument list when appropriate. Use new argument if non null to
16837         store selected method decl.
16838         (patch_invoke): Convert if necessary args of builtin types before
16839         forming CALL_EXPR. Argument list no longer reversed here.
16840         (invocation_mode): Treat final methods as static methods.
16841         (java_complete_tree): New cases for THROW_EXPR: and
16842         SYNCHRONIZED_EXPR:. Check thrown exceptions when completing
16843         function call.
16844         (complete_function_arguments): No more RECORD_TYPE
16845         conversion. Function parameter nodes no longer saved.
16846         (valid_ref_assignconv_cast_p): Avoid handling null type.
16847         (patch_binop): Fixed null constant reference handling.
16848         (build_try_statement): Use BUILD_ASSIGN_EXCEPTION_INFO and
16849         BUILD_THROW macros.
16850         (patch_try_statement): Fixed comments. Record caught types in
16851         list, push the list, expand try block and pop the list.
16852         (patch_synchronized_statement, patch_throw_statement,
16853         check_thrown_exceptions, check_thrown_exceptions_do,
16854         purge_unchecked_exceptions): New functions.
16855         * typeck.c (lookup_argument_method): Allow WFL in place of method
16856         DECL_NAME during method definition check
16857
16858 1998-10-09  Tom Tromey  <tromey@cygnus.com>
16859
16860         * gjavah.c (decode_signature_piece): New function.
16861         (print_c_decl): Use it.  Added `name_override' argument.
16862         (print_method_info): Use name_override argument to print_c_decl.
16863         (seen_fields): Removed.
16864         (print_field_info): Don't update seen_fields.
16865         (struct method_name): New structure.
16866         (method_name_list): New global.
16867         (print_method_info): Add new method to list of methods.
16868         (name_is_method_p): New function.
16869         (print_field_info): If field name has same name as method, then
16870         change field name.
16871         (process_file): Parse methods before fields.
16872         (field_pass): New global.
16873         (HANDLE_END_FIELD): Take field_pass into account.
16874
16875 1998-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
16876
16877         * Makefile.in (keyword.h): Add -L KR-C -F ', 0' flags to gperf.
16878         (keyword.h): Regenerate using gperf 2.7.1 (19981006 egcs).
16879
16880 1998-10-03  Anthony Green  <green@cygnus.com>
16881
16882         * jvspec.c: Fix bug in jvgenmain_spec patch.
16883
16884 1998-10-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
16885
16886         * Makefile.in (lang.o:): Install dependency on java-tree.def.
16887         * decl.c (soft_exceptioninfo_call_node): New global variable.
16888         (init_decl_processing): Fixed indentation. soft_badarrayindex_node
16889         takes extra integer argument. soft_exceptioninfo_call_node
16890         initialized.
16891         * except.c (java_set_exception_lang_code): New function
16892         (method_init_exceptions): Called here.
16893         (prepare_eh_table_type): New function.
16894         (expand_end_java_handler): Called here.
16895         * expr.c (build_java_throw_out_of_bounds_exception): Now features
16896         one argument. Modified generation of call to
16897         soft_badarrayindex_node to use new argument.
16898         (build_java_arrayaccess): Pass faulty index value to
16899         build_java_throw_out_of_bounds_exception.
16900         (generate_name): New function.
16901         (java_lang_expand_expr): New local variables node, current,
16902         has_finally_p. Expand TRY_EXPR node.
16903         (process_jvm_instruction): Replace top of the stack with thrown
16904         object reference when entering exception handler.
16905         * java-tree.def (TRY_EXPR, CATCH_EXPR, FINALLY_EXPR): New Java
16906         specific tree codes.
16907         * java-tree.h (soft_exceptioninfo_call_node): Declaration of new
16908         global.
16909         (DECL_SPECIFIC_COUNT): New macro.
16910         (prepare_eh_table_type, java_set_exception_lang_code,
16911         generate_name): New function declarations.
16912         (match_java_method): Declaration deleted.
16913         (FINALLY_EXPR_LABEL, FINALLY_EXPR_BLOCK, CATCH_EXPR_GET_EXPR): New
16914         macros.
16915         * lex.c (TRY_TK, CATCH_TK): Generate location information.
16916         * parse.h (redefinition_error, refine_accessible_methods_list,
16917         can_cast_to_p): Function declaration removed.
16918         (classitf_redefinition_error, variable_redefinition_error,
16919         parse_jdk1_1_error, find_applicable_accessible_methods_list,
16920         find_most_specific_methods_list, argument_types_convertible,
16921         enter_a_block, valid_builtin_assignconv_identity_widening_p,
16922         valid_cast_to_p, valid_method_invocation_conversion_p,
16923         try_reference_assignconv, add_stmt_to_compound,
16924         build_jump_to_finally, build_tree_list, patch_try_statement,
16925         java_get_catch_block): New function declarations.
16926         * parse.y (string_buffer_type): Global variable deleted.
16927         (group_of_labels, catches, catch_clause, catch_clause_parameter,
16928         finally): Rules tagged <node>.
16929         (TRY_TK, CATCH_TK): Token tagged <operator>.
16930         (class_body_declaration:, class_member_declaration:,
16931         formal_parameter:, explicit_constructor_invocation:,
16932         interface_member_declaration:, constant_declaration:,
16933         primary_no_new_array:, class_instance_creation_expression:,
16934         array_creation_expression:): Issue error on unsuported JDK1.1
16935         features.
16936         (try_statement:, catches:, finally:): Define actions.
16937         (catch_clause_parameter): New rule.
16938         (catch_clause:): Use new rule catch_clause_parameter.
16939         (parse_jdk1_1_error): New function.
16940         (redefinition_error): Renamed classitf_redefinition_error.
16941         (variable_redefinition_error): New function.
16942         (check_class_interface_creation): Call
16943         classitf_redefinition_error.
16944         (java_complete_tree): Added error message on JDEP_TYPE: case.
16945         (complete_class_report_errors): Fixed indentation.
16946         (declare_local_variables): Call variable_redefinition_error.
16947         (source_end_java_method): Call java_set_exception_lang_code and
16948         emit_handlers where appropriate.
16949         (java_method_add_stmt): Call add_stmt_to_block.
16950         (add_stmt_to_block): New function.
16951         (lookup_method_invoke): Fixed outside comment. new local variable
16952         candicates.  Call find_applicable_accessible_methods_list and
16953         find_most_specific_methods_list when searching for a
16954         method. Modified error report to list possible candidates when
16955         applicable.
16956         (find_applicable_accessible_methods_list,
16957         find_most_specific_methods_list, argument_types_convertible): New
16958         function.
16959         (refine_accessible_methods_list): Function deleted.
16960         (java_complete_tree): Handle TRY_EXPR. ARRAY_REF handling: save
16961         expr (if applicable) before calling patch_array_ref.
16962         (build_expr_block): Fixed BLOCK_EXPR_BODY assignment.
16963         (enter_block): Fixed comment.
16964         (enter_a_block): New function.
16965         (patch_assignment): Reorganized. Call try_reference_assignconv for
16966         references. Call valid_cast_to_p instead of can_cast_to_p.
16967         (try_reference_assignconv,
16968         valid_builtin_assignconv_identity_widening_p): New functions.
16969         (valid_ref_assignconv_cast_p): Fixed inverted test on CLASS_FINAL.
16970         (valid_cast_to_p, valid_method_invocation_conversion_p): New
16971         functions.
16972         (build_string_concatenation): Don't resolve StringBuffer.
16973         (patch_cast): Fixed inverted arguments.
16974         (patch_array_ref): Code to save array expr deleted. Call
16975         valid_cast_to_p instead of can_cast_to_p.
16976         (generate_labeled_block): Call generate_name.
16977         (build_jump_to_finally, build_try_statement, java_get_catch_block,
16978         patch_try_statement): New functions.
16979         * typeck.c (match_java_method): Function deleted.
16980
16981 1998-10-02  Anthony Green  <green@cygnus.com>
16982
16983         * jvspec.c: jvgenmain_spec uses different temporary file names.
16984
16985 1998-10-02  Anthony Green  <green@cygnus.com>
16986
16987         * jvspec.c (lang_specific_driver): Fail if user specifies
16988         --main= when not linking.
16989
16990 1998-09-28  Tom Tromey  <tromey@cygnus.com>
16991
16992         * class.c (make_class_data): Push value for `thread' field.
16993         * decl.c (init_decl_processing): Added `thread' field to class.
16994
16995         * class.c (add_field): Always make static fields externally
16996         visible.
16997
16998 1998-09-26  Anthony Green  <green@cygnus.com>
16999
17000         * expr.c (build_java_athrow,
17001         build_java_throw_out_of_bounds_exception, expand_invoke,
17002         build_newarray, expand_java_multianewarray, build_java_monitor):
17003         Update comments to reflect _Jv_* function names.
17004
17005 1998-09-25  Per Bothner  <bothner@cygnus.com>
17006
17007         * decl.c (complete_start_java_method):  DECL_RESULT is always promoted.
17008         * decl.c (start_java_method):  Handle PROMOTE_PROTOTYPES target macro.
17009         * parse.y (expand_start_java_method):  Likewise.
17010
17011 1998-09-24  Per Bothner  <bothner@cygnus.com>
17012
17013         * expr.c (pop_arguments):  Handle PROMOTE_PROTOTYPES target macro.
17014
17015         * class.c (push_class):  IDENTIFIER_SIGNATURE_TYPE is now POINTER_TYPE.
17016         (add_field):  No longer need to convert from RECORD_TYPE to pointer,
17017         * expr.c:  Remove no-longer-needed calls to promote_type.
17018         * decl.c (give_name_to_locals):  Liekwise.
17019         * jcf-parse.c (get_class_constant):  Compensate for new signatures.
17020         * parse.y:  Add/remove promote_type calls as appropriate.
17021         * typeck.c (parse_signature_type):  Returns POINTER_TYPE for objects.
17022         (parse_signature_string):  Likewise.
17023         (build_java_array_type):  Fix for now signature convenions.
17024
17025         * lex.c (java_lex):  Fix (from Alex) for JC1_LITE problem.
17026
17027 1998-09-23  Tom Tromey  <tromey@cygnus.com>
17028
17029         * class.c (init_class_processing): libjava function renamed to
17030         _Jv_RegisterClass.
17031
17032 1998-09-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17033
17034         * expr.c (java_lang_expand_expr): New case for SWITCH_EXPR.
17035         * java-tree.def: Fixed DEFTREECODE third argument.
17036         (UNARY_PLUS_EXPR, NEW_ARRAY_EXPR, NEW_CLASS_EXPR, THIS_EXPR,
17037         CASE_EXPR, DEFAULT_EXPR): New tree codes for Java.
17038         * java-tree.h: (IS_CRAFTED_STRING_BUFFER_P): New macro.
17039         (JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR,
17040         JAVA_THIS_EXPR): Now replaced by tree code definitions.
17041         (CALL_CONSTRUCTOR_P): Now uses NEW_CLASS_EXPR.
17042         * lang.c (java_tree_code_type, java_tree_code_length,
17043         java_tree_code_name): New arrays.
17044         (lang_init): Append Java tree node definitions to Gcc ones.
17045         * lex.c (expression_obstack): Declared as extern when JC1_LITE
17046         defined.
17047         (java_init_lex): Initialize wfl_append, wfl_string_buffer,
17048         wfl_to_string.
17049         (java_lex): Allow declaration of empty string constants. Retain
17050         location information on CASE_TK and DEFAULT_TK.
17051         * parse.h (JFLOAT_TYPE_P, JINTEGRAL_TYPE_P, JNUMERIC_TYPE_P,
17052         JPRIMITIVE_TYPE_P, JSTRING_TYPE_P, JSTRING_P, JREFERENCE_TYPE_P):
17053         Modified to be more robust.
17054         (BUILD_APPEND, BUILD_STRING_BUFFER): New macros.
17055         (build_new_invocation, try_builtin_assignconv,
17056         patch_switch_statement, string_constant_concatenation,
17057         build_string_concatenation, patch_string_cst, patch_string,
17058         java_expand_switch): New function declarations.
17059         * parse.y: Rules related to switch and EH tagged <node>.
17060         (label_id): Set to NULL_TREE
17061         (wfl_string_buffer, wfl_append, wfl_to_string): New static global
17062         tree nodes.
17063         (this_or_super:): Fixed indentation.
17064         (statement:, statement_nsi:, statement_without_trailing_substatement:,
17065         statement_expression:): Removed call to RULE on all sub-rules.
17066         (switch_expression:, switch_labels:): New rules.
17067         (switch_statement:, switch_block:, switch_block_statement_groups:,
17068         switch_block_statement_group:, switch_labels:, switch_label:):
17069         Defined actions.
17070         (throw_statement:, synchronized_statement:, try_statement:):
17071         Defined temporary actions.
17072         (class_instance_creation_expression:): Call
17073         build_new_invocation. Fixed indentation.
17074         (field_access): Fixed indentation.
17075         (method_invocation): Likewise.
17076         (make_qualified_primary): Use THIS_EXPR.
17077         (resolve_qualified_expression_name): Use NEW_CLASS_EXPR. When
17078         resolving from SUPER, set *type_found.
17079         (qualify_ambiguous_name): Use NEW_CLASS_EXPR.
17080         (java_complete_tree): Removed unused local variable `location'. Case
17081         for SWITCH_EXPR, sharing code with LOOP_EXPR. Use NEW_ARRAY_EXPR,
17082         NEW_CLASS_EXPR, UNARY_PLUS_EXPR and THIS_EXPR. New string handling
17083         on MODIFY_EXPR: and all binary operator tree code cases. Removed
17084         STRING_CST: case. default: checks for patchable strings.
17085         (complete_function_arguments): Transform string constant or
17086         crafted StringBuffer if necessary.
17087         (build_method_invocation): Fixed comments.
17088         (build_new_invocation): New function.
17089         (patch_assignment): Call try_builtin_assignconv to figure a valid
17090         assignment conversion between builtin types.
17091         (try_builtin_assignconv): New function.
17092         (build_binop): Use URSHIFT_EXPR directly to call build.
17093         (operator_string): Use UNARY_PLUS_EXPR.
17094         (patch_binop): Use UNARY_PLUS_EXPR. Handle string concatenation
17095         operator.
17096         (do_merge_string_cste, merge_string_cste,
17097         string_constant_concatenation, build_string_concatenation,
17098         patch_string, patch_string_cst): New function.
17099         (build_unary_op): Use UNARY_PLUS_EXPR and CONVERT_EXPR.
17100         (patch_unaryop): Likewise. New test of valid ++/-- operands.
17101         (build_newarray_node): Use NEW_ARRAY_EXPR.
17102         (build_this): Use THIS_EXPR.
17103         (build_return): Enable debug information on return statement.
17104         (build_if_else_statement): Likewise.
17105         (complete_labeled_statement): Fixed related comment.
17106         (build_loop_body): Fixed comment.
17107         (build_bc_statement): Enable debug information on break/continue
17108         statements.
17109         (patch_bc_statement): Fixed typos. Handle SWITCH statement
17110         context.
17111         (patch_switch_statement, case_identity, java_expand_switch): New
17112         functions.
17113
17114 1998-09-21  Per Bothner  <bothner@cygnus.com>
17115
17116         * buffer.h (BUFFER_INIT):  New macro.
17117         * jcf-write.c (struct jcf_partial):  New type.  Put global stuff here.
17118         Pass (struct jcf_partial *state) to most functions.
17119         (jcf_block, jcf_relocation):  New types.
17120         Support labels, branches, conditionals, loops.
17121
17122 1998-09-21  Tom Tromey  <tromey@cygnus.com>
17123
17124         * decl.c (INT_TYPE_SIZE): Define as BITS_PER_WORD if not defined.
17125
17126 1998-09-21  Per Bothner  <bothner@cygnus.com>
17127
17128         * decl.c (integer_type_node):  Make it have INT_TYPE_SIZE.
17129         * verify.c (verify_jvm_instructions):  Use int_type_not (32 bits),
17130         not integer_type_node (INT_TYPE_SIZ bits).
17131
17132         * parse.y (patch_if_else_statement):  Accept promoted_boolean_type_node.
17133
17134         * jcf-reader.c (get_attribute):  New HANDLE_EXCEPTION_TABLE hook.
17135         * jcf-dump.c (print_exception_table):  New function.
17136         (disassemble_method):  Better handling of wide instructions.
17137         Make more robust for bad input.
17138
17139 1998-09-30  Jeffrey A Law  (law@cygnus.com)
17140
17141         * jcf-write.c (OP2, OP4): Use "_i", not "_I" to avoid problems on
17142         FreeBSD.
17143
17144 1998-09-17  Jeffrey A Law  (law@cygnus.com)
17145
17146         * Makefile.in (jcf-dump, jvgenmain): Link in memmove.o too.
17147
17148 1998-09-17  Tom Tromey  <tromey@cygnus.com>
17149
17150         * Makefile.in ($(PARSE_H)): Removed target.
17151
17152 1998-09-17  Jeffrey A Law  (law@cygnus.com)
17153
17154         * Makefile.in (JAVA_OBJS): Add memmove.o
17155         (memmove.o): New target & rules.
17156
17157 1998-09-15  Tom Tromey  <tromey@cygnus.com>
17158
17159         * expr.c (expand_invoke): Don't generate a call to the class init
17160         code.
17161
17162 1998-09-14  Jeffrey A Law  (law@cygnus.com)
17163
17164         * Makefile.in: Add many missing dependencies.
17165         * buffer.c, class.c, constants.c, decl.c: Use system.h and toplev.h
17166         as appropriate.
17167         * except.c, expr.c, jcf-io.c jcf-parse.c, jcf-write.c: Likewise.
17168         * jvgenmain.c lang.c mangle.c typeck.c verify.c: Likewise.
17169
17170 1998-09-11  Per Bothner  <bothner@cygnus.com>
17171
17172         * decl.c (complete_start_java_method):  If method is static (and
17173         not private) call _Jv_InitClass.
17174         * expr.c (expand_invoke):  Don't call build_class_init.
17175
17176         * jvspec.c (jvgenmain_spec):  Fix spec for generated .o file.
17177
17178 1998-09-10  Jeffrey A Law  (law@cygnus.com)
17179
17180         * Make-lang.in (GCJ): Define before using.
17181
17182 1998-09-09  Jeffrey A Law  (law@cygnus.com)
17183
17184         * gjavah.c (java_no_argument): Renamed from no_argument to avoid
17185         losing due to namespace pollution in GNU getopt.h
17186
17187 1998-09-09  Tom Tromey  <tromey@cygnus.com>
17188
17189         * Make-lang.in (java.all.build): Don't mention jvgenmain or gcjh.
17190         (java.all.cross): Likewise.
17191         (java.rest.encap): Likewise.
17192
17193 1998-09-08  Jeffrey A Law  (law@cygnus.com)
17194
17195         * gjavah.c (print_class_decls): Fix thinko in arglist
17196         * jcv-io.c (find_classfile): Similarly.
17197
17198 1998-09-07  Jeffrey A Law  (law@cygnus.com)
17199
17200         * Makefile.in (INCLUDES): Update for recent toplevel gcc changes.
17201
17202 1998-09-05  Tom Tromey  <tromey@cygnus.com>
17203
17204         * Make-lang.in (java.maintainer-clean): Don't remove parse.h.
17205         (java.mostlyclean): Remove parse.c and parse-scan.c, not parse.h.
17206         * Makefile.in (PARSE_C): New macro.
17207         (PARSE_H): Likewise.
17208         (PARSE_SCAN_C): Likewise.
17209         ($(PARSE_C)): Target renamed from parse.c.
17210         ($(PARSE_SCAN_C)): Target renamed from parse-scan.c.
17211         (clean): Remove parse-scan.c as well.
17212         (parse.o): Depend on $(PARSE_C).
17213
17214 1998-09-05  Anthony Green  <green@cygnus.com>
17215
17216         * README, license.terms: Removed.
17217
17218         * Make-lang.in, Makefile.in, class.c, config-lang.in, constants.c,
17219         decl.c, except.c, expr.c, gjavah.c, java-except.h, java-tree.h,
17220         javaop.def, javaop.h, jcf-dump.c, jcf-io.c, jcf-parse.c,
17221         jcf-reader.c, jcf-write.c, jcf.h, jvgenmain.c, jvspec.c,
17222         keyword.gperf, keyword.h, lang-options.h, lang-specs.h, lang.c,
17223         lex.c, lex.h, mangle.c, parse-scan.y, parse.h, parse.y, typeck.c,
17224         verify.c, zextract.c, zipfile.h: Fixed copyright assignment,
17225         and Java trademark attribution.
17226
17227 1998-09-04  Tom Tromey  <tromey@cygnus.com>
17228
17229         * Makefile.in: Use gcjh, not gjavah.
17230         * config-lang.in (stagestuff): Use gcjh, not gjavah.
17231         * Make-lang.in: Changed gjavah to gcjh everywhere.
17232
17233 1998-09-03  Per Bothner  <bothner@cygnus.com>
17234
17235         * gjavah.c:  Support new -prepend -add -append flags.
17236         (print_method_info):  Method is not virtual if class is final.
17237
17238 1998-09-03  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17239
17240         * jv-scan.c: Fixed copyright assignment.
17241         * keyword.gperf: Likewise.
17242         * keyword.h: Likewise.
17243         * lex.c: Fixed copyright assignment.
17244         (java_lex): Push unicode back when parsing '<'.
17245         * lex.h: Fixed copyright assignment.
17246         * parse-scan.y: Likewise.
17247         * parse.h: Fixed copyright assignment.
17248         (build_debugable_stmt, complete_for_loop): New function prototypes.
17249         * parse.y: Fixed copyright assignment.
17250         (for_statement:): Call complete_for_loop. Set EXIT_EXPR to be
17251         size_zero_node when completing a loop with no exit condition.
17252         (for_statement_nsi:): Define action.
17253         (for_init:, for_update:): Return size_zero_node when empty.
17254         (declare_local_variables): Call build_debugable_stmt.
17255         (build_debugable_stmt): New function.
17256         (build_loop_body): Build debugable statement around loop
17257         condition part.
17258         (complete_loop_body): Take into account the debugable statement
17259         around the EXIT_EXPR.
17260         (complete_loop_body): New function.
17261         (patch_exit_expr): Fixed condition inversion.
17262
17263 1998-09-02  Tom Tromey  <tromey@cygnus.com>
17264
17265         * Make-lang.in (jvspec.o): Use GCC_THREAD_FILE to compute correct
17266         name of thread define.
17267         * jvspec.c (THREAD_NAME): New macro.
17268         (GCLIB): Likewise.
17269         (THREADLIB): Likewise.
17270         (lang_specific_driver): Recognize attempt to link with thread
17271         library or gc library.  Recognize -ljava on command line so it
17272         isn't linked against more than once.
17273
17274 1998-09-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17275
17276         * parse-scan.y (report_main_declaration): Name of the class
17277         containing `main' can be a qualified name.
17278
17279 1998-08-31  Tom Tromey  <tromey@cygnus.com>
17280
17281         * config-lang.in: Changed gjavac to gjc everywhere.
17282         * Make-lang.in: Changed gjavac to gjc everywhere.
17283
17284 1998-08-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17285
17286         * Make-lang.in (JAVA_TARGET_INDEPENDENT_BIN_TOOLS): New variable.
17287         (java.install-common:): Loop over JAVA_TARGET_INDEPENDENT_BIN_TOOLS
17288         and install the files.
17289         * Makefile.in (JAVA_OBJS_LITE): New variable.
17290         (compiler:): Now include jv-scan as a dependency.
17291         (../jv-scan$(exeext), parse-scan.c): New targets.
17292         (../jcf-dump$(exeext)): Was jcf-dump$(exeext) before.
17293         * config-lang.in (compilers): Removed gcj, gjavah from the list.
17294         * jcf-parse.c (parse_source_file): Call java_layout_classes and
17295         check for errors even if parse_only.
17296         * lex.c (java_init_lex): Reorganized and skip parts if JC1_LITE is
17297         defined.
17298         (yylex): New function. Uses java_lex body.
17299         (java_lex): Removed commented out statement. Remove local variable
17300         literal. Use SET_LVAL_NODE_TYPE and SET_LVAL_NODE where
17301         appropriate.  Use macros FLOAT_TYPE_NODE, DOUBLE_TYPE_NODE,
17302         DCONST0, SET_FLOAT_HANDLER, SET_REAL_VALUE_ATOF,
17303         SET_LVAL_NODE_TYPE and GET_TYPE_PRECISION. Don't create STRING_CST
17304         if JC1_LITE is defined. Use BUILD_ID_WFL to build identifiers. Use
17305         SET_MODIFIER_CTX, SET_LVAL_NODE, BUILD_ID_WFL and GET_IDENTIFIER
17306         where appropriate.
17307         (java_lex_error): Empty if JC1_LITE is defined.
17308         (java_get_line_col): Return 0 if JC1_LITE is defined.
17309         * lex.h (JAVA_FLOAT_RANGE_ERROR, JAVA_INTEGRAL_RANGE_ERROR,
17310         SET_MODIFIER_CTX): Moved into the section containing the macros
17311         conditionally defined by JC1_LITE.
17312         (BUILD_OPERATOR,BUILD_OPERATOR2): Just return the TOKEN
17313         argument if JC1_LITE is defined.
17314         (HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT, REAL_VALUE_ATOF,
17315         REAL_VALUE_ISINF, REAL_VALUE_ISNAN): Preset to values if JC1_LITE
17316         is defined.
17317         (DCONST0, SET_FLOAT_HANDLER, GET_IDENTIFIER, SET_REAL_VALUE_ATOF,
17318         FLOAT_TYPE, DOUBLE_TYPE, SET_MODIFIER_CTX, GET_TYPE_PRECISION,
17319         SET_LVAL_NODE, SET_LVAL_NODE_TYPE, BUILD_ID_WFL): New macros, set
17320         to different values according to JC1_LITE.
17321         * parse.h (int_fits_type_p, stabilize_reference): Prototype not
17322         declared if JC1_LITE set.
17323         (jdep_code, typedef struct _jdep, typedef struct _jdeplist): Not
17324         defined if JC1_LITE not set.
17325         (struct parser_ctx): Reorganized and skip the jc1 front end part
17326         if JC1_LITE set.
17327         (java_layout_classes): New function definition.
17328         (java_push_parser_context, java_init_lex, yyparse, yylex,
17329         yyerror): Prototype always declared. All other static function
17330         prototypes declared only if JC1_LITE is not set.
17331         * parse.y (yyparse, yylex, yyerror): No longer declared here. Now
17332         declared in parse.h.
17333         (java_layout_classes): New function.
17334         (java_complete_expand_methods): No longer layout the class here.
17335         * parse-scan.y: New file.
17336         * jv-scan.c: New file.
17337
17338 1998-08-25  Tom Tromey  <tromey@cygnus.com>
17339
17340         * gjavah.c (main): Handle -friend option.
17341         (friend_specs): New global.
17342         (generate_access): Handle friend_specs.
17343         (process_file): Likewise.
17344         (MAX_FRIENDS): New macro.
17345         (friend_count): New global.
17346         (print_cxx_classname): Added `prefix' argument.  Ignore arrays.
17347         Changed all callers.
17348
17349 1998-08-24  Per Bothner  <bothner@cygnus.com>
17350
17351         * jcf-dump.c (process_class):  Move JCF_FINISH use to main,
17352         (main):  Handle processing all the entries of a named .zip archive.
17353         * jcf-io.c (jcf_trim_old_input):  New function.
17354         * jcf.h (GET_u2_le,GET_u4_le,JCF_readu2_le,JCF_readu4_le):  New macros.
17355
17356 1998-08-24  Per Bothner  <bothner@cygnus.com>
17357
17358         * lang.c (flag_assume_compiled):  Make default be on.
17359
17360 1998-08-21  Per Bothner  <bothner@cygnus.com>
17361
17362         * jcf-dump.c:  Add bunches of flags to control output more.
17363         (process_class):  New function;  support printing more than one class.
17364         (main): Support new --print-main and --javap flags.
17365         * jcf-reader.c (IGNORE_ATTRIBUTE):  New hook.
17366         * jcf.h (CPOOL_INDEX_IN_RANGE):  New macro.
17367
17368 1998-08-20  Per Bothner  <bothner@cygnus.com>
17369
17370         Change mangling of dispatch table to match C++ vtable (w/thunks).
17371         * class.c (build_dtable_decl), java-tree.h:  New function.
17372         (make_class_data):  Call it.
17373         * decl.c (init_decl_processing):  Likewise.
17374
17375 1998-08-19  Warren Levy  <warrenl@cygnus.com>
17376
17377         * decl.c (init_decl_processing): Use _Jv_NewObjectArray, not
17378         soft_anewarray; adjust args passed.
17379         * expr.c (build_anewarray): Adjust args for soft_anewarray_node to
17380         match _Jv_NewObjectArray.
17381
17382 1998-08-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17383
17384         * decl.c (push_labeled_block, pop_labeled_block): New functions.
17385         * expr.c (loopup_label): Call create_label_decl.
17386         (create_label_decl): New function.
17387         (java_lang_expand_expr): Call expand_start_bindings with argument
17388         set to zero.
17389         * java-tree.h Added space after PROTO in function declarations
17390         when necessary.
17391         (IS_FOR_LOOP_P, IS_BREAK_STMT_P): New macros.
17392         (create_label_decl, push_labeled_block): New function
17393         declarations.
17394         * lex.c (label_id): Initialize.
17395         (SUPER_TK, THIS_TK, RETURN_TK): Merged common actions in final
17396         switch.
17397         * parse.h Added space after PROTO in function declarations when
17398         necessary.
17399         (LOOP_EXPR_BODY_MAIN_BLOCK, LOOP_EXPR_BODY_UPDATE_BLOCK,
17400         LOOP_EXPR_BODY_CONDITION_EXPR, LOOP_EXPR_BODY_LABELED_BODY,
17401         LOOP_EXPR_BODY_BODY_EXPR, LOOP_HAS_LABEL_P, LOOP_HAS_LABEL_SKIP_P,
17402         PUSH_LABELED_BLOCK, POP_LABELED_BLOCK, PUSH_LOOP, POP_LOOP): New
17403         macros.
17404         (struct parser_ctxt): New fields current_loop,
17405         current_labeled_block.
17406         (build_if_else_statement, patch_if_else_statement,
17407         add_stmt_to_compound, patch_exit_expr, build_labeled_block,
17408         generate_labeled_block, complete_labeled_statement,
17409         build_bc_statement, patch_bc_statement, patch_loop_statement,
17410         build_new_loop, build_loop_body, complete_loop_body): New function
17411         declarations.
17412         * parse.y (java_warning_count): New global variable.
17413         (label_id): New static variable.
17414         (BREAK_TK, CONTINUE_TK): Token tagged <operator>.
17415         (block:): Return size_zero_node when block is empty.
17416         (empty_statement:): Return size_zero_node.
17417         (statement:): Implement supplemental action when for_statement: is
17418         reduced.
17419         (label_decl:): New rule.
17420         (labeled_statement:): Rewritten using label_decl. Actions
17421         implemented.
17422         (labeled_statement_nsi:): Likewise.
17423         (if_then_statement): Actions implemented.
17424         (while_expression): New rule.
17425         (while_statement:): Rewritten using while_expression. Actions
17426         implemented.
17427         (while_statement_nsi:): Likewise.
17428         (do_statement_begin:): New rule.
17429         (do_statement:): Rewritten using do_statement_begin. Actions
17430         implemented.
17431         (for_statement:): Rewritten using for_begin. Actions implemented.
17432         (for_statement_nsi:): Likewise.
17433         (for_header:, for_begin:): New rules.
17434         (for_init:): Actions implemented.
17435         (statement_expression_list:, break_statement:,
17436         continue_statement:): Likewise.
17437         (yyerror): Count number of issued warning(s).
17438         (java_report_errors): Report error(s) and/or warning(s).
17439         (java_complete_class): Use build_java_argument_signature to
17440         recompute completed method signature.
17441         (java_check_regular_methods): New locals method_wfl and aflags.
17442         Use method_wfl instead of lookup_cl during error reports. Fixed
17443         indentation and modified some error messages. Use
17444         lang_printable_name in method instead of the DECL_NAME. New code
17445         to issue warnings on methods not overriding corresponding methods
17446         private to a different package.
17447         (java_method_add_stmt): Call add_stmt_to_compound.
17448         (add_stmt_to_compound): New function.
17449         (java_complete_tree): Handle LABELED_BLOCK_EXPR, EXIT_BLOCK_EXPR,
17450         LOOP_EXPR, EXIT_EXPR and COND_EXPR.
17451         (build_if_else_statement, patch_if_else_statement,
17452         build_labeled_block, generate_labeled_block,
17453         complete_labeled_statement, build_new_loop, build_loop_body,
17454         complete_loop_body, patch_loop_statement, build_bc_statement,
17455         patch_bc_statement, patch_exit_expr): New functions.
17456         * typeck.c (build_java_signature): Build argument signature before
17457         enclosing it in between parenthesis.
17458
17459 1998-08-17  Warren Levy  <warrenl@cygnus.com>
17460
17461         * Make-lang.in (JAVA_SRCS): Created for dependencies * Makefile.in
17462         (JAVA_OBJS): Added reminder comment
17463
17464 1998-08-13  Nick Clifton  <nickc@cygnus.com>
17465
17466         * gjavah.c (D_NAN_MASK): Append LL to the constant to force it to
17467         be interpreted as a long long.
17468
17469 1998-08-13  Warren Levy  <warrenl@cygnus.com>
17470
17471         * decl.c (init_decl_processing): Use _Jv_InitClass, not
17472         soft_initialise_class.  Use _Jv_NewMultiArray, not
17473         soft_multianewarray.  Use _Jv_ThrowBadArrayIndex, not
17474         soft_badarrayindex.  Use _Jv_CheckCast, not soft_checkcast.  Use
17475         _Jv_CheckArrayStore, not soft_checkarraystore.  Use
17476         _Jv_LookupInterfaceMethod, not soft_lookupinterfacemethod.
17477
17478 1998-08-12  Per Bothner  <bothner@cygnus.com>
17479
17480         * decl.c, java-tree.h (this_identifier_node, super_identifier_node,
17481         length_identifier_node):  New global tree node constants.
17482         * parse.y (kw_super, kw_this, kw_length):  Removed globals.
17483         Replace uses by super_identifier_node etc.
17484         * lex.c (kw_super, kw_this, kw_length):  Don't initialize.
17485
17486         * parse.y (resolve_field_access):  Don't special-case ".length" if
17487         flag_emit_class_files.
17488         (patch_array_ref):  Leave as ARRAY_REF if flag_emit_class_files.
17489         * jcf-write.c (generate_bytecode_insns):  Handle ARRAY_REF opcode
17490         and ARRAY.length.
17491
17492 1998-08-11  Per Bothner  <bothner@cygnus.com>
17493
17494         * decl.c (init_decl_processing): Remove unused method_type_node fields.
17495         * class.c (make_method_value):  Remove init for removed fields.
17496
17497         * class.c (layout_class):  Use build_java_argument_signature.
17498         * java-tree.h (TYPE_ARGUMENT_SIGNATURE):  New macro.
17499
17500         * typeck.c (push_java_argument_signature):  Removed.  Merged into ...
17501         (build_java_argument_signature):  Use TYPE_ARGUMENT_SIGNATURE cache.
17502         (build_java_signature):  Don't use push_java_argument_signature.
17503
17504         * typeck.c (lookup_argument_method):  New function.
17505         * parse.y (java_check_regular_methods):  Use lookup_argument_method
17506         instead of lookup_java_method2 followed by lookup_java_method.
17507
17508         * parse.y (check_method_redefinition):  Minor optimization.
17509
17510         * jcf-write.c (generate_bytecode_insns):  Handle RETURN_EXPR,
17511         MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, and RDIV_EXPR.
17512
17513 1998-08-10  Tom Tromey  <tromey@cygnus.com>
17514
17515         * Make-lang.in (jc1$(exeext)): Don't depend on c-common.o or
17516         c-pragma.o.
17517
17518         * gjavah.c (java_float_finite): Use K&R-style definition.
17519         (java_double_finite): Likewise.
17520         (generate_access): Now returns void.  Changed all callers.
17521         (last_access_generated): Removed.
17522         (process_file): Only make a single pass over the .class file.
17523
17524 1998-07-29  Per Bothner  <bothner@cygnus.com>
17525
17526         * class.c (get_dispatch_table):  Add extra dummy vtable entry,
17527         for compatibility for G++ (with -fvtable-thunks).
17528         * expr.c (build_invokevirtual):  Add one for extra dummy vtable entry.
17529
17530         * gjavah.c (process_file):  Use public inheritance for super-class.
17531
17532 1998-07-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17533
17534         * lex.c (java_init_lex): Initialize ctxp->package.
17535         * parse.h (struct parser_ctxt): package and package_len replaced
17536         by tree package, an identifier node. Field method_decl_list is
17537         gone. Fixed comments.
17538         (lookup_field_wrapper, merge_qualified_name, not_accessible,
17539         class_in_current_package): New function prototypes.
17540         * parse.y (array_type:): Set class loaded flag on primitive type
17541         arrays.
17542         (package_declaration:): Assign ctxp->package to the
17543         identifier node.
17544         (method_invocation:): Handle invocation of method qualified by
17545         `super'.
17546         (single_type_import_declaration:): Removed ambiguity check.
17547         (java_pop_parser_context): New local variable `next'. Reset and
17548         set IMPORT_CLASSFILE_NAME flags on current and previous import
17549         list.
17550         (java_accstring_lookup): Use new local macro COPY_RETURN.
17551         (lookup_field_wrapper): New function.
17552         (parser_qualified_classname): Use merge_qualified_name.
17553         (parser_check_super_interface): Broaden error message.
17554         (do_resolve_class): Check for qualified class name in the current
17555         compilation unit if appropriate.
17556         (process_imports): Check for already defined classes.
17557         (check_pkg_class_access): Got rid of call to
17558         get_access_flags_from_decl.
17559         (java_complete_expand_methods): Call safe_layout_class based on
17560         the current class size.
17561         (make_qualified_primary): Build a WFL qualification on primary if
17562         none exists.
17563         (merge_qualified_name): New function.
17564         (make_qualified_name): Use merge_qualified_name.
17565         (resolve_expression_name): Use safe_lookup_field.
17566         (resolve_field_access): Got rid of call to get_access_flags_from_decl.
17567         (resolve_qualified_expression_name): Likewise. Check on resolved
17568         element accessibility.
17569         (not_accessible_p, class_in_current_package): New functions.
17570         (maybe_access_field): Got rid of call to get_access_flags_from_decl.
17571         (patch_method_invocation_stmt): Merged common pieces. Check
17572         accessibility of invoked method.
17573         (check_for_static_method_reference): Add returned type in error
17574         message.
17575         (invocation_mode): Get rid of bogus check on PRIVATE methods.
17576         (refine_accessible_methods_list): Merged two conditions in test.
17577         (java_complete_class): Sanity check on stabilize_ref gone.
17578         * zextract.c (read_zip_archive): Cast lseek second argument to long.
17579
17580 1998-07-28  Per Bothner  <bothner@cygnus.com>
17581
17582         * class.c (hashUtf8String):  Fix - use new JavaSoft specification.
17583
17584 1998-07-24  Tom Tromey  <tromey@cygnus.com>
17585
17586         * gjavah.c (F_NAN): Removed.
17587         (F_NAN_MASK): New macro.
17588         (F_POSITIVE_INFINITY): Removed.
17589         (F_NEGATIVE_INFINITY): Likewise.
17590         (java_float_finite): Rewrote.
17591         (D_NAN_MASK): Renamed.
17592         (java_double_finite): Rewrote.
17593         (D_POSITIVE_INFINITY): Removed.
17594         (D_NEGATIVE_INFINITY): Likewise.
17595
17596         * jcf-dump.c (print_constant): [CONSTANT_Double, CONSTANT_Float]
17597         If verbose, print underlying representation of value in hex.
17598
17599 1998-07-24  Per Bothner  <bothner@cygnus.com>
17600
17601         * buffer.h, buffer.c:  New files.
17602         * Makefile.in (JAVA_OBJS):  Add buffer.o.
17603
17604         Support locals variables and writing their debug entries to .class.
17605         * jcf-write.c:  Simplify some by user new buffer type.
17606         (vode_buffer_grow):  Removed.
17607         (struct localvar_info):  New type.
17608         (localsvars, localvartable):  New buffers.
17609         (localvar_alloc, localvar_free):  New functions.
17610         (generate_bytecode_insns):  Handle local variables.
17611         (generate_classfile):  Write LocalVariableTable attribute.
17612
17613 1998-07-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17614
17615         * jcf-io.c (open_in_zip): Check the zipfile magic number.
17616         * zipfile.h (ZIPMAGIC): New macro.
17617
17618 1998-07-24  Tom Tromey  <tromey@cygnus.com>
17619
17620         * Makefile.in (gjavah.o): Updated dependencies.
17621         (jcf-dump.o): Likewise.
17622         (all.indirect): Use ../gjavah.
17623         (../gjavah$(exeext)): Likewise.
17624         (clean): Don't remove gjavah.
17625         (clean): Remove parse.c, not java/parse.c.
17626         * Make-lang.in (java): Added gjavah.
17627         (gjavah$(exeext)): New target.
17628         (GJAVAH_SOURCES): New macro.
17629         (java.all.build): Added gjavah.
17630         (java.all.cross): Likewise.
17631         (java.rest.encap): Likewise.
17632         * config-lang.in (compilers, stagestuff): Added gjavah.
17633
17634 1998-07-23  Tom Tromey  <tromey@cygnus.com>
17635
17636         * gjavah.c (java_float_finite): New function.
17637         (java_double_finite): Likewise.
17638         (F_POSITIVE_INFINITY): New macro.
17639         (F_NEGATIVE_INFINITY): Likewise.
17640         (F_NAN): Likewise.
17641         (D_POSITIVE_INFINITY): Likewise.
17642         (D_NEGATIVE_INFINITY): Likewise.
17643         (D_NAN): Likewise.
17644         (print_field_info): Use java_float_finite and java_double_finite.
17645
17646 1998-07-23  Per Bothner  <bothner@cygnus.com>
17647
17648         * parse.y (method_header):  Name "this" implicit argument.
17649
17650 1998-07-22  Per Bothner  <bothner@cygnus.com>
17651
17652         * jcf-write.c:  Write out LineNumberTable attribute in .class file.
17653         (linenumber_buffer, linenumber_ptr, linenumber_limit):  New statics.
17654         (put_linenumber):  New function.
17655         (generate_bytecode_insns, generate_classfile):  Write line numbers.
17656
17657 1998-07-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17658
17659         * java-tree.h (CALL_EXPR_FROM_PRIMARY_P): Changed in PRIMARY_P.
17660         (lookup_name, build_known_method_ref, build_class_init,
17661         build_invokevirtual, invoke_build_dtable, match_java_method,
17662         build_field_ref, pushdecl_force_head, build_java_binop,
17663         binary_numeric_promotion, build_decl_no_layout,
17664         build_java_arrayaccess, build_newarray, build_anewarray,
17665         build_java_array_length_access, build_java_arraynull_check): New
17666         extern function prototypes.
17667         (JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR,
17668         JAVA_THIS_EXPR, CALL_CONSTRUCTOR_P): Macro definition moved in
17669         java-tree.h.
17670         * jcf-parse.c (init_outgoing_cpool): Set current_constant_pool_data_ref
17671         to NULL
17672         * jcf.h (jcf_out_of_synch): New extern function prototype.
17673         * parse.h: Static/global function implemented in parse.y
17674         prototyped and declarations moved at the end of the file.
17675         (DECL_P): Check that the argument isn't null.
17676         (JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR,
17677         JAVA_THIS_EXPR): No longer defined here. See java-tree.h
17678         (QUAL_DECL_TYPE): New macro.
17679         (PARAMS): Macro definition removed.
17680         * parse.y: (yyparse, yyerror): Use PROTO instead of PARAMS.
17681         (return_statement:): Call build_return.
17682         (field_access:): Call make_qualified_primary in sub rule.
17683         (method_invocation:): Build method invocation and call
17684         make_qualified_primary when processing primaries.
17685         (java_complete_class): Set IDENTIFIER_SIGNATURE_TYPE by calling
17686         get_type_from_signature.
17687         (java_check_regular_method): Extra integer 0 argument when calling
17688         lookup_java_method2.
17689         (lookup_java_interface_method2): Extra method DECL argument when
17690         calling lookup_java_interface_method2.
17691         (java_method_add_stmt): Set TREE_SIDE_EFFECTS on newly created
17692         COMPOUND_EXPR node.
17693         (java_complete_expand_method): Layout current class iff not
17694         already done. Don't process interface's methods.
17695         (java_complete_expand_method): Use super class only if it
17696         exists. Use current class otherwise.
17697         (make_qualified_primary): New function.
17698         (resolve_expression_name): Process qualified expression or
17699         expression from primary the same way.
17700         (resolve_expression_name): Two last arguments to
17701         resolve_field_access are now NULL_TREEs.
17702         (resolve_field_access): New variable is_static. Local field must
17703         be DECLs. is_static computed on field DECLs only. Append code in
17704         where_found to the field access if necessary. Use QUAL_DECL_TYPE
17705         to initialize field_type.
17706         (resolve_qualified_expression_name): New local variable,
17707         previous_call_static and is_static. Handle primaries with function
17708         calls, casts, array references and `this'. `super' now handled as
17709         `(super_class)this'. Use is_static to clarify boolean expressions.
17710         Added code to handle case where a proper handle is required to
17711         access a field. Use QUAL_DECL_TYPE where applicable.
17712         (maybe_access_field): New function.
17713         (patch_method_invocation_stmt): New arguments primary, where,
17714         is_static. Branch of the test on CALL_EXPR_FROM_PRIMARY_P
17715         deleted. Use `where' as a type to search from if specified. Check
17716         for static method reference where forbidden. Append primary or
17717         current_this to the argument list if not calling constructor nor
17718         static methods.
17719         (check_for_static_method_reference): New function.
17720         (patch_invoke): Layout the class on which new is done if
17721         necessary.
17722         (lookup_method_invoke): Changed format to report errors on
17723         methods.
17724         (qualify_ambiguous_name): New local variable this_found. Now
17725         handle things from primaries. Method call are considered
17726         expression names.
17727         (identical_subpath_p): NULL_TREE arguments to breakdown_qualified
17728         changed into NULLs.
17729         (not_initialized_as_it_should_p): Comply with the new DECL_P.
17730         (java_complete_tree): New case fo RETURN_EXPR. Process function
17731         call arguments in separate function.
17732         (complete_function_arguments): New function.
17733         (build_method_invocation): Don't use CALL_EXPR_FROM_PRIMARY_P
17734         anymore.
17735         (patch_assignment): Take the return function slot into account as
17736         a RHS. Distinguish assignment from a return.
17737         (valid_ref_assignconv_cast_p): Use build_java_argument_signature
17738         when checking methods in interfaces.
17739         (resolve_type_during_patch): NULL argument to unresolve_type_p
17740         instead of NULL_TREE.
17741         (patch_newarray): Fixed typo in comment.
17742         (buid_this): Build a WFL with `kw_this' instead of a FIELD_DECL.
17743         (build_return, patch_return): New functions.
17744         * typeck.c (lookup_java_constructor): Fixed typo in comment.
17745
17746 1998-07-21  Per Bothner  <bothner@cygnus.com>
17747
17748         * constants.c (find_name_and_type_constant, find_fieldref_index,
17749         find_methodref_index):  New methods.
17750         * expr.c (build_invoke_non_interface):  If flag_emit_class_files,
17751         just return given method.  Also, rename to build_known_method_ref.
17752         (expand_invoke):  Rename call to build_invoke_non_interface.
17753         * java-tree.h, parse.h:  Update prototype.
17754         * parse.y, decl.c, jcf-parse.c:  Suppress calls to back-end functions
17755         (such as expand_expr_stmt) if flag_emit_class_files.
17756         * jcf-write.c (RESERVE, OP1, OP2, OP4, NOTE_PUSH, NOTE_POP,
17757         STACK_TARGET, IGNORE_TARGET):  New macros.
17758         (code_buffer, code_ptr, code_limit, code_S, code_SP_max):  New globals.
17759         (generate_bytecode_insn):  New function to generate method's bytecode.
17760         (generate_classfile):  Node generate Code attribute for a method.
17761         (code_buffer_grow, push_constant1, push_constant2, push_int_const,
17762         push_long_const, field_op, adjust_typed_op, maybe_wide):
17763         New functions used by generate_bytecode_insn.
17764
17765         * typeck.c (signature_include_return):  Remove variable.
17766         (push_java_argument_signature, build_java_argument_signature):  New.
17767         (build_java_signature):  Use push_java_argument_signature.
17768         * parse.y:  Use build_java_argument_signature instead of fiddling
17769         with signature_include_return.
17770
17771 1998-07-17  Tom Tromey  <tromey@cygnus.com>
17772
17773         * gjavah.c (print_c_decl): Always generate JArray<>* for array
17774         types.
17775
17776         * Makefile.in (all.indirect): Added gjavah$(exeext).
17777         (gjavah$(exeext)): Added $(exeext).
17778         (clean): Likewise.
17779
17780 1998-07-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17781
17782         * class.c (layout_class): Call to java_layout_parsed_class replace
17783         by safe_layout_class.
17784         * expr.c (build_java_array_length_access): Removed static storage
17785         class in the function definition.
17786         (build_java_arraynull_check): Likewise.
17787         Also fixed typos in two comments.
17788         * lex.c (java_init_lex): Initialize static global kw_length.
17789         (java_lex): Use BUILD_OPERATOR on RETURN_TK.
17790         * lex.h (JAVA_FLOAT_RANGE_ERROR): Add extra argument to
17791         java_lex_error.
17792         (JAVA_INTEGRAL_RANGE_ERROR): Likewise.
17793         * parse.h (resolve_no_layout): New static function declaration.
17794         (get_identifier_in_static): Declaration removed.
17795         (java_layout_parsed_class): Function name declaration changed to
17796         safe_layout_class.
17797         (build_newarray_node, patch_newarray, resolve_type_during_patch,
17798         not_initialized_as_it_should_p, build_this): New static function
17799         declarations.
17800         (pushdecl_force_head, build_java_binop, int_fits_type_p,
17801         binary_numeric_promotion, stabilize_reference,
17802         build_decl_no_layout, build_java_arrayaccess): Extern function
17803         declarations moved into their own section.
17804         (build_newarray, build_anewarray, build_java_array_length_access,
17805         build_java_arraynull_check): New extern function declarations.
17806         (UNARY_PLUS_EXPR): Macro renamed into JAVA_UNARY_PLUS_EXPR.
17807         (JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR, JAVA_THIS_EXPR): New
17808         fake tree codes.
17809         (CALL_CONSTRUCTOR_P): New macro.
17810         * parse.y (kw_length): New static global tree node.
17811         (return_statement): Tagged <node>.
17812         (RETURN_TK): Tagged <operator>.
17813         (variable_declarator_id:): Build variable declaration with an
17814         empty initialization value if a syntax error was found in the
17815         initialization part of the variable declaration.
17816         (statement_without_trailing_substatement:): return_statement: now
17817         uses the default rule.
17818         (return_statement:): Temporarily fixed to return NULL_TREE.
17819         (primary_no_new_array:): Call build_this when THIS_TK was parsed.
17820         (class_instance_creation_expression:): Class creation rules now
17821         call build_method_invocation upon reduction.
17822         (array_creation_expression:): Rules call build_newarray_node upon
17823         reduction.
17824         (dim_exprs:): Build a list of dimension expressions.
17825         (dim_expr:): Store location of the OSB_TK in the dimension
17826         expression node.
17827         (method_invocation:): Added a new error rule.
17828         (build_unresolved_array_type): WFL argument may also be an array
17829         on a primitive type. Name of the argument changed to reflect this.
17830         (method_declarator): Insert argument type at the beginning of the
17831         argument type list and later reverse the list.
17832         (unresolved_type_p): Argument 'returned' may be optionally
17833         NULL_TREE.
17834         (java_layout_class_from_source): Function renamed
17835         safe_layout_class.
17836         (resolve_and_layout): Now call resolve_no_layout and
17837         safe_layout_class.
17838         (resolve_no_layout): New function.
17839         (purify_type_name): New function.
17840         (complete_class_report_errors): Call purify_type_name during error
17841         report on a type not found.
17842         (process_imports): error_found local variable doesn't need to be
17843         initialized to zero.
17844         (declare_local_variables): New local type_wfl. Fixed typo in error
17845         message. type_wfl assigned to unresolved type and used to register
17846         incomplete type. Build a WFL around the variable initialization
17847         statement so that debug info can be generated on it.
17848         (source_start_java_method): Reverse argument list after they've
17849         been processed.
17850         (current_this): New static global variable.
17851         (java_complete_expand_methods): Set current_this when appropriate.
17852         (resolve_expression_name): Build correct static and non static
17853         field access bearing a simple name.
17854         (resolve_field_access): Resolve the length field of arrays. Handle
17855         f.m() cases.
17856         (patch_method_invocation_stmt): Set the type of the method
17857         invocation to error_mark_node. This value is later overridden by a
17858         valid type, if any. Don't handle qualified constructor invocation
17859         as qualified method invocation. Call lookup_method_invoke with its
17860         new flag. It's no longer necessary to access the selected method
17861         as the value of a tree list. Handle constructor invocation.
17862         (patch_invoke): Reverse argument list when invoking non interface
17863         methods. Insert call to new as the first argument of the
17864         constructor.
17865         (invocation_mode): Return a INVOKE_STATIC is the invoked method is
17866         defined within a final class. Return INVOKE_STATIC if the invoked
17867         method is a constructor.
17868         (lookup_method_invoke): New lc argument is a flag to indicate a
17869         constructor lookup. Now handle constructor lookup. Choose the most
17870         specific method in case several were matching the invocation
17871         requirements. Return a method decl instead of a tree list featuring
17872         one single method decl element.
17873         (refine_accessible_methods_list): New lc flag argument to
17874         indicate that a constructor is being looked up.
17875         (not_initialized_as_it_should_p): New function.
17876         (java_complete_tree): Now process fake tree codes
17877         JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR and JAVA_THIS_EXPR. Call
17878         save_expr on resolved function call arguments. Case on
17879         UNARY_PLUS_EXPR changed into a case on JAVA_UNARY_PLUS_EXPR.
17880         (patch_assignment): LHS can be a field access expression. When
17881         dealing with reference, lhs_type is the promoted type of the
17882         rhs_type, not the RHS. Use not_initialized_as_it_should_p where
17883         applicable.
17884         (operator_string): JAVA_UNARY_PLUS_EXPR replaces UNARY_PLUS_EXPR.
17885         (patch_binop): Use not_initialized_as_it_should_p where
17886         applicable.
17887         (build_unaryop): JAVA_UNARY_PLUS_EXPR replaces UNARY_PLUS_EXPR.
17888         (patch_unaryop): Likewise. And use not_initialized_as_it_should_p
17889         where applicable.
17890         (resolve_type_during_patch): New function.
17891         (patch_cast): Call resolve_type_during_patch to resolve type and
17892         report error accordingly.
17893         (patch_array_ref): Use not_initialized_as_it_should_p where
17894         applicable. Array base expression is saved before being
17895         used. Promote the type of an array elements if it contains non
17896         builtin types.
17897         (build_newarray_node, patch_newarray, build_this): New functions.
17898
17899 1998-07-16  Tom Tromey  <tromey@cygnus.com>
17900
17901         * gjavah.c (print_c_decl): UTF8_GET increments pointer; don't
17902         increment it in `for' statement.
17903         (print_field_info): If number is inf or nan, don't print it.
17904         (print_method_info): If method name is `delete', just ignore it.
17905         (print_c_decl): Special-case jstringArray.
17906
17907         * gjavah.c (help): New function.
17908         (no_argument): New function.
17909         (usage): Changed text.
17910         (main): Rewrote argument handling.  Now handles -v, --help,
17911         --version.
17912         (version): New function.
17913         (found_error): New global.
17914         (main): Return found_error.
17915         (generate_access): Set found_error.
17916         (print_c_decl): Likewise.
17917
17918 1998-07-15  Tom Tromey  <tromey@cygnus.com>
17919
17920         * gjavah.c (print_c_decl): Don't print "," when examining field.
17921         Skip type name when looking at "[L" types.
17922         (process_file): Now static.
17923         (generate_access): Now returns int.
17924         (last_access_generated): New global.
17925         (process_file): Clear last_access_generated; make multiple passes
17926         over the class.
17927         (print_field_info): Just return if generate_access returns true.
17928         (print_method_info): Likewise.  Also, allow <init> functions to
17929         pass through.
17930         (print_c_decl): Added is_init argument.  Print constructors
17931         properly.
17932         (print_cxx_classname): Use UTF8_GET to extract characters from
17933         string.
17934         (print_base_classname): New function.
17935         (print_class_decls): New function.
17936         (process_file): Use it.
17937         (utf8_cmp): New function.
17938
17939 1998-07-13  Nick Clifton  <nickc@cygnus.com>
17940
17941         * lang-options.h: Format changed to match changes in gcc/toplev.c
17942         to implement a --help option.
17943
17944 1998-07-10  Brendan Kehoe  <brendan@cygnus.com>
17945
17946         * decl.c (init_decl_processing): Revert change to dtable_type.
17947
17948 1998-07-09  Per Bothner  <bothner@cygnus.com>
17949
17950         * java-tree.h (CLASS_P):  Changed DECL_LANG_FLAG_7 -> TYPE_LANG_FLAG_4.
17951
17952 1998-07-08  Brendan Kehoe  <brendan@cygnus.com>
17953
17954         * decl.c (init_decl_processing): Set CLASS_LOADED_P on dtable_type.
17955
17956         * lang.c (lang_init): Default flag_exceptions to 1, without
17957         checking to see if it's 2 first.
17958
17959 1998-07-08  Jeffrey A Law  (law@cygnus.com)
17960
17961         * constants.c: Include "system.h".
17962         * decl.c: Likewise.
17963         * lang.c (flag_new_exceptions): Get via extern now.
17964         (lang_init_options): New functions.  Turn on flag_new_exceptions.
17965
17966 1998-07-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
17967
17968         * lex.c (java_lex): Return 0 when we see an invalid character in
17969         the input.
17970
17971         * lex.c (java_read_char): Specify extra argument when calling
17972         java_lex_error.
17973         (java_read_unicode, java_parse_end_comment,
17974         java_parse_escape_sequence): Likewise,
17975         (java_lex): Specify extra argument when calling
17976         java_lex_error. Test that IDs are beginning with a legal character
17977         for IDs. Handle invalid characters with an error message and a
17978         call to java_lex_error.
17979         (java_lex_error): Adjust column position by new argument
17980         `forward'. Issue an error even if in the middle of reporting an
17981         other error.
17982
17983 1998-07-07  Brendan Kehoe  <brendan@cygnus.com>
17984
17985         * jcf-io.c (find_class): Zero out BUFFER before we use it, since
17986         we don't explicitly put a null pointer when we're copying it.
17987
17988 1998-07-07  Tom Tromey  <tromey@cygnus.com>
17989
17990         * gjavah.c (print_cxx_classname): New function.
17991         (super_class_name): Likewise.
17992         (print_super_fields): Removed.
17993         (in_super): Removed.
17994         (print_field_info): Never generate #defines.
17995         (print_c_decl): Changed generated types to match JNI.  No longer
17996         print class name before method name.
17997         (print_method_info): Print "static" before static methods.
17998         Print "virtual" before non-final methods.
17999         (usage): Use exit(1), not exit(-1).
18000         (main): Likewise.
18001         (print_field_info): Use %.17g to print a double.
18002         (last_access): New globals.
18003         (process_file): Initialize last_access.
18004         (usage): Now static.
18005         (ACC_VISIBILITY): New define.
18006         (generate_access): New function.
18007         (print_field_info): Call it.
18008         (print_method_info): Likewise.  Also, generate information for all
18009         methods, not just native methods.  Return void.
18010         (print_c_decl): Return void.
18011         (print_field_info): Return void.
18012
18013 1998-07-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18014
18015         * Makefile.in (JAVABISONFLAGS): Specific flag for bison when
18016         processing the jc1 grammar file. Prefix bison functions and
18017         variables with java_.
18018         (parse.c): Dependencies on parse.h and lex.h
18019         * expr.c (build_java_arrayaccess): Function now global.
18020         * java-tree.h: Comment reorganized to carry on previous
18021         classification effort.
18022         (RESOLVE_EXPRESSION_NAME_P, RESOLVE_PACKAGE_NAME_P,
18023         RESOLVE_TYPE_NAME_P): New flags on WFLs.
18024         * jcf-parse.c (parse_source_file): java_parse_source_file renamed
18025         java_parse (new prefix java_ generated by bison).
18026         (java_layout_parsed_class, java_register_parsed_class): Function
18027         call removed.
18028         (yyparse): Removed unnecessary call to init_outgoing_cpool.
18029         * lex.c (static tree wfl_op): Variable deleted.
18030         (java_init_lex): Initialize kw_super and kw_this. Initialize more
18031         ctxp fields to NULL_TREE.
18032         (java_lex): No longer create WFL for operators. Filename caching
18033         mechanism deleted. Call BUILD_OPERATOR for `.', '(', '['. Strings
18034         created as STRING_CST and later expanded. Removed extra argument
18035         to BUILD_OPERATOR and BUILD_OPERATOR2. Build operators for THIS
18036         and SUPER.
18037         (build_wfl_node): Removed code in comments.
18038         * lex.h (BUILD_OPERATOR, BUILD_OPERATOR2): No longer build a WFL but
18039         store token and location data in the current bison token.
18040         * parse.h: Removed pre-processor based symbol prefixes hack. Moved
18041         static/extern function declaration at the beginning of the file.
18042         (struct qualification): Data structure definition deleted.
18043         (RESOLVE_CHAIN_REMAINDER): Macro definition deleted.
18044         (qualify_ambiguous_name): Function declaration modified. Function
18045         now returns nothing.
18046         (build_array_ref, patch_array_ref, make_qualified_name,
18047         resolve_qualified_expression_name, maybe_generate_clinit,
18048         resolve_field_access): New static function declarations.
18049         (build_java_arrayaccess): New extern function declaration.
18050         (enum { RESOLVE_EXPRESION_NAME...}): Enum deleted.
18051         (CALL_EXPR_PRIMARY): Macro deleted.
18052         (EXPR_WFL_QUALIFICATION, QUAL_WFL, QUAL_RESOLUTION): New macros.
18053         (struct parser_ctxt): Field initialized_final
18054         removed. non_static_initialized, static_initialized: New fields.
18055         * parse.y (static tree kw_super, static tree kw_this): New global
18056         static.
18057         (%union): tree wfl field of operator member replaced by int
18058         location. WFLs are non longer created for operators.
18059         (OSB_TK, DOT_TK, THIS_TK, SUPER_TK): Tagged <operator>.
18060         (qualified_name:): Now calls make_qualified_name to build the
18061         identifier.
18062         (type_declaration:): Consider generating <clinit> when class
18063         parsing completed.
18064         (variable_declarator:): Directly build an assignment node when the
18065         variable is initialized when declared.
18066         (this_or_super:): Build a WFL and set current location when THIS
18067         or SUPER are parsed.
18068         (expression_statement:): Wrap statement around a WFL.
18069         (primary_no_new_array:): Fixed typo. Changed value returned by
18070         THIS_TK because of its new type (temporary).
18071         (dim_exprs:): Temporary fix because of OSB_TK's new type.
18072         (field_access:): Build qualified name with SUPER.
18073         (method_invocation:): Fixed returned value because of SUPER's new
18074         type.
18075         (array_access:): Use OSB_TK location information.
18076         (post_increment_expression:, post_decrement_expression:,
18077         unary_expression:, pre_increment_expression:,
18078         pre_decrement_expression:, unary_expression_not_plus_minus:,
18079         cast_expression:, multiplicative_expression:,
18080         additive_expression:, shift_expression:, relational_expression:,
18081         equality_expression:, and_expression:, exclusive_or_expression:,
18082         inclusive_or_expression:, conditional_and_expression:,
18083         conditional_or_expression:, assignment:): Use new location/token
18084         information available on operators.
18085         (create_class): Set super_decl_type to NULL_TREE when processing
18086         java.lang.Object.
18087         (register_fields): Field initialization is now a MODIFY_EXPR
18088         node. Chain initialization code to the matching lists (according
18089         to the field declaration modifiers).
18090         (maybe_generate_clinit): New function.
18091         (method_header): Don't set method's DECL_NAME to a WFL when adding
18092         methods to java.lang.Object.
18093         (resolve_and_layout): Now can return NULL_TREE if the type
18094         resolution fails. Otherwise, return the class DECL instead of its
18095         TYPE.
18096         (check_method_redefinition): Don't patch method DECL_NAME if it
18097         belongs to java.lang.Object.
18098         (process_imports): Simply assign error_found to the value returned
18099         by check_pkg_class_access.
18100         (declare_local_variables): Don't use their init statements (if
18101         any) when parsing error were previously found. Reuse MODIFY_EXPR
18102         build during parsing as an init statement.
18103         (java_method_add_stmt): Now return the current method body.
18104         (java_layout_parsed_class, java_register_parsed_class): Functions
18105         removed.
18106         (java_complete_expand_methods): Initialize the constant pool on a
18107         per class basis. Layout the classes before expanding their method
18108         bodies. Don't try expand artificial constructor code if error were
18109         found. Make the classes data and register them if no error were
18110         found.
18111         (java_complete_expand_method): Retrieve an artificial constructor
18112         argument list before entering its body. Assign the top block to
18113         the artificial constructor function body and set types of declared
18114         blocks and compound statements to void. Walk method body if not an
18115         artificial constructor.
18116         (make_qualified_name, cut_identifier_in_qualified): New functions.
18117         (resolve_expression_name): Fixed comments. Save/restore the
18118         current class CLASS_LOADED_P flag value. Build non qualified
18119         static field access and handle qualified expression names.
18120         (resolve_field_access, resolve_qualified_expression_name): New
18121         functions.
18122         (patch_method_invocation_stmt): Use the new expression resolution
18123         scheme, calling resolve_field_access when the function call is
18124         resolved as an expression.
18125         (qualify_ambiguous_name): Function rewritten to work on qualified
18126         expression produced by make_qualified_name.
18127         (java_complete_tree): Promote type when function's argument are
18128         RECORD_TYPEs. While processing the MODIFY_EXPR case: don't patch
18129         the assignment to discover further errors if RHS is a expression
18130         name that fails to evaluate. Declare LHS initialized even though
18131         the assignment failed. Don't use the location variable and removed
18132         extra argument in patch function calls. Now handle the ARRAY_REF
18133         case and build internal string representation when STRING_CSTs are
18134         walked.
18135         (build_method_invocation): Don't wrap function call around a WFL.
18136         (build_assignment): Likewise. Use the operator location
18137         information.
18138         (patch_assignment): Handle array access LHSs. Handle error
18139         provenance, resulting in a better error report.
18140         (build_binop): Use op_location from operator as binop location
18141         information.
18142         (build_unaryop, build_incdec, build_cast): Likewise.
18143         (patch_binop): Extract location information from the node. Fixed
18144         typo in error message.
18145         (patch_unary_op): Extract location information from the node.
18146         (build_array_ref, patch_array_ref): New functions.
18147
18148 1998-07-01  Tom Tromey  <tromey@cygnus.com>
18149
18150         * expr.c (expand_java_INSTANCEOF): Changed calling convention to
18151         match _Jv_IsInstanceOf.
18152         * decl.c (init_decl_processing): Use _Jv_NewArray, not
18153         soft_newarray.  Use _Jv_IsInstanceOf, not soft_instanceof.
18154
18155 1998-06-30  Tom Tromey  <tromey@cygnus.com>
18156
18157         * decl.c (init_decl_processing): Functions are now named
18158         _Jv_MonitorEnter and _Jv_MonitorExit, and return jint.
18159
18160 1998-06-29  Per Bothner  <bothner@cygnus.com>
18161
18162         * java-tree.h (load_class):  Add prototype.
18163         * class.c (is_compiled_class):  Add missing arg to load_class.
18164         * expr.c (expand_java_NEW):  Call load_class.
18165         * parse.y (process_import):  Removed bogus use of void return value.
18166
18167 1998-06-25  Per Bothner  <bothner@cygnus.com>
18168
18169         * decl.c, java-tree.h (soft_athrow_node):  Renamed to soft_node.
18170         Function name is "_Jv_Throw" instead of "soft_athrow".
18171         * decl.c, java-tree.h (soft_new_node):  Renamed to alloc_object_node.
18172         Function name is "_Jv_AllocObject" instead of "soft_new".
18173         Takes an extra parameter (object size).
18174         * expr.c:  Update calls.
18175
18176 1998-06-24  Per Bothner  <bothner@cygnus.com>
18177
18178         * lex.c (java_get_line_col):  Handle end-of-file.
18179         * except.c (expand_end_java_handler):  Handle null type (i.e. finally).
18180
18181 1998-06-24  Andrew MacLeod  <amacleod@cygnus.com>
18182
18183         * lang.c (lang_init): Make -fexceptions the default.
18184         * except.c (maybe_start_try, maybe_end_try): Don't do anything if
18185         exception handling is not turned on.
18186
18187 1998-06-23  Andrew MacLeod  <amacleod@cygnus.com>
18188
18189         * lang.c (flag_new_exceptions): Make this this default.
18190         * decl.c (end_java_method): Call emit_handlers.
18191         * except.c (method_init_exceptions): Set language code and version.
18192         (expand_start_java_handler): Enable exception, and call
18193         expand_eh_region_start.
18194         (expand_end_java_handler): Enable exception, and set up catch blocks.
18195         (emit_handlers): New routine to generate the saved handlers.
18196         * java-except.h (emit_handlers): Add prototype.
18197
18198 1998-06-12  Per Bothner  <bothner@cygnus.com>
18199
18200         We used to have three different representations of the constant pool:
18201         the CPool structure, the tree_constant_pool, and the constructures
18202         used to build the Class object (which may need class and string
18203         constants) in compiled code.  None were appropriate for compiling
18204         to .class files, so I did a major overhaul.
18205
18206         First, the tree_constant_pool array was removed.  Things were
18207         modified to the CPool structure in the JCF could be used.
18208         Second, a "capacity" field was added to the CPool, and functions
18209         written to search for a matching constant, adding one if not found.
18210         The code that generated the Class object was changed to use a CPool.
18211         The actual TREE_LISTs used to build the CONSTRUCTORs used for
18212         the static Class object are now only in build_constants_constructor.
18213         Finally, I wrote code which can generate a .class file (including its
18214         constant pool) from the RECORD_TYPE of a class.  This is a big step
18215         on the way to compiling Java source into .class files.
18216
18217         * jcf-write.c:  New file. Writes out a RECORD_TYPE as a .class file.
18218         * Makefile.in (JAVA_OBJS):  Added jcf-write.o.
18219
18220         * java-tree.h (CPOOL_UTF, CONSTANT_ResolvedFlag,
18221         CONSTANT_ResolvedString, CONSTANT_ResolvedClass):  New macros.
18222         (NAME_AND_TYPE_NAME, NAME_AND_TYPE_SIGNATURE, COMPONENT_REF_NAME,
18223         COMPONENT_REF_NAME_AND_TYPE, COMPONENT_REF_SIGNATURE): Redefined.
18224         (COMPONENT_REF_CLASS):  Replaced by COMPONENT_REF_CLASS_INDEX.
18225         (lang_type):  Removed constant_pool field.
18226         * jcf.h (CPool):  Renamed size to count.  Added field capacity.
18227         (CPOO_COUNT, CPOOL_UINT, CPOOL_USHORT1, CPOOL_USHORT2,
18228         CPOOL_FINISH, CPOOL_INIT, CPOOL_REINIT):  New macros.
18229         Rewrite some of the old JCF_XXX in terms of CPOOL_XXX macros.
18230
18231         * constants.c (current_constant_pool_tags, current_constant_pool_data,
18232         current_constant_pool_length), java-tree.h: Replaced by outgoing_cpool.
18233         * constants.c (build_constants_constructor):  Use new outgoing_cpool.
18234         (set_constant_entry, find_constant1, find_constant2,
18235         find_class_constant, count_constant_pool_bytes, write_constant_pool,
18236         find_utf8_constant, find_class_or_string_constant):  New functions.
18237
18238         * jcf-parse.c (load_class):  Don't save/restore tree-constant_pool.
18239         (get_constant):  Use current_jcf.cpool instead of tree_constant_pool.
18240         (give_name_to_class, get_class_constant):  Likewise.
18241         * jcf-parse.c, java-tree.h (tree_constant_pool):  Removed.
18242         (get_name_and_type_constant, get_ref_constant):  Removed.
18243         * parse.h (parser_ctxt):  Remove field tree_constant_pool.
18244         * parse.y:  Don't save/restore tree_constant_pool.
18245         * verify.c (verify_jvm_instructions):  Update for new approach.
18246         * expr.c (expand_invoke, expand_java_field_op): Likewise.
18247
18248         * lang-options.h:  Added -femit-class-file, -femit-class-files.
18249         * lang.c (flag_emit_class_files), java-tree.h:  New flag.
18250         (lang_f_options):  Added "emit-class-file(s)".
18251
18252         * expr.c (build_java_arrayaccess):  Generate more efficient array
18253         bounds checking, by using unsigned compare.
18254
18255         * expr.c (expand_invoke):  Re-arrange error checks to make more robust.
18256
18257 1998-06-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18258
18259         * parse.h: New comment on the handling of unresolved type
18260         identifiers. JDEPs are now part of the jdep_code enum.
18261         (typedef struct jdep): Now use enum jdep_code or int, depending on
18262         availability. Both are narrowed down to an 8 bits bitfield.
18263         (CALL_EXPR_PRIMARY): Fixed comment.
18264
18265 1998-06-10  Tom Tromey  <tromey@cygnus.com>
18266
18267         * Make-lang.in (java): Added gjavac and jvgenmain.
18268         (java.start.encap): Depend on gjavac.
18269         (java.rest.encap): Depend on jvgenmain.
18270
18271         * Make-lang.in (JAVA_INSTALL_NAME): Name is gjavac, not c++.
18272         (JAVA_CROSS_NAME): Likewise.
18273         (java.all.build): Depend on jvgenmain and gjavac.
18274         (java.all.cross): Depend on jvgenmain and gjavac-cross.
18275         (jvgenmain$(exeext)): New target.
18276         (java.install-common): Wrote.
18277         * config-lang.in (compilers, stagestuff): Added gjavac and
18278         jvgenmain.
18279
18280 1998-06-10  Dave Brolley  <brolley@cygnus.com>
18281
18282         * lang.c (lang_decode_option): New argc/argv interface.
18283
18284 1998-06-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18285
18286         * ChangeLog: Fixed entries not compliant with the Gnu Coding Standard.
18287         * decl.c (build_decl_no_layout): New function.
18288         * expr.c (java_lang_expand_expr): Layout declarations found in
18289         blocks before they're pushed.
18290         * jcf-parse.c (load_class): Save current line when parsing class
18291         file.
18292         (parse_source_file): Register class before expanding their
18293         methods.
18294         * lang.c (put_decl_node): Produce `null' when `void *' is
18295         processed.
18296         * lex.c (static tree wfl_op): New static global, for error report
18297         on casts.
18298         (java_init_lex): wfl_operator and wfl_op initialized
18299         here. Filename caching added for wfl_op. Return wfl_op when `(' is
18300         parsed.
18301         * parse.h (build_unaryop, build_incdec, patch_unaryop, build_cast,
18302         patch_cast, valid_ref_assignconv_cast_p, can_cast_to_p,
18303         build_unresolved_array_type): New static function definitions.
18304         (build_decl_no_layout): New extern function declared.
18305         (OBSOLETE_MODIFIER_WARNING): Report error only if the WFL of the
18306         faulty modifier exists.
18307         (TYPE_INTERFACE_P, TYPE_CLASS_P): New macros.
18308         (ERROR_CAST_NEEDED_TO_INTEGRAL): Error message tuned.
18309         (UNARY_PLUS_EXPR): New fake operator.
18310         (struct parser_ctxt): New field osb_number.
18311         * parse.y (static tree wfl_operator): New static WFL for operator
18312         bound error messages.
18313         (DECR_TK, INCR_TK): Moved.
18314         (OP_TK): Tagged <operator>.
18315         (array_type:): Now call build_unresolved_array_type.
18316         (dim_expr:): Count the number of '[' seen.
18317         (post_increment_expression, post_decrement_expression,
18318         pre_increment_expression, pre_decrement_expression,
18319         unary_expression_not_plus_minus, unary_expression:): Actions are
18320         now building the corresponding unary expressions.
18321         (cast_expression:): Actions are now building cast expressions.
18322         (build_unresolved_array_type): New function.
18323         (create_interface): Reset the number of declared interfaces.
18324         (create_class): Likewise.
18325         (method_header): Methods declared within the scope of an interface
18326         are now implicitly set public and abstract.
18327         (java_complete_class): Variable's and parameter's type are patched
18328         with a promoted type.
18329         (declare_local_variables): Resolved non builtin types are promoted
18330         before being used to build a variable decl. Removed type patch
18331         posted on variable initialization statement.
18332         (source_start_java_method): Use build_decl_no_layout to build the
18333         decl of a parameter of incomplete type.
18334         (java_register_parsed_class): Process interfaces too. Call
18335         rest_of_decl_compilation on each processed class declarations.
18336         (java_complete_expand_methods): Don't attempt to expand things in
18337         interfaces.
18338         (java_complete_tree): Process CONVERT_EXPR, even though it always
18339         has a type. Propagate error_mark_node to node's type too. Promote
18340         method's call argument type and return error_mark_node if
18341         argument's completion didn't work. MODIFY_EXPR can have a WFL as a
18342         RHS. Fixed bug in the handling of bogus RHS of a fixed type. Now
18343         handle unary operator nodes.
18344         (build_assignment): Added comment.
18345         (print_int_node): New function.
18346         (patch_assignment): New second argument. New error handling. Use
18347         print_int_node. Handle references. Use can_cast_to_p to issue
18348         different error message according to the context and check upon
18349         the initialization of the RHS.
18350         (can_cast_to_p, valid_ref_assignconv_cast_p): New functions.
18351         (operator_string): Handle more operators.
18352         (patch_binop): No longer use a function static
18353         wfl_operator. Improved error message on shift distance.
18354         (build_unaryop, build_incdec, build_cast, patch_unaryop,
18355         patch_cast): New functions.
18356
18357 1998-06-05  Per Bothner  <bothner@cygnus.com>
18358
18359         * jvspec.c:  New file.
18360         * Make-lang.in:  New rules to build gjavac from jvspec.c and ../gcc.c.
18361
18362         * java-tree.h (identifier_subst):  Add declaration.
18363
18364 1998-06-04  Tom Tromey  <tromey@cygnus.com>
18365
18366         * jvgenmain.c (main): Generate call to JvRunMain.
18367
18368         * class.c (make_class_data): Push value for "sync_info" field.
18369         * decl.c (init_decl_processing): Push "sync_info" field.
18370
18371 1998-06-03  Per Bothner  <bothner@cygnus.com>
18372
18373         * typeck.c (build_java_array_type):  Set TYPE_NAME to actual
18374         Java (source) name, not signature.
18375         Set TYPE_ALIGN to (at least) that of element_type.
18376
18377 1998-06-02  Per Bothner  <bothner@cygnus.com>
18378
18379         * class.c:  Moved classname-mangling-rekated code to ...
18380         * mangle.c:  ... this new file.
18381         * jvgenmain.c:  New program (needs mangle.c) to generate main program.
18382         * Makefile.in:  Update for above changes.
18383
18384 1998-06-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18385
18386         * expr.c (truthvalue_conversion): Convert integer and floating
18387         point value to their truth value.
18388         * lex.c (java_lex): Handle the `null' literal.
18389         * parse.h (JREFERENCE_TYPE_P, DECL_P): New macros.
18390         (ERROR_CANT_CONVERT_TO_BOOLEAN, ERROR_CANT_CONVERT_TO_NUMERIC,
18391         ERROR_CAST_NEEDED_TO_INTEGRAL, ERROR_VARIABLE_NOT_INITIALIZED):
18392         New macros.
18393
18394         * parse.y: Reorganization/documentation on token declaration.
18395         (binop_lookup[]): New added new tree codes.
18396         (relational_expression): Build corresponding binary operators.
18397         (equality_expression, conditional_and_expression,
18398         conditional_or_expression): Likewise.
18399         (java_complete_class): Fix crash in debug message.
18400         (java_complete_tree): Check initialization of method call
18401         arguments. Further bogus node evaluation to detect more error
18402         during assignments. Handles more binary operators.
18403         (patch_assignment): Use DECL_P.
18404         (build_binop): Fix crash when using URSHIFT_EXPR, a Java only tree
18405         code.
18406         (operator_string): Handle more case. Compacted source.
18407         (patch_binop): Changed function comment. Checking for
18408         uninitialized first operand takes the compound assignment into
18409         account and uses DECL_P. Checking for uninitialized second operand
18410         delayed to routine's end. Use macros to issue type bound error
18411         messages and issue messages on both operands if their types are
18412         different. Force fixed type into node. Handle all binary
18413         operators.
18414
18415 1998-05-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18416
18417         * java-tree.h (COMPOUND_ASSIGN_P, INITIALIZED_P): New macros.
18418         * lex.c (java_lex): Use BUILD_OPERATOR and BUILD_OPERATOR2 to
18419         build operator node and return tokens.
18420         * lex.h (BUILD_OPERATOR, BUILD_OPERATOR2): New macros.
18421         * parse.h (java_complete_tree): Changed returned type in prototype.
18422         (build_method_invocation, build_assignment, patch_assignment,
18423         patch_binop): New static function declarations.
18424         (JFLOAT_TYPE_P, JNUMERIC_TYPE_P, JPRIMITIVE_TYPE_P, JSTRING_P,
18425         BUILD_EXPR_WFL): New macros.
18426         * parse.y (enum tree_code binop_lookup[]): New static for token to
18427         TREE_CODE lookup.
18428         (%union): Parser union has new sub-structure `operator'.
18429         (ASSIGN_TK, MULT_ASSIGN_TK, DIV_ASSIGN_TK, REM_ASSIGN_TK,
18430         PLUS_ASSIGN_TK, MINUS_ASSIGN_TK, LS_ASSIGN_TK, SRS_ASSIGN_TK,
18431         ZRS_ASSIGN_TK, AND_ASSIGN_TK, XOR_ASSIGN_TK, OR_ASSIGN_TK,
18432         ASSIGN_ANY_TK): Tokens tagged `operator'.
18433         (EQ_TK, GTE_TK, ZRS_TK, SRS_TK, GT_TK, LTE_TK, LS_TK, BOOL_AND_TK,
18434         AND_TK, BOOL_OR_TK, OR_TK, INCR_TK, PLUS_TK, DECR_TK, MINUS_TK,
18435         MULT_TK, DIV_TK, XOR_TK, REM_TK, NEQ_TK, NEG_TK, REL_QM_TK,
18436         REL_CL_TK, NOT_TK, LT_TK): Tokens tagged `operator'.
18437         (assignment_operator:): Rule tagged `operator'.
18438         (expression_statement:): Re-installed default rule.
18439         (method_invocation:): Sub rules call build_method_invocation.
18440         (postfix_expression:): Don't attempt to resolve name here. Just
18441         return an ID.
18442         (multiplicative_expression:): Sub-rules build corresponding binop
18443         expression node.
18444         (additive_expression:, shift_expression:, and_expression:,
18445         exclusive_or_expression:, inclusive_or_expression:): Likewise.
18446         (assignment:): Sub rule invoke build_assignment.
18447         (assignment_operator:): Default rules on sub rules.
18448         (force_error): Added documentation on this variable.
18449         (declare_local_variables): Build initialization calling
18450         build_assignment.
18451         (expand_start_java_method): Removed unused rtx declaration. Mark
18452         arguments as already initialized.
18453         (java_method_add_stmt): Type of built COMPOUND_EXPR set to NULL.
18454         (java_complete_expand_methods): Don't process next method if
18455         completion of the previous one triggered errors.
18456         (java_complete_expand_method): Call source_end_java_method if no
18457         error were found during completion.
18458         (resolve_expression_name): Use IDENTIFIER_LOCAL_VALUE to retrieve
18459         locals declaratilon. Handle names found within a class. Return
18460         error_mark_node when things aren't found.
18461         (patch_method_invocation_stmt): Return error_mark_node on failures.
18462         (patch_invoke): Removed unused local. Return the correct node.
18463         (java_complete_tree): Now returns a value. The BLOCK section binds
18464         local identifiers and the type of a BLOCK is now void. Assign the
18465         result of operand completion on COMPOUND_EXPR. Assign the
18466         encapsulated node of a WFL to the result of its completion, except
18467         when the node is an identifier. Now handle MODIFY_EXPR and several
18468         binary operators. Return error_mark_node on errors.
18469         (build_method_invocation, build_assignment, patch_assignment,
18470         build_binop, operator_string, patch_binop): New functions.
18471         * typeck.c (binary_numeric_promotion): New function.
18472
18473 1998-05-21  Per Bothner  <bothner@cygnus.com>
18474
18475         * class.c (identifier_subst):  New convenience wrapper for ident_subst.
18476         Replace most uses of ident_subst by identifier_subst.
18477
18478         * class.c (push_class_static_dummy_field):  Removed function.
18479         (build_class_ref):  Find Class object decl by looking up "CNAME.class",
18480         instead of looking got "class" static field.  Create that decl here.
18481         (class_identifier_node):  Removed;  no longer needed.
18482         (init_class_processing):  Don't init class_identifier_node.
18483         * jcf-parse.c (jcf_parse):  Don't call push_class_static_dummy_field.
18484         Do nreverse 0 times (instead of twice) for Object and Class.
18485         * parse.y (java_layout_parsed_class): No push_class_static_dummy_field.
18486
18487 1998-05-20  Per Bothner  <bothner@cygnus.com>
18488
18489         * jcf-parse.c (parse_class-file):  Set lino to smallest line number,
18490         while initializing linenumber_count and linenumber_table.
18491         Do it before init_function_start (which calls emit_line_note).
18492         * expr.c (expand_byte_code):  Don't need to clear lineno here.
18493
18494 1998-05-18  Tom Tromey  <tromey@cygnus.com>
18495
18496         * class.c (append_gpp_mangled_type): If `qualifications' is >=9,
18497         then mangle number as _N_.
18498
18499         * class.c (mangle_class_field): New function.
18500         (build_class_ref): Set assembler name of class reference using
18501         mangle_class_field.
18502         (push_class_static_dummy_field): Likewise.
18503
18504 1998-05-17  Michael Tiemann <tiemann@cygnus.com>
18505
18506         * parse.y (source_start_java_method): Use TREE_SET_CODE instead
18507         of assigning to TREE_CODE.  The latter method exploits a feature
18508         of GCC that is not ANSI compliant.
18509
18510 1998-05-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18511
18512         * decl.c (pushdecl_force_head): New function.
18513         (pushlevel): Removed conditional printf.
18514         (complete_start_java_method): Don't enter local variable scope if
18515         function is compiled from source code.
18516         * expr.c: parse.h now included
18517         (java_lang_expand_expr): New function.
18518         * jcf-io.c (find_class): Use SOURCE_FRONTEND_DEBUG instead of
18519         printf. Terminate buffer when doing directories.
18520         * jcf-parse.c (parse_source_file): Call lang_init_source before
18521         parsing and before code generation.
18522         * jcf.h (SOURCE_FRONTEND_DEBUG): Macro redefined to conditionally
18523         use printf if the macro is defined.
18524         * lang.c (lang_init): Install lang_expand_expr hook on
18525         java_lang_expand_expr.
18526         (java_dummy_print): New function.
18527         (lang_init_source): New function.
18528         * lex.c (java_lex): Remember location of an opening brace at the
18529         second nesting level.
18530         (java_is_eol): Unget character seen after a CR if it is EOF.
18531         * parse.h: Now includes lex.h
18532         (SOURCE_FRONTEND_DEBUG): Macro redefined to conditionally use
18533         printf if the macro is defined.
18534         (expand_start_java_method, build_expr_block, enter_block,
18535         exit_block, lookup_name_in_blocks, maybe_absorb_scoping_blocks):
18536         New static function declarations.
18537         (pushdecl_force_head): New extern function declaration.
18538         (INCOMPLETE_TYPE_P): New macro.
18539         (JDEP_PARM, JDEP_TYPE): New entries in JDEPs enum.
18540         (BLOCK_CHAIN_DECL, BLOCK_EXPR_DECLS, BLOCK_EXPR_BODY,
18541         BLOCK_EXPR_ORIGIN): New macros.
18542         (DECL_SOURCE_LINE_MERGE, DECL_SOURCE_LINE_FIRST,
18543         DECL_SOURCE_LINE_LAST): New macros.
18544         (struct parser_ctxt): Removed field current_method_decl, redundant
18545         with the field current_function_decl. Added fields
18546         first_ccb_indent1 and pending_block.
18547         * parse.y (method_body, literal, INT_LIT_TK, FP_LIT_TK,
18548         BOOL_LIT_TK, CHAR_LIT_TK, STRING_LIT_TK, NULL_TK, VOID_TK): Rules
18549         tagged <node>
18550         (SOURCE_FRONTEND_DEBUG): Used as macro accepting varargs.
18551         (compilation_unit:): Cosmetic on sub rule.
18552         (type_declaration:): Cosmetic on sub rules. Added an error rule.
18553         (variable_initializer:): Installed default rule on expression:.
18554         (method_declaration:): method_header: starts a new
18555         method. method_body: installs the function body, absorbs blocks
18556         emitted for temporary variable scopings, pops function's body block
18557         and merges function's last statement lineno in DECL_SOURCE_LINE.
18558         (method_body:): Installed default rules.
18559         (block:): Call enter_block when an opening brace is seen.  Absorb
18560         scoping blocks and call exit_block when a closing brace is seen.
18561         (block_statement:): Cosmetic changes.
18562         (method_invocation:): Create WFL around CALL_EXPR node.
18563         (patch_stage): Added comment around definition.
18564         (method_header): Try to use first_ccb_indent1 as the first line of
18565         the method, so BP debug info are emitted at the first opening
18566         brace of the function. If the function has no body, use the
18567         location of the function's name. Override currently defined method
18568         name with the matching WFL so we can point redefinition errors
18569         using the location where the function's name was declared.
18570         (check_abstract_method_header): Interprets DECL_NAME as an
18571         identifier or as a WFL, accordingly.
18572         (java_complete_class): New cases for JDEP_TYPE and JDEP_PARM.
18573         (check_method_redefinition): Use DECL_NAME as a WFL. Extract
18574         location and name information out of it and reinstall DECL_NAME to
18575         its original identifier node value.
18576         (lookup_cl): Use DECL_SOURCE_LINE_FIRST (first line of the
18577         function's source code).
18578         (read_import_dir): Test the value returned by find_class and issue
18579         a fatal accordingly.
18580         (declare_local_variables): Push a new block for the scope of the
18581         new variable(s) if code has been already generated at that nesting
18582         level. Pinpoint redefinition errors using the variable id
18583         WFLs. Generate initialization code if necessary. If the variable
18584         type is incomplete, register a patch on its decl.
18585         (source_start_java_method): Rewritten. Define a new block for the
18586         function's parameters. Build parameter decl out of function's
18587         arguments and register them for a patch if their types are
18588         incomplete.
18589         (expand_start_java_method): Includes the part of
18590         source_start_java_method that was pushing the parameter decls and
18591         completing the method start code.
18592         (source_end_java_method): Removed call the expand_end_bindings and
18593         poplevel (already taken care of). Reinstall function's arguments
18594         and get function's last line of code before calling
18595         expand_function_end.
18596         (java_method_add_stmt): New comment before the function's
18597         code. Complement the second operand of the current COMPOUND_EXPR
18598         if necessary.
18599         (java_complete_expand_methods): Don't generate debug info on line
18600         zero when expanding a generated constructor.
18601         (java_complete_expand_method): Set start and end line numbers for
18602         a artificially generated constructor to one and manually call
18603         enter_block and exit_block when defining it. For all methods:
18604         expand function's start calling the new expand_start_java_method
18605         and invoke java_complete_tree on the effective method's body, if
18606         any.
18607         (resolve_expression_name): Now use lookup_name_in_blocks to search
18608         local variable decls and print out an error when variables are
18609         undefined.
18610         (patch_method_invocation_stmt): Inserted comment before the
18611         function's code.
18612         (lookup_method_invoke): Chain method's arguments using chainon
18613         with the current arg list as a second argument. Inserted missing
18614         IDENTIFIER_POINTER when reporting an error on methods not found.
18615         (refine_accessible_methods_list): Don't retain constructors.
18616         (patch_arguments): Function removed.
18617         (java_complete_tree): Inserted comment before the function's
18618         code. New case for BLOCKs. Moved the WFL case a bit
18619         further. Complete function's arguments.
18620         (build_expr_block, enter_block, exit_block, lookup_name_in_blocks,
18621         maybe_absorb_scoping_blocks): New functions.
18622
18623 1998-04-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18624
18625         * jcf-io.c (find_class): Reset jcf->java_source after JCF_ZERO, if
18626         previously set.
18627         * jcf-parse.c (parse_source_file, java_error_count): New forward
18628         and extern declarations.
18629         (java_parse_abort_on_error): Macro moved.
18630         (jcf_parse_source): fatal called if fopen fails. Now calls
18631         parse_source_file.
18632         (parse_source_file): New parse_only parameter. Reflects the
18633         elimination of the second pass.
18634         (yyparse): parse_source_file called with argument set to 0.
18635         * jcf.h (JCF_ZERO): Sets java_source to zero.
18636         * lex.c (java_init_lex): pass argument is gone. Function modified
18637         to be called once during the analysis of a file.
18638         (java_unget_unicode): Fixed typo in fatal message.
18639         (java_get_line_col): Likewise.
18640         (java_lval): Likewise. String literals no longer built during
18641         second pass.
18642         * lex.h (JAVA_COLUMN_DELTA): Take the tabulation character into
18643         account.
18644         * parse.h (MODIFIER_WFL): New macro.
18645         (parse_check_super, parser_check_super_interface): Now return int.
18646         (parser_chain_incomplete_item, not_builtin_p,
18647         complete_method_decl): Declarations removed.
18648         (build_method_invocation_stmt, build_invoke): Renamed using the
18649         `patch' instead of `build'
18650         (register-incomplete_type, obtain_incomplete_type,
18651         java_complete_tree, java_complete_expand_method,
18652         unresolved_type_p, create_jdep_list): New function declarations.
18653         (IC_TYPE, IC_DEPEND, DEPEND_DECL, DEPEND_WFL, BEGIN_ONLY_PASS,
18654         END_ONLY_PASS, ELSE_ONLY_PASS): Macro deleted.
18655         (jdep): New typedef on new struct _jdep.
18656         (JDEP_DECL, JDEP_DECL_WFL, JDEP_KIND, JDEP_SOLV, JDEP_WFL,
18657         JDEP_MISC, JDEP_APPLY_PATCH, JDEP_GET_PATCH, JDEP_CHAIN,
18658         JDEP_TO_REVOLVE, JDEP_RESOLVED_DECL, JDEP_RESOLVED,
18659         JDEP_RESOLVED_P): New macros.
18660         (JDEP_NO_PATCH, JDEP_SUPER, JDEP_FIELD, JDEP_METHOD,
18661         JDEP_METHOD_RETURN, JDEP_METHOD_END, JDEP_INTERFACE,
18662         JDEP_VARIABLE): New enum values and jdep kinds.
18663         (jdeplist): New typedef on struct _jdeplist.
18664         (CLASSD_FIRST, CLASSD_LAST, CLASSD_CHAIN, JDEP_INSERT): New
18665         macros.
18666         (CALL_EXPR_PRIMARY): New macro.
18667         (struct parser_ctxt): Fields java_pass, current_method_decl,
18668         method_decl_list deleted. New field jdeplist.
18669         (INCOMPLETE_P): Macro deleted.
18670         * parse.y (single_type_import_declaration:): Removed pass switch.
18671         (type_import_on_demand_declaration): Likewise.
18672         (field_declaration:): Removed pass switch on all sub rules.
18673         (class_declaration:): Call the complete_class_decl removed on
18674         class_body rules.
18675         (method_declaration:): Removed second pass switch. No longer chain
18676         methods decl when method_header reduced.
18677         (method_header:): Sub rules no longer depend on pass switch.
18678         (method_declarator:): Likewise.
18679         (method_body:): Likewise.
18680         (abstract_method_declaration:): Likewise.
18681         (block_statement:): Likewise.
18682         (local_variable_declaration:): Likewise.
18683         (argument_list:): Likewise.
18684         (method_invocation:): Likewise. Call to build_method_invocation_stmt
18685         removed. Partial CLASS_EXPR tree node built instead.
18686         (postfix_expression:): Removed pass switch on all sub rules.
18687         (java_pop_parser_context): Free classd_list content.
18688         (yyerror): Call obstrack_grow0 to finalize error message.
18689         (check_class_interface_creation): Comment modified to reflect new
18690         returned value meaning. Removed second pass switch. Return 1 if an
18691         error was found, 0 otherwise. Adjust pointer on filename if a
18692         leading path separator was found.
18693         (maybe_create_class_interface_decl): Removed first pass switch
18694         when linking the class decl to the class_list. Install a new
18695         jdep_list for the class.
18696         (add_superinterfaces): List of unresolved interfaces is
18697         gone. Unresolved interfaces are directly added to the current
18698         dependencies list.
18699         (create_interface): Second pass shortcut removed.
18700         ctpx->modifier_ctx access through MODIFIER_WFL.
18701         (create_class): Second pass shortcut removed. Call to
18702         register_incomplete_type replaces the call to
18703         parser_chain_incomplete_item.
18704         (complete_class_decl): Function removed.
18705         (duplicate_declaration_error): New way of retrieving redeclared
18706         item type.
18707         (register_fields): Call to lookup_modifier_cl replaced by
18708         MODIFIER_WFL. New way of handling unresolved type, using
18709         unresolved_type_p and obtain_incomplete_type.
18710         register_incomplete_type replaces call to parser_chain_incomplete_item.
18711         (patch_stage): New static global variable.
18712         (method_header): New way of handling unresolved type, using
18713         unresolved_type_p and obtain_incomplete_type. patch_stage used to
18714         indicates that the method decl needs to be patched.
18715         (check_abstract_method_header): Call to lookup_modifier_cl
18716         replaced by MODIFIER_WFL.
18717         (method_declarator): Incomplete argument type are registered
18718         calling register_incomplete_type. Patch on the declared method is
18719         issued in that case.
18720         (unresolved_type_p): New function.
18721         (parser_check_super_interface): New comment to reflect function's
18722         modified returned type (int). Function and has a new argument
18723         this_wfl. Call to parse_error_context uses this_wfl instead of
18724         relying on lookup_cl.
18725         (parser_check_super): Comment reflects function's new returned
18726         type (int). Function returns nonzero value on error.
18727         (create_jdep_list, reverse_jdep_list, obtain_incomplete_type,
18728         register_incomplete_type, jdep_resolve_class): New functions to
18729         handle incomplete types in declarations.
18730         (java_complete_class): Rewritten to work with the new incomplete
18731         type handling scheme.
18732         (complete_class_report_errors): Likewise.
18733         (complete_method_decl): Removed: it jobs is now handled by
18734         java_complete_class.
18735         (do_resolve_class): Class loaded in not already loaded and not
18736         found in Java source code.
18737         (java_check_regular_methods, java_check_abstract_methods): Don't
18738         call complete_method_decl anymore.
18739         (lookup_modifier_cl, not_builtin_p): Functions deleted.
18740         (read_import_dir): Got rid of the pass number dependency.
18741         (declare_local_variables): New handling of unresolved types (patch
18742         issued).
18743         (source_start_java_method): New parameter level. Function called
18744         with level set to 1 when argument types are potentially
18745         unresolved.  Called to complete the job with level set to 2 once
18746         types are complete.
18747         (source_end_java_method): Call to permanent_allocation
18748         removed. Waiting to be replaced by a more suitable obstack
18749         management.
18750         (java_complete_expand_methods, java_complete_expand_method,
18751         java_expand_finals): New functions.
18752         (build_method_invocation_stmt): Renamed
18753         patch_method_invocation_stmt. Extracts function call expression
18754         (wfl) and arguments (args) from CALL_EXPR tree operands.
18755         (build_invoke): Renamed patch_invoke. Fixed typo in fatal
18756         call. Patch the function and argument operand of the CALL_EXPR
18757         tree argument.
18758         (patch_argument, java_complete_tree): New functions.
18759
18760 1998-04-20  Per Bothner  <bothner@cygnus.com>
18761
18762         Recover from missing fields and methods (i.e. error instead of fatal).
18763         * decl.c, java-tree.h (TYPE_identifier_node):  New global constant.
18764         * expr.c (expand_invoke):  Recover from missing method.
18765         (expand_java_field_op):  Recover from missing field.
18766         Inline references to java.lang.{Integer,Char,...}.TYPE.
18767         * typeck.c (get_type_from_signature), java-tree.h:  New function.
18768         * class.c (add_method):  Use get_type_from_signature.
18769         (build_class_ref):  Handle a class that was not found.
18770         * typeck.c (convert):  Handle conversion to pointers (for convenience).
18771         * verify.c (verify_jvm_instructions):  Use get_type_from_signature
18772         instead of lookup_field to handle missing fields.
18773
18774         * jcf-parse.c (process_zip_dir):  Set java_source.
18775
18776 1998-04-20  Brendan Kehoe  <brendan@cygnus.com>
18777
18778         * jcf-parse.c (set_source_filename): Use TYPE_NAME, not DECL_NAME.
18779
18780 1998-04-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18781
18782         * jcf-parse.c (load_class): Don't change input_filename before
18783         calling jcf_parse_source (but still do it before calling
18784         jcf_parse).
18785         (jcf_parse_source): Assign input_filename after having saved the
18786         parser context.
18787         * lex.c (java_init_lex): Chain a WFL node to the import on demand
18788         list. ctxp->modifier_ctx zeroed according to its new
18789         definition. ctxp->filename initialized. Removed
18790         JAVA_MODIFIER_CTX_UNMARK.
18791         (java_unget_unicode): Update the character based column position.
18792         (java_allocate_new_line): ref_count not used anymore. Always free
18793         ctxp->p_line. Initialize c_line->char_col to 0.
18794         (java_get_unicode): Update the character based column position.
18795         (java_lex): Use ctxp->elc to store current position in source
18796         file, at the beginning of the parsed token. Set modifier_ctx entry
18797         corresponding to the parse modifier to a WFL node. Return a WFL
18798         node when an identifier is parsed.
18799         (java_lex_error): Now uses ctxp->elc to store current position in
18800         source.
18801         (build_wfl_node, java_is_eol, java_get_line_col): New functions.
18802         * lex.h (build_wfl_node): New function definitions.
18803         (struct java_line): ref_count and next fields are gone. New field
18804         char_col.
18805         (JAVA_LINE_CHECK, JAVA_LINE_MARK, JAVA_LINE_CHAIN,
18806         JAVA_LINE_UNMARK, ID_NAME, ID_CL): Macro definitions deleted.
18807         (JAVA_COLUMN_DELTA): New macro.
18808         (java_lc): New typedef on new struct _java_lc.
18809         * parse.h (lookup_cl, lookup_modifier_cl): Changed returned types.
18810         (parse_error_context, parse_warning_context): Changed prototypes.
18811         (java_get_line_col): Added as an available global function.
18812         (JAVA_MODIFIER_CTX_UNMARK): Macro removed.
18813         (IC_DECL): Replaced by macro IC_TYPE
18814         (DEPEND_WFL): New macro.
18815         (THIS_MODIFIER_ONLY): Now works with WFL and only remembers the first
18816         wrong modifier.
18817         (exit_java_complete_class): Removed a commented out statement.
18818         (struct parser_ctxt): Added comments on fields. modifier_ctx is
18819         now an array of tree nodes. Deleted fields line_list and
18820         e_line. New field elc, to replace e_line.
18821         * parse.y (array_type:): Build WFL node.
18822         (qualified_name:): Build a single WFL node out of two. Retain
18823         the location information of the first node in the resulting node.
18824         (package_declaration:): Use package name as a WFL node
18825         (single_type_import_declaration:): Use imported name as a WFL node.
18826         (type_import_on_demand_declaration:): Use root of the imported
18827         packages as a WFL node.
18828         (field_declaration:): Removed unused local variable cl.
18829         (method_declaration:): Don't call JAVA_MODIFIER_CTX_UNMARK.
18830         (yyerror): New static elc. Removed static error_line, error_pos.
18831         New local code_from_source. Save ctxp->elc into elc at the first
18832         pass. Call java_get_line_col to get a string of the line where
18833         the error occurred.
18834         (debug_line): Removed static function.
18835         (parse_error_context, parse_warning_context): Parameter cl is now
18836         a WFL node. Use its value to initialize ctxp->elc.
18837         (redefinition_error): Parameter cl is now a WFL node.
18838         (parse_add_interface): New parameter wfl. No longer call
18839         lookup_cl, use wfl instead.
18840         (check_class_interface_creation): Parameter cl is now a WFL node.
18841         (maybe_create_class_interface_decl): Likewise.
18842         (add_superinterfaces): New function.
18843         (create_interface): Removed local cl, node, super_decl,
18844         super_decl_type.  Function now uses id as a WFL node. Better
18845         warning/error report on obsolete or forbidden mix of
18846         modifiers. Now calls add_superinterfaces to register interfaces.
18847         (create_class): Removed local cl, node. Local variable id is used
18848         as a WFL node. Better error report on forbidden modifier
18849         mix. Uses add_superinterfaces to register interfaces.
18850         (find_field): Argument cl is now a WFL node. Now store the WFL
18851         node of a fields that needs to be checked for their
18852         initialization.
18853         (method_header): Local variable node non longer used. Local
18854         variable id replaces cl.
18855         (check_modifiers_consistency): Local variable cl is now a WFL
18856         node.
18857         (method_declarator): Local variable cl replaced by parameter id.
18858         (parser_qualified_name): Now uses parameter name as a WFL node.
18859         (parser_check_super_interface): New parameter wfl, for achieve
18860         greater accuracy during error reports.
18861         (parser_chain_incomplete_item): New parameter named location. Used,
18862         along the decl, to construct the incomplete item node.
18863         (java_complete_class): resolve_class now uses WFL node extracted
18864         from the incomplete item node. Macro IC_TYPE replaces TREE_PURPOSE
18865         where appropriate.
18866         (complete_method_decl): Unresolved function's argument types are WFL.
18867         (resolve_class): Parameter cl is now a WFL node.
18868         (resolve_and_layout): Likewise.
18869         (do_resolve_class): Likewise. Try first to use cl and then do the
18870         lookup on the decl when calling check_pkg_class_access.
18871         (complete_class_report_errors): Use IC_TYPE in place of
18872         TREE_PURPOSE where appropriate. Use DEPEND_WFL on dependency
18873         instead of doing a lookup over the decl.
18874         (java_check_final): Use WFL info from field tree list.
18875         (lookup_cl): Rewritten and returns a statically defined WFL node.
18876         (lookup_modifier_cl): Now uses information from WFL nodes.
18877         (process_imports): Likewise.
18878         (read_import_dir): name and cl arguments replaced by a single WFL
18879         node. Function modified accordingly.
18880         (find_in_imports_on_demand): Now uses WFL node.
18881         (check_pkg_class_access): cl argument is now a WFL node.
18882         (declare_local_variables): Fixed to use WFL nodes.
18883         (resolve_expression_name): Likewise.
18884         (build_method_invocation_stmt): name_combo argument renamed
18885         wfl. Function modified to use WFL nodes.
18886         (build_invoke): cl used as a WFL node when calling build_expr_wfl.
18887         (lookup_method_invoke): cl is now a WFL node. Added missing
18888         IDENTIFIER_POINTER to class type decl name.
18889
18890 1998-04-14  Dave Brolley  <brolley@cygnus.com>
18891
18892         * lang.c (init_parse): Now returns char* containing the filename.
18893
18894 1998-04-10  Per Bothner  <bothner@cygnus.com>
18895
18896         * class.c (layout_class):  Mangle repeated arg types to match cc1plus.
18897
18898         * decl.c, java-tree.h (integer_four_node):  New INTEGER_CST node.
18899         * class.c (make_class_data):  If flag_assume_compiled, initial class
18900         state is CSTATE_PREPARED; make superclass and interfaces direct
18901         references, rather than constant pool indexes.
18902
18903 1998-04-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18904
18905         * parser.y: Include flags.h. Removed debug variable pl.
18906         (method_declaration:): Uses ctxp->parser_ccb_indent instead of pl.
18907         (block:): Likewise.
18908         (labeled_statement_nsi:): Generate debug info when reducing
18909         expression_statement:.
18910         (check_pkg_class_access): get_access_flags_from_decl invocation
18911         fixed for new CLASS_* flags location.
18912         (source_end_java_method): Save/restore parser context when
18913         entering/leaving this routine. Restore lineno to its right value
18914         before calling expand_end_bindings.
18915         (build_method_invocation_stmt): build_invoke called with the
18916         current line information.
18917         (build_invoke): New argument cl. Wrap the function call around a
18918         wfl node.
18919         (refine_accessible_methods_list): Changed comment, removed
18920         unnecessary code.
18921         * parse.h: Fixed typo in comments.
18922         (CLASS_OR_INTERFACE): Handle the new CLASS_* flags location.
18923         (JAVA_MAYBE_GENERATE_DEBUG_INFO): New macro.
18924         (struct parser_ctxt): New fields ccb_indent, last_ccb_indent1,
18925         parser_ccb_indent.
18926         * lex.c (java_lex): Record the last closing curly bracket of a
18927         function.
18928         * jcf-parse.c (jcf_parse_source): Now calls
18929         java_check_methods. Clarified comment, fixed typo.
18930
18931 1998-04-09  Dave Brolley  <brolley@cygnus.com>
18932
18933         * lang.c (init_parse): Expose for non USE_CPPLIB builds.
18934         (finish_parse): Expose for non USE_CPPLIB builds.
18935
18936 1998-04-08  Jeffrey A Law  (law@cygnus.com)
18937
18938         * lang.c (lang_print_xnode): New function.
18939
18940 1998-04-03  Per Bothner  <bothner@cygnus.com>
18941
18942         * decl.c (class_dtable_decl), java-tree.h:  New tree node.
18943         * class.c (get_dispatch_vector, get_dispatch_table):  New functions
18944         used to build a class's dispatch table.
18945         (make_class_data):  Generate dispatch table if flag_assume_compiled.
18946         Set dtable of class object to address of class_dtable_decl.
18947
18948         * decl.c (int_decl_processing):  Make soft_badarrayindex_node
18949         be volatile and have side effects - generates better code.
18950
18951         * class.c, expr.c, parse.y:  CLASS_INTERFACE, CLASS_FINAL, etc:
18952         These flags were defined for TYPE_DECLs, but used on RECORD_TYPEs.
18953
18954         * expr.c (expand_invoke):  If class is final, method is
18955         effectively final, so can call it directly.
18956
18957         * java-tree.h (TYPE_NVIRTUALS, TYPE_VTABLE):  New macros.
18958
18959         * Makefile.in, Make-lang.in:  Add missing $(exeext)s.
18960
18961 1998-03-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18962
18963         * parse.y (build_method_invocation_stmt): Removed extra argument
18964         to build_invoke.
18965
18966 1998-03-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>
18967
18968         * expr.c (dtable_indent): Now static global.
18969         (expand_invoke): Now call invoke_build_dtable and
18970         build_invokevirtual.
18971         (invoke_build_dtable, build_invokevirtual): New functions.
18972         * jcf-io.c (find_class): Defer issuing a warning by setting
18973         jcf->outofsynch to 1.
18974         * jcf-parse.c (jcf_out_of_synch): New function.
18975         (load_class): Test this_jcf.outofsynch flag and call
18976         jcf_out_of_synch accordingly.
18977         * jcf.h: (typedef struct JCF): New flag outofsynch. Fixed typo in
18978         comment indentation.
18979         * lex.c (java_get_unicode): Fixed code indentation.
18980         (java_lex): Create string literal. Fixed typo. Removed several
18981         premature obstack_free.
18982         * parse.h: New enums for name resolution and invocation mode.
18983         (struct qualification): New data structure.
18984         (RESOLVE_CHAIN_REMAINDER, BUILD_PTR_FROM_NAME): New macros.
18985         (do_resolve_class, build_method_invocation_stmt,
18986         breakdown_qualified, qualify_ambiguous_name, resolve_and_layout,
18987         debug_line, identical_subpath_p, invocation_mode,
18988         refine_accessible_methods_list, build_invoke,
18989         lookup_method_invoke): New functions declared.
18990         (build_invokevirtual, invoke_build_dtable, match_java_method,
18991         build_field_ref, jcf_out_of_synch): New references to external
18992         functions.
18993         (struct parse_ctxt): Removed artificial_constructor field.
18994         * parse.y: (array_type:): Type defined for this rule.
18995         (class_type:): Installed default rule for interface_type:.
18996         (array_type:): Now build Java array type.
18997         (qualified_name:): Now use obstack_grow0.
18998         (method_declaration:): Skip the artificial constructor added to
18999         the list, if any.
19000         (abstract_method_declaration:): Execute the code only during pass 1.
19001         (block:): Installed default rule in block_statements:.
19002         (block_statement:): Add the statement to the method during pass 2.
19003         (statement_expression): Installed default rule for
19004         method_invocation:.
19005         (argument_list:): Added code to build the argument list.
19006         (method_invocation:): Added call to create the method invocation
19007         node.
19008         (yyerror): Now use obstack_grow0. Removed bogus obstack_free.
19009         (debug_line): New function for debug.
19010         (complete_class_decl): No longer do something during pass 1.
19011         (method_header): Use BUILD_PTR_FROM_NAME.
19012         (parser_qualified_classname): Use obstack_grow0. Removed bogus
19013         obstack_free.
19014         (parser_chain_incomplete_item): Use BUILD_PTR_FROM_NAME. Modified
19015         function's main comment.
19016         (java_complete_class): Set CLASS_LOADED_P on all fixed incomplete
19017         classes.
19018         (complete_method_decl): Use BUILD_PTR_FROM_NAME and promote types.
19019         (resolve_class): Now works with arrays.
19020         (do_resolve_class, resolve_and_layout): New functions.
19021         (java_check_regular_methods): Reverse method list before and after
19022         having processed it. No longer set ctxp->artificial_constructor.
19023         (read_import_dir): Test jcf->outofsynch and call jcf_out_of_synch
19024         accordingly. Fixed typo in issued error message. Now use
19025         obstack_grow0.
19026         (find_in_imports_on_demand): Now use obstack_grow0.
19027         (declare_local_variables): Use BUILD_PTR_FROM_NAME.
19028         (source_end_java_method): Call expand_expr_stmt instead of
19029         expand_expr. Calls it before calling expand_function_end.
19030         (java_method_add_stmt): Do nothing if errors were found during
19031         parsing.
19032         (java_layout_parsed_class): Set CLASS_LOADED_P and fixed typo.
19033         (build_method_invocation_stmt, build_invoke, invocation_mode,
19034         lookup_method_invoke, refine_accessible_methods_list,
19035         qualify_ambiguous_name, breakdown_qualified, identical_subpath_p):
19036         New functions.
19037         * typeck.c (build_java_signature): Properly end method signature
19038         if return type skipped.
19039         (match_java_method): New function.
19040
19041 1998-03-16  Per Bothner  <bothner@cygnus.com>
19042
19043         * jcf-io.c (find_classfile):  If USE_JCF_STDIO, fopen in binary mode.
19044
19045 1998-02-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
19046
19047         * expr.c (build_invoke_non_interface): New function.
19048         (methods_ident, ncode_ident): Now static globals.
19049         (expand_invoke): Use build_invoke_non_interface.
19050         * java-tree.h (struct lang_decl): New field function_decl_body.
19051         (DECL_FUNCTION_BODY): New macro.
19052         * jcf-parse.c (jcf_parse_source): Deeper check before setting
19053         CLASS_FROM_SOURCE_P.
19054         (parse_source_file): Fixed typos. Call java_layout_parsed_class
19055         before starting pass 2. Call to java_generate_parsed_class replaced
19056         by java_register_parsed_class.
19057         * lex.c: Fixed typo in header. Some line width related formating.
19058         * lex.h: Some line width related formating.
19059         * parse.h (source_end_java_method, resolve_expression_name,
19060         complete_class_decl, maybe_create_class_interface_decl,
19061         check_class_interface_creation): New static function declarations.
19062         (java_layout_parsed_class, java_method_add_stmt): New function
19063         declarations.
19064         (struct parser_ctxt): Field mark_class_generate removed. New
19065         fields class_list and artificial_constructor.
19066         * parse.y: Fixed typo in header.
19067         (class_declaration:): Call complete_class_decl when class body
19068         parsed.
19069         (method_declaration:): Call source_end_java_method in pass 2 when
19070         the method body is defined.
19071         (postfix_expression:): Do expression name resolution on sub-rule
19072         name during pass 2.
19073         (create_class, create_interface): Merged common pieces.
19074         (check_class_interface_creation, maybe_create_class_interface_decl):
19075         New functions.
19076         (complete_class_decl): New function.
19077         (register_fields): Fixed line width related typo.
19078         (method_header): Correctly skip first argument when fixing
19079         argument line. Changed the loop.
19080         (java_check_circular_reference): Now use ctxp->class_list.
19081         (java_complete_class): Removed start/stop marking.
19082         (java_check_regular_methods): Now takes a class decl as an
19083         argument.  Add default constructor if none were encountered.
19084         (java_check_methods): Now use ctxp->class_list. Changed call to
19085         java_check_regular_methods.
19086         (source_start_java_method): Set DECL_ARG_TYPE for each function
19087         arguments.
19088         (source_end_java_method, java_method_add_stmt): New functions.
19089         (java_generate_parsed_class): No longer exists.
19090         (java_layout_parsed_class, java_register_parsed_class): New functions.
19091         (resolve_expression_name): New function.
19092
19093 1998-02-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
19094
19095         * jcf-parse.c: (parse_source_file): Check on errors after init lex.
19096         * lex.c: (java_init_lex): Defer ctxp->java_pass initialization
19097         until pass initializations are done. Call read_import_dir with
19098         pass set to 0.
19099         * parse.h: (lookup_modifier_cl): New function declared.
19100         (INTERFACE_FIELD_MODIFIERS): New macro.
19101         (OBSOLETE_MODIFIER_WARNING): New macro.
19102         * parse.y: (register_fields): Class type and current field name in
19103         local variables. Check modifier(s) if adding field(s) to an interface.
19104         (check_abstract_method_header): Now use OBSOLETE_MODIFIER_WARNING
19105         and report errors using the faulty modifier line context.
19106         (lookup_modifier_cl): New function.
19107         (read_import_dir): Detect and report default import processing
19108         failure.
19109
19110 1998-02-11  Brendan Kehoe  <brendan@cygnus.com>
19111
19112         Add a pair of -fassume-compiled/-fno-assume-compiled options.
19113         * class.c (is_compiled_class): Return 1 after making sure it
19114         qualifies as loaded, if FLAG_ASSUME_COMPILED is set.
19115         * lang-options.h: Add -fassume-compiled/-fno-assume-compiled.
19116         * java-tree.h (flag_assume_compiled): Add decl.
19117         * lang.c (lang_f_options): Add the flag.
19118         (flag_assume_compiled): Add decl, default to 0.
19119
19120 1998-02-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
19121
19122         * class.c (class_depth): Call to load_class uses extra VERBOSE arg.
19123         (is_compiled_class): Likewise.
19124         (layout_class): Likewise.
19125         (layout_class): Detect and lay out classes defined in source code.
19126         (interface_of_p, add_interface_do, may_add_interface): New
19127         function.
19128         (add_interface): Now use add_interface_do.
19129         (add_method_1): New function.
19130         (add_method): Now use add_method_1.
19131         (pushlevel): Debug message conditional to SOURCE_FRONTEND_DEBUG.
19132         (complete_start_java_method): New function.
19133         (start_java_mehod): Now call complete_start_java_method.
19134         * expr.c (lookup_field): Call to load_class uses extra VERBOSE arg.
19135         (expand_invoke): Likewise and fixed typo.
19136         *gjava.c: (print_super_field): Use new argument to find_class
19137         DO_CLASS_FILE.
19138         (main): Likewise.
19139         *java-tree.h: (CLASS_FROM_SOURCE_P): New flag on RECORD_TYPE.
19140         (IS_A_SINGLE_IMPORT_CLASSFILE_NAME_P, IS_A_CLASSFILE_NAME,
19141         QUALIFIED_P, IS_AN_IMPORT_ON_DEMAND_P): New flags on
19142         IDENTIFIER_NODE.
19143         (CLASS_COMPLETE_P): New flag on TYPE_DECL.
19144         (add_method_1, push_class): New prototypes.
19145         *jcf-dump.c: find_class now uses new DO_CLASS_FILE argument.
19146         *jcf-io.c: (open_in_zip): jcf now stores a pointer to the Zip
19147         directory where the class was found.
19148         (find_class): New argument DO_CLASS_FILE. Function find_class
19149         modified accordingly.
19150         *jcf-parse.c: (fix_class_path): New function.
19151         (load_class): Use new VERBOSE argument. load_class now finds and
19152         loads/parses .class/.java files. Save read_state of current_jcf
19153         if necessary.
19154         (java_parser_abort_on_error): New macro.
19155         (jcf_parse_source, parse_source_file): New function.
19156         (jcf_parse): Fixed typo.
19157         (yyparse): Call parse_source_file () only.
19158         (process_zip_dir): Fixed typo, fix zdir->filename_length when
19159         writing the real class name back in the zip directory entry.
19160         (find_in_current_zip): IDENTIFIER_CLASS_VALUE may be null.
19161         (jcf_figure_file_type): Fixed bogus alloc and bcopy.
19162         *jcf.h: (typedef struct JCF): New fields java_source and zipd.
19163         (find_class): Prototype fixed.
19164         *lex.c: Added 1998 time stamp.
19165         Removed all static global variables, moved into the parser
19166         context data structure.. Now include unistd.h if SEEK_SET not
19167         defined.
19168         (java_init_lex): Rewritten.
19169         (java_sneak_unicode): Modified current unicode access in current line.
19170         (java_unget_unicode): Likewise.
19171         (java_allocate_new_line): New allocation management.
19172         (java_read_char): Modified access and storage of unget_utf8_value.
19173         New way of processing current unicode.
19174         (java_store_unicode, java_read_unicode): Fixed typo in declaration.
19175         (java_get_unicode): Now use the parser context.
19176         (java_lineterminator): Likewise.
19177         (java_lex): Now used java_lval argument (pointer to YYSTYPE), part
19178         of the reentrant parser implementation. Function now use the
19179         parser context data structure and java_lval. Fixed production of
19180         the float and double constant "out of range" error message. Fixed
19181         obstack use. Return integer value when hitting a modifier. Now
19182         return type for TRUE, FALSE and other predefined types. Return
19183         identifier as a TREE_LIST list containing the current line context
19184         as the TREE_VALUE sub-node.
19185         (java_unicode_2_utf8): Fixed typo in declaration.
19186         (java_lex_error): Now use the parser context data structure.
19187         *lex.h: Added 1998 time stamp.
19188         (struct java_line): New fields ref_count and next.
19189         (JAVA_LINE_CHECK, JAVA_LINE_MARK, JAVA_LINE_CHAIN,
19190         JAVA_LINE_UNMARK, ID_NAME, ID_CL): New macros.
19191         (JAVA_FLOAT_RANGE_ERROR, JAVA_INTEGRAL_RANGE_ERROR, UNGETC): Fixed.
19192         *parse.h: Added 1998 time stamp.
19193         (java_parse_source_file): Renamed from parse_source_file.
19194         (YYERROR_NOW, YYNOT_TWICE): Fixed.
19195         (CLASS_MODIFIERS, FIELD_MODIFIERS, METHOD_MODIFIERS,
19196         INTERFACE_MODIFIER, INTERFACE_METHOD_MODIFIERS,
19197         JAVA_MODIFIER_CTX_UNMARK, IC_DECL, IC_DEPEND, DEPEND_DECL,
19198         THIS_MODIFIER_ONLY, ABSTRACT_CHECK, BEGIN_ONLY_PASS,
19199         END_ONLY_PASS, ELSE_ONLY_PASS, exit_java_complete_class,
19200         CLASS_OR_INTERFACE, INCOMPLETE_P): New macros.
19201         (struct parser_ctxt): New data structure to keep the parser context.
19202         *parse.y: Added 1998 time stamp, got rid of static global variables.
19203         (java_error_count, ctxp): New global variables.
19204         (%union): New value field.
19205         (numeric_type, integral_type): Rules removed.
19206         (primitive_type): Rule defined to handle integral, float, double and
19207         boolean types.
19208         (qualified_name, package_declaration,
19209         single_type_import_declaration, type_import_on_demand_declaration,
19210         modifiers, class_declaration, super, interfaces,
19211         interface_type_list, class_body, field_declaration,
19212         field_declaration, variable_declarators, variable_declarator,
19213         variable_declarator_id, method_declaration, method_header,
19214         formal_parameter_list, formal_parameter, method_body, block,
19215         static, interface_declaration, extends_interfaces,
19216         abstract_method_declaration, local_variable_declarators): Rules now
19217         define actions.
19218         (force_error, do_warning): New global statics.
19219         (push_parser_context, parser_context_save_global,
19220         parser_context_restore_global, pop_parser_context): New functions.
19221         (yyerror): Now uses the global parser context. Fixed use of obstack.
19222         (parse_error, parse_error_context, parse_warning_context,
19223         java_accstring_lookup, redefinition_error, check_modifiers,
19224         parser_add_interface, create_interface, create_class, find_field,
19225         duplicate_declaration_error, register_fields, method_header,
19226         check_modifiers_consistency, check_abstract_method_header,
19227         method_declarator, parser_qualified_classname,
19228         parser_check_super_interface, parser_check_super,
19229         parser_chain_incomplete_item, java_check_circular_reference,
19230         layout_class_from_source, java_complete_class,
19231         complete_method_decl, resolve_class, complete_class_report_errors,
19232         java_check_final, check_method_redefinition,
19233         java_check_regular_methods, java_check_abstract_methods,
19234         java_check_methods, lookup_java_interface_method2,
19235         lookup_java_method2, lookup_cl, find_name_in_single_imports,
19236         process_imports, find_in_imports, read_import_entry,
19237         read_import_dir, find_in_imports_on_demand,
19238         check_pkg_class_access, not_builtin_p, declare_local_variables,
19239         source_start_java_method, java_generate_parsed_class): New
19240         functions.
19241         *typeck.c: (signature_include_return): New global variable.
19242         (build_java_signature): Use SIGNATURE_INCLUDE_RETURN figure whether
19243         to add the function returned type in the signature.
19244
19245 1998-02-09  Brendan Kehoe  <brendan@cygnus.com>
19246
19247         * jcf-io.c (open_in_zip): Use strncmp and LEN.
19248
19249 1998-01-29  Dave Brolley  <brolley@cygnus.com>
19250
19251         * Make-lang.in (java.info): Added.
19252         (java.install-info): Added
19253
19254 1998-01-27  Brendan Kehoe  <brendan@cygnus.com>
19255
19256         * Makefile.in (clean): Also remove java/parse.c.
19257
19258 1998-01-26  Brendan Kehoe  <brendan@cygnus.com>
19259
19260         Add a pair of -fbounds-check/-fno-bounds-check options.
19261         * lang.c (lang_decode_option): Add code to grok arguments.
19262         (flag_bounds_check): Add decl.
19263         (lang_f_options): New array w/ the option in it.
19264         * java-tree.h (flag_bounds_check): Add decl.
19265         * lang-options.h: New file.
19266         * expr.c (build_java_arrayaccess): Use flag_bounds_check instead
19267         of a static macro value.
19268         (JAVA_ARRAY_EXCEPTION): Delete macro.
19269
19270 1998-01-23  Per Bothner  <bothner@cygnus.com>
19271
19272         * typeck.c (build_java_array_type):  Fix two bugs in previous change.
19273         * expr.c (build_anewarray):  Add missing promote_type.
19274
19275 1998-01-22  Per Bothner  <bothner@cygnus.com>
19276
19277         Add array types with known length to optimize bounds checking.
19278         * typeck.c (build_java_array_type):  Take length parameter.
19279         (java_array_type_length, build_prim_array_type):  New functions.
19280         * java-tree.h:  Update for new functions.
19281         * expr.c, typeck.c, verify.c: Update build_java_array_type calls.
19282         * class.c:  Use build_prim_array_type.
19283         * expr.c (can_widen_reference_to):  Handle known-length array types.
19284         (verify_jvm_instructions):  Keep track of integer push instructions
19285         followed by newarray/anewarray, so we can build known-length arrays.
19286         (JAVA_ARRAY_DATA_OFFSET):  Replace by ...
19287         (java_array_data_offset):  New function.
19288         (build_java_array_length_access):  New function.  Optimize if constant.
19289         (build_java_arrayaccess):  Constant fold bounds check.
19290         (expand_java_newarray, expand_java_anewarray):  Replaced by ...
19291         (build_newarray, build_anewarray):  New functions.
19292         (ARRAY_NEW_NUM, ARRAY_NEW_PTR):  Use build_{a,}newarray.
19293         * verify.c (merge_types):  Handle known-lengh array types.
19294
19295 1998-01-19  Per Bothner  <bothner@cygnus.com>
19296
19297         * expr.c (expand_byte_code):  Fix performace bug, which caused
19298         searching linenumber_table to be linear rather than constant.
19299
19300 1997-12-12  Per Bothner  <bothner@cygnus.com>
19301
19302         * Makefile.in (BISON, BISONFLAGS):  Add missing macros.
19303
19304         * decl.c, java-tree.h (soft_fmod_node):  New global.
19305         * decl.c (init_decl_processing):  Define __builtin_fmod.
19306         * expr.c (build_java_binop):  Implement TRUNC_MOD_EXPR for REAL_TYPE
19307         using __builtin_fmod.
19308
19309 1997-12-04  Alexandre Petit-Bianco  <apbianco@cygnus.com>
19310
19311         * keyword.h: New file, output of keyword.gperf as processed by
19312         gperf.
19313         * lex.c (java_lex_init): Initialize java_error_flag.
19314         * parse.c (YYERROR_NOW): Uses java_error_flag.
19315         * parse.y: New static java_error_flag. Useless definition of
19316         buffer_error gone.
19317         * parse.y (java_error): Portable error recovery using
19318         java_error_flag (not yet completely tuned).
19319
19320 1997-12-04  Brendan Kehoe  <brendan@lisa.cygnus.com>
19321
19322         * Makefile.in (parse.c): Use $(srcdir) for parse.y.
19323
19324 1997-12-03  Alexandre Petit-Bianco  <apbianco@cygnus.com>
19325
19326         * Makefile.in: (JAVA_OBJS): New object jcf-parse.o.
19327         (parse.c, lex.c, keyword.h): New rules for Java source code
19328         front-end.
19329         * parse.c: Renamed into jcf-parse.c.
19330         * jcf-parse.c (yyparse): Invoke the parser to process Java source code.
19331         * keyword.gperf: New file, Java keywords.
19332         * parse.y: New file, Java language grammar.
19333         * parse.h: New file, Java language grammar definitions.
19334         * lex.c: New file, Java language lexer.
19335         * lex.h: New file, Java language lexer definitions.
19336
19337 1997-12-03  Per Bothner  <bothner@cygnus.com>
19338
19339         * decl.c (clinit_identifier_node), java-tree.h:  New global.
19340         * java-tree.h (IS_METHOD_INIT_P, IS_METHOD_CLINIT_P):  Removed.
19341         * verify.c (verify_jvm_instructions):  Inline use of removed macros.
19342         * expr.c (expand_java_field_op):  Check for invalid assignment
19343         to final field.
19344
19345         * jcf-reader.c (get_attribute):  Test for wrong attribute length.
19346
19347 1997-10-27  Per Bothner  <bothner@cygnus.com>
19348
19349         * verify.c (verify_jvm_instructions):  When processing a handler,
19350         attempt to set the current_subr to the right value.
19351         (More complicated code combines Sep 17 and Oct 22 versions.)
19352
19353 1997-10-24  Per Bothner  <bothner@cygnus.com>
19354
19355         * class.c (push_class):  Figure out (guess) name of source file.
19356         * parse.c  (set_source_filename):  Set DECL_SOURCE_FILE of class decl.
19357         (give_name_to_class):  Don't guess source name;  use DECL_SOURCE_FILE.
19358         (parse_class_file):  Change return type from int to void.
19359         Call debug_start_source_file/debug_end_source_file.
19360
19361         * expr.c (build_java_binop):  Fix masking 2nd operand.
19362         * decl.c (init_decl_processing):  Set sizetype first.
19363
19364 1997-10-22  Per Bothner  <bothner@cygnus.com>
19365
19366         * verify.c (verify_jvm_instructions):  Don't set current_subr to NULL.
19367         (Revert Sep 17 change.)
19368
19369 1997-10-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
19370
19371         * parse.c (process_zip_dir): Skip ZIP entries not bearing the
19372         .class extension in their name and fix thing so we don't process
19373         them parse_zip_file_entries().
19374         (parse_zip_file_entries): Cleaned unused local variables.
19375
19376 1997-10-20  Per Bothner  <bothner@cygnus.com>
19377
19378         * expr.c (can_widen_reference_to):  Allows equal array element types.
19379         (expand_byte_code):  PRE_RET must expand OPERAND_VALUE (to get index).
19380         * jcf-dump.c (RET):  Get (and print) index.
19381
19382         * verify.c (verify_jvm_instructions case OPCODE_anewarray):
19383         Promote element type to POINTER_TYPE.
19384
19385 1997-10-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
19386
19387         * jcf-reader.c, parse.c: (parse_zip_file, process_zip_dir,
19388         find_in_current_zip, jcf_figure_file_type): Moved from
19389         jcf-reader.c to parse.c.
19390         * zextract.c: (read_zip_archive): takes file_comment_length possible
19391         field into account.
19392
19393 1997-10-20  Per Bothner  <bothner@cygnus.com>
19394
19395         * verify.c (verify_jvm_instructions):  Var can also be promoted to int.
19396
19397         * verify.c (merge_types):  Handle array types even better ...
19398
19399 1997-10-17  Per Bothner  <bothner@cygnus.com>
19400
19401         * expr.c (java_stack_pop):  Fix use of NULL_TREE for TYPE_SECOND.
19402
19403         * java-tree.h (PUSH_FIELD):  Set DECL_ARTIFICIAL.
19404         * class.c (make_class_data):  Don't build fields_decl if no fields.
19405         When building fields_decl, skip if DECL_ARTIFICIAL.
19406
19407         * expr.c (java_stack_swap):  Update stack_type_map.
19408         * verify.c (merge_types):  Handle array types better.
19409
19410 1997-10-15  Per Bothner  <bothner@cygnus.com>
19411
19412         * class.c (add_field):  Don't promote short integral fields to
19413         int any more (unless JAVA_PROMOTE_TO_INT), since Kaffe doesn't.
19414         * expr.c (push_value):  Promote and convert short integral values.
19415
19416         * decl.c, java-tree.h (integer_two_node):  New constant node.
19417         * verify.c (merge_types):  Check for TYPE_RETURN_ADDR.
19418
19419 1997-10-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
19420
19421         * class.c (append_gpp_mangled_type): Use function argument
19422         unpromoted type to generate mangled name.
19423
19424 1997-10-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
19425
19426         * constants.c (build_constant_data_ref): Now uses current_class
19427         instead of main_class.
19428         (build_constants_constructor): Now uses current_class instead of
19429         main_class.
19430         * zipfile.h: (struct ZipFileCache): Now defined here. Declaration
19431         of the global variable SeepZipFiles done here.
19432         * zextract.c (read_zip_archive): extra_field optional field taken
19433         into account while computing the position of the class file in the
19434         archive.
19435         * verify.c (verify_jvm_instructions): Use current_jcf to search
19436         the constant pool.
19437         * parse.c (load_class): First search for the class to load in the
19438         current zip file. Saves current_jcf (restored before returning
19439         from that function). Don't call JCF_FINISH in the class was found
19440         in the current ZIP file.
19441         (jcf_parse): If the class was found in the current ZIP file, save
19442         its tree_constant_pool (for later reuse).
19443         (parse_class_file): New function. Process each method defined in
19444         the current class and record the class as to be later registered.
19445         (yyparse): Rewritten. Figure the type of the current file and switch
19446         accordingly.
19447         * lang.c: New global variable current_jcf.
19448         (lang_init): Removed compiling_from_source test (done later, in
19449         yyparse). Removed call the jcf_parse ().
19450         * jcf.h (JCF_ZIP, JCF_CLASS, JCF_SOURCE): New defined values.
19451         (typedef struct JCF): New fields seen_in_zip (to mark a class found
19452         in the current ZIP file) and zip_offset (offset to the class data in
19453         the current zip file).
19454         * jcf-reader.c: zipfile.h included.
19455         localToFile: New ZipFileCache static global variable
19456         (parse_zip_file_entries): New function. Browse the current ZIP
19457         file directory and process each class found.
19458         (process_zip_dir): New function. Register each class found in the
19459         ZIP file directory. The class aren't parsed but a valid JCF is
19460         link to each of them.
19461         (find_in_current_zip): New function. Search for a class in the
19462         current ZIP file directory. If found, prepare the class so that it
19463         can be loaded.
19464         (jcf_figure_file_type): New function. Examine the file structure
19465         to figure a class file, a ZIP file. If none of these categories are
19466         matched, a source file is assumed.
19467         * jcf-io.c: Removed definition of ZipFileCache (moved in zipfile.h).
19468         SeenZipFile: New global variable.
19469         (open_in_zip): Use zipmember's length to accelerate the search for
19470         a member. If zipmember was NULL and zip file successfully read,
19471         return 0.
19472         * java-tree.h: New global variable current_jcf declared.  Added
19473         declaration for current_constant_pool_tags, current_constant_pool_data,
19474         current_constant_pool_length, current_constant_pool_data_ref.
19475         (struct lang_type): Augmented with two fields. struct JCF *jcf (to
19476         store the JCF of classes seen in a zip file) and tree *constant_pool
19477         (to save a loaded class constant pool). current_class declared here.
19478         * expr.c (expand_invoke): Use current_jcf instead of main_jcf to
19479         retrieve method_ref_constant.
19480         (PUSHC): java_push_constant_from_pool now uses current_jcf.
19481         (OBJECT): get_class_constant now uses current_jcf.
19482         (ARRAY_NEW_PTR): get_class_constant now uses current_jcf.
19483         (ARRAY_NEW_MULTI): get_class_constant now uses current_jcf.
19484         (expand_invoke): Now uses current_class instead of main_class
19485         (build_class_init): Now uses current_class instead of main_class
19486         * class.c: New static global variable registered_class.
19487         (register_class): New function.
19488         (emit_register_class): Modified to use registered_class instead of
19489         main_class
19490         (is_compiled_class): Now take into account class seen in the archive.
19491
19492 1997-10-06  Per Bothner  <bothner@cygnus.com>
19493
19494         * except.h:  Renamed to: java-except.h.
19495         * parse.c, except.c, expr.c, verify.c:  Update #include accordingly.
19496         * except.c:  Add semi-working (commented out) implementation.
19497
19498         * expr.c (expand_iinc):  Add needed flush_quick_stack.
19499         * parse.c (set_source_filename):  New function.
19500         (give_name_to_class):  Set input_filename from package.classname.java.
19501
19502         * jcf-io.c (find_class):  Don't look first in ".".
19503
19504 1997-10-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
19505
19506         * zextract.c (read_zip_archive): Now takes into account the
19507         extra_field field.
19508         * expr.c (can_widen_reference_to): Modified to handle sub-interfaces.
19509
19510 1997-09-20  Per Bothner  <bothner@cygnus.com>
19511
19512         * constants.c, java-tree.h (build_internal_class_name):  New function.
19513         (alloc_class_constant):  Re-implement using build_internal_class_name.
19514         * class.c (make_class_data):  Likewise.
19515         * class.c (hashUtf8String):  Make hash algorithm match String.hashCode.
19516
19517 1997-09-17  Per Bothner  <bothner@cygnus.com>
19518
19519         * verify.c (verify_jvm_instructions):  Temporarily set current_subr
19520         to NULL before pushing an exception handler target.
19521
19522         * expr.c (flush_quick_stack):  Save from low stack indexes to high.
19523         (java_stack_swap, java_stack_dup):  Re-write to be safe from
19524         clobbering registers.
19525         (build_class_init):  New function.
19526
19527 1997-09-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
19528
19529         * typeck.c (build_java_array_type): Temporary use
19530         permanent_obstack to create the array 'length' field.
19531         * expr.c (lookup_label): Temporay use permanent_obstack to create
19532         label if not found.
19533         * class.c (push_super_field): Tempory use permanent_obstack.
19534
19535 1997-09-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
19536
19537         * typeck.c (type_for_mode): Now handles double_type_node and
19538         float_type_node.
19539         * verify.c (verify_jvm_instructions): The instruction following
19540         the wide bytecode is checked. OPCODE_ret added to the list of
19541         wide.
19542
19543 1997-09-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
19544
19545         * class.c (make_class): Temporary use permanent_obstack. Set the
19546         class CLASS_P field to 1.
19547         (push_class): Temporary use permanent_obstack.
19548         (set_super_info): Temporary use permanent_obstack.
19549         (add_method): Temporary use permanent_obstack, set
19550         METHOD_TRANSIENT().
19551         (add_field): Temporary use permanent_obstack. Sets
19552         FIELD_VOLATILE() and FIELD_TRANSIENT().
19553         (build_class_ref): Temporary use permanent_obstack if the class
19554         isn't compiled.
19555         (build_static_field_ref): Temporary use permanent_obstack when
19556         creating field's rtl.
19557         (get_access_flags_from_decl): Handle ACC_VOLATILE, ACC_TRANSIENT,
19558         ACC_SYNCHRONIZED, ACC_NATIVE, ACC_ABSTRACT flags for methods
19559         and fields. Function finalized, as far as flag handling.
19560         (push_class_static_dummy_field): Temporary use permanent_obstack.
19561         (emit_register_class): Force generation of class registration at
19562         -O3 or deeper.
19563         * decl.c (end_java_method): Call permanent_allocation() before
19564         returning.
19565         * expr.c (can_widen_reference_to): Added comment to interface
19566         handling, fixed typo.
19567         (lookup_field): Now uses CLASS_P() to correct FIXME
19568         (expand_invoke): Verification on public && !static &&
19569         !abstract moved into soft_lookupinterfacemethod (kaffe).
19570         Use Object class dtable if objectref is an array when expanding
19571         invokeinterface.
19572         (java_push_constant_from_pool): Temporary use permanent_obstack
19573         for CONSTANT_string
19574         * parse.c (get_ref_constant): Temporary use permanent_obstack to
19575         create constant references.
19576         (get_constant): Temporary use permanent_obstack to create constant.
19577         (load_class): Temporary use permanent_obstack to load class.
19578         (jcf_parse): Temporary use permanent_obstack to perform class
19579         layout.
19580         * typeck.c: (parse_signature_string): Temporary use permanent_obstack.
19581         (build_java_signature): Temporary use permanent_obstack.
19582         * verify.c: (verify_jvm_instruction): removed unnecessary verification
19583         on ACC_SUPER flag.
19584         * java-tree.h (METHOD_NATIVE, METHOD_TRANSIENT): Defined.
19585         (FIELD_VOLATILE, FIELD_TRANSIENT): Defined.
19586         (CLASS_P): Defined
19587
19588 1997-09-11  Per Bothner  <bothner@cygnus.com>
19589
19590         * class.c (append_gpp_mangled_type):  Fix typo.
19591         (emit_register_class):  Use main_class to get class object, rather
19592         than looking for no-longer-existing static decl starting with _CL.
19593         * typeck.c (parse_signature_type):  Promote array element type
19594         if it is a RECORD_TYPE.
19595
19596 1997-09-10  Per Bothner  <bothner@cygnus.com>
19597
19598         * class.c (push_class_static_dummy_field):  New function.
19599         (mangle_static_field):  New. Do G++-style mangling of static fields.
19600         (layout_class):  Mandle static fields here, not in add_field.
19601         (build_class_ref):  The class object is now a dummy static field.
19602         * decl.c (find_local_variable):  Look for best, instead of first match.
19603         * expr.c (push_type):  Always promote_type, not just for RECORD_TYPE.
19604         (build_java_athrow):  Don't check here if exception is Throwable.
19605         * java-tree.h (TYPE_UNSET):  Renamed to TYPE_UNKNOWN.
19606         (TYPE_USED):  Removed.  No longer used ...
19607         * parse.c (jcf_parse):  Call push_class_static_dummy_field.
19608         * verify.c (push_pending_label):  New function.
19609         (push_pending_block):  Renamed to check_pending_block.
19610         (merge_types):  Remove unneeded suuport for TYPE_UNUSED.
19611         (verify_jvm_instructions):  Only reset prev_eh_ranges (to force
19612         re-checking possible handlers) after a store (less wasted work).
19613         Check for null handler (finally) before calling add_handler.
19614         Various changes to (finally?) correctly handle try/finally.
19615
19616 1997-09-09  Brendan Kehoe  <brendan@lisa.cygnus.com>
19617
19618         * class.c: Include stdio.h.
19619
19620 1997-09-04  Per Bothner  <bothner@cygnus.com>
19621
19622         * expr.c (expand_invoke):  Use COMPOUND_EXPR (and TREE_SIDE_EFFECTS)
19623         to make sure class is initialized before static/special invoke.
19624
19625         * verify.c (verify_jvm_instructions):  On a store instruction,
19626         call find_local_variable to force pre-allocation of decl and rtx.
19627         * decl.c (push_jvm_slot):  Set DECL_REGISTER on stack slots.
19628
19629 1997-09-03  Per Bothner  <bothner@cygnus.com>
19630
19631         * class.c (build_class_ref):   Strip off "promoted_" if need be.
19632         (make_field_value): Call build_java_signature when needed.
19633         (layout_class):  Don't make_function_rtl if METHOD_ABSTRACT.
19634         * expr.c (build_java_athrow):  Don't push_value of exception.
19635         (build_java_binop):  Implement COMPARE_L_EXPR and COMPARE_G_EXPR to
19636         match specification of [fd]cmp[lg] for NaNs.
19637         (expand_byte_code):  Add support for exception handler ranges.
19638         * except.c:  Add skeleton for EH code-generation.
19639         * verify.c (merge_types):  Treat all promoted integral types as equal.
19640         * constants.c (build_constants_constructor):  To force creation of
19641         current_constant_pool_data_ref, call build_constant_data_ref.
19642
19643         * javaop.def (lload):  Fix typo.
19644         * jcf-dump.c (main):  Clear filename to prevent possibly-bad free.
19645
19646 1997-09-02  Brendan Kehoe  <brendan@lisa.cygnus.com>
19647
19648         * parse.c: Don't include function.h.
19649
19650 1997-08-27  Per Bothner  <bothner@cygnus.com>
19651
19652         * except.[ch]:  New files.
19653         * Makefile.in (JAVA_OBJS):  Add except.o
19654         * expr.c:  Temporary warning about unimplemented exceptions.
19655         * verify.c:  Verify exception handlers.
19656
19657         * jcf-dump.c (disassemble_method):  Print exception table.
19658
19659 1997-08-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
19660
19661         * expr.c (verify_jvm_instructions): Started a thorough
19662         verification of invoke* bytecodes.
19663         (expand_byte_code): flush quick stack if PC is the target of a
19664         branch.  and undef RET (conflicting with config/i386/i386.h).
19665         (expand_java_arrayload): Fixed bogus cast, when Boolean type is
19666         used.
19667         (expand_invoke): Now handles invokeinterface and do more
19668         verification according to the bytecode.
19669         (lookup_field): Don't try to load the class if processing
19670         dtable_type.
19671         (can_widen_reference_to): Now handles interfaces.
19672         * decl.c (init_decl_processing): New global variable
19673         soft_lookupinterfacemethod_node, declared in java-tree.h.
19674         Call set_super_info on string_type_node.
19675         * java-tree.h (CLASS_INTERFACE, CLASS_ABSTRACT, CLASS_SUPER): Now
19676         defined.
19677         * class.c (set_super_info): Fills the CLASS_* flags according to
19678         access_flags.
19679         (get_access_flags_from_decl): Handles all class flags.
19680
19681 1997-08-26  Per Bothner  <bothner@cygnus.com>
19682
19683         * class.c (add_method):  Zero out newly-allocated DECL_LANG_SPECIFIC.
19684         * parse.c (yyparse):  Check for abstract method, and missing code.
19685         * expr.c (expand_byte_code):  Change interface.
19686         * lang.c (put_decl_node):  Print promoted types prettier.
19687         * verify.c (verify_jvm_instruction):  Change interface.
19688         Partial support for scanning exception table.
19689         For load instructions, handle promoted integral types.
19690
19691 1997-08-21  Per Bothner  <bothner@cygnus.com>
19692
19693         * verify.c:  New file, with contents moved from expr.c.
19694         * expr.c:  Bunch of stuff (mostly verification) moved to verify.c.
19695         * typeck.c (is_array_type_p):  Moved here from expr.c.
19696         * java-tree.h:  Add some now-needed function declarations.
19697         * Makefile.in (JAVA_OBJS): Added verify.o.
19698
19699 1997-08-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
19700
19701         * class.c (add_method): Sets the METHOD_SYNCHRONIZED flag, sets the
19702         METHOD_ABSTRACT flag.
19703
19704         * java-tree.h (METHOD_SYNCHRONIZED): Set to DECL_LANG_FLAG_4.
19705         (IS_METHOD_CLINIT_P, IS_METHOD_INIT_P): New macros.
19706         (METHOD_ABSTRACT): Set to DECL_LANG_FLAG_5
19707
19708         * decl.c (soft_monitorenter_node, soft_monitorexit_node): New global
19709         variables.
19710         (start_java_method): Hook for SYNCHRONIZED methods.
19711
19712         * expr.c (build_java_jsr, build_java_ret): New functions
19713         (JSR,PRE): New macros
19714         (PRE_TABLE_SWITCH, PRE_LOOKUP_SWITCH): Fixed and secured.
19715         (verify_jvm_instructions): tableswitch, lookupswitch,
19716         monitorenter, monitorexit, goto_w: verified.
19717         (LOOKUP_SWITCH, TABLE_SWITCH): Fixed generation of default: label
19718         (build_java_monitor): New function.
19719         (MONITOR_OPERATION): Modified to call build_java_monitor()
19720         (verify_jvm_instructions): Started a thorough verification of
19721         invoke* bytecodes.
19722
19723 1997-08-19  Per Bothner  <bothner@cygnus.com>
19724
19725         Support verification of jsr/ret subroutines (used for try/finally).
19726         * decl.c (return_address_type_node):  New type node.
19727         * java-tree.h (LABEL_RETURN_LABEL, LABEL_RETURN_TYPE_STATE,
19728         RETURN_MAP_ADJUSTED, LABEL_RETURN_LABELS, LABEL_IN_SUBR,
19729         LABEL_SUBR_START, LABEL_SUBR_CONTEXT, BCODE_VERIFIED):  New macros.
19730         (TYPE_UNSET, TYPE_SECOND, TYPE_NULL, TYPE_RETURN_ADDR, TYPE_UNUSED,
19731         TYPE_USED):  New macros for special types in type_map.
19732
19733         * java-tree.h (BCODE_JUMP_TARGET):  Renamed to BCODE_TARGET.
19734         (BCODE_BACKWARDS_TARGET, CODE_FORWARDS_TARGET):  Replaced by
19735         BCODE_JUMP_TARGET.
19736         * expr.c (expand_byte_code):  Fix logic to warn of unused instructions.
19737
19738         * expr.c (can_widen_reference_to):  New function.
19739         (pop_type):  Use it.
19740         (merge_type_state):  Support handling start of subroutine.
19741         (push_pending_block):  Return char* error message, instead of calling
19742         fatal on an error.  Also handle subroutines.
19743         (verify_jvm_instructions):  Handle errors from push_poending_block.
19744         Support jsr and ret instructions.
19745
19746 1997-08-19  Per Bothner  <bothner@cygnus.com>
19747
19748         * jcf-io.c (find_classfile):  Fix thinko.
19749         * jcf-dump.c:  Add CONVERT2 (to match changed javaop.def).
19750
19751 1997-08-12  Jason Merrill  <jason@yorick.cygnus.com>
19752
19753         * Makefile.in (BISON): Remove.
19754
19755 1997-08-07  Per Bothner  <bothner@cygnus.com>
19756
19757         * Makefile.in:  Convert to autoconf.
19758         * config-lang.in (outputs):  Added java/Makefile.
19759
19760         * Make-lang.in, lang-specs.h, config-lang.in, Makefile.in:
19761         Rename cc1java to jc1.
19762
19763         * lang.c (init_parse, finihs_parse):  New functions #ifdef USE_CPPLIB.
19764         * Makefile.in (INTERNAL_CFLAGS):  Add @extra_c_flags.
19765
19766         * class.c (class_depth):  Do load_class if needed.
19767
19768         Mostly better verification.
19769         * decl.c (pushdecl):  Set TYPE_STUB_DECL for a type.
19770         (init_decl_processing):  Change return type of soft_checkcast.
19771         * expr.c (expand_java_CHECKCAST):  Do push_value of the "casted" value.
19772         * lang.c (put_decl_string, put_decl_node, lang_printable_name,
19773         lang_print_error):  New functions.
19774         (lang_init):  Set global hook print_error_function to lang_print_error.
19775         * expr.c:  In the type_map ptr_type_node is only used for null now.
19776         (pop_type, merge_types):  Hence ptr_type_node matches any reference.
19777         (merge_types):  Dererence pointer to record types before comparing.
19778         (decode_newarray_type, merge_types):  On error just return NULL.
19779         (build_java_binop):  Add preliminary implementation (with warning)
19780         for COMPARE_L_EXPR and COMPARE_G_EXPR (i.e. [fd]cmp[lg]).
19781         (lookup_label):  Set DECL_IGNORED_P (for dwarf2out).
19782         (expand_compare, expand_java_goto, expand_java_call):  Don't
19783         push_pending_block, since that only makes sense when verifying.
19784         (merge_type_state):  Different return codes.
19785         (push_pending_block):  A block may need to be verified more than once.
19786         (expand_byte_code):  Warn about unused code at code generation time.
19787         (verify_jvm_instruction):  Changed logic, since code may need to be
19788         re-verified if type-state has changed.  Also, better error handling.
19789         Implement acmpeq, acmpne, pop, pop2, swap, checkcast, instanceof.
19790         Improve newarray, anewarray, ?aload, athrow,
19791         * java-tree.h (LABEL_CHANGED):  New macro.
19792
19793 1997-08-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
19794
19795         * decl.c (soft_athrow_node): New global variable initialized.
19796         * javaop.def (i2b, i2c, i2s): Invoke CONVERT2
19797         * typeck.c (convert): Added support for REAL_TYPE.
19798         (convert_to_char): New function.
19799         (convert): Handle CHAR_TYPE.
19800         * expr.c (expand_java_arraystore): Modified because CHAR/BYTE/BOOLEAN/
19801         SHORT now expect INT but store as CHAR/BYTE/BOOLEAN/SHORT.
19802         (expand_java_arrayload): CHAR/BYTE/BOOLEAN/SHORT now convert result to
19803         promoted type.
19804         (verify_jvm_instructions): Added break a the end of bogus unop: label.
19805         (OPCODE_<b|c|s>astore): Pop an int operand from the type stack
19806         (OPCODE_<b|c|s>astore): Push the promoted type onto the stack
19807         (process_jvm_instruction): New macro CONVERT2 for i2c, i2s and i2b.
19808         (JAVA_ARRAY_LENGTH_OFFSET, JAVA_ARRAY_DATA_OFFSET): Modified
19809         to Use The Right Things.
19810         (pop_type): Accept CHAR/BYTE/BOOLEAN/SHORT promoted type as
19811         compatible with INT. BOOLEAN is made equivalent to BYTE.
19812         (OPCODE_athrow, OPCODE_aconst_null, OPCODE_ifnull,
19813         OPCODE_ifnonnull): Now supported.
19814         (build_java_athrow): New function.
19815
19816 1997-08-04  Per Bothner  <bothner@cygnus.com>
19817
19818         Rename method name <init> to match G++ (and fix mangling).
19819         * class.c (layout_class):  Replace method name of <init> by class name.
19820         (make_method_value):  Do inverse renaming of constructor from <init>.
19821         * java-tree.h (DECL_CONSTRUCTOR_P):  New macro.
19822         * typeck.c (lookup_java_constructor):  New function.
19823         * expr.c (expand_invoke):  If method_name is <init>, call
19824         lookup_java_constructor to find constructor.
19825
19826         * parse.c (get_constant):  Handle CONSTANT_Float and CONSTANT_Double.
19827
19828 1997-08-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
19829
19830         * parse.c (get_class_constant): Modified to handle array "classes"
19831         * typeck.c (set_local_type): Bug fixed when filling type_map[] with
19832         wide type.
19833         (convert): Modified to handle real type.
19834         * java-tree.h (soft_badarrayindex_node, soft_anewarray_node,
19835         soft_multianewarray, soft_newarray_node, soft_throw_node): New global
19836         variables declared.
19837         * decl.c (soft_badarrayindex_node, soft_anewarray_node,
19838         soft_multianewarray, soft_newarray_node, soft_throw_node): New
19839         global variables initialized.
19840         (find_local_variable): Handles the case of a pointer
19841         (end_java_method): Restore the use of one more scope
19842         * expr.c (build_java_arraynull_check, build_java_arrayaccess,
19843         build_java_array_length_access, expand_java_arrayload,
19844         expand_java_arraystore, expand_java_array_length,
19845         expand_java_multianewarray, expand_java_anewarray,
19846         build_java_check_indexed_type, is_array_type_p,
19847         build_java_throw_out_of_bound_exception): New functions.
19848         (STORE_INTERNAL): Now forces type of the decl to be type of the value.
19849         (OPCODE_arraylength, OPCODE_newarray, OPCODE_<t>astore,
19850         OPCODE_<t>aload): Implemented code for verification.
19851         (ARRAY_STORE, ARRAY_LOAD, ARRAY_LENGTH, ARRAY_NEW_PTR, ARRAY_NEW_NUM
19852         ARRAY_NEW_MULTI): Macro defined.
19853         (CONVERT): Modified to invoke convert().
19854         (case OPCODE_aload2): Fixed index typo from 2 to 1.
19855
19856 1997-07-31  Per Bothner  <bothner@cygnus.com>
19857
19858         * class.c (push_class):  Set DECL_ARTIFICIAL (for dbxout.c).
19859         (build_class_ref, is_compiled_class):  Handle pointer-to-record types.
19860         (make_class_data):  Field name needs '/' as package prefix.
19861         * expr.c (type_stack_dup, java_stack_dup):  Fix fencepost errors.
19862
19863 1997-07-25  Per Bothner  <bothner@cygnus.com>
19864
19865         Implement debug information for local variables.
19866         * java-tree.h (DECL_CODE_LENGTH, DECL_ARG_SLOT_COUNT,
19867         DECL_LOCAL_SLOT_NUMBER, DECL_LOCAL_START_PC, DECL_LOCAL_END_PC,
19868         DECL_LOCAL_SLOT_CHAIN):  New macros.
19869         (struct lang_decl_var):  New type.
19870         * parse.c (give_name_to_locals):  Move to decl.c.
19871         * decl.c (give_name_to_locals):  Re-written to Do The Right Thing.
19872         (start_java_method):  Re-write parameter handling.
19873         (pending_local_decls):  New global variable.
19874         (push_jvm_slot, maybe_pushlevels, maybe_poplevels):  New functions.
19875         (find_local_variable):  Accept pc so we can skips decls not in range.
19876         (struct binding_level):  Add end_pc field.
19877         * expr.c (expand_byte_code): Call maybe_pushlevels and maybe_poplevels.
19878         (various):  Change so current pc gets passed to find_local_variable.
19879
19880         * decl.c (init_decl_processing):  Re-arrange fields in
19881         class_type_node and and method_type_node to match kaffe 0.9.1.
19882         * class.c (make_method_value, make_class_data):  Update
19883         initializations to match.
19884
19885 1997-07-16  Per Bothner  <bothner@cygnus.com>
19886
19887         * class.c (unicode_mangling_length, emit_unicode_mangled_name,
19888         append_gpp_mangled_name, append_gpp_mangled_type):  New functions.
19889         (push_super_field):  New function.
19890         (make_class_data):  Handle inheritance of class static initializer.
19891         (layout_class):  New name mangling.
19892         * constants.c (build_constant_data_ref):  Init type of data array
19893         to a one-element array.
19894         (build_constants_constructor):  Set DECL_SIZE from complete array type.
19895         * decl.c:  Rename class_type, object_type etc to class_type_node,
19896         object_type_node etc.  Make former inherit from latter.
19897         * expr.c (expand_invoke):  Add cast of function address.
19898         * java-tree.h (TYPE_ARRAY_ELEMENT, PUSH_SUPER_VALUE):  New.
19899         * parse.c (yyparse):  Don't call layout_class here.
19900         * typeck.c (build_java_array_type):  Set TYPE_ARRAY_ELEMENT.
19901
19902 1997-06-14  Per Bothner  <bothner@cygnus.com>
19903
19904         * decl.c, class.c:  Update method type to match latest Kaffe snapshot.
19905         * constants.c (lookup_name_constant):  Renamed to alloc_name_constant.
19906         (alloc_class_constant):  New.
19907         * expr.c (expand_invoke):  Make sure method's class is initialized.
19908         * class.c (interits_from_p, emit_register_class):  New functions.
19909         * parse.c (yyparse):  Call emit_register_class.
19910
19911 1997-06-09  Per Bothner  <bothner@cygnus.com>
19912
19913         * constants.c:  New file, to handle constant pool.
19914         * Makefile.in (JAVA_OBJS):  Add constants.o.
19915         * decl.c (init_decl_processing):  Update, fix, finish various structs.
19916         (pushdecl_top_level):  New.
19917         * parse.c (layout_class):  Moved to class.c.
19918         * expr.c (java_push_constant_from_pool):  New function.
19919         * class.c (build_class_ref):  Make work fully
19920         (make_class_data):  Emit super-class, constant pool, interface vector.
19921
19922 1997-06-03  Per Bothner  <bothner@cygnus.com>
19923
19924         java-tree.h (DECL_SIGNATURE, BCODE_EMITTED):  Remove.
19925         (LABEL_VERIFIED, BCODE_EXCEPTION_TARGET, TYPE_ARRAY_P):  New.
19926         * class.c (class_depth):  New function.
19927         (lookup_named_class):  Replaced by new function lookup_class.
19928         * decl.c (object_type_node, string_type_node):  New.
19929         Remove various types that we no longer need.
19930         * expr.c (verify_jvm_instructions):  New separate verifier pass.
19931         (push_type, pop_type):  New functions for verifier.
19932         (type_stack_dup, pop_argument_types, merge_types):  Likewise.
19933         (expand_byte_code):  Simplify, since we assume already verified.
19934         (expand_invoke):  Now mostly works.
19935         * javaop.def:  Rename ldc1->ldc, ldc2->ldc_w, ldc2w->ldc2_w.
19936         * lang.c (main_class):  Move to parse.c.  Don't make_class yet.
19937         * parse.c:  Wait to allocate class object until we know its name.
19938         (layout_class):  Calculate DECL_VINDEX for each virtual method.
19939         * typeck.c (get_array_type):  Rename to ...
19940         (build_java_array_type):  ... and provide working implementation.
19941         (build_java_signature):  New function - build Java signature of type.
19942         (set_java_signature):  New function - cache signature with type.
19943         (lookup_java_method):  New function.
19944
19945 1997-05-06  Per Bothner  <bothner@deneb.cygnus.com>
19946
19947         * class.c (ident_subst):  Take extra SUFFIX parameter.
19948         (add_field):  Set DECL_ASSEMBLER_NAME of static fields;  more.
19949         (set_constant_value, build_static_field_ref, is_compiled_class):  New.
19950         (build_class_ref):  Actually implement.
19951         * decl.c, java-tree.h:  Renamed some xx_type to xx_type_node.
19952         * decl.c (builtin_function):  New.
19953         (init_decl_processing):  Update for current Kaffe.  Declare some
19954         builtin Kaffe functions.
19955         * expr.c (build_address_of):  New.
19956         (expand_java_NEW, expand_java_INSTANCEOF, expand_java_CHECKCAST):
19957         Renamed (from expand_java_new etc), and added working implementations.
19958         (build_field_ref):  Now also handle static fields.
19959         (expand_invoke):  Implement invokestatic, and start implement rest.
19960         * java-opcodes.h:  Use javaop.def to avoid duplicated list.
19961         * javaop.def:  Rename invokevirt -> invokevirtual.
19962         * lang.c (use_handles):  Removed.
19963         * parse.c:  Add support for ConstantValue attribute.
19964         Handle nested loading of a class.  (JPOOL_UTF):  New.
19965
19966 1997-03-11  Per Bothner  <bothner@deneb.cygnus.com>
19967
19968         * expr.c (expand_java_pushc):  Support #ifndef REAL_ARITHMETIC case.
19969
19970 1997-02-27  Per Bothner  <bothner@deneb.cygnus.com>
19971
19972         * Make-lang.in (java.install-man):  New empty rule.
19973         * typeck.c (set_local_type):  New function.
19974         * expr.c (STORE_INTERNAL):  Call find_local_variable,
19975         not find_stack_slot.  Call set_local_type.
19976
19977 1997-02-12  Per Bothner  <bothner@kalessin.cygnus.com>
19978
19979         * java-tree.h:  Various new macros for constructing RECORD_TYPEs,
19980         and building RECORD_TYPE CONSTRUCTORs.
19981         Also support for creating Utf8Const objects from an INDETIFIER_NODE.
19982
19983         * lang.c (use_handles):  Change the default to 0.
19984         * decl.c:  Define and build class_type, field_type, utf8const_type.
19985         * class.c (make_class_data, make_field_value,
19986         get_access_flags_from_decl, build_class_ref, build_utf8_ref,
19987         hashUtf8String, strLengthUtf8, mangled_classname:
19988         Functions to build reflective data structures.
19989         * parse.c (yyparse):  Call make_class_data.
19990
19991         * jcf-io.c (open_class, find_classfile):  New functions.
19992         * jcf-dump.c:  Support reading classfile from explicitly-named
19993         class file (without CLASSPATH searching).
19994
19995 1996-10-24  Per Bothner  <bothner@deneb.cygnus.com>
19996
19997         * jcf-reader.c:  Add parameter list to HANDLE_CONSTANT_Utf8.
19998         * parse.c (JPOOL_UTF_LENGTH, JPOOL_UTF_DATA, HANDLE_CONSTANT_Utf8):
19999         Override jcf-reader macros so CONSTANT_Utf8 becomes tree node here.
20000         (get_constant):  Now trivial for CONSTANT_Utf8.
20001
20002         * jcf.h:  Make NEW_CPOOL the default.
20003         * jcf.h, jcf-reader.c, parse.c:  Remove support for !NEW_CPOOL.
20004
20005 1996-10-24  Per Bothner  <bothner@deneb.cygnus.com>
20006
20007         New directory.