OSDN Git Service

* expr.h (expand_expr): Make it a macro, not a function.
[pf3gnuchains/gcc-fork.git] / gcc / java / ChangeLog
1 2004-01-09  Mark Mitchell  <mark@codesourcery.com>
2
3         * java-tree.h (java_expand_expr): Change prototype.
4         * expr.c (java_expand_expr): Add alt_rtl parameter.
5
6 2004-01-09  Andrew Haley  <aph@redhat.com>
7
8         PR java/12755:
9         * parse.y (java_fix_constructors):  Set output_class.
10         (java_reorder_fields): Likewise.
11         (java_layout_classes): Likewise.
12         (java_expand_classes): Generate indirect dispatch tables.
13         (java_expand_classes): Set output_class.
14         (java_finish_classes): Likewise.
15         * lang.c (java_init): Turn on always_initialize_class_p if we're
16         using indirect dis[atch.
17         (java_decl_ok_for_sibcall): Use output_class, not current_class.
18         (java_get_callee_fndecl): Use class local atable.
19         * jcf-parse.c 
20         (always_initialize_class_p): Decl moved to java-tree.h.
21         (HANDLE_CLASS_INFO): Set output_class.
22         (read_class): Likewise.
23         (parse_class_file): Call gen_indirect_dispatch_tables.
24         (parse_zip_file_entries): Set output_class.
25         (java_parse_file): Set output_class.  Don't emit symbol tables.
26         * java-tree.h (output_class): New.
27         Remove global declarations for otable, atable, and ctable.
28         (always_initialize_class_p): moved here from decl.c.
29         (DECL_OWNER): New.
30         (TYPE_ATABLE_METHODS, TYPE_ATABLE_SYMS_DECL, TYPE_ATABLE_DECL,
31         TYPE_OTABLE_METHODS, TYPE_OTABLE_SYMS_DECL, TYPE_OTABLE_DECL,
32         TYPE_CTABLE_DECL, TYPE_CATCH_CLASSES): New.
33         (struct lang_type): Add otable_methods, otable_decl,
34         otable_syms_decl, atable_methods, atable_decl, atable_syms_decl,
35         ctable_decl, catch_classes, type_to_runtime_map.
36         * expr.c (build_field_ref): Make otable, atable, and ctable class
37         local rather than global.
38         (build_known_method_ref): Likewise.
39         (build_invokeinterface): Likewise.
40         (java_expand_expr): Pass runtime type (rather than actual type) to
41         expand_start_catch.
42         * except.c (prepare_eh_table_type): Create TYPE_TO_RUNTIME_MAP for
43         this class.  Look up each class in that map to delete duplicates.
44         (expand_end_java_handler): Pass runtime type (rather than actual
45         type) to expand_start_catch.
46         * decl.c: (always_initialize_class_p): Decl moved to java-tree.h.
47         (do_nothing): New.
48         (java_init_decl_processing): Rearrange things.  Remove global
49         declarations of otable, atable, and ctable.
50         (java_init_decl_processing): Make lang_eh_runtime_type do_nothing.
51         (java_expand_body): Set output_class.
52         * constants.c (build_constant_data_ref): Use output_class, not
53         current_class.
54         (alloc_name_constant): Likewise.
55         * class.c (gen_indirect_dispatch_tables): New.
56         (build_class_ref): Generate hard reference to superclass, even if
57         using indirect dispatch.
58         (build_static_field_ref): Use class local atable.
59         (make_class_data): Generate hard reference to superclass, even if
60         using indirect dispatch.
61         Generate symbolic references to interfaces when using indirect
62         dispatch.
63         (make_class_data): Emit otable, atable, and ctable.
64         Make otable, atable, and ctable class local rather than global.
65         (emit_catch_table): Make otable, atable, and ctable class local
66         rather than global.
67                 
68 2003-12-25  Andrew Pinski  <pinskia@physics.uc.edu>
69
70         * parse.y (catch_clause_parameter): Fix typo.
71
72         PR java/13404
73         * parse.y: (catch_clause_parameter): Return early if $3, aka 
74         formal_parameter, is null.
75
76 2003-12-20  Kazu Hirata  <kazu@cs.umass.edu>
77
78         * class.c: Remove uses of "register" specifier in
79         declarations of arguments and local variables.
80         * decl.c: Likewise.
81         * expr.c: Likewise.
82         * gjavah.c: Likewise.
83         * jcf-dump.c: Likewise.
84         * jcf-io.c: Likewise.
85         * jcf-parse.c: Likewise.
86         * jcf-write.c: Likewise.
87         * keyword.h: Likewise.
88         * parse.y: Likewise.
89         * typeck.c: Likewise.
90         * verify.c: Likewise.
91
92 2003-12-06  Kelley Cook  <kcook@gcc.gnu.org>
93
94         * Make-lang.in (GCJ_CROSS_NAME): Delete.
95         (java.install_common, java.install-man): Adjust for above.
96         (java.uninstall): Likewise.
97
98 2003-12-03  Michael Koch  <konqueror@gmx.de>
99
100         * class.c (make_class_data):
101         Push field value to 'hack_signers' instead of 'signers'.
102         * decl.c (java_init_decl_processing):
103         Push field 'hack_signers' instead of 'signers'.
104
105 2003-12-03  Zack Weinberg  <zack@codesourcery.com>
106
107         * lex.h: Check both HAVE_ICONV and HAVE_ICONV_H before
108         including iconv.h.
109
110 2003-12-03  Ralph Loader  <rcl@ihug.co.nz>
111
112         PR java/12374:
113         * parse.y (qualify_ambiguous_name): Remove lots of broken
114         field access processing - there's no need to do that here,
115         because we have resolve_field_access.  Remove
116         RESOLVE_EXPRESSION_NAME_P as it isn't used anywhere else.
117         * java-tree.h: Remove RESOLVE_EXPRESSION_NAME_P as it isn't
118         used.
119
120 2003-12-01  Jeff Sturm  <jsturm@one-point.com>
121
122         Fix PR java/13237
123         * parse.y (java_complete_lhs): Save location prior to patching
124         CALL_EXPR.
125
126 2003-11-25  Mohan Embar  <gnustuff@thisiscool.com>
127
128         PR java/12548
129         * resource.c (write_resource_constructor): Append
130         "_resource" to constructor identifier name.
131
132 2003-11-25  Jeff Sturm  <jsturm@one-point.com>
133
134         Fix PR java/13183.
135         * constants.c (cpool_for_class): New function.
136         (outgoing_cpool): Remove global variable.
137         (alloc_name_constant): Use cpool_for_class.
138         (build_constants_constructor): Likewise.
139         * decl.c (java_expand_body): Set current_class.
140         * java-tree.h (outgoing_cpool) Remove declaration.
141         (init_outgoing_cpool): Likewise.
142         * jcf-parse.c (init_outgoing_cpool): Remove function.
143         (parse_class_file): Don't call init_outgoing_cpool.
144         * parse.y (java_complete_expand_methods): Don't call
145         init_outgoing_cpool.  Don't save outgoing_cpool.
146         (java_expand_classes): Don't restore outgoing_cpool.
147         (java_finish_classes): Likewise.
148
149 2003-11-24  Mohan Embar  <gnustuff@thisiscool.com>
150
151         * Make-lang.in: (java.install-common) Add
152         symlink for $(target_noncanonical)-gcjh for
153         native builds.
154
155 2003-11-20  Joseph S. Myers  <jsm@polyomino.org.uk>
156
157         * Make-lang.in (java.extraclean): Delete.
158
159 2003-11-20  Joseph S. Myers  <jsm@polyomino.org.uk>
160
161         * Make-lang.in (check-java): Add.
162
163 2003-11-19  Jeff Sturm  <jsturm@one-point.com>
164
165         Fix PR java/13024.
166         * except.c (prepare_eh_table_type): Allocate variable-sized
167         buffer `buf' with alloca.
168
169 2003-11-17  Jeff Sturm  <jsturm@one-point.com>
170
171         Fix PR java/12857.
172
173         decl.c (java_init_decl_processing): Don't initialize
174         class_not_found_type_node, no_class_def_found_type_node.
175
176         java-tree.h (JTI_CLASS_NOT_FOUND_TYPE_NODE,
177         JTI_NO_CLASS_DEF_FOUND_TYPE_NODE): Remove from java_tree_index.
178         (class_not_found_type_node, no_class_def_found_type_node):
179         Don't define.
180
181         parse.y (build_dot_class_method_invocation): Add this_class
182         argument.  Qualify method invocations to a different class.
183         (create_new_parser_context): Initialize saved_data_ctx to 0.
184         (java_parser_context_save_global): Initialize saved_data_ctx to 1.
185         (build_dot_class_method): Don't load classes.  Register
186         incomplete types.
187         (build_incomplete_class_ref): Special cases for interfaces
188         and inner classes.  Move build_dot_class_method call to here...
189         (patch_incomplete_class_ref): ...from here.  Pass current_class
190         to build_dot_class_method_invocation.
191         (build_assertion): Pass class_type to
192         build_dot_class_method_invocation.
193         (encapsulate_with_try_catch): Handle EXPR_WITH_FILE_LOCATION node.
194
195 2003-11-17  Jeff Sturm  <jsturm@one-point.com>
196
197         Fix PR java/12739.
198         * java-tree.h (BLOCK_EMPTY_P): Define.
199         * parse.y (java_complete_lhs): Check for empty blocks
200         in TRY_FINALLY_EXPR case.
201
202 2003-11-17  Andrew Haley  <aph@redhat.com>
203
204         * java-tree.h (LOCAL_VAR_OUT_OF_SCOPE_P): New.
205         (struct lang_decl_var:freed): New variable.
206         * decl.c (poplevel): Mark local vars that have gone out of scope.
207         (push_jvm_slot): Don't use the RTL of a var that has gone out of
208         scope.
209
210 2003-11-16  Jason Merrill  <jason@redhat.com>
211
212         * Make-lang.in (java.tags): Create TAGS.sub files in each directory
213         and TAGS files that include them for each front end.
214
215 2003-11-15  Tom Tromey  <tromey@redhat.com>
216
217         * gjavah.c (print_stub_or_jni): Pass `env' to FatalError.
218
219 2003-11-12  Jason Merrill  <jason@redhat.com>
220
221         PR optimization/12547
222         * lang.c (java_tree_inlining_walk_subtrees): Just walk
223         BLOCK_EXPR_BODY directly.
224
225 2003-11-12  Andrew Haley  <aph@redhat.com>
226
227         PR java/11045
228         * parse.y (fold_constant_for_init): Check that we really do have a
229         constant.
230
231         PR java/11533
232         * lang.c (merge_init_test_initialization): Clear DECL_INITIAL for
233         init_test_decls being inlined.
234
235         PR java/12890:
236         * parse.y (do_resolve_class): Check return value from
237         breakdown_qualified().
238
239 2003-11-11  Tom Tromey  <tromey@redhat.com>
240
241         PR java/12915:
242         * parse.y (merge_string_cste): Handle case where we have a
243         pointer that happens to be zero, not null_pointer_node.
244
245 2003-11-10  Tom Tromey  <tromey@redhat.com>
246
247         * jcf-parse.c (classify_zip_file): Correctly compare
248         filename_length against length of manifest file's name.
249
250 2003-11-08  Tom Tromey  <tromey@redhat.com>
251
252         PR java/12894:
253         * jcf-parse.c (classify_zip_file): Only skip MANIFEST.MF file.
254
255 2003-11-06  Andrew Haley  <aph@redhat.com>
256
257         * expr.c (java_stack_swap): Make sure destination stack slots are
258         of the correct type.
259
260 2003-11-03  Kelley Cook  <kcook@gcc.gnu.org>
261
262         * Make-lang.in (dvi): Move targets to $(docobjdir).
263         (gcj.dvi): Simplify rule and adjust target.
264         (gcj.info): Simplify rule.
265         (gcj.pod): New intermediate rule.
266         (gcjh.pod): Likewise.
267         (jv-scan.pod): Likewise.
268         (jcf-dump.pod): Likewise.
269         (gij.pod): Likewise.
270         (jv-convert.pod): Likewise.
271         (rmic.pod): Likewise.
272         (rmiregistry.pod): Likewise.
273         (gcj.1): Delete.
274         (gcjh.1): Delete.
275         (jv-scan.1): Delete.
276         (jcf-dump.1): Delete.
277         (gij.1): Delete.
278         (jv-convert.1): Delete.
279         (rmic.1): Delete.
280         (rmiregistry.1): Delete.
281
282 2003-11-02  Jeff Sturm  <jsturm@one-point.com>
283
284         Fixes PR java/12866.
285         * parse.y (resolve_qualified_expression_name): Move test
286         for outer field access methods from here...
287         (check_thrown_exceptions) ...to here.
288
289 2003-11-01  Kelley Cook  <kcook@gcc.gnu.org>
290
291         * .cvsignore: Delete.
292
293 2003-10-28  Frank Ch. Eigler  <fche@redhat.com>
294
295         * verify.c (verify_jvm_instructions): Don't warn about legal
296         eh binding regions generated for example by jdk 1.4.1.
297
298 2003-10-24  David S. Miller  <davem@redhat.com>
299
300         * jcf-parse.c (jcf_parse): Fix args to fatal_error().
301
302 2003-10-22  Andrew Haley  <aph@redhat.com>
303
304         * lang.c (LANG_HOOKS_GET_CALLEE_FNDECL): New.
305         (java_get_callee_fndecl): New.
306
307         * jcf-parse.c (java_parse_file): Call emit_catch_table().
308
309         * java-tree.h (ctable_decl): New.
310         (catch_classes):  New.
311         (java_tree_index): Add JTI_CTABLE_DECL, JTI_CATCH_CLASSES.
312
313         * decl.c (java_init_decl_processing): Add catch_class_type.
314         Add ctable_decl.
315         Add catch_classes field.
316
317         * class.c (build_indirect_class_ref): Break out from
318         build_class_ref.
319         (make_field_value): Check flag_indirect_dispatch.
320         (make_class_data): Ditto.
321         Tidy uses of PUSH_FIELD_VALUE.
322         Add field catch_classes.
323         (make_catch_class_record): New.
324
325         * java-tree.h (PUSH_FIELD_VALUE): Tidy.
326
327 2003-10-22  Kazu Hirata  <kazu@cs.umass.edu>
328
329         * jcf-write.c: Follow spelling conventions.
330         * parse.y: Likewise.
331
332 2003-10-22  Kazu Hirata  <kazu@cs.umass.edu>
333
334         * ChangeLog: Fix typos.
335         * expr.c: Fix comment typos.
336         * jcf-write.c: Likewise.
337         * lang.c: Likewise.
338         * lex.c: Likewise.
339         * mangle.c: Likewise.
340         * parse-scan.y: Likewise.
341         * parse.y: Likewise.
342
343 2003-10-22  Tom Tromey  <tromey@redhat.com>
344
345         * expr.c (expand_byte_code): Only warn about dead bytecode when
346         extra_warnings is set.
347
348 2003-10-22  Bryce McKinlay  <bryce@mckinlay.net.nz>
349
350         Fix for PR java/12586.
351         * mangle.c (find_compression_record_match): Don't iterate through
352         package namespace elements unless they all match compression_table
353         entries.
354
355 2003-10-20  Kelley Cook  <kcook@gcc.gnu.org>
356
357         * Make-lang.in (info): Honor $(parsedir) and $(docobjdir).
358         (generate-manpages): Likewise.
359         (java.maintainer-clean): Likewise.
360         (gcj.info): Likewise.
361         (gcj.1): Likewise.
362         (gcjh.1): Likewise.
363         (jv-scan.1): Likewise.
364         (jcf-dump.1): Likewise.
365         (gij.1): Likewise.
366         (jv-convert.1): Likewise.
367         (rmic.1): Likewise.
368         (rmiregistry.1): Likewise.
369         (java.install-man): Likewise.
370         (parse-scan.o): Move and define complete compile line.
371         (parse.o): Likewise.
372         (jcf-tree-inline.o): Move.
373
374 2003-10-20  Mark Mitchell  <mark@codesourcery.com>
375
376         * Make-lang.in (info): Update dependencies.
377         (java.install-info): Remove.
378         ($(srcdir)/java/gcj.info): Replace with ...
379         ($(docobjdir)/gcj.info): ... this.
380
381 2003-10-14  Nathanael Nerode  <neroden@gcc.gnu.org>
382
383         * Make-lang.in: Replace uses of $(target_alias) with
384         $(target_noncanonical).
385
386 2003-10-09  Tom Tromey  <tromey@redhat.com>
387
388         * decl.c (java_init_decl_processing): Declare signers field.
389         * class.c (make_class_data): Set signers field.
390
391 2003-10-09  Jason Merrill  <jason@redhat.com>
392
393         * parse.y (patch_assignment): Use make_node to create a BLOCK.
394         * parse.h (BUILD_PTR_FROM_NAME): Use make_node to create a
395         POINTER_TYPE.
396
397 2003-10-06  Mark Mitchell  <mark@codesourcery.com>
398
399         * Make-lang.in (java.info): Replace with ...
400         (info): ... this.
401         (java.dvi): Replace with ...
402         (dvi): ... this.
403         (java.generated-manpages): Replace with ...
404
405 2003-10-03  Kelley Cook  <kelleycook@wideopenwest.com>
406
407         * builtins.c, jcf.h, jvspec.c: Remove PARAMS macros.
408
409 2003-10-01  Andrew Haley  <aph@redhat.com>
410
411         * jcf-parse.c (java_parse_file): Write otable and atable.
412         * java-tree.h (atable_methods): New.
413         (atable_decl): New.
414         (atable_syms_decl): New.
415         (enum java_tree_index): Add JTI_ATABLE_METHODS, JTI_ATABLE_DECL,
416         JTI_ATABLE_SYMS_DECL.  Rename JTI_METHOD_SYMBOL* to JTI_SYMBOL*.
417         (symbol_*type): Rename method_symbol* to symbol*type.
418         (emit_offset_symbol_table): Delete.
419         (emit_symbol_table): New.
420         (get_symbol_table_index): New.
421         (atable_type): New.
422         * expr.c (build_field_ref): Handle flag_indirect_dispatch.
423         (build_known_method_ref): Likewise.
424         (get_symbol_table_index): Rename from get_offset_table_index.
425         Parameterize to allow re-use by differing types of symbol table.
426         (build_invokevirtual): Pass table to get_offset_table_index.
427         * decl.c (java_init_decl_processing): Push types and decls for
428         atable and atable_syyms.
429         * class.c (build_static_field_ref): Handle flag_indirect_dispatch.
430         (make_class_data): Add new fields atable and atable_syms.
431         (emit_symbol_table): Rename from emit_offset_symbol_table.
432         Parameterize to allow re-use by different types of symbol table.
433         (build_symbol_entry): Renamed from build_method_symbols_entry.
434
435 2003-09-30  Roger Sayle  <roger@eyesopen.com>
436
437         * jcf-write.c (generate_bytecode_insns): Implement evaluate-once
438         semantics for SAVE_EXPR, by caching the result in a temporary.
439
440 2003-09-28  Richard Henderson  <rth@redhat.com>
441
442         * check-init.c (check_init): Save and restore input_location
443         instead of file and line separately.
444         * decl.c (java_expand_body): Likewise.
445         * jcf-write.c (generate_bytecode_insns): Likewise.
446         * parse.y (safe_layout_class): Likewise.
447         * jcf-parse.c (read_class, parse_class_file): Likewise.
448         (java_parse_file): Use %H for warning locator.
449
450 2003-09-28  Roger Sayle  <roger@eyesopen.com>
451
452         * expr.c (java_check_reference): Use the semantics of COND_EXPRs
453         with void-type branches instead of using a COMPOUND_EXPR.
454
455 2003-09-28  Jeff Sturm  <jsturm@one-point.com>
456
457         * decl.c (java_optimize_inline, dump_function): Remove.
458         * java-tree.h (java_optimize_inline): Remove declaration.
459         * jcf-parse.c (java_parse_file): Assume flag_unit_at_a_time is set.
460         * parse.y (source_end_java_method, java_expand_classes):
461         Likewise.  Remove dead code.
462
463 2003-09-27  Roger Sayle  <roger@eyesopen.com>
464
465         * lang.c (java_init_options): Set flag_evaluation_order.
466         * expr.c (force_evaluation_order): Don't attempt to force
467         evaluation order of binary operations using save_expr.
468         * parse.y (java_complete_lhs): No longer need to call
469         force_evaluation_order when constructing binary operators.
470
471 2003-09-27  Alexandre Petit-Bianco  <apbianco@redhat.com>
472             Bryce McKinlay  <bryce@mckinlay.net.nz>
473
474         PR java/1333:
475         * parse.y (not_accessible_field_error): New function.
476         (resolve_expression_name): Check field access permissions.
477         (resolve_qualified_expression_name): Use
478         not_accessible_field_error.
479         (resolve_qualified_expression_name): Likewise.
480
481 2003-09-24  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
482
483         * class.c (build_utf8_ref): Test for HAVE_GAS_SHF_MERGE value.
484
485 2003-09-23  Roger Sayle  <roger@eyesopen.com>
486
487         * jcf-write.c (generate_bytecode_insns): Optimize binary operations
488         with equal operands without side-effects.
489
490 2003-09-22  Jeff Sturm  <jsturm@one-point.com>
491
492         * decl.c (java_init_decl_processing): Don't emit otable decls
493         if flag_indirect_dispatch is not set.
494
495 2003-09-21  Richard Henderson  <rth@redhat.com>
496
497         * class.c, decl.c, jcf-parse.c, jcf-write.c, parse.y,
498         resource.c: Revert.
499
500 2003-09-21  Richard Henderson  <rth@redhat.com>
501
502         * class.c, decl.c, jcf-parse.c, jcf-write.c, parse.y,
503         resource.c: Update for DECL_SOURCE_LOCATION rename and change to const.
504
505 2003-09-20  Richard Henderson  <rth@redhat.com>
506
507         * check-init.c, class.c, decl.c, expr.c: Use %J in diagnostics.
508
509 2003-09-18  Roger Sayle  <roger@eyesopen.com>
510
511         * expr.c (java_truthvalue_conversion): Remove FFS_EXPR case.
512         * check-init.c (check_init): Likewise.
513
514 2003-09-18  Roger Sayle  <roger@eyesopen.com>
515
516         * jcf-write.c (generate_bytecode_insns): Add support for fconst_2.
517
518 2003-09-16  Andrew Haley  <aph@redhat.com>
519
520         * jcf-write.c (generate_bytecode_insns): Add MIN_EXPR and MAX_EXPR.
521
522 2003-09-17  Ranjit Mathew  <rmathew@hotmail.com>
523
524         Fixes PR java/9577
525         * mangle.c (find_compression_record_match): Skip
526         over a "6JArray" (the array template mangled string)
527         IDENTIFIER_NODE.
528         (mangle_array_type): Correct minor typo.
529         (atms): Move definition to the beginning.
530
531 2003-09-16  Bryce McKinlay  <bryce@mckinlay.net.nz>
532
533         * class.c (add_miranda_methods): Ensure super-interfaces are laid
534         out. Fix for PR java/12254.
535
536 2003-09-11  Richard Henderson  <rth@redhat.com>
537
538         * parse.y (source_end_java_method): Update for new
539         cgraph_finalize_function argument.
540
541 2003-09-09  Richard Henderson  <rth@redhat.com>
542
543         * parse.y (source_end_java_method): Update call to
544         cgraph_finalize_function.
545
546 2003-09-03  Jeff Sturm  <jsturm@one-point.com>
547
548         * decl.c (java_expand_body): New function.
549         * expr.c (build_class_init): Set DECL_IGNORED_P.
550         * java-tree.h (start_complete_expand_method,
551         java_expand_body): Declare.
552         * jcf-parse.c (cgraph.h): Include.
553         (java_parse_file): Handle flag_unit_at_a_time.
554         * lang.c (LANG_HOOKS_TREE_INLINING_START_INLINING,
555         LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Define.
556         (java_estimate_num_insns): Use walk_tree_without_duplicates.
557         (java_start_inlining): New function.
558         * parse.h (java_finish_classes): Declare.
559         * parse.y: Include cgraph.h.
560         (block): Don't special-case empty block production.
561         (craft_constructor): Set DECL_INLINE.
562         (source_end_java_method): Handle flag_unit_at_a_time.
563         Replace inline code with call to java_expand_body.
564         (start_complete_expand_method): Remove static modifier.
565         (java_expand_method_bodies): Patch function tree for
566         class initialization and/or synchronization as needed.
567         Don't begin RTL expansion yet.
568         (java_expand_classes): Check flag_unit_at_a_time before
569         calling finish_class.
570         (java_finish_classes): New function.
571         (java_complete_lhs): Ensure COMPOUND_EXPR has non-NULL type.
572         (patch_assignment): Set DECL_CONTEXT on temporary variable.
573         (emit_test_initialization): Set DECL_IGNORED_P.
574
575 2003-09-03  Roger Sayle  <roger@eyesopen.com>
576
577         * builtins.c (enum builtin_type): Delete unused enumeration.
578         * Make-lang.in (java/builtins.o): Remove built-types.def dependency.
579
580 2003-08-28  Tom Tromey  <tromey@redhat.com>
581
582         * gcj.texi (Extensions): Document gcjlib URLs.
583
584 2003-08-20  Tom Tromey  <tromey@redhat.com>
585
586         * gcj.texi (Extensions): Added xref.
587         (libgcj Runtime Properties): Document
588         gnu.gcj.runtime.VMClassLoader.library_control.
589
590 2003-08-20  Andrew Haley  <aph@redhat.com>
591
592         * except.c (prepare_eh_table_type): Use new encoding for exception
593         handlers when using -fno-assume-compiled.
594
595 2003-08-13  Tom Tromey  <tromey@redhat.com>
596
597         * gcj.texi (Invoking gij): Document -X and -?.
598
599 2003-08-13  Mohan Embar  <gnustuff@thisiscool.com>
600
601         * Make-lang.in: Added missing win32-host.o to JAVA_OBJS,
602         GCJH_OBJS, JCFDUMP_OBJS
603         * win32-host.c: Removed the unnecessary and broken dependency
604         on jcf.h
605
606 2003-08-11  Tom Tromey  <tromey@redhat.com>
607
608         * parse.y (java_check_regular_methods): Typo fixes.  Call
609         check_interface_throws_clauses.  Use
610         check_concrete_throws_clauses.
611         (check_interface_throws_clauses): New function.
612         (check_concrete_throws_clauses): New function.
613         (hack_is_accessible_p): New function.
614         (find_most_specific_methods_list): Added FIXME.
615         * typeck.c (lookup_do): Use `flags' argument to decide what to
616         do.  Reimplemented.
617         (lookup_argument_method_generic): New function.
618         (lookup_argument_method2): Removed.
619         * jcf.h (ACC_INVISIBLE): New define.
620         * jcf-write.c (generate_classfile): Skip invisible methods.
621         * class.c (add_miranda_methods): New function.
622         (layout_class_methods): Use it.
623         (get_access_flags_from_decl): Use ACC_INVISIBLE.
624         * java-tree.h (METHOD_INVISIBLE): New define.
625         (lang_decl_func) [invisible]: New field.
626         (lookup_argument_method_generic): Declare.
627         (SEARCH_INTERFACE): New define.
628         (SEARCH_SUPER): Likewise.
629         (SEARCH_ONLY_INTERFACE): Likewise.
630         (SEARCH_VISIBLE): Likewise.
631         (lookup_argument_method2): Removed declaration.
632
633 2003-08-05  Tom Tromey  <tromey@redhat.com>
634
635         Fix for PR java/11600:
636         * parse.y (java_complete_lhs): See whether we're calling a method
637         on an array.
638         (check_thrown_exceptions): Added `is_array_call' argument;
639         fixed `clone' checking; updated all callers.
640
641 2003-08-05  Steven Bosscher  <steven@gcc.gnu.org>
642
643         * java-tree.h (DECL_ESTIMATED_INSNS): Remove (moved to tree.h).
644
645 2003-08-03  Tom Tromey  <tromey@redhat.com>
646
647         * java-tree.h (METHOD_TRANSIENT): Removed.
648         * decl.c (pushdecl): Removed some dead code.
649         * class.c (get_access_flags_from_decl): Can't have transient
650         method.
651         (add_method_1): Can't have a transient method.
652
653 2003-07-28  Andreas Jaeger  <aj@suse.de>
654
655         * jvspec.c: Convert to ISO C90 prototypes.
656
657 2003-07-25  Nathan Sidwell  <nathan@codesourcery.com>
658
659         * decl.c (force_poplevels): Fix warning call.
660
661 2003-07-25  Gabriel Dos Reis  <gdr@integrable-solutions.net>
662
663         * expr.c (expand_java_field_op): Don't use xxx_with_decl
664         (expand_java_field_op): Likewise.
665         * class.c (layout_class_method): Likewise
666         (emit_register_classes): Likewise.
667         * decl.c (pushdecl): Likewise.
668         (poplevel): Likewise.
669         (force_poplevels): Likewise.
670         (give_name_to_locals): Likewise.
671         * check-init.c (check_for_initialization): Likewise.
672
673 2003-07-24  Jason Merrill  <jason@redhat.com>
674
675         * java-tree.h: Move boolean_type_node et al to the back end.
676
677 2003-07-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
678
679         * class.c java-tree.h jcf-write.c jvspec.c: Remove unnecessary
680         casts.
681
682 2003-07-19  Neil Booth  <neil@daikokuya.co.uk>
683
684         * lang.opt: Don't show -MD_ and -MDD_.
685
686 2003-07-18  Neil Booth  <neil@daikokuya.co.uk>
687
688         * lang-options.h: Remove.
689         * lang.opt: Add help text.
690
691 2003-07-15  Kazu Hirata  <kazu@cs.umass.edu>
692
693         * expr.c: Remove the last argument to expand_assignment().
694
695 2003-07-09  Jan Hubicka  <jh@suse.cz>
696
697         * java-tree.h (DECL_NUM_STMTS): Rename to...
698         (DECL_ESTIMATED_INSNS): ... this.
699         * lang.c (java_estimate_num_insns, java_estimate_num_insns_1):
700         New static functions.
701         (LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS): Define.
702         * parser.y (add_stmt_to_compound): Do not account statements.
703
704 2003-07-08  Mark Wielaard  <mark@klomp.org>
705
706         * gcj.texi: CNI now expands to Compiled Native Interface.
707
708 2003-07-08  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
709
710         * Make-lang.in (java/gcj.dvi): Use PWD_COMMAND.
711
712 2003-07-07  Nathan Sidwell  <nathan@codesourcery.com>
713
714         * expr.c (expand_byte_code): Adjist emit_line_note call.
715
716 2003-07-06  Neil Booth  <neil@daikokuya.co.uk>
717
718         * lang.c (java_handle_option): Don't handle filenames.
719
720 2003-07-02  Zack Weinberg  <zack@codesourcery.com>
721
722         * jcf-path.c: Don't default-define PATH_SEPARATOR nor
723         DIR_SEPARATOR.
724         Use FILENAME_CMP.
725         * jcf-write.c: Don't default-define DIR_SEPARATOR.
726         * jcf.h: Delete COMPARE_FILENAMES definition.
727
728 2003-07-02  Neil Booth  <neil@daikokuya.co.uk>
729
730         * lang.c (java_init_options): Update prototype.
731
732 2003-07-01  Nathan Sidwell  <nathan@codesourcery.com>
733
734         * decl.c (poplevel): Adjust define_label call.
735
736 2003-06-27  Zack Weinberg  <zack@codesourcery.com>
737
738         * gjavah.c (flag_jni): Make non-static.
739         * parse-scan.y (ctxp): Make non-static.
740
741         * class.c (build_method_symbols_entry)
742         * expr.c (get_offset_table_index)
743         * jcf-parse.c (jcf_parse):
744         Mark the definition static, matching the forward declaration.
745
746 2003-06-26  Neil Booth  <neil@daikokuya.co.uk>
747
748         * lang.c (java_handle_option): Don't check for missing arguments.
749
750 2003-06-20  Nathan Sidwell  <nathan@codesourcery.com>
751
752         * class.c (push_class): Use a location_t to save place.
753         (emit_register_classes): Set input_location. Adjust
754         expand_function_end call.
755         * resource.c (write_resource_constructor): Likewise.
756         * decl.c (end_java_method): Adjust expand_function_end call.
757         * parse.y (source_end_java_method): Likewise.
758
759 2003-06-17  Robert Abeles  <rabeles@archaelogic.com>
760
761         * lang.c (java_handle_option): Likewise.
762
763 2003-06-16  Neil Booth  <neil@daikokuya.co.uk>
764
765         * lang.c (java_handle_option): Special-casing of optional
766         joined arguments no longer needed.
767         * lang.opt: Update switches that take optional argument.
768
769 2003-06-15  Neil Booth  <neil@daikokuya.co.uk>
770
771         * lang.opt: Declare Java.
772         * lang.c (java_init_options): Update.
773
774 2003-06-15  Neil Booth  <neil@daikokuya.co.uk>
775
776         * lang.c (version_flag): Rename to v_flag to avoid clash w/ toplev.h.
777
778 2003-06-14  Neil Booth  <neil@daikokuya.co.uk>
779
780         * lang-specs.h: Rewrite -MD and -MMD to append an underscore.
781         * lang.c (java_handle_option): -MD and -MMD have an underscore.
782         * lang.opt: -MD and -MMD have an underscore.
783
784 2003-06-14  Nathan Sidwell  <nathan@codesourcery.com>
785
786         * class.c (emit_register_classes): Adjust init_function_start
787         call.
788         * decl.c (complete_start_java_method): Likewise.
789         * resource.c (write_resource_constructor): Likewise.
790
791 2003-06-14  Neil Booth  <neil@daikokuya.co.uk>
792
793         * Make-lang.in: Update to use options.c and options.h.
794         * lang.c: Include options.h not j-options.h.
795         (java_handle_option): Abort on unrecognized option.
796         (java_init_options): Request Java switches.
797
798 2003-06-11  Neil Booth  <neil@daikokuya.co.uk>
799
800         * Make-lang.in: Handle mostlyclean.
801
802 2003-06-11  Tom Tromey  <tromey@redhat.com>
803
804         * lang.c (java_handle_option): Update dependency_tracking for
805         OPT_MF case.
806
807         * lang.c (java_handle_option): OPT_fbootclasspath_ can take an
808         empty argument.
809
810 2003-06-10  Andrew Haley  <aph@redhat.com>
811
812         * resource.c (write_resource_constructor): Use expand_expr to
813         generate the address of the label attached to a resource.
814         * Make-lang.in (java/resource.o): Add expr.h
815
816 2003-06-10  Andrew Haley  <aph@redhat.com>
817
818         * lang.c (LANG_HOOKS_DECL_OK_FOR_SIBCALL): New.
819         (java_decl_ok_for_sibcall): New.
820
821 2003-06-09  Neil Booth  <neil@daikokuya.co.uk>
822
823         * Make-lang.in (JAVA_OBJS, java/lang.o): Update.
824         (java/j-options.c, java/j-options.h): New.
825         * java-tree.h (resource_name, compile_resource_file,
826         compile_resource_data): Constify.
827         * jcf-write.c (jcf_write_base_directory): Similarly.
828         * jcf.h (jcf_write_base_directory): Similarly.
829         * lang.c: Include j-options.h.
830         (cl_options_count, cl_options, string_option, java_decode_option,
831         lang_f_options, lang_W_options, LANG_HOOKS_DECODE_OPTION,
832         process_option_with_no): Remove.
833         (resource_name): Constify.
834         (LANG_HOOKS_HANDLE_OPTION): Override.
835         (java_handle_option): New.
836         (java_init): Don't call jcf_path_init.
837         (java_init_options): Call jcf_path_init.
838         * lang.opt: New.
839         * resource.c (compile_resource_data, compile_resource_file): Constify.
840
841 2003-06-09  Nathan Sidwell  <nathan@codesourcery.com>
842
843         * java-tree.h (DECL_FUNCTION_LAST_LINE): New.
844         (struct lang_decl_func): Add last_line field.
845         * parse.h (DECL_SOURCE_LINE_MERGE, DECL_SOURCE_LINE_FIRST,
846         DECL_SOURCE_LINE_LAST): Remove.
847         * parse.y (missing_return_error, finish_method_declaration,
848         lookup_cl, start_artificial_method_body, source_end_java_method,
849         start_complete_expand_method): Adjust.
850
851 2003-06-08  Tom Tromey  <tromey@redhat.com>
852
853         * jvspec.c (jvgenmain_spec): Added `*' after fassume-compiled and
854         fno-assume-compiled.
855
856 2003-06-08  Roger Sayle  <roger@eyesopen.com>
857
858         * builtins.c (define_builtin_type, builtin_types): Delete.
859         (define_builtin): Rewritten to take just the built-in code,
860         the function's name, type and fallback library function name.
861         All built-ins used by Java are implicit and BUILT_IN_NORMAL.
862         (initialize_builtins): Overhaul to define the GCC builtins
863         used by gcj manually, providing the Java run-time's
864         implementations as the fallback library function.
865
866 2003-06-08  Anthony Green  <green@redhat.com>
867
868         * parse.y (patch_cast): Fix conversions from floating-point to
869         integral types.
870
871 2003-06-08  Neil Booth  <neil@daikokuya.co.uk>
872
873         * Make-lang.in: Update.
874         * lang.c: Include opts.h. Define cl_options_count and cl_options.
875
876 2003-06-07  Neil Booth  <neil@daikokuya.co.uk>
877
878         * lang.c (java_init_options): Update.
879
880 2003-06-05  Jan Hubicka  <jh@suse.cz>
881
882         * Make-lang.in:  Add support for stageprofile and stagefeedback
883
884 2003-05-31  Roger Sayle  <roger@eyesopen.com>
885
886         * lang.c (java_init_options): Prescribe wrap-around two's
887         complement arithmetic overflow by setting flag_wrapv.
888
889 2003-05-29  Roger Sayle  <roger@eyesopen.com>
890
891         * builtins.c (cos_builtin, sin_builtin, sqrt_builtin): Delete.
892         (builtin_record): Add an additional builtin_code field to
893         record which GCC built-in corresponds to the Java function.
894         (java_builtins):  Add new entries for atan, atan2, exp, log,
895         pow and tan.
896         (max_builtin, min_builtin, abs_builtin): Perform constant
897         folding on the resulting tree.
898         (java_build_function_call_expr): Likewise, perform constant
899         folding on the resulting tree.
900         (initialize_builtins): The NULL creators are now allowed in
901         the java_builtins table, which is now terminated by an entry
902         with builtin_code == END_BUILTINS.
903         (check_for_builtin): Likewise.  If the matching creator is
904         NULL, construct the call using java_build_function_call_expr
905         directly with the decl for the corresponding builtin_code.
906
907 2003-05-23  Nathanael Nerode  <neroden@gcc.gnu.org>
908
909         * win32-host.c: Normalize copyright boilerplate.
910
911 2003-05-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
912
913         * parse.y (print_int_node): Use string concatentation on
914         HOST_WIDE_INT_PRINT_* format specifier to collapse multiple
915         function calls into one.
916
917 2003-05-13  Zack Weinberg  <zack@codesourcery.com>
918
919         * jcf-parse.c, jcf-write.c, lex.c: Replace all calls to
920         fatal_io_error with calls to fatal_error; add ": %m" to the end of
921         all the affected error messages.
922
923 2003-05-13  Richard Henderson  <rth@redhat.com>
924
925         * class.c (layout_class_method): Set DECL_EXTERNAL.
926         * decl.c (java_mark_decl_local, java_mark_class_local): New.
927         * java-tree.h (java_mark_class_local): Declare.
928         * jcf-parse.c (parse_class_file): Use it.
929         * parse.y (java_expand_classes): Likewise.
930
931 2003-05-04  Nathan Sidwell  <nathan@codesourcery.com>
932
933         * Make-lang.in (java/parse.o, java/parse-scan.o): Depend on input.h.
934         * lex.h: #include input.h.
935         * jv-scan.c (input_filename): Remove.
936
937 2003-05-02  Tom Tromey  <tromey@redhat.com>
938
939         PR java/10491:
940         * gjavah.c (HANDLE_INNERCLASSES_ATTRIBUTE): New macro.
941         (handle_inner_classes): New function.
942
943 2003-05-01  Tom Tromey  <tromey@redhat.com>
944
945         PR java/10459:
946         * parse.y (finish_for_loop): Do nothing if update expression is a
947         EXPR_WFL_NODE wrapping nothing.
948         (java_complete_lhs) <COMPOUND_EXPR>: Likewise.
949
950 2003-05-02  Nathan Sidwell  <nathan@codesourcery.com>
951
952         * lex.h (input_lineno): Remove declaration.
953         * parse-scan.y: #include input.h.
954         (input_filename): Remove declaration.
955         (input_location): Add definition.
956         (input_line): Remove definition.
957
958 2003-05-01  Nathan Sidwell  <nathan@codesourcery.com>
959
960         * lex.h (lineno): Rename to ...
961         (input_line): ... here
962         * parse-scan.y (lineno): Rename to ...
963         (input_line): ... here.
964         (reset_report): Rename lineno to input_line.
965         * check-init.c (check_init): Likewise.
966         * class.c (push_class): Likewise.
967         * decl.c (complete_start_java_method, end_java_method): Likewise.
968         * expr.c (expand_byte_code): Likewise.
969         * jcf-parse.c (give_name_to_class, parse_class_file): Likewise.
970         * jcf-write.c (generate_bytecode_insns): Likewise.
971         * lex.c (java_init_lex, java_allocate_new_line,
972         do_java_lex): Likewise.
973         * parse.h (YYNOT_TWICE): Likewise.
974         * parse.y (empty_statement, expression_statement,
975         java_pop_parser_context, java_parser_context_save_global,
976         yyerror, register_fields, method_header, safe_layout_class,
977         find_in_imports_on_demand, create_artificial_method,
978         source_end_java_method, start_complete_expand_method,
979         build_thisn_assign, java_complete_lhs,
980         maybe_absorb_scoping_block): Likewise.
981
982 2003-04-20  Mohan Embar  <gnustuff@thisiscool.com>
983
984         * jcf-io.c (find_class): use DIR_SEPARATOR instead of
985         '/' when computing java source filename
986
987 2003-04-13  Tom Tromey  <tromey@redhat.com>
988
989         * gjavah.c (print_c_decl): Indentation fix.
990
991 2003-04-12  Zack Weinberg  <zack@codesourcery.com>
992
993         * class.c (make_field_value, make_method_value, get_dispatch_table)
994         (make_class_data, emit_offset_symbol_table)
995         * constants.c (build_constants_constructor)
996         * java-tree.h (START_RECORD_CONSTRUCTOR)
997         * parse.y (maybe_build_array_element_wfl):
998         Use build_constructor.
999
1000 2003-04-10  Eric Blake  <ebb9@email.byu.edu>
1001
1002         PR java/10253:
1003         * parse.y (string_convert_int_cst): Always use at least one digit
1004         in string conversion. Remove ASCII dependence.
1005         (merge_string_cste): Fix merging of 3-byte UTF-8 characters.
1006
1007 2003-03-16  Mohan Embar  <gnustuff@thisiscool.com>
1008
1009         * Make-lang.in: added win32-host.c
1010         * jcf.h: defined macro JCF_OPEN_EXACT_CASE which
1011         resolves to open() on non-Win32 platforms and
1012         Win32-specific jcf_open_exact_case() on Win32
1013         * jcf-io.c (find_class): use JCF_OPEN_EXACT_CASE
1014         when trying .java and .class files
1015         * win32-host.c: added to repository. Defines
1016         Win32-specific jcf_open_exact_case()
1017
1018 2003-04-10  Andrew Haley  <aph@redhat.com>
1019
1020         * jcf-write.c (struct jcf_partial): num_jsrs: new field.
1021         (maybe_free_localvar): Renamed from localvar_free.
1022         Add new arg, really.
1023         (generate_bytecode_insns): Set new variable, jsrs.
1024         Only free local vars if no jsr insns have been emittted.
1025         Call maybe_free_localvar, not localvar_free.
1026
1027 2003-03-30  Joseph S. Myers  <jsm@polyomino.org.uk>
1028
1029         * gcj.texi: Remove @ at start of file.
1030
1031 2003-03-25  Tom Tromey  <tromey@redhat.com>
1032
1033         * parse.y (create_interface): Call CHECK_DEPRECATED.
1034
1035 2003-03-23  Zack Weinberg  <zack@codesourcery.com>
1036
1037         * Make-lang.in: Link jcf-dump against $(LDEXP_LIB).
1038
1039 2003-03-21  Zack Weinberg  <zack@codesourcery.com>
1040
1041         * javaop.h (jfloat, jdouble): Make them structures mirroring
1042         the bit fields of IEEE float and double respectively.
1043         (JFLOAT_FINITE, JFLOAT_QNAN_MASK, JFLOAT_EXP_BIAS,
1044         JDOUBLE_FINITE, JDOUBLE_QNAN_MASK, JDOUBLE_EXP_BIAS): New.
1045         (union Word, union DWord): Delete.
1046         (WORD_TO_FLOAT, WORDS_TO_DOUBLE): Update to match.
1047
1048         * gjavah.c (java_float_finite, java_double_finite, F_NAN_MASK,
1049         D_NAN_MASK): Delete.
1050         (jni_print_float, jni_print_double): New.  Generate
1051         hexadecimal floating constants.
1052         (print_field_info): Use jni_print_float/double.
1053
1054         * jcf-dump.c: Include math.h.  Use ldexp/frexp to assemble
1055         finite floating point numbers for output; special case
1056         non-finite floats.
1057
1058 2003-03-19  Nathanael Nerode  <neroden@gcc.gnu.org>
1059
1060         * lang.c (java_dump_tree): Change return type from 'int' to 'bool'.
1061         Replace 0 and 1 with true and false in return statements.
1062
1063 2003-03-19  Tom Tromey  <tromey@redhat.com>
1064
1065         * lex.c (do_java_lex): Renamed from java_lex.
1066         (java_lex): New function.
1067         Include timevar.h.
1068
1069 2003-03-13  Tom Tromey  <tromey@redhat.com>
1070
1071         * parse.y (resolve_inner_class): Error if qualifier is a primitive
1072         type.
1073
1074 2003-03-04  Andrew Haley  <aph@redhat.com>
1075
1076         * gjavah.c (is_first_data_member): New global variable.
1077         (print_c_decl): If it's the first data member, align it as the
1078         superclass.
1079         (process_file): Set is_first_data_member.
1080
1081 2003-03-11  Tom Tromey  <tromey@redhat.com>
1082
1083         * parse.y (resolve_field_access): Initialize class if field is
1084         found in another static field.
1085         * expr.c (build_class_init): Don't optimize out initialization of
1086         implemented interface.
1087
1088 2003-03-11  Andrew Haley  <aph@redhat.com>
1089
1090         * jcf-io.c (caching_stat): Initialize origsep to remove compiler
1091         warning.
1092
1093 2003-03-10  Ranjit Mathew  <rmathew@hotmail.com>
1094
1095         * jcf-io.c (caching_stat): Account for both DIR_SEPARATOR
1096         and DIR_SEPARATOR_2 for a target.
1097         Correct minor typos.
1098
1099         * jcf-write.c (make_class_file_name): Take both DIR_SEPARATOR
1100         and DIR_SEPARATOR_2 for a target into account.
1101
1102 2003-03-08  Neil Booth  <neil@daikokuya.co.uk>
1103
1104         * lang.c (java_init): Update prototype, move code to java_post_options.
1105         (java_post_options): Similarly.
1106
1107 2003-03-05  Ranjit Mathew  <rmathew@hotmail.com>
1108
1109         * jcf.h (COMPARE_FILENAMES): New macro similar to "strcmp" to
1110         compare file name components depending on the case-sensitivity
1111         or otherwise of the host file system.
1112
1113         * jcf-path.c (add_entry): Use COMPARE_FILENAMES instead of
1114         "strcmp" to compare file name components.
1115         Use IS_DIR_SEPARATOR instead of comparing directly against
1116         DIR_SEPARATOR.
1117         (jcf_path_extdirs_arg): Use IS_DIR_SEPARATOR instead of
1118         comparing directly against DIR_SEPARATOR.
1119
1120 2003-03-04  Tom Tromey  <tromey@redhat.com>
1121
1122         * Make-lang.in (java.tags): New target.
1123
1124 2003-03-01  Roger Sayle  <roger@eyesopen.com>
1125
1126         * java/builtins.c (builtin_type): Handle DEF_FUNCTION_TYPE_VAR_3.
1127         (initialize_builtins): Handle DEF_FUNCTION_TYPE_VAR_3.
1128
1129 2003-03-01  Tom Tromey  <tromey@redhat.com>
1130
1131         * parse.y (jdep_resolve_class): Only check deprecation if we found
1132         a decl.
1133
1134 2003-02-28  Tom Tromey  <tromey@redhat.com>
1135
1136         PR java/9695:
1137         * class.c (maybe_layout_super_class): Always pass a WFL to
1138         do_resolve_class.
1139         * parse.y (do_resolve_class): Updated comment to explain
1140         parameters.
1141
1142 2003-02-26  Tom Tromey  <tromey@redhat.com>
1143
1144         * jcf-write.c (generate_classfile): Check whether class is
1145         deprecated before writing attribute count.
1146
1147 2003-02-25  Roger Sayle  <roger@eyesopen.com>
1148
1149         * java/decl.c (java_init_decl_processing): Get soft_fmod_node from
1150         built_in_decls[BUILT_IN_FMOD] rather than define it ourselves.
1151
1152 2003-02-23  Tom Tromey  <tromey@redhat.com>
1153
1154         * lang-options.h: Added -Wdeprecated.
1155         * gcj.texi (Warnings): Document -Wdeprecated.
1156         * java-tree.h (flag_deprecated): Declare.
1157         * lang.c (lang_W_options): Added deprecated.
1158         (flag_deprecated): New global.
1159         * chartables.h: Rebuilt.
1160         * gen-table.pl (process_one): Look at whitespace.
1161         (print_tables): Define LETTER_SPACE, LETTER_MASK.
1162         * parse.h (CLEAR_DEPRECATED): New macro.
1163         (CHECK_DEPRECATED_NO_RESET): New macro.
1164         * jcf-parse.c (handle_deprecated): New function.
1165         (HANDLE_DEPRECATED_ATTRIBUTE): New define.
1166         * jcf-reader.c (get_attribute): Handle Deprecated attribute.
1167         * parse.y (resolve_type_during_patch): Check deprecation.
1168         (jdep_resolve_class): Likewise.
1169         (process_imports): Likewise.
1170         (resolve_expression_name): Likewise.
1171         (check_deprecation): Strip arrays from decl.  Check
1172         flag_deprecated.
1173         (patch_method_invocation): Also check the particular constructor
1174         for deprecation.
1175         (register_fields): Use CHECK_DEPRECATED_NO_RESET in loop.
1176         * jcf-write.c (append_deprecated_attribute): New function.
1177         (generate_classfile): Generate deprecated attribute when
1178         appropriate.
1179         * lex.c (java_parse_doc_section): Return type now void.  Rewrote.
1180         (java_lex) [case '*']: Simplify logic.
1181         (java_start_char_p): Use LETTER_MASK.
1182         (java_part_char_p): Likewise.
1183         (java_space_char_p): New function.
1184
1185 2003-02-20  Nathan Sidwell  <nathan@codesourcery.com>
1186
1187         Change base class access representation.
1188         * java/class.c (set_super_info): Don't set TREE_VIA_PUBLIC.
1189         (add_interface_do): Likewise.
1190
1191 2003-02-12  Ranjit Mathew  <rmathew@hotmail.com>
1192
1193         * decl.c (java_init_decl_processing): Change
1194         soft_lookupjnimethod_node to reflect the change in
1195         signature of _Jv_LookupJNIMethod in libjava/jni.cc
1196         * expr.c (build_jni_stub): Calculate and pass the size
1197         on the stack of the arguments to a JNI function. Use
1198         new target macro MODIFY_JNI_METHOD_CALL to allow a
1199         target to modify the call to a JNI method.
1200
1201 2003-02-08  Roger Sayle  <roger@eyesopen.com>
1202
1203         * jcf-io.c (java_or_class_file): Use libiberty's lbasename
1204         instead of basename to avoid compiler warnings on Tru64.
1205
1206 2003-02-04  Joseph S. Myers  <jsm@polyomino.org.uk>
1207
1208         * gcj.texi: Update to GFDL 1.2.
1209
1210 2003-01-31  Andrew Haley  <aph@redhat.com>
1211
1212         * parse.y (java_expand_classes): Scan the whole class list looking
1213         for access methods that haven't yet been expanded.
1214
1215 2003-01-31 Adrian Bunk <bunk@fs.tum.de>
1216
1217         Fix for java/4269:
1218
1219         * jv-scan.c: Use HAVE_LANGINFO_CODESET instead of HAVE_NL_LANGINFO
1220         to fix bootstrap on sparc-unknown-netbsdelf1.5.
1221         * jcf-parse.c: Likewise.
1222
1223 2003-01-31  Mark Wielaard  <mark@klomp.org>
1224
1225         * gjavah.c (throwable_p): Allocate 1 more byte for string.
1226
1227 2003-01-31  Nathan Sidwell  <nathan@codesourcery.com>
1228
1229         * class.c (make_class): Use BINFO_ELTS.
1230         (set_super_info): Likewse.
1231         (add_interface_do): Likewise.
1232
1233 2003-01-30  Tom Tromey  <tromey@redhat.com>
1234
1235         * jcf-parse.c (read_class): Update identifier's class value if it
1236         changed during parsing.
1237
1238 2003-01-30  Loren James Rittle  <ljrittle@acm.org>
1239
1240         * Make-lang.in (po-generated): Find the targets in $(parsedir).
1241         Propagate change to all other rules as required.
1242         (java/parse-scan.o): Add explicit dependency on
1243         $(parsedir)/java/parse-scan.c .
1244
1245 2003-01-29  Tom Tromey  <tromey@redhat.com>
1246
1247         * parse.y (patch_assignment): Only transform the rhs of an
1248         assignment when compiling to native.
1249
1250 2003-01-28  Tom Tromey  <tromey@redhat.com>
1251
1252         * jcf-write.c (generate_bytecode_conditional): Typo fixes.
1253
1254 2003-01-28  Tom Tromey  <tromey@redhat.com>
1255
1256         * lex.c (java_lex): Don't include UEOF as part of token.
1257         (java_read_unicode): Error if \u sequence prematurely terminated.
1258
1259 2003-01-27  Tom Tromey  <tromey@redhat.com>
1260
1261         * parse.y (java_check_regular_methods): Check for construct after
1262         checking types in throws clause.
1263
1264 2003-01-24  Tom Tromey  <tromey@redhat.com>
1265
1266         * class.c (build_static_field_ref): Only a String or numeric field
1267         can fold to a constant.
1268
1269 2003-01-23  Tom Tromey  <tromey@redhat.com>
1270
1271         * jcf-parse.c (parse_zip_file_entries): Overwrite trailing \0 of
1272         file name in resource buffer.
1273
1274 2003-01-23  Tom Tromey  <tromey@redhat.com>
1275
1276         * expr.c (build_known_method_ref): Use method's context to find
1277         method table index.
1278
1279 2003-01-23  Tom Tromey  <tromey@redhat.com>
1280
1281         * constants.c (set_constant_entry): Allocated cleared memory.
1282
1283 2003-01-22  Tom Tromey  <tromey@redhat.com>
1284
1285         * java-tree.h: Don't use PARAMS.
1286         * resource.c: Add prototypes for all functions.
1287         (write_resource_constructor): Use `const char *' to avoid
1288         warning.
1289
1290 2003-01-22 Nathanael Nerode  <neroden@gcc.gnu.org>
1291
1292         * jcf-parse.c (process_zip_dir): Remove unused variable.
1293
1294 2003-01-22  Tom Tromey  <tromey@redhat.com>
1295
1296         * expr.c (build_invokeinterface): Abort if method's context is not
1297         an interface.
1298
1299 2003-01-22  Tom Tromey  <tromey@redhat.com>
1300
1301         * gcj.texi (Input and output files): Mention non-class entries.
1302         * decl.c (java_init_decl_processing): Call
1303         init_resource_processing.
1304         * java-tree.h (compile_resource_data, write_resource_constructor,
1305         compile_resource_file, init_resource_processing): Declare.
1306         * config-lang.in (gtfiles): Added resource.c.
1307         * Make-lang.in (gt-java-resource.h): New target.
1308         (JAVA_OBJS): Added resource.o.
1309         (java/resource.o): New target.
1310         * resource.c: New file.
1311         * class.c (compile_resource_file): Moved to resource.c.
1312         (registerResource_libfunc): Likewise.
1313         (utf8_decl_list): Mark with GTY; now static.
1314         * jcf-parse.c (classify_zip_file): New function.
1315         (parse_zip_file_entries): Use it; compile .properties files.
1316         (process_zip_dir): Use classify_zip_file and compute_class_name.
1317         Don't write class name into zip directory.
1318         (java_parse_file): Call write_resource_constructor.
1319         (compute_class_name): New function.
1320         * jcf-io.c (read_zip_member): Reindented.
1321
1322 2003-01-21  Tom Tromey  <tromey@redhat.com>
1323
1324         * class.c (supers_all_compiled): New function.
1325         (make_class_data): Use it.
1326
1327 2003-01-21  Tom Tromey  <tromey@redhat.com>
1328
1329         * parse.y (method_header): Native method can't be strictfp.
1330         No method can be transient or volatile.
1331
1332 2003-01-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1333
1334         Make-lang.in (jvspec.o-warn): Add -Wno-error.
1335
1336 2003-01-18  Kazu Hirata  <kazu@cs.umass.edu>
1337
1338         * check-init.c: Fix comment typos.
1339         * class.c: Likewise.
1340         * constants.c: Likewise.
1341         * decl.c: Likewise.
1342         * except.c: Likewise.
1343         * expr.c: Likewise.
1344         * java-except.h: Likewise.
1345         * java-tree.h: Likewise.
1346         * javaop.h: Likewise.
1347         * jcf-dump.c: Likewise.
1348         * jcf-io.c: Likewise.
1349         * jcf-parse.c: Likewise.
1350         * jcf-write.c: Likewise.
1351         * lang.c: Likewise.
1352         * mangle.c: Likewise.
1353         * typeck.c: Likewise.
1354         * verify.c: Likewise.
1355
1356 2003-01-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1357
1358         * Make-lang.in (java/jcf-write.o): Depend on $(TM_P_H).
1359         * jcf-write.c: Include "tm_p.h".
1360
1361 2003-01-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1362
1363         * jcf-io.c (caching_stat): Cast the 3rd arg of scandir to void*.
1364
1365 2003-01-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1366
1367         * builtins.c (java_build_function_call_expr): Renamed from
1368         build_function_call_expr.  All callers changed.
1369
1370         * Make-lang.in (java/jcf-parse.o): Depend on $(TM_P_H).
1371         * jcf-parse.c: Include tm_p.h.
1372
1373         * jcf-write.c (generate_bytecode_insns): Avoid signed/unsigned
1374         warning.
1375
1376 2003-01-14  Tom Tromey  <tromey@redhat.com>
1377
1378         * class.c (make_class_data): Check that super is compiled before
1379         building class reference to it.
1380
1381 2003-01-14  Andrew Haley  <aph@redhat.com>
1382
1383         * decl.c (java_init_decl_processing): _Jv_NewMultiArray is a
1384         varargs function -- correct.
1385
1386 2003-01-14  Andrew Haley  <aph@redhat.com>
1387
1388         * decl.c (java_init_decl_processing): Temporarily back out previous patch.
1389
1390 2003-01-14  Andrew Haley  <aph@redhat.com>
1391
1392         * decl.c (java_init_decl_processing): _Jv_NewMultiArray is a
1393         varargs function -- correct.
1394
1395         * parse.y (patch_assignment): Copy the rhs of an assignment into a
1396         temporary if the RHS is a reference.
1397
1398 2003-01-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1399
1400         * Make-lang.in (keyword.h): Pass "-L ANSI-C" to gperf.
1401         * keyword.h: Regenerated.
1402
1403         * All Files: Convert to ISO C style function definitions.
1404
1405 2003-01-09  Nathanael Nerode  <neroden@gcc.gnu.org>
1406
1407         * parse.y (check_pkg_class_access): ANSIfy definition.
1408
1409 2003-01-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1410
1411         * decl.c, parse-scan.y, parse.y: Don't cast return value of
1412         xmalloc et al.
1413
1414         * class.c, gjavah.c, parse.y, verify.c: Don't use PTR.
1415
1416 2003-01-09  Geoffrey Keating  <geoffk@apple.com>
1417
1418         Merge from pch-branch:
1419
1420         2002-12-02  Geoffrey Keating  <geoffk@apple.com>
1421
1422         * Make-lang.in (java/gjavah.o): Update dependencies.
1423         * gjavah.c: Include ggc.h.
1424
1425         2002-08-16  Geoffrey Keating  <geoffk@redhat.com>
1426
1427         * Make-lang.in (GCJH_OBJS): Add ggc-none.o.
1428         (JCFDUMP_OBJS): Add ggc-none.o.
1429         (java/jcf-dump.o): Depend on GGC_H.
1430         * jcf-reader.c (jcf_parse_constant_pool): Use ggc_alloc to allocate
1431         CPool substructures.
1432         * jcf-parse.c (process_zip_dir): Use ggc_alloc to allocate JCFs.
1433         * jcf-dump.c: Include ggc.h.
1434
1435         2002-08-08  Geoffrey Keating  <geoffk@redhat.com>
1436
1437         * jcf.h (union cpool_entry): New.
1438         (struct CPool): Use gengtype to mark.  Change field 'data' to be
1439         an array of unions.
1440         (struct JCF): Use gengtype to mark.
1441         (CPOOL_UINT): Update for new cpool_entry type.
1442         (CPOOL_USHORT1): Likewise.
1443         (CPOOL_USHORT2): Likewise.
1444         (CPOOL_FINISH): Use GC to free cpool subfields.
1445         * parse.h (struct parser_ctxt): Mark field current_jcf.
1446         * lex.c (java_init_lex): Use GC to allocate struct JCF.
1447         * jcf-parse.c (HANDLE_CONSTANT_Utf8): Update for new cpool_entry type.
1448         (main_jcf): Use gengtype to mark.
1449         (ggc_mark_jcf): Delete.
1450         (get_constant): Update for new cpool_entry type.
1451         (give_name_to_class): Likewise.
1452         (get_class_constant): Likewise.
1453         (init_outgoing_cpool): Use GGC to allocate struct CPool.
1454         (java_parse_file): Use GGC to allocate struct JCF.
1455         (init_jcf_parse): Don't call ggc_add_root.
1456         * jcf-reader.c (jcf_parse_constant_pool): Update for new
1457         cpool_entry type.
1458         * java-tree.h (current_jcf): Use gengtype to mark.
1459         (CPOOL_UTF): Update for new cpool_entry type.
1460         (outgoing_cpool): Use gengtype to mark.
1461         (struct lang_type): GC struct JCF and struct CPool.
1462         * config-lang.in (gtfiles): Add jcf.h.
1463         * constants.c (find_tree_constant): New.
1464         (set_constant_entry): Allocate cpool subfields using GGC.  Update
1465         for new cpool_entry type.
1466         (find_constant1): Update for new cpool_entry type.
1467         (find_constant2): Likewise.
1468         (find_utf8_constant): Use find_tree_constant.
1469         (find_class_or_string_constant): Remove unnecessary cast to jword.
1470         Update for new cpool_entry type.
1471         (count_constant_pool_bytes): Update for new cpool_entry type.
1472         (write_constant_pool): Likewise.
1473         (alloc_name_constant): Use find_tree_constant.
1474         (build_constants_constructor): Update for new cpool_entry type.
1475
1476         2002-08-08  Geoffrey Keating  <geoffk@redhat.com>
1477
1478         * parse.y (mark_parser_ctxt): Delete.
1479         (goal): Don't use ggc_add_root.
1480         (create_new_parser_context): Use GC to allocate struct parser_ctxt.
1481         (java_pop_parser_context): Let GC free parser_ctxt.
1482         (java_parser_context_resume): Likewise.
1483         * parse.h (struct parser_ctxt): Use gengtype to mark.
1484         (ctxp): Likewise.
1485         (ctxp_for_generation): Likewise.
1486         * lex.h (struct java_lc_s): Mark for gengtype.
1487         (java_lexer): Rearrange for gengtype.
1488         * config-lang.in (gtfiles): Add lex.h, parse.h.
1489
1490 2003-01-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1491
1492         * All Files: Remove PARAMS macro.
1493
1494         * expr.c, gjavah.c, javaop.h, jcf-dump.c, jcf-io.c, jcf-reader.c,
1495         jcf-write.c, jcf.h, jv-scan.c: Don't rely on the `DEFUN', `AND' or
1496         `__STDC__' macros.
1497
1498         * jv-scan.c, parse.y: Remove VPARAMS, VA_OPEN, VA_FIXEDARG and
1499         VA_CLOSE.
1500
1501 2003-01-09  Christian Cornelssen  <ccorn@cs.tu-berlin.de>
1502
1503         * Make-lang.in (java.install-common, java.uninstall,
1504         java.install-info, java.install-man): Prepend $(DESTDIR)
1505         to destination paths in all (un)installation commands.
1506         (java.install-common): Rewrite $(LN) command to support
1507         DESTDIR with "ln" as well as with "ln -s".
1508
1509 2003-01-08  Nathanael Nerode  <neroden@gcc.gnu.org>
1510
1511         * java-tree.h: Protect against multiple inclusion.
1512
1513 2003-01-07  Tom Tromey  <tromey@redhat.com>
1514
1515         * class.c (add_assume_compiled): Don't adjust parent if we're
1516         already at the root of tree.
1517
1518 2003-01-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1519
1520         * lang.c (dump_compound_expr): Prototype.
1521
1522 2003-01-03  Tom Tromey  <tromey@redhat.com>
1523
1524         Fix for PR java/8712:
1525         * expr.c (build_instanceof): Build an NE_EXPR, not a COND_EXPR,
1526         when simply checking against `null'.
1527
1528 2003-01-03  Tom Tromey  <tromey@redhat.com>
1529
1530         * gcj.texi (Standard Properties): Document http.proxyHost and
1531         http.proxyPort.
1532
1533         * gcj.texi (GNU Classpath Properties): Document new properties.
1534
1535 2003-01-02  Steven Bosscher <s.bosscher@student.tudelft.nl>
1536
1537         * java/jcf-reader.c, java/jvgenmain.c, java/keyword.gperf,
1538         java/lang-options.h, java/mangle.c, java/mangle_name.c,
1539         java/xref.c, java/zextract.c,java/zipfile.h: Fix copyright years.
1540
1541 2003-01-01  Steven Bosscher  <s.bosscher@student.tudelft.nl>
1542
1543         * Make-lang.in, boehm.c, buffer.c,
1544           buffer.h, builtins.c, class.c,
1545           config-lang.in, constants.c,
1546           convert.h, decl.c, except.c,
1547           expr.c, java-except.h,
1548           java-tree.h, javaop.def,
1549           jcf-parse.c, jcf-write.c,
1550           jv-scan.c, jvgenmain.c,
1551           jvspec.c, keyword.gperf,
1552           keyword.h, lang-options.h,
1553           lang-specs.h, lang.c, lex.c,
1554           lex.h, mangle.c, mangle_name.c,
1555           parse-scan.y, parse.h, parse.y,
1556           typeck.c, verify.c, xref.c,
1557           xref.h: Replace "GNU CC" with
1558           "GCC" in the copyright header.
1559
1560         * check-init.c, gjavah.c, javaop.h,
1561           jcf-depend.c, jcf-dump.c, jcf-io.c,
1562           jcf-path.c, jcf-reader.c, jcf.h,
1563           zextract.c, zipfile.h: These files are
1564           "part of GCC". Also say "GCC" not "GNU CC".
1565
1566 2002-12-30  DJ Delorie  <dj@redhat.com>
1567
1568         * Make-lang.in: Protect against texi2pod/pod2man failing.
1569
1570 2002-12-28  Joseph S. Myers  <jsm@polyomino.org.uk>
1571
1572         * gcj.texi: Use @copying.
1573
1574 2002-12-27  Mark Mitchell  <mark@codesourcery.com>
1575
1576         * gjavah.c (print_name_for_stub_or_jni): Adjust call to
1577         print_cxx_classname.
1578         (print_cxx_classname): Add add_scope parameter.
1579         (print_class_decls): Do not emit a semicolon after the extern
1580         "Java" block.
1581         (process_file): Adjust calls to print_cxx_classname.
1582
1583 2002-12-23  Joseph S. Myers  <jsm@polyomino.org.uk>
1584
1585         * gcj.texi: Include Cover Texts in man page.
1586
1587 2002-12-23  Jeff Sturm  <jsturm@one-point.com>
1588
1589         * class.c (build_static_field_ref): Check FIELD_FINAL.
1590
1591         * constants.c (alloc_class_constant): Use TYPE_CPOOL_DATA_REF
1592         instead of current_constant_pool_data_ref.
1593         * java-tree.h (current_constant_pool_data_ref): Undefine.
1594         (JTI_CURRENT_CONSTANT_POOL_DATA_REF): Remove.
1595         * jcf-parse.c (init_outgoing_cpool): Don't initialize
1596         current_constant_pool_data_ref.
1597
1598         * except.c (prepare_eh_table_type ): Use DECL_NAME of class type,
1599         not build_internal_class_name.
1600
1601         * parse.y (patch_incomplete_class_ref): Always emit `class$' method.
1602         Use it when class ref isn't certain to be compiled.
1603
1604 2002-12-23  Joseph S. Myers  <jsm@polyomino.org.uk>
1605
1606         * gcj.texi: Include gcc-common.texi.
1607         * Make-lang.in ($(srcdir)/java/gcj.info, java/gcj.dvi): Depend on
1608         $(srcdir)/doc/include/gcc-common.texi.
1609
1610 2002-12-22  Anthony Green  <green@redhat.com>
1611
1612         * gcj.texi (Limitations): Add note about org.xml.sax and
1613         org.w3c.dom.
1614
1615 2002-12-20  Tom Tromey  <tromey@redhat.com>
1616
1617         * jcf-write.c (generate_bytecode_insns) [SWITCH_EXPR]: Handle case
1618         where minimum case value is Integer.MIN_VALUE.
1619         Fixes PR java/8955.
1620
1621 2002-12-18  Andrew Haley  <aph@redhat.com>
1622
1623         * parse.y (patch_invoke): Force evaluation order when `check' is
1624         set.  For PR libgcj/8945.
1625
1626 2002-12-16  Mark Mitchell  <mark@codesourcery.com>
1627
1628         * gcj.texi: Change version number to 3.4.
1629
1630 2002-12-05  Ranjit Mathew <rmathew@hotmail.com>
1631         Andrew Haley <aph@redhat.com>
1632
1633         * parse.y (source_end_java_method): Remove custom encoding of line
1634         numbers for a function decl before passing it to the back end.
1635
1636 2002-12-03  Andrew Haley  <aph@redhat.com>
1637
1638         * class.c (make_class_data): New field, "chain".
1639         * decl.c (java_init_decl_processing): Likewise.
1640
1641 2002-12-02  Tom Tromey  <tromey@redhat.com>
1642
1643         For PR java/8740:
1644         * parse.y (do_resolve_class): Handle qualified name via
1645         recursion.
1646
1647 2002-11-30  Zack Weinberg  <zack@codesourcery.com>
1648
1649         * boehm.c, buffer.c, builtins.c, check-init.c, class.c,
1650         constants.c, decl.c, except.c, expr.c, gjavah.c, jcf-depend.c,
1651         jcf-dump.c, jcf-io.c, jcf-parse.c, jcf-path.c, jcf-write.c,
1652         jv-scan.c, jvgenmain.c, jvspec.c, lang.c, mangle.c, mangle_name.c,
1653         parse-scan.y, parse.y, typeck.c, verify.c, xref.c, zextract.c:
1654         Include coretypes.h and tm.h.
1655         * Make-lang.in: Update dependencies.
1656
1657 2002-11-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1658
1659         * decl.c (java_init_decl_processing): Use `LL' on 64-bit constant.
1660
1661 2002-11-25  Diego Novillo  <dnovillo@redhat.com>
1662
1663         * jcf-reader.c: Don't expand JCF_readu4 inside the
1664         expansion of JCF_SKIP.
1665
1666 2002-11-25  Diego Novillo  <dnovillo@redhat.com>
1667
1668         * jcf-reader.c: Don't expand JCF_readu4 inside the
1669         expansion of JCF_SKIP.
1670
1671 2002-11-22  Tom Tromey  <tromey@redhat.com>
1672
1673         * parse.y (patch_binop): Cast right hand side of shift expression
1674         to `int'.  Fixes PR java/8676.
1675
1676 2002-11-22  Ranjit Mathew <rmathew@hotmail.com>
1677             Andrew Haley <aph@redhat.com>
1678
1679         * gcc/java/jcf-write.c (write_classfile): Remove target
1680         class file, if it exists, before renaming the temporary
1681         class file to it.
1682
1683 2002-11-19  Jason Thorpe  <thorpej@wasabisystems.com>
1684
1685         * jvspec.c (lang_specific_spec_functions): New.
1686
1687 2002-11-18  Tom Tromey  <tromey@redhat.com>
1688
1689         Fix for PR java/7912:
1690         * expr.c (can_widen_reference_to): Allow cast of array to
1691         Cloneable or Serializable.
1692         * java-tree.h (java_lang_cloneable_identifier_node): Declare.
1693         (java_io_serializable_identifier_node): Likewise.
1694         * parse.y (java_lang_cloneable, java_io_serializable): Removed.
1695         (valid_ref_assignconv_cast_p): Use new identifier nodes.
1696         * lex.c (java_init_lex): Don't initialize java_lang_cloneable and
1697         java_io_serializable.
1698         * decl.c (java_init_decl_processing): Initialize
1699         java_lang_cloneable_identifier_node and
1700         java_io_serializable_identifier_node.
1701         (java_lang_cloneable_identifier_node): New global.
1702         (java_io_serializable_identifier_node): Likewise.
1703
1704 2002-11-14  Jens-Michael Hoffmann  <jensmh@gmx.de>
1705
1706         * buffer.c: Remove unnecessary casts.
1707         * check-init.c: Likewise.
1708         * class.c: Likewise.
1709         * constants.c: Likewise.
1710         * decl.c: Likewise.
1711         * except.c: Likewise.
1712         * gjavah.c: Likewise.
1713         * jcf-io.c: Likewise.
1714         * jcf-parse.c: Likewise.
1715         * jcf-path.c: Likewise.
1716         * jvspec.c: Likewise.
1717         * lang.c: Likewise.
1718         * lex.c: Likewise.
1719         * verify.c: Likewise.
1720
1721 2002-11-06  Tom Tromey  <tromey@redhat.com>
1722
1723         * gjavah.c (print_stub_or_jni): Include JNIEXPORT and JNICALL in
1724         a JNI header.
1725
1726 2002-11-05  Tom Tromey  <tromey@redhat.com>
1727
1728         Fix for PR java/6388.
1729         * lex.h (JAVA_INTEGRAL_RANGE_ERROR): Wrap in do...while.
1730         * java-tree.h (enum java_tree_index): New values
1731         JTI_DECIMAL_INT_MAX_NODE, JTI_DECIMAL_LONG_MAX_NODE.
1732         (decimal_int_max, decimal_long_max): New defines.
1733         * lex.c (yylex): Rewrote range checking.  Sign extend literals.
1734         (error_if_numeric_overflow): Rewrote range checking.
1735         * decl.c (java_init_decl_processing): Initialize decimal_int_max,
1736         decimal_long_max.
1737
1738 2002-11-02  Tom Tromey  <tromey@redhat.com>
1739
1740         * java-tree.h: Move JV_STATE_ERROR before JV_STATE_DONE.
1741
1742         * class.c (make_method_value): Put class name, not signature, into
1743         `throws' field.  For PR java/8415.
1744
1745 2002-10-24  Tom Tromey  <tromey@redhat.com>
1746
1747         * gcj.texi (Invoking gij): Document --showversion.
1748         (Standard Properties): java.library.path now set.
1749
1750 2002-10-23  Tom Tromey  <tromey@redhat.com>
1751
1752         * gjavah.c (decode_signature_piece): In JNI mode, print
1753         `jobjectArray' when array depth is nonzero.
1754         Fixes PR java/8296.
1755
1756 2002-10-15  Andrew Haley  <aph@redhat.com>
1757
1758         * parse.y (patch_invoke): Call force_evaluation_order on a static
1759         arg list.
1760         (resolve_qualified_expression_name): Call force_evaluation_order
1761         on a arg list that is part of a Qualified Expression Name.
1762
1763         * lang.c (dump_compound_expr): New.
1764         (java_dump_tree): New.
1765
1766 2002-10-20  Ranjit Mathew <rmathew@hotmail.com>
1767
1768         * gcj.texi: Added item describing the GCJ runtime property
1769         "gnu.gcj.progname".
1770
1771 2002-10-15  Richard Henderson  <rth@redhat.com>
1772
1773         * jcf-parse.c (get_constant): Fix type warning.
1774
1775 2002-10-15  Andrew Haley  <aph@redhat.com>
1776
1777         * java-tree.h (java_inlining_merge_static_initializers): Declare.
1778         (java_inlining_map_static_initializers): Declare.
1779
1780 2002-10-14  Andrew Haley  <aph@redhat.com>
1781
1782         * tree-inline.c (remap_block): All local class initialization
1783         flags go in the outermost scope.
1784         (expand_call_inline): Call java_inlining_map_static_initializers.
1785         (expand_call_inline): Call java_inlining_merge_static_initializers.
1786         * java/lang.c (merge_init_test_initialization): New.
1787         (java_inlining_merge_static_initializers): New.
1788         (inline_init_test_initialization): New.
1789         (java_inlining_map_static_initializers): New.
1790
1791 2002-10-11  Mark Wielaard  <mark@klomp.org>
1792
1793         * gcj.texi (Compatibility): Add Limitations and Extensions section.
1794
1795 2002-10-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1796
1797         * class.c (JAVA_TREEHASHHASH_H): Use htab_hash_pointer.
1798
1799 2002-10-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1800
1801         * parse.y (merge_string_cste): Add parentheses around & within |.
1802
1803 2002-10-08  Tom Tromey  <tromey@redhat.com>
1804
1805         * parse.y (variable_declarator_id): Simplify error path for
1806         array declarator error.  For PR java/8003.
1807
1808 2002-10-08  Zack Weinberg  <zack@codesourcery.com>
1809
1810         * gjavah.c, jcf-dump.c, jv-scan.c: Globally replace GCCBUGURL with
1811         bug_report_url.
1812
1813 2002-10-08  Andrew Haley  <aph@redhat.com>
1814
1815         * parse.y (attach_init_test_initialization_flags): Check for
1816         error_mark_node.
1817
1818 2002-10-07  Anthony Green  <green@redhat.com>
1819
1820         * parse.y (merge_string_cste): Fix bug in string concatenation.
1821
1822 2002-10-03  Michael Koch  <konqueror@gmx.de>
1823
1824         * gcj.texi (Standard properties):
1825         Change default of java.awt.toolkit to gnu.awt.gtk.GtkToolkit.
1826
1827 2002-10-02  Roger Sayle  <roger@eyesopen.com>
1828
1829         PR optimization/6627
1830         * lang.c (java_init): If storing the vbit in function
1831         pointers, ensure that force_align_functions_log is atleast
1832         one to aid compatability with g++ vtables.
1833
1834 2002-10-01  Nathan Sidwell  <nathan@codesourcery.com>
1835
1836         * jcf-dump.c (print_constant, case CONSTANT_float): Don't fall
1837         foul of type-based aliasing.
1838
1839 2002-09-30  Anthony Green  <green@redhat.com>
1840
1841         * gcj.texi (Invoking jv-scan): Fix texinfo.
1842
1843 2002-09-28  Anthony Green  <green@redhat.com>
1844
1845         * gcj.texi (Invoking jv-scan): Add --no-assert documentation.
1846         (Code Generation): Add -fno-assert documentation.
1847         * jv-scan.c (flag_assert): New global.
1848         (options): Add assert option.
1849         (help): Add --no-assert documentation.
1850         * parse-scan.y (flag_assert): New global.
1851         * lang.c (lang_f_options): Add -fassert/-fno-assert support.
1852         (flag_assert): New global.
1853         * java-tree.h (flag_assert): New global.
1854         * lex.c (java_lex): Obey flag_assert.
1855         * jvspec.c (jvgenmain_spec): Strip -fassert/-fno-assert when
1856         calling cc1.
1857
1858 2002-09-26  Andrew Haley  <aph@redhat.com>
1859
1860         * expr.c (build_java_array_length_access): Check for null pointer.
1861         * expr.c (expand_java_arrayload): Likewise.
1862
1863 2002-09-21  Richard Henderson  <rth@redhat.com>
1864
1865         * jcf-parse.c (get_constant): Decode from IEEE no matter
1866         what the target format.
1867
1868 2002-09-20  Kazu Hirata  <kazu@cs.umass.edu>
1869
1870         * ChangeLog: Follow spelling conventions.
1871         * class.c: Likewise.
1872         * decl.c: Likewise.
1873         * expr.c: Likewise.
1874         * gjavah.c: Likewise.
1875         * java-tree.h: Likewise.
1876         * jcf-dump.c: Likewise.
1877         * jcf-parse.c: Likewise.
1878         * jvspec.c: Likewise.
1879         * lang.c: Likewise.
1880         * mangle.c: Likewise.
1881         * parse.y: Likewise.
1882
1883 2002-09-17  Tom Tromey  <tromey@redhat.com>
1884
1885         * lex.c (java_read_unicode_collapsing_terminators): Handle case
1886         where \r appears at EOF.  Fixes PR java/7950.
1887
1888 2002-09-16  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
1889
1890         * jvspec.c (lang_specific_driver): Remove unused variable.
1891
1892 2002-09-16  Geoffrey Keating  <geoffk@apple.com>
1893
1894         * java-tree.h (union lang_tree_node): Add chain_next option.
1895
1896 2002-09-16  Richard Henderson  <rth@redhat.com>
1897
1898         * jcf-parse.c (get_constant): Runtime check for IEEE format;
1899         use new real.h interface.
1900         * jcf-write.c (find_constant_index): Use new real.h interface.
1901         * lex.c (IS_ZERO): Use REAL_VALUES_EQUAL.
1902
1903 2002-09-15  Kazu Hirata  <kazu@cs.umass.edu>
1904
1905         * lang.c: Follow spelling conventions.
1906
1907 2002-09-11  Per Bothner  <per@bothner.com>
1908
1909         * parse.y (fold_constant_for_init):  If a VAR_DECL, convert numerical
1910         constant to the type of the field.
1911         (java_complete_tree):  Remove now-redundant code.
1912
1913         * parse.y (fold_constant_for_init):  'null' is not a constant expr.
1914
1915 2002-09-03  Jesse Rosenstock  <jmr@ugcs.caltech.edu>
1916
1917         For PR java/5794:
1918         * verify.c (verify_jvm_instructions) [OPCODE_jsr]: Only push the
1919         return label if a ret instruction for the jsr has been reached.
1920
1921 2002-09-09  Ranjit Mathew  <rmathew@hotmail.com>
1922
1923         * parse.y (DIR_SEPARATOR): Don't define.
1924         (check_class_interface_creation): Use IS_DIR_SEPARATOR.
1925
1926 2002-08-28  Andrew Haley  <aph@redhat.com>
1927
1928         * verify.c (verify_jvm_instructions): Allow exception handler
1929         inside code that is being protected, but generate a warning.
1930         * except.c (link_handler): Initialize `expanded' in new eh_range.
1931         (binding_depth, is_class_level, current_pc): Declare extern.
1932
1933 2002-09-01  Mark Wielaard <mark@klomp.org>
1934
1935         * gcj.texi: Add chapter about system properties.
1936         Fixed some typos.
1937
1938 2002-08-26  Tom Tromey  <tromey@redhat.com>
1939
1940         * parse.y (try_builtin_assignconv): Allow narrowing primitive
1941         conversion if RHS_TYPE is byte, short, or char.
1942
1943 2002-08-22  Tom Tromey  <tromey@redhat.com>
1944
1945         * gcj.texi (Invoking gij): Document -cp and -classpath.
1946
1947 2002-08-21  Tom Tromey  <tromey@redhat.com>
1948
1949         * Make-lang.in (java/jcf-path.o): Use $(datadir), not
1950         $(prefix)/share.  For PR libgcj/7633.
1951
1952         For PR java/6005 and PR java/7611:
1953         * lang.c (LANG_HOOKS_CAN_USE_BITFIELDS_P): New define.
1954         (java_can_use_bit_fields_p): New function.
1955
1956 2002-08-16  Tom Tromey  <tromey@redhat.com>
1957
1958         * gcj.texi (Class Initialization): Mention class initialization of
1959         arrays.
1960
1961 2002-07-30  Andrew Haley  <aph@cambridge.redhat.com>
1962
1963         * Make-lang.in (java-tree-inline.o): New.
1964         (JAVA_OBJS): Add java-tree-inline.o.
1965         * parse.y (source_end_java_method): Call java_optimize_inline.
1966         (java_expand_method_bodies): Save method's tree in
1967         DECL_SAVED_TREE.
1968         (add_stmt_to_compound): Keep track of the number of statments.
1969         * lang.c (java_init): Enable flag_inline_trees.
1970         (java_post_options): If flag_inline_functions is on, enable
1971         flag_inline_trees instread.
1972         (decl_constant_value): New.
1973         (java_tree_inlining_walk_subtrees): New.
1974         * java-tree.h (DECL_NUM_STMTS): New macro.
1975         (java_optimize_inline): Declare.
1976         * expr.c (java_expand_expr): Allow a BLOCK to return a value.
1977         Handle a LABEL_EXPR.
1978         * decl.c (build_result_decl): If we already have a DECL_RESULT
1979         don't make another.
1980         (dump_function): New.
1981         (java_optimize_inline): New.
1982         (dump_function): New.
1983
1984 2002-08-13  Jesse Rosenstock  <jmr@fulcrummicro.com>
1985
1986         For PR java/7483:
1987         * parse.y (build_assertion): Invert return from
1988         desiredAssertionStatus.
1989
1990 2002-08-08  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
1991
1992         * jcf-write.c (get_access_flags): Return correct access flags for
1993         private and protected inner classes.
1994
1995 2002-08-08  Nathan Sidwell  <nathan@codesourcery.com>
1996
1997         * java/Make-lang.in (java.mostlyclean): Remove coverage files.
1998
1999 2002-08-05  Geoffrey Keating  <geoffk@redhat.com>
2000
2001         * mangle_name.c: Don't include obstack.h twice.
2002         * xref.c: Don't include obstack.h.
2003
2004 2002-08-04  Geoffrey Keating  <geoffk@redhat.com>
2005
2006         * class.c: (permanent_obstack): Delete declaration.
2007         * constants.c: (permanent_obstack): Delete declaration.
2008         * except.c: (permanent_obstack): Delete declaration.
2009         * expr.c: (permanent_obstack): Delete declaration.
2010         * jcf-parse.c: (permanent_obstack): Delete declaration.
2011         (saveable_obstack): Delete declaration.
2012         * parse.h: (permanent_obstack): Delete declaration.
2013         * typeck.c: (permanent_obstack): Delete declaration.
2014
2015 2002-08-04  Joseph S. Myers  <jsm@polyomino.org.uk>
2016
2017         * gcj.texi (version-gcc): Increase to 3.3.
2018
2019 2002-07-22  Tom Tromey  <tromey@redhat.com>
2020
2021         * lex.c (java_lex): Check for `e' or `E' after 0.
2022
2023 2002-07-21  Richard Henderson  <rth@redhat.com>
2024
2025         * lang.c (java_unsafe_for_reeval): New.
2026         (LANG_HOOKS_UNSAFE_FOR_REEVAL): New.
2027
2028 2002-07-21  Neil Booth  <neil@daikokuya.co.uk>
2029
2030         * jcf-path.c (GET_ENV_PATH_LIST): Remove.
2031         (jcf_path_init): Use GET_ENVIRONMENT.
2032
2033 2002-07-10  Roger Sayle  <roger@eyesopen.com>
2034             Zack Weinberg <zack@codesourcery.com>
2035
2036         * builtins.c (initialize_builtins): Remove defines that
2037         handled C/C++ specific junk hereby removed from builtins.def.
2038
2039 2002-07-07  Neil Booth  <neil@daikokuya.co.uk>
2040
2041         * lang.c (java_post_options): Update prototype.
2042
2043 2002-07-05  Roger Sayle  <roger@eyesopen.com>
2044
2045         * builtins.c (initialize_builtins): Ignore the additional
2046         parameter to DEF_BUILTIN.  Handle more C/C++ specific junk in
2047         the builtins.def file.
2048
2049 2002-07-01  Tom Tromey  <tromey@redhat.com>
2050
2051         For PR libgcj/7073:
2052         * parse.y (patch_incomplete_class_ref): Handle VOID_TYPE
2053         specially.
2054
2055 2002-07-01  Roger Sayle  <roger@eyesopen.com>
2056
2057         * java/decl.c (builtin_function): Accept additional parameter.
2058         (java_init_decl_processing): Pass an additional NULL_TREE
2059         argument to builtin_function.
2060
2061 2002-06-29  T.J. Mather  <tjmather@maxmind.com>
2062
2063         * gcj.texi: Fixed gcj invocation example so that it compiles.
2064
2065 2002-06-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2066
2067         * lex.c (java_init_lex): Avoid incorrect hardcoded constant 11.
2068         * parse.y (mark_parser_ctxt): Likewise.
2069         (check_modifiers, declare_local_variables): Avoid incorrect
2070         hardcoded constant 10.
2071
2072         * lex.c (java_read_char): Avoid "comparison is always true"
2073         warning.
2074
2075 2002-06-25  Andreas Schwab  <schwab@suse.de>
2076
2077         * expr.c (JSR): Avoid undefined operation on PC.
2078
2079 2002-06-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2080
2081         * decl.c (clear_binding_level): Const-ify.
2082
2083 2002-06-13  Akim Demaille  <akim@epita.fr>
2084
2085         * parse.y (class_declaration, interface_declaration): Make sure
2086         all their rules have an action, in order to avoid meaningless `$$
2087         = $1' and their type clashes.
2088
2089 2002-06-11  Tom Tromey  <tromey@redhat.com>
2090
2091         * jcf-write.c (generate_classfile): Use FIELD_SYNTHETIC.
2092         * parse-scan.y (statement_without_trailing_substatement): Added
2093         assert_statement.
2094         (assert_statement): New rule.
2095         * java-tree.h (struct lang_type) [assertions]: New field.
2096         (TYPE_USES_ASSERTIONS): New macro.
2097         (CLASS_USES_ASSERTIONS): Likewise.
2098         (FIELD_SYNTHETIC): New define.
2099         * lex.c (java_lval;): Added ASSERT_TK.
2100         * parse.y (ASSERT_TK): Added.
2101         (statement_without_trailing_substatement): Added assert_statement.
2102         (assert_statement): New rule.
2103         (build_assertion): New function.
2104         (maybe_generate_pre_expand_clinit): Create and initialize
2105         $assertionsDisabled.
2106         (lookup_package_type): Removed decl.
2107         * keyword.h: Rebuilt.
2108         * keyword.gperf (assert): New token.
2109
2110 2002-06-10  Akim Demaille  <akim@epita.fr>
2111
2112         * parse.y (interface_type_list, class_member_declaration)
2113         (unary_expression_not_plus_minus): Remove duplicate %type.
2114         Whitespace changes.
2115
2116 2002-06-09  Tom Tromey  <tromey@redhat.com>
2117
2118         * Make-lang.in (java/lang.o): Use LANGHOOKS_DEF_H.
2119
2120         * parse.y (method_header): Give error message in all cases.
2121         Fixes PR java/6865.
2122
2123 2002-06-10  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
2124
2125         Don't use RTL inlining. Fix for PR java/6820.
2126         * lang.c (LANG_HOOKS_POST_OPTIONS): Define.
2127         (flag_really_inline): New.
2128         (java_decode_option): Set flag_really_inline if -finline-functions
2129         is seen.
2130         (java_post_options): New function. Turn off inlining unless
2131         flag_really_inline is set.
2132
2133 2002-06-10  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
2134
2135         * gjavah.c (throwable_p): Accept argument as either a classname or
2136         signature fragment. Create null-terminated classname string for super
2137         when calling itself recursively.
2138         (decode_signature_piece): Skip first character from class name
2139         signature when calling throwable_p.
2140
2141 2002-06-08  H.J. Lu  (hjl@gnu.org)
2142
2143         * jcf-path.c (jcf_path_init): Allocate 1 more byte for string.
2144
2145 2002-06-04  Tom Tromey  <tromey@redhat.com>
2146
2147         * jcf-write.c (perform_relocations): Optmize a goto to a goto.
2148
2149 2002-06-04  Michael Koch  <konqueror@gmx.de>
2150
2151         * gcj.texi (Input Options): Fixed typo.
2152
2153 2002-06-04  Zack Weinberg  <zack@codesourcery.com>
2154
2155         * java-tree.h, class.c, expr.c, jcf-parse.c, parse.y,
2156         typeck.c, verify.c: Remove all #if JAVA_USE_HANDLES blocks,
2157         all mention of CLASS_TO_HANDLE_TYPE or HANDLE_TO_CLASS_TYPE,
2158         and all now-pointless local variables.  Rename other local
2159         variables to reflect their not being handles.
2160
2161         * java-tree.h, jcf-dump.c, jcf-io.c: Remove all
2162         #if JCF_USE_STDIO blocks.
2163
2164         * parse.y: Add missing semicolon at end of rule.
2165
2166 2002-06-03  Geoffrey Keating  <geoffk@redhat.com>
2167
2168         * check-init.c (attach_initialized_static_class): Delete, unused.
2169         * parse.y: Use htab_t instead of struct hashtable, update
2170         all uses.
2171         * java-tree.h: Include hashtab.h instead of hash.h.
2172         (struct lang_decl_func): Use htab_t, set up for gengtype.
2173         (struct init_test_hash_entry): Delete.
2174         (struct treetreehash_entry): New.
2175         (java_treetreehash_find): New
2176         (java_treetreehash_new): New prototype.
2177         (java_treetreehash_create): New prototype.
2178         (java_mark_tree): Delete prototype.
2179         (java_hash_hash_tree_node): Delete prototype.
2180         (java_hash_compare_tree_node): Delete prototype.
2181         (attach_initialized_static_class): Delete prototype.
2182         * expr.c (build_class_init): Update to use java_treetreehash
2183         functions.
2184         (java_expand_expr): Update to use htab_t.
2185         (emit_init_test_initialization): Likewise.
2186         * decl.c (java_mark_tree): Delete.
2187         * class.c (init_test_hash_newfunc): Delete.
2188         (java_hash_hash_tree_node): Delete.
2189         (java_hash_compare_tree_node): Delete.
2190         (add_method_1): Update to use java_treetreehash functions.
2191         (JAVA_TREEHASHHASH_H): New macro.
2192         (java_treetreehash_hash): New function.
2193         (java_treetreehash_compare): New function.
2194         (java_treetreehash_find): New function.
2195         (java_treetreehash_new): New function.
2196         (java_treetreehash_create): New function.
2197         * Make-lang.in (JAVA_TREE_H): Replace hash.h by HASHTAB_H.
2198
2199         * Make-lang.in (java/parse.o): Depend on debug.h.
2200         * java-tree.h (struct lang_identifier): Use gengtype.
2201         (union lang_tree_node): New.
2202         (struct lang_decl_func): Use gengtype.
2203         (struct lang_decl_var): Likewise.
2204         (struct lang_decl): Likewise.
2205         * parse.y: Include debug.h.
2206         * lang.c (LANG_HOOKS_MARK_TREE): Delete.
2207
2208         * lang.c (struct language_function): New dummy structure.
2209
2210         * java-tree.h (MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC): Set
2211         descriminator for DECL_LANG_SPECIFIC.
2212         (struct lang_decl_func): Rename from struct lang_decl.
2213         (enum lang_decl_desc): New.
2214         (struct lang_decl): Make it a union.  Update all the accessor macros.
2215         (struct lang_type): Use gengtype.
2216         * class.c (add_method_1): Set descriminator for DECL_LANG_SPECIFIC.
2217         * decl.c (java_dup_lang_specific_decl): All lang_decl structures
2218         are now the same size.
2219         (lang_mark_tree): Use gengtype to mark TYPE_LANG_SPECIFIC;
2220         use discriminator to mark DECL_LANG_SPECIFIC.
2221
2222         * Make-lang.in (gt-java-builtins.h): New rule.
2223         (java/builtins.o): Add dependency on gt-<filename>.h.
2224         * builtins.c: Use gengtype for roots.
2225         (union string_or_tree): Use gengtype.
2226         (struct builtin_record): Use gengtype.
2227         * config-lang.in (gtfiles): Add builtins.c.
2228
2229         * Make-lang.in (gt-java-class.h, gt-java-constants.h,
2230         gt-java-decl.h, gt-java-expr.h, gt-java-jcf-parse.h,
2231         gt-java-jcf-write.h, gt-java-lang.h, gt-java-mangle.h,
2232         gt-java-parse.h, gtype-java.h): Add rules to generate.
2233         (parse.o): Add dependency on gt-java-parse.h, gt-java.h.
2234         (class.o): Add dependency on gt-*.h.
2235         (constants.o): Likewise.
2236         (decl.o): Likewise.
2237         (expr.o): Likewise.
2238         (jcf-parse.o): Likewise.
2239         (jcf-write.o): Likewise.
2240         (lang.o): Likewise.
2241         * config-lang.in (gtfiles): New.
2242         * class.c: Replace uses of ggc_add_* with GTY markers.  Include gt-*.h.
2243         * constants.c: Replace uses of ggc_add_* with GTY markers.
2244         Include gt-*.h.
2245         * decl.c: Replace uses of ggc_add_* with GTY markers.  Include gt-*.h.
2246         * expr.c: Replace uses of ggc_add_* with GTY markers.  Include gt-*.h.
2247         * java-tree.h: Replace uses of ggc_add_* with GTY markers.
2248         * jcf-parse.c: Replace uses of ggc_add_* with GTY markers.
2249         Include gt-*.h.
2250         * jcf-write.c: Replace uses of ggc_add_* with GTY markers.
2251         Include gt-*.h.
2252         * lang.c: Replace uses of ggc_add_* with GTY markers.  Include gt-*.h.
2253         * mangle.c: Replace uses of ggc_add_* with GTY markers.  Include
2254         gt-*.h.
2255         * parse.y: Replace uses of ggc_add_* with GTY markers.  Include gt-*.h.
2256         Include gtype-java.h.
2257
2258 2002-06-02  Tom Tromey  <tromey@redhat.com>
2259
2260         Fix for PR java/5913:
2261         * parse.y (patch_binop): Call patch_string on op1.
2262
2263 2002-06-02  Tom Tromey  <tromey@redhat.com>
2264
2265         Fix for PR java/1343, PR java/6336:
2266         * parse.y (make_nested_class_name): Remove extraneous `else'; fix
2267         formatting.  Changed return type.
2268         (anonymous_class_counter): Moved to top of file.
2269         (maybe_make_nested_class_name): Append number to class name for
2270         function-local classes.
2271
2272 2002-05-28  Zack Weinberg  <zack@codesourcery.com>
2273
2274         * decl.c, jcf-parse.c, parse.y, typeck.c: Include real.h.
2275         * Make-lang.in: Update dependency lists.
2276
2277 2002-05-18  Mark Mitchell  <mark@codesourcery.com>
2278
2279         * gjavah.c (throwable_p): Do not free the name of the class after
2280         passing it to find_class.
2281         * java-tree.h (CLASS_BEING_LAIDOUT): Remove duplicate definition.
2282         * jcf-io.c (dirent.h): Include it.
2283         (fnmatch.h): Likewise.
2284         (compare_path): New function.
2285         (java_or_class_file): Likewise.
2286         (memoized_dirlist_entry): New type.
2287         (memoized_dirlist_lookup_eq): New function.
2288         (memoized_dirlists): New variable.
2289         (caching_stat): New function.
2290         (memoized_class_lookup_eq): New function.
2291         (memoized_class_lookups): Likewise.
2292         (find_class): Use memoized_class_lookups and caching_stat.
2293         * jcf.h (JCF_USE_SCANDIR): Define.
2294         * parse.y (java_expand_classes): Write the class files in reverse
2295         order.
2296
2297 2002-05-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
2298
2299         * Make-lang.in: Allow for PWDCMD to override hardcoded pwd.
2300
2301 2002-05-13  Mark Mitchell  <mark@codesourcery.com>
2302
2303         * jcf-write.c (write_classfile): Unlink the temporary file if it
2304         cannot be renamed.  Use concat to build up the name of the
2305         temporary file.
2306
2307 2002-05-08  Mark Mitchell  <mark@codesourcery.com>
2308
2309         * jcf-write.c (write_classfile): Write the file to a
2310         temporary file and then rename it.
2311
2312 2002-05-07  Tom Tromey  <tromey@redhat.com>
2313
2314         * gjavah.c (throwable_p): Use xstrdup, not strdup.
2315
2316         Fix for PR java/1200:
2317         * gjavah.c (throwable_p): New function.
2318         (decode_signature_piece): Use it.  A `WeakReference' isn't the
2319         same as a `jweak'.
2320         Include hashtab.h.
2321         (gcjh_streq): New function.
2322
2323 2002-05-07  Andreas Jaeger  <aj@suse.de>
2324
2325         * parse.y (finish_for_loop): Fix if statement.
2326
2327 2002-05-06  Tom Tromey  <tromey@redhat.com>
2328
2329         Fix for PR java/5941:
2330         * parse.y (finish_for_loop): Set SUPPRESS_UNREACHABLE_ERROR for
2331         loop update expression.
2332         (java_complete_lhs): Use SUPPRESS_UNREACHABLE_ERROR.
2333         * java-tree.h (SUPPRESS_UNREACHABLE_ERROR): New macro.
2334
2335 2002-05-04  Mark Wielaard  <mark@klomp.org>
2336
2337         For PR java/6519:
2338         * parse.y (build_string_concatenation): Return just op1 only when op2
2339         is null and op1 is a STRING_CST, otherwise always construct a
2340         StringBuffer.
2341
2342 2002-04-27  Tom Tromey  <tromey@redhat.com>
2343
2344         For PR java/6382:
2345         * parse.y (string_convert_int_cst): New function.
2346         (merge_string_cste): Use it.
2347
2348 2002-04-25  Neil Booth  <neil@daikokuya.demon.co.uk>
2349
2350         * java-tree.h (java_parse_file): Update.
2351         (java_set_yydebug): Remove.
2352         * jcf-parse.c (yydebug): Remove.
2353         (java_set_yydebug): Die.
2354         (java_parse_file): Update.
2355         * lang.c (LANG_HOOKS_SET_YYDEBUG): Remove.
2356
2357 2002-04-24  Tom Tromey  <tromey@redhat.com>
2358
2359         For PR java/6425:
2360         * parse.y (qualify_ambiguous_name) [case CALL_EXPR]: Always choose
2361         EXPR_WFL_QUALIFICATION of qual_wfl.
2362
2363 2002-04-23  Per Bothner  <per@bothner.com>
2364
2365         * expr.c (PRE_JSR):  Call NOTE_LABEL for return address.
2366         * java-tree.h (BCODE_RETURN_TARGET):  Removed - never set.
2367         (BCODE_TARGET):  Remove BCODE_RETURN_TARGET.
2368
2369 2002-04-23  Tom Tromey  <tromey@redhat.com>
2370
2371         For PR java/6314:
2372         * jvspec.c (lang_specific_driver): Use --resource, not -R.  Also
2373         recognize `-fcompile-resource='.
2374         * gcj.texi (Invoking gcj): Use --resource, not -R.  Expanded text
2375         a bit.
2376
2377 2002-04-22  Alexandre Petit-Bianco  <apbianco@redhat.com>
2378
2379         * jcf-parse.c: (yyparse): Don't prepend "./" to relative
2380         paths. Fixes PR java/2791.
2381
2382 2002-04-19  Andrew Haley  <aph@redhat.com>
2383
2384         * jcf-write.c (push_long_const): lo, hi: New variables.
2385         Use rshift_double to extract the high part of a 64-bit long.
2386         Use WORD_TO_INT to extract the low part.
2387
2388         * jcf-parse.c (get_constant): CONSTANT_Integer: Use an unsigned
2389         HOST_WIDE_INT for num.  Use JPOOL_UINT to get it.
2390         CONSTANT_Double: Use JPOOL_UINT to get both halve of a double.
2391
2392 2002-04-18  Neil Booth  <neil@daikokuya.demon.co.uk>
2393
2394         * typeck.c (incomplete_type_error): Remove.
2395
2396 2002-04-18  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
2397
2398         * class.c (make_class_data): Set DECL_ALIGN on static class data,
2399         for hash synchronization.
2400         * expr.c (java_expand_expr): Set DECL_ALIGN on static array objects.
2401         * decl.c (java_init_decl_processing): Don't set TYPE_ALIGN for
2402         class_type_node.
2403
2404 2002-04-16  Mark Wielaard  <mark@klomp.org>
2405
2406         * jcf-write.c (generate_bytecode_insns): Only write const_0 if not
2407         negative zero.
2408
2409 2002-04-16  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
2410
2411         Fix for PR java/6294:
2412         * parse.h (INNER_INTERFACE_MODIFIERS): Allow ACC_PRIVATE for inner
2413         interfaces.
2414
2415 2002-04-15  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
2416
2417         Fix for PR java/6085:
2418         * parse.y (patch_method_invocation): Always use build_access_to_thisn
2419         to get enclosing "this" argument for inner-class constructor
2420         invocation. Pass correct arguments to build_access_to_thisn.
2421
2422 2002-04-10  Andreas Jaeger  <aj@suse.de>
2423
2424         * gcj.texi (Input Options): Fix extdirs patch.
2425
2426 2002-04-10  Anthony Green  <green@redhat.com>
2427
2428         * jcf-path.c (jcf_path_init) : Clean up local extdirs declaration.
2429
2430 2002-04-09  Anthony Green  <green@redhat.com>
2431
2432         * gcj.texi (Input Options): Add --extdirs documentation.
2433         * jcf-dump.c (OPT_extdirs): New macro.
2434         (options): Add extdirs option.
2435         (help): Describe --extdirs.
2436         (main): Handle OPT_extdirs.
2437         * gjavah.c (OPT_extdirs): New macro.
2438         (options): Add extdirs option.
2439         (help): Describe --extdirs.
2440         (main): Handle OPT_extdirs.
2441         * jcf-path.c (jcf_path_init): Add extdirs support.
2442         (jcf_path_extdirs_arg): New function.
2443         (extensions): New variable to hold extensions path entries.
2444         * jvspec.c: Remove -fextdirs= when compiling main().
2445         * lang.c (java_decode_option): Handle -fextdirs=.
2446         * jcf.h (jcf_path_extdirs_arg): Declare new function.
2447         * Make-lang.in: Compile jcf-path with version info for use in
2448         identifying the appropriate libgcj.jar.
2449
2450 2002-04-08  Tom Tromey  <tromey@redhat.com>
2451
2452         For PR libgcj/5303:
2453         * .cvsignore: Added rmic.1 and rmiregistry.1.
2454         * gcj.texi (Top): Link to new nodes.
2455         (Invoking rmic): New node.
2456         (Invoking rmiregistry): Likewise.
2457         * Make-lang.in (java.generated-manpages): Added rmic.1 and
2458         rmiregistry.1.
2459         (java.maintainer-clean): Likewise.
2460         ($(srcdir)/java/rmic.1): New target.
2461         ($(srcdir)/java/rmiregistry.1): Likewise.
2462         (java.install-man): Handle rmic.1 and rmiregistry.1.
2463
2464 2002-04-08  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
2465
2466         * gcj.texi (Invocation): Update JvAttachCurrentThread documentation.
2467         Add note about handling uncaught exceptions. Add an exception handler
2468         to example.
2469
2470 2002-04-08  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
2471
2472         * parse.y (resolve_qualified_expression_name): Clear "from_super" flag
2473         after using it to patch CALL_EXPR.
2474
2475 2002-04-08  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
2476
2477         * gcj.texi (Invocation): Document CNI invocation API.
2478
2479 2002-04-04  Neil Booth  <neil@daikokuya.demon.co.uk>
2480
2481         * expr.c (truthvalue_conversion): Rename.  Update.
2482         (expand_compare): Update.
2483         * java-tree.h (java_truthvalue_conversion): New.
2484         * lang.c (LANG_HOOKS_TRUTHVALUE_CONVERSION): Redefine.
2485
2486 2002-04-01  Neil Booth  <neil@daikokuya.demon.co.uk>
2487
2488         * java-tree.h (java_mark_addressable): New.
2489         * lang.c (LANG_HOOKS_MARK_ADDRESSABLE): Redefine.
2490         * typeck.c (mark_addressable): Rename, update.
2491
2492 2002-04-01  Neil Booth  <neil@daikokuya.demon.co.uk>
2493
2494         * expr.c (build_java_binop): Update.
2495         * java-tree.h (java_signed_type, java_unsigned_type,
2496         java_signed_or_unsigned_type): Update.
2497         * lang.c (LANG_HOOKS_SIGNED_TYPE, LANG_HOOKS_UNSIGNED_TYPE,
2498         LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): New.
2499         * parse.y (patch_binop): Update.
2500         * typeck.c (signed_or_unsigned_type, unsigned_type,
2501         signed_type): Update.
2502
2503 2002-03-31  Neil Booth  <neil@daikokuya.demon.co.uk>
2504
2505         * lang.c (LANG_HOOKS_PRINT_ERROR_FUNCTION): Redefine.
2506         (java_dummy_print): Remove.
2507         (lang_print_error): Rename.  Exit early if inhibiting output.
2508         (inhibit_error_printing_function): New.
2509         (java_init): Don't set hook.
2510         (lang_init_source): Use new boolean.
2511
2512 2002-03-29  Martin Kahlert  <martin.kahlert@infineon.com>
2513
2514         * parse.y (do_resolve_class): Fix infinite recursion.
2515
2516 2002-03-29  Tom Tromey  <tromey@redhat.com>
2517
2518         * parse.y (check_inner_circular_reference): Ignore incomplete
2519         types.
2520
2521 2002-03-29  Neil Booth  <neil@daikokuya.demon.co.uk>
2522
2523         * Make-lang.in (builtins.o): Update.
2524         * boehm.c (get_boehm_type_descriptor): Update.
2525         * builtins.c: Include langhooks.h.
2526         * decl.c (java_init_decl_processing): Update.
2527         * java-tree.h (java_type_for_mode, java_type_for_size): New.
2528         * lang.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIaZE):
2529         Redefine.
2530         * typeck.c (type_for_mode, type_for_size): Update.
2531
2532 2002-03-29  Martin Kahlert  <martin.kahlert@infineon.com>
2533
2534         * lex.c (java_new_lexer): Alias "646" to DEFAULT_ENCODING.
2535
2536 2002-03-28  Tom Tromey  <tromey@redhat.com>
2537
2538         * except.c (expand_end_java_handler): If the handler type is NULL,
2539         use java.lang.Throwable.  Fixes PR java/5986.
2540
2541 2002-03-28  Alexandre Petit-Bianco  <apbianco@redhat.com>
2542
2543         Fix for PR java/4715:
2544         * jcf-parse.c (parse_source_file_3): New function.
2545         (read_class): Call it.
2546         (java_parse_file): Likewise.
2547
2548 2002-03-28  Jan Hubicka  <jh@suse.cz>
2549
2550         * java/lang.c (java_init_options): Set flag_trapping_math to 0.
2551
2552 2002-03-28  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
2553
2554         * parse.y (resolve_package): Initialize "decl".
2555         (lookup_package_type): Remove unused function.
2556
2557 2002-03-28  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
2558
2559         Fix for PR java/5993:
2560         * parse.y (resolve_package): Return the decl if resolution was
2561         successful. Don't special case "java.lang" and "java.lang.reflect"
2562         packages. Set type_name to the merged identifier.
2563         (resolved_qualified_expression_name): Print error using "name" if
2564         resolve_package returns NULL_TREE.
2565
2566 2002-03-27  Tom Tromey  <tromey@redhat.com>
2567
2568         * expr.c (expand_invoke): Don't generate null pointer check if
2569         we're calling <init>.
2570
2571 2002-03-27  Neil Booth  <neil@daikokuya.demon.co.uk>
2572
2573         * expr.c (java_lang_expand_expr): Rename java_expand_expr,
2574         fix prototype.
2575         * java-tree.h (java_lang_expand_expr): Similarly.
2576         * lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine.
2577         (java_init): Don't set hook.
2578
2579 2002-03-27  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
2580
2581         Fix for PR java/5850:
2582         * parse.y (lookup_field_wrapper): Call itself recursively for enclosing
2583         context if field was not found in the current scope.
2584         * expr.c (lookup_field): Don't look in enclosing contexts.
2585
2586 2002-03-26  Tom Tromey  <tromey@redhat.com>
2587
2588         Fix for PR java/5942:
2589         * parse.y (init_src_parse): Added sanity check.
2590         * parse.h (struct parser_ctxt) [modifier_ctx]: Array has 12
2591         elements, not 11.
2592
2593 2002-03-26  Neil Booth  <neil@daikokuya.demon.co.uk>
2594
2595         * decl.c (lang_mark_tree): Rename java_mark_tree.
2596         * java-tree.h (java_mark_tree): New.
2597         * java-lang.c (LANG_HOOKS_MARK_TREE): Redefine.
2598
2599 2002-03-25  Zack Weinberg  <zack@codesourcery.com>
2600
2601         * lex.c: Change java_perform_atof to take normal parameters
2602         instead of a pointer to a parameter block.  Call it directly
2603         from java_lex.
2604
2605 2002-03-22  Mark Wielaard  <mark@klomp.org>
2606
2607         Fix for PR java/5368:
2608         * parse.y (resolve_qualified_expression_name): Use decl not field_decl
2609         when printing error message.
2610
2611 2002-03-25  Neil Booth  <neil@daikokuya.demon.co.uk>
2612
2613         * decl.c (maybe_build_cleanup): Remove.
2614
2615 2002-03-22  Tom Tromey  <tromey@redhat.com>
2616
2617         Andrew Haley  <aph@cambridge.redhat.com>
2618
2619         * expr.c (build_field_ref): Don't build a check if the field is a
2620         member of `this'.
2621
2622 2002-03-21  Eric Blake  <ebb9@email.byu.edu>
2623
2624         Fix for PR java/6026:
2625         * lex.c (java_lex): Fix parsing of consecutive floats.
2626
2627 2002-03-21  Tom Tromey  <tromey@redhat.com>
2628
2629         * parse.y (build_access_to_thisn): Stop when FROM is not an inner
2630         class.
2631
2632 2002-03-21  Neil Booth  <neil@daikokuya.demon.co.uk>
2633
2634         * cp-tree.h (pushdecl, pushlevel, poplevel, set_block,
2635         insert_block, getdecls, kept_level_p, global_bindings_p): New.
2636
2637 2002-03-20  Nic Ferrier  <nferrier@tapsellferrier.co.uk>
2638
2639         * gcj.texi: @code{gcj} becomes @command{gcj}.
2640         @code{gcc} becomes @command{gcc}.
2641         GcjRaw changed to gnu.gcc.RawData.
2642
2643 2002-03-20  Neil Booth  <neil@daikokuya.demon.co.uk>
2644
2645         * decl.c (start_java_method): Use new hook.
2646         * lang.c (LANG_HOOKS_DECL_PRINTABLE_NAME): Redefine.
2647         (java_init): Remove old hook.
2648
2649 2002-03-18  Alexandre Petit-Bianco  <apbianco@redhat.com>
2650
2651         * builtins.c (define_builtin): Do nothing if `type' is null.
2652         Fixes PR java/5876.
2653
2654 2002-03-18  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
2655
2656         * parse.y (parser_check_super_interface): Fix error message
2657         grammar/order.
2658
2659 2002-03-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2660
2661         * jcf-parse.c (get_constant): Delete unused variables.
2662
2663 2002-03-17  Neil Booth  <neil@daikokuya.demon.co.uk>
2664
2665         * java-tree.h (java_parse_file): New.
2666         * jcf-parse.c (yyparse): Rename java_parse_file.
2667         * lang.c (LANG_HOOKS_PARSE_FILE): Redefine.
2668
2669 2002-03-16  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
2670
2671         * parse.y (craft_constructor): Return the constructor decl.
2672         (java_expand_classes): Update comments.
2673         (lookup_method_invoke): Call fix_constructors immediately for
2674         anonymous class. Fixes PR java/5935.
2675
2676 2002-03-15  Anthony Green  <green@redhat.com>
2677
2678         * jcf-parse.c (yyparse): Don't emit class registration
2679         constructor when compiling resource files.
2680
2681 2002-03-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2682
2683         * lang.c (java_tree_code_type, java_tree_code_length,
2684         tree_code_name): Delete.
2685         (tree_code_type, tree_code_length, tree_code_name): Define.
2686         (java_init): Don't try to copy into the various tree_code
2687         arrays.
2688
2689 2002-03-12  Tom Tromey  <tromey@redhat.com>
2690
2691         * jcf-parse.c (get_constant) [CONSTANT_String]: String values are
2692         UTF-8, not UCS-2.  Fixes PR java/5923.
2693
2694         * parse.y (qualify_ambiguous_name): Handle case where QUAL_WFL is
2695         a call_expr wrapped in a convert.  Fixes PR java/5848.
2696
2697 2002-03-12  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
2698
2699         * jcf-write.c (write_classfile): Improve error strings.
2700
2701 2002-03-11  Eric Blake  <ebb9@email.byu.edu>
2702
2703         * lex.c: Adjust comments to GNU standards.
2704
2705 2002-03-11  Eric Blake  <ebb9@email.byu.edu>
2706
2707         Fix for PR java/5902:
2708         * lex.c (java_lex): Fix parsing of literals.
2709
2710 2002-03-11  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
2711
2712         * parse.y (patch_assignment): Wrap the right-hand-side with a save_expr
2713         to prevent it getting evaluated twice in the store checking case.
2714         * expr.c (build_java_arraystore_check): Unwrap SAVE_EXPR's when
2715         examining OBJECT.
2716
2717 2002-03-09  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
2718
2719         * decl.c (java_init_decl_processing): Make sure class_type_node
2720         alignment is not less than 64 bits if hash synchronization is enabled.
2721
2722 2002-03-08  Per Bothner  <per@bothner.com>
2723
2724         * parse.y (java_complete_lhs):  Check if patch_assignment
2725         returned an error-mark.
2726
2727         * parse.y (try_builtin_assignconv):  Don't special-case zero.
2728
2729 2002-03-08  Per Bothner  <per@bothner.com>
2730
2731         Fix for PR java/5812.
2732         * expr.c (build_java_jsr):  Take pc arguments, and do lookup_label
2733         here instead of in JSR macro.  Likewise with load_type_state call.
2734         Do the latter on if the return_pc has been verified (the jsr returns).
2735         (JSR):  Now just call build_java_jsr.
2736
2737 2002-03-07  Jeff Sturm  <jsturm@one-point.com>
2738
2739         * java/Make-lang.in (JAVA_TARGET_INSTALL_NAME): Define.
2740         (java.install-common): Link native driver to
2741         JAVA_TARGET_INSTALL_NAME.
2742
2743 2002-03-05  David Billinghurst <David.Billinghurst@riotinto.com>
2744
2745         * builtins.c(cos_builtin): method_return_type ATTRIBUTE_UNUSED
2746         * builtins.c(sin_builtin): Likewise
2747         * builtins.c(sqrt_builtin): Likewise
2748
2749 2002-03-03  Zack Weinberg  <zack@codesourcery.com>
2750
2751         * java/expr.c, java/jcf-parse.c, java/lex.c:
2752         Remove all #ifndef REAL_ARITHMETIC blocks, make all #ifdef
2753         REAL_ARITHMETIC blocks unconditional.  Delete some further
2754         #ifdef blocks predicated on REAL_ARITHMETIC.
2755
2756 2002-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2757
2758         * class.c (init_class_processing): Use ARRAY_SIZE in lieu of
2759         explicit sizeof/sizeof.
2760         * decl.c (java_init_decl_processing): Likewise.
2761         * jcf-parse.c (init_jcf_parse): Likewise.
2762         * parse.y (init_src_parse): Likewise.
2763
2764 2002-03-02  Per Bothner  <per@bothner.com>
2765
2766         Make --CLASSPATH by a synonym for --classpath and -classpath.
2767         Implement --bootclasspath.
2768         * jcf-path.c (classpath_u):  Rename static variable to classpath_user.
2769         (classpath_l):  Remove.
2770         (jcf_path_CLASSPATH_arg):  Remove.
2771         (jcf_path_bootclasspath_arg):  New function.
2772         (jcf_path_seal):  Simplify accordingly.
2773
2774         * jcf.h (jcf_path_bootclasspath_arg):  New declarations.
2775         (jcf_path_CLASSPATH):  Remove declaration.
2776         * jvspec.c (jvgenmain_spec):  Also accept -fbootclasspath*.
2777         (lang_specific_driver):  Translate -bootclasspath.
2778         * lang-options.h:  Add --bootclasspath.  Update --CLASSPATH.
2779         * lang.c (decode_lang_options):  Do jcf_path_init first.
2780         Handle -fCLASSPATH same as -fclasspath.  Also process -fbootclasspath.
2781         * gjavah.c:  Also handle --bootclasspath.
2782         Handle --CLASSPATH as a synonum for --classpath.
2783         * jcf-dump.c: Likewise.
2784
2785         "." is not part of system path, but is the default for --classpath.
2786         * jcf-path.c (jcf_path_init):  Don't add "." to sys_dirs.
2787         (jcf_path_seal):  Add "." if no CLASSPATH specified.
2788
2789         * gcj.texi:  Document changes.
2790
2791 2002-03-01  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
2792
2793         * expr.c (build_java_arraystore_check): Fix formatting.
2794
2795 2002-02-28  Alexandre Petit-Bianco  <apbianco@redhat.com>
2796
2797         Fix for PR java/5758, java/5632:
2798         * jcf-parse.c (load_class): Renamed local variable, consider `.' an
2799         inner-class separator too.
2800         * parse.y (do_resolve_class): New local `decl_result.'
2801         Progressively build a name for what can have been loaded.
2802
2803 2002-02-28  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
2804
2805         * expr.c (java_array_data_offset): Removed function.
2806         (JAVA_ARRAY_LENGTH_OFFSET): Removed macro.
2807         (build_java_array_length_access): Obtain "length" value using a
2808         COMPONENT_REF, instead of INDIRECT_REF and arithmetic.
2809         (build_java_arrayaccess): Correct comment. Access "data" using a
2810         COMPONENT_REF, and return an ARRAY_REF instead of an INDIRECT_REF.
2811         (build_java_arraystore_check): New function.
2812         (expand_java_arraystore): Use build_java_arraystore_check.
2813         * parse.y (patch_assignment): Simplify code to insert a store check
2814         when lvalue is an ARRAY_REF. Use build_java_arraystore_check.
2815         * check-init.c (check_init): Update to reflect that an array length
2816         access is now a COMPONENT_REF.
2817         * gcj.texi (Code Generation): Improve documentation of
2818         -fno-bounds-check. Add documentation for -fno-store-check.
2819         * java-tree.h (flag_store_check): Declare.
2820         (build_java_arraystore_check): Declare.
2821         * lang.c (flag_store_check): Initialize to 1.
2822         (lang_f_options): Add store-check option.
2823         * jvspec.c: Don't pass store-check option to jvgenmain.
2824         * lang-options.h: Add help string for -fno-store-check.
2825
2826 2002-02-28  Neil Booth  <neil@daikokuya.demon.co.uk>
2827
2828         * decl.c (copy_lang_decl): Rename java_dup_lang_specific_decl.
2829         * java-tree.h (java_dup_lang_specific_decl): New.
2830         * lang.c (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Redefine.
2831
2832 2002-02-27  Zack Weinberg  <zack@codesourcery.com>
2833
2834         * builtins.c, decl.c: Delete traditional-mode-related code
2835         copied from the C front end but not used, or used only to
2836         permit the compiler to link.
2837
2838 2002-02-22  Tom Tromey  <tromey@redhat.com>
2839
2840         Fix for PR java/2369:
2841         * jvspec.c (verify_class_name): New function.
2842         (lang_specific_driver): Call it.
2843         (JAVA_START_CHAR_P): New macro.
2844         (JAVA_PART_CHAR_P): Likewise.
2845
2846 2002-02-22  Per Bothner  <per@bothner.com>
2847
2848         * class.c:  Change vtable to be more compatible with g++ v3 abi.
2849         (get_dispatch_table):  Prepend offset-to-top (always 0) and
2850         type_info pointer (currently unimplemented hence NULL) to vtable.
2851         Specifically, prepend offset-to-top and typeinfo ptr (currently null).
2852         (make_class_data):  Variable dtable_start_offset is sizeof 2 pointers.
2853         Adjust vtable pointers by dtable_start_offse - i.e. skip new words.
2854         (build_dtable_decl):  Add declarations for new fields.
2855
2856 2002-02-20  Per Bothner  <per@bothner.com>
2857
2858         * parse.y (patch_method_invocation): Set CAN_COMPLETE_NORMALLY on call
2859         to finit$ (otherwise generate_bytecode_insns drops it). However, we
2860         don't need to set it on the COMPOUND_EXPR - the caller does that.
2861
2862 2002-02-20  Nic Ferrier  <nferrier@tapsellferrier.co.uk>
2863
2864         * gcj.texi: Option `--classpath' becomes `--CLASSPATH.'Option
2865         `--CLASSPATH' becomes `--classpath.'
2866         * gjavah.c: Likewise.
2867         * jcf-dump.c: Likewise.
2868         * lang-options.h: Likewise.
2869         * lang.c: Likewise.
2870         * jcf-path.c: Updated comment.
2871         (jcf_path_classpath_arg): Renamed `jcf_path_CLASSPATH_arg.'
2872         (jcf_path_CLASSPATH_arg): Renamed `jcf_path_classpath_arg.'
2873         * jcf.h (jcf_path_CLASSPATH_arg): Ditto.
2874         (jcf_path_CLASSPATH_arg): Ditto.
2875         (classpath_u): Updated leading comment.
2876
2877 2002-02-20  Per Bothner  <per@bothner.com>
2878
2879         * builtins.c (check_for_builtin):  New function.
2880         (build_call_or_builtin):  Remove.
2881         * java-tree.h:  Update accordingly.
2882         * expr.c (expand_invoke):  Use build + check_for_builtin instead
2883         of build_call_or_builtin.
2884         * parse.y (patch_invoke):  Likewise.  This avoids needlessly creating
2885         a new CALL_EXPR node, which means we don't lose the CALL_USING_SUPER
2886         flag (which had caused jcf-write to incorrectly emit invokevirtual).
2887
2888 2002-02-17  Tom Tromey  <tromey@redhat.com>
2889
2890         * java-tree.h (TYPE_STRICTFP): New macro.
2891         (struct lang_type) [strictfp]: New field.
2892         (CLASS_STRICTFP): New macro.
2893         (METHOD_STRICTFP): New macro.
2894         (struct lang_decl) [strictfp]: New field.
2895         * parse.y (method_header): Disallow strictfp constructor or
2896         abstract method.
2897         (STRICT_TK): Move before MODIFIER_TK.
2898         * parse.h (CLASS_MODIFIERS): Added ACC_STRICT.
2899         (METHOD_MODIFIERS): Likewise.
2900         (INTERFACE_MODIFIERS): Likewise.
2901         * jcf-write.c (get_access_flags): Likewise.
2902         * class.c (set_class_decl_access_flags): Recognize ACC_STRICT.
2903         (add_method_1): Likewise.
2904         (get_access_flags_from_decl): Likewise.
2905         * jcf-dump.c (print_access_flags): Print in standard order.  Also,
2906         recognize strictfp flag.
2907         * jcf.h (ACC_STRICT): New define.
2908
2909 2002-02-12  David Billinghurst <Davod.Billinghurst@riotinto.com>
2910
2911         * class.c(build_utf8_ref): Move declaration of decl_size
2912
2913 2002-02-07  Tom Tromey  <tromey@redhat.com>
2914
2915         * gcj.texi (Input Options): --CLASSPATH does not suppress system
2916         path.
2917
2918 2002-02-04  Anthony Green  <green@redhat.com>
2919
2920         * class.c (build_utf8_ref): Put UTF-8 constants into merged
2921         sections if available.
2922
2923 2002-02-04  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
2924
2925         * parse.y (java_expand_classes): Fix typo in static field loop.
2926
2927 2002-02-02  Richard Henderson  <rth@redhat.com>
2928
2929         * class.c (add_field): Mark static fields external.
2930         (build_class_ref): Remove redundant set.
2931         * parse.y (java_expand_classes): Mark static fields of classes
2932         to be compiled as local.
2933         * jcf-parse.c (parse_class_file): Likewise.
2934
2935 2002-02-02  Nic Ferrier  <nferrier@tapsellferrier.co.uk>
2936
2937         * gcj.texi (About CNI): New node.
2938
2939 2002-02-01  Craig Rodrigues  <rodrigc@gcc.gnu.org>
2940
2941         PR java/5080
2942         * jcf-parse.c : Check for HAVE_LOCALE_H before using
2943         setlocale() with LC_CTYPE as a parameter.
2944         * jv-scan.c: Same.
2945
2946 2002-01-31  Joseph S. Myers  <jsm28@cam.ac.uk>
2947
2948         * gjavah.c (version), jcf-dump.c (version), jv-scan.c (version):
2949         Follow GNU Coding Standards for --version.
2950
2951 2002-01-28  Tom Tromey  <tromey@redhat.com>
2952
2953         * expr.c (build_jni_stub): Ensure storage for `meth' is
2954         generated.
2955         * parse.y (java_complete_expand_methods): Set
2956         current_function_decl before building JNI stub.
2957
2958 2002-01-26 Andreas Tobler <a.tobler@schweiz.ch>
2959
2960         * gcc/java/builtins.c (sqrt_builtin): Use BUILT_IN_SQRT, not
2961         BUILT_IN_SQRTF.
2962
2963 2002-01-22  Tom Tromey  <tromey@redhat.com>
2964
2965         * decl.c (java_init_decl_processing): Use add_predefined_file.
2966         Predefine RawData.java.
2967         (predef_filenames): Removed.
2968         (java_init_decl_processing): Don't register predef_filenames.
2969         * jcf-parse.c (add_predefined_file): New function.
2970         (predefined_filename_p): Rewrote.
2971         (predefined_filename_p): No longer static.
2972         * decl.c (java_init_decl_processing): Call initialize_builtins.
2973         * Make-lang.in (JAVA_OBJS): Added builtins.o.
2974         (java/builtins.o): New target.
2975         * builtins.c: New file.
2976         * parse.y (patch_invoke): Use build_call_or_builtin.
2977         * java-tree.h (build_call_or_builtin): Declare.
2978         (initialize_builtins): Declare.
2979         (java_set_exception_lang_code): Removed unused declaration.
2980         (PREDEF_FILENAMES_SIZE): Removed.
2981         (java_tree_index): Added JTI_PREDEF_FILENAMES.
2982         (predef_filenames): New define.
2983         (add_predefined_file): Declare.
2984         (predefined_filename_p): Declare.
2985         * expr.c (expand_invoke): Use build_call_or_builtin.
2986
2987 2002-01-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2988
2989         * parse.y (patch_switch_statement): Fix format specifier.
2990
2991 2002-01-16  Tom Tromey  <tromey@redhat.com>
2992
2993         More for PR java/5365:
2994         * gjavah.c (print_stub_or_jni): Cause exception to be thrown by
2995         default.
2996         (process_file): Generate include for
2997         java.lang.UnsupportedOperationExceptions.
2998
2999 2002-01-15  Andreas Jaeger  <aj@suse.de>
3000
3001         * .cvsignore: Add man pages.
3002
3003 2002-01-15  Tom Tromey  <tromey@redhat.com>
3004
3005         Fix for PR java/5365:
3006         * gjavah.c (process_file): Turn class name into a file name.
3007
3008 2002-01-14  Matthias Klose  <doko@debian.org>
3009
3010         * gcj.texi: Fix whitespace and formatting errors in the
3011         synopsis of the man pages. Update copyright.
3012
3013 2002-01-14  Tom Tromey  <tromey@redhat.com>
3014
3015         For PR libgcj/5303:
3016         * Make-lang.in (java.install-man): Handle jv-convert man page.
3017         (java.generated-manpages): Added jv-convert.1.
3018         (java.uninstall): Remove jv-convert.1.
3019         (java.maintainer-clean): Likewise.
3020         ($(srcdir)/java/jv-convert.1): New target.
3021         * gcj.texi (Top): Link to jv-convert node.
3022         (Individual utilities): Likewise.
3023         (Invoking jv-convert): New node.
3024
3025 2001-01-10  Jeff Sturm  <jsturm@one-point.com>
3026             Martin Kahlert  <martin.kahlert@infineon.com>
3027
3028         * jcf-parse.c (get_constant): Don't swap lo/hi for big
3029         endian targets when HOST_BITS_PER_WIDE_INT >= 64.
3030
3031 2002-01-03  Graham Stott  <grahams@redhat.com>
3032
3033         * class.c (compile_resource_file): Update copyright date.
3034         Constify filename parameter.
3035         (java-tree.h): Update copyright date.
3036         (compile_resource_file): Constify filename parameter.
3037
3038 2002-01-03  Graham Stott  <grahams@redhat.com>
3039
3040         * gcc/jcf-parse.c: Update copyright date.
3041         (yyparse): Constify resource_filename.
3042
3043 2002-01-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3044
3045         * parse.y (src_parse_roots): Don't needlessly zero init.
3046
3047 2001-12-31  Tom Tromey  <tromey@redhat.com>
3048
3049         * parse.y (dump_java_tree): New function.
3050         (source_end_java_method): Call it.
3051         (end_class_declaration): Likewise.
3052         * lang.c (java_decode_option): Call dump_switch_p.
3053
3054 2001-12-28  Tom Tromey  <tromey@redhat.com>
3055
3056         * gen-table.pl: Don't process characters after \uffff.  Added
3057         comment pointing to input file.
3058
3059 2001-12-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3060
3061         * gen-table.pl: Const-ify output.  Document the location of a
3062         suitable unicode input file.
3063
3064         * chartables.h: Regenerate.
3065
3066 2001-12-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3067
3068         * chartables.h: Const-ify.
3069         * gjavah.c (options): Likewise.
3070         * jcf-dump.c (options): Likewise.
3071         * jv-scan.c (options): Likewise.
3072         * lex.c (java_start_char_p, java_part_char_p): Likewise.
3073         * parse.y (binop_lookup): Likewise.
3074
3075 2001-12-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3076
3077         * Make-lang.in (keyword.h): Pass -C to gperf to const-ify
3078         the static arrays that are output.
3079         * jvspec.c (jvgenmain_spec): Make static.
3080         * keyword.gperf (struct java_keyword, java_keyword): Const-ify.
3081         * keyword.h: Regenerate.
3082         * lang.c (string_option, process_option_with_no, lang_f_options,
3083         lang_W_options): Const-ify.
3084         * lex.c (java_lex): Likewise.
3085
3086 2001-12-21  Richard Henderson  <rth@redhat.com>
3087
3088         * boehm.c (PROCEDURE_OBJECT_DESCRIPTOR): Merge into ..
3089         (get_boehm_type_descriptor): ... here.  Arrange for the
3090         TREE_TYPE to get set properly.
3091
3092 2001-12-21  Richard Henderson  <rth@redhat.com>
3093
3094         * class.c (compile_resource_file): Set TREE_PUBLIC on the constructor
3095         only if the target requires collect2.
3096
3097         * class.c (build_class_ref): Mark _Jv_fooClass DECL_EXTERNAL.
3098
3099 2001-12-20  Tom Tromey  <tromey@redhat.com>
3100
3101         For PR java/4509:
3102         * parse.y (java_complete_lhs) [COMPOUND_EXPR]: Correctly compute
3103         CAN_COMPLETE_NORMALLY for the node.
3104         * jcf-write.c (generate_bytecode_insns) [COMPOUND_EXPR]: Don't
3105         generate code for second branch if first branch can't complete
3106         normally.
3107         (generate_bytecode_insns) [LOOP_EXPR]: Don't generate `goto' to
3108         the loop head if the loop body can't complete normally.
3109
3110 2001-12-20  Tom Tromey  <tromey@redhat.com>
3111
3112         For PR java/4766:
3113         * jcf-write.c (generate_bytecode_insns) [TRY_FINALLY_EXPR]: Handle
3114         case where `finally' clause can't complete normally.
3115
3116 2001-12-20  Tom Tromey  <tromey@redhat.com>
3117
3118         Fixes PR java/5057:
3119         * parse.y (analyze_clinit_body): Added this_class parameter.
3120         Check for more cases where we must keep <clinit>.
3121         (maybe_yank_clinit): Cleaned up flow control.
3122
3123 2001-12-20  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
3124
3125         * decl.c (java_init_decl_processing): Don't initialize
3126         finit_leg_identifier_node.
3127         * java-tree.h (java_tree_index): Remove JTI_FINIT_LEG_IDENTIFIER_NODE.
3128         (finit_leg_identifier_node): Remove.
3129         (ID_FINIT_P): Don't check for JTI_FINIT_LEG_IDENTIFIER_NODE.
3130
3131 2001-12-20  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
3132
3133         * mangle.c (mangle_member_name): Don't special-case for
3134         NO_DOLLAR_IN_LABEL.
3135         * mangle_name.c (unicode_mangling_length): Likewise.
3136         (append_unicode_mangled_name): Likewise.
3137         * parse.y (make_nested_class_name): Remove dead NO_DOLLAR_IN_LABEL
3138         code.
3139
3140 2001-12-20  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
3141
3142         * expr.c (build_java_array_length_access): Don't force null pointer
3143         check unless flag_check_references is set.
3144
3145 2001-12-20  Tom Tromey  <tromey@redhat.com>
3146
3147         Fix for PR java/3417:
3148         * parse.y (patch_assignment): Added special processing for
3149         `return'.
3150         (patch_return): Don't convert booleans to integers, and don't
3151         special-case `null'.
3152
3153 2001-12-20  Joseph S. Myers  <jsm28@cam.ac.uk>
3154
3155         * config-lang.in (diff_excludes): Remove.
3156
3157 2001-12-17  Joseph S. Myers  <jsm28@cam.ac.uk>
3158
3159         * gcj.texi: Update link to GCC manual.
3160
3161 2001-12-17  Tom Tromey  <tromey@redhat.com>
3162
3163         * parse.y (link_nested_class_to_enclosing): Removed useless
3164         statement.
3165
3166 2001-12-16  Tom Tromey  <tromey@redhat.com>
3167
3168         * mangle.c (mangle_method_decl): Never emit `C2' constructor.
3169         Fixes PR java/5088.
3170
3171 2001-12-16  Joseph S. Myers  <jsm28@cam.ac.uk>
3172
3173         * ChangeLog, Make-lang.in, class.c, expr.c, gcj.texi, java-tree.h,
3174         jcf-parse.c, jcf-write.c, lex.c, parse.h, parse.y, verify.c: Fix
3175         spelling errors.
3176
3177 2001-12-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3178
3179         * lex.c (java_read_unicode, java_lex): Use hex_p/hex_value.
3180
3181 2001-12-16  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
3182
3183         * decl.c (java_init_decl_processing): Build otable_type correctly.
3184         otable_decl is an otable_type.
3185
3186 2001-12-15  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
3187
3188         * java-tree.h (otable_methods, otable_decl, otable_syms_decl,
3189         otable_type, otable_ptr_type, method_symbol_type,
3190         method_symbols_array_type, method_symbols_array_ptr_type): New
3191         field/global tree definitions.
3192         (flag_indirect_dispatch): New flag.
3193         * decl.c (java_init_decl_processing): Initialize new otable and
3194         otable_syms type nodes and decls. Add new field "index" to
3195         method_type_node.
3196         * class.c (build_method_symbols_entry): New function.
3197         (make_method_value): Set "index" to to method's vtable index for
3198         virtual methods when indirect-dispatch is not used.
3199         (make_class_data): For indirect-dispatch, don't emit the dtable_decl,
3200         and set vtable_method_count to -1. Set otable and otable_syms field
3201         if indirect-dispatch is used and there was something to put in them.
3202         (build_method_symbols_entry): New function.
3203         (emit_offset_symbol_table): New function.
3204         * expr.c (get_offset_table_index): New function.
3205         (build_invokevirtual): Build array reference to otable at the index
3206         returned by get_offset_table_index, and use the result as the vtable
3207         offset.
3208         (build_invokeinterface): Similar.
3209         * jcf-parse.c (yyparse): If indirect-dispatch, call
3210         emit_offset_symbol_table at the end of compilation, after all classes
3211         have been generated.
3212         * jvspec.c: Don't pass findirect-dispatch to jvgenmain.
3213         * lang.c (flag_indirect_dispatch): Define.
3214         (lang_f_options): Add indirect-dispatch flag.
3215
3216 2001-12-14  Matthias Klose  <doko@debian.org>
3217
3218         * gcj.texi: Markup for man page generation. Document missing
3219         options printed by <tool> --help.
3220         Terminate description of gij's -ms option with a dot.
3221         * Make-lang.in ($(srcdir)/java/*.1): New targets.
3222         (java.generated-manpages java.install-man, java.uninstall,
3223         java-maintainer-clean) Updated.
3224
3225 2001-12-14  Hans Boehm  <Hans_Boehm@hp.com>
3226
3227         * class.c (get_dispatch_table): Fix java vtable layout
3228         for TARGET_VTABLE_USES_DESCRIPTORS.
3229         * decl.c (java_init_decl_processing): Initialize
3230         alloc_no_finalizer_node, finalize_identifier_node.
3231         * expr.c (class_has_finalize_method): New function.
3232         (expand_java_NEW): Generate calls for finalizer-free allocation.
3233         (build_invokevirtual): Fix java vtable layout for
3234         TARGET_VTABLE_USES_DESCRIPTORS.
3235         * java-tree.h (enum java_tree_index): New entries:
3236         JTI_ALLOC_NO_FINALIZER_NODE, JTI_FINALIZE_IDENTIFIER_NODE.
3237         (alloc_no_finalizer_node, finalize_deintifier_node): New macros.
3238         (class_has_finalize_method): declare.
3239         (HAS_FINALIZER_P): New macro.
3240         * parse.y (patch_invoke): Generate calls for finalizer-free
3241         allocation.
3242
3243 2001-12-12  Matthias Klose  <doko@debian.org>
3244
3245         * Make-lang.in: JAVA_INSTALL_NAME, JAVA_CROSS_NAME: Remove
3246         whitespace at end of line.
3247
3248 2001-12-11  Tom Tromey  <tromey@redhat.com>
3249
3250         * lex.c (java_init_lex): Define wfl_to_string as
3251         gnu.gcj.runtime.StringBuffer unless generating bytecode.
3252
3253 2001-12-11  Jeff Sturm  <jsturm@one-point.com>
3254
3255         * class.c (make_method_value): Use null_pointer_node to
3256         represent empty exception table.
3257
3258 2001-12-10  Tom Tromey  <tromey@redhat.com>
3259
3260         * check-init.c (check_init) [SWITCH_EXPR]: Use SWITCH_HAS_DEFAULT.
3261
3262 2001-12-10  Douglas B. Rupp  <rupp@gnat.com>
3263
3264         * Make-lang.in (jvspec.o): Add $(OUTPUT_OPTION).
3265
3266 2001-12-09  Per Bothner  <per@bothner.com>
3267
3268         * check-init.c (current_switch_has_default):  New static field.
3269         (check_init):  Case DEFAULT_EXPR: Set current_switch_has_default.
3270         Case SWITCH_EXPR:  Save/restore current_switch_has_default.  If no
3271         DEFAULT_EXPR seen, simulate a default alternative that copies state.
3272
3273 2001-12-09  Tom Tromey  <tromey@redhat.com>
3274
3275         * check-init.c (check_init): Don't allow pre- or post- increment
3276         or decrement of final variable.
3277         (final_assign_error): Minor error message rewording.
3278
3279 2001-12-08  Tom Tromey  <tromey@redhat.com>
3280
3281         * java-tree.h: Fixed typo.
3282
3283         * gjavah.c (decompile_method): Don't decompile to `return this'
3284         for static methods.
3285
3286         * gjavah.c (cxx_keywords): Re-sorted.
3287         * lex.c (cxx_keywords): Re-sorted.
3288
3289         * gjavah.c (HANDLE_METHOD): Set `decompiled' before doing anything
3290         else.
3291
3292         * gjavah.c (print_namelet): Clear subnamelets.
3293         (HANDLE_METHOD): Set `method_printed' earlier.
3294
3295 2001-12-07  Tom Tromey  <tromey@redhat.com>
3296
3297         * lang.c (lang_f_options): Added
3298         optimize-static-class-initialization.
3299         (java_decode_option): Removed special case.
3300
3301 2001-12-07  Per Bothner  <per@bothner.com>
3302
3303         * check-init.c (check_init):  Fix typo freeing memory twice.
3304
3305 2001-12-05  Per Bothner  <per@bothner.com>
3306
3307         Restore support for static class initialization optimization.
3308         * java-tree.h (STATIC_CLASS_INIT_OPT_P): Re-enable.
3309         * check-init.c (check_int):  At end of BLOCK handle initialization
3310         blocks, which used to be done in java_complete_expand_method but did
3311         not handle the case where check_for_initialization might allocate
3312         more than a word of bits.
3313         * decl.c (lang_make_tree):  The smic field is now a tree.
3314         * expr.c (build_class_init):  Set DECL_FUNCTION_INIT_TEST_CLASS field.
3315         * java-tree.h (DECL_FUNCTION_INIT_TEST_TABLE):  New macro.
3316
3317         * parse.y (emit_test_initialization):  Combine hash_lookup calls.
3318
3319         * java-tree.h (DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND):
3320         Change from a hash table to a list.
3321         (struct_lang_decl):  Change field 'smic' to match.
3322         * class.c (add_method_1):  Initialize
3323         DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND to null list.
3324         * parse.y (adjust_init_test_initialization):  Removed - inlined into -
3325         (java_expand_method_bodies): -here, since 'smic' is now a list.
3326         (patch_invoke):  Add to 'smic' list, instead of hash_lookup.
3327
3328         * check-init.c (WORD_SIZE):  Use BITS_PER_UNIT.
3329
3330         * class.c (java_hash_compare_tree_node):  Fix casts.
3331
3332 2001-12-04  Per Bothner  <per@bothner.com>
3333
3334         * check-init.c:   Handle definite unassignment to finals in addition
3335         to definite assignment.
3336         (loop_current_locals):  New field.
3337         (num_current_locals, int start_current_locals, num_current_words):
3338         Make static.
3339         (SET_P, CLEAR_P, SET_BIT):  Add needed but missing parentheses.
3340         (ASSIGNED_P, UNASSIGNED_P, SET_ASSIGNED, SET_UNASSIGNED,
3341         CLEAR_ASSIGNED, CLEAR_UNASSIGNED):  New macros.
3342         (get_variable_decl, check_final_reassigned):  New functions.
3343         (check_init, check_bool_init):  Modify as needed for checking finals.
3344         (check_for_initialization):  Take extra parameter and return void.
3345         Do extra start-up logic to check final fields for assignment.
3346         * parse.y (check_static_final_variable_assignment_flag,
3347         reset_static_final_variable_assignment_flag, check_final_assignment,
3348         check_final_variable_local_assignment_flag,
3349         reset_final_variable_indirect_assignment_flag,
3350         reset_final_variable_global_assignment_flag):  Remove functions.
3351         (java_complete_expand_methods, outer_field_access_fix,
3352         patch_assignment): Remove no-longer used logic.
3353         * java-tree.h (DECL_FIELD_FINAL_IUD):  Change usage and comments.
3354         * parse.y (register_fields, java_complete_tree):  Update accordingly.
3355
3356         * check-init.c (ALLOC_WORDS/FREE_WORDS):  Use xmalloc/free, not alloca.
3357         (DECLARE_BUFFERS, RELEASE_BUFFERS, ALLOC_BUFFER, FREE_BUFFER):  New.
3358         (check_cond_init, check_bool2_init):  Use DECLARE_BUFFERS.
3359
3360         * java-tree.h (STATIC_CLASS_INIT_OPT_P):  Temporarily turn off.
3361
3362         * java-tree.h (DECL FINAL):  New bit-field.
3363         (METHOD_FINAL, FIELD_FINAL, CLASS_FINAL):  Define as DECL_FINAL.
3364         (LOCAL_FINAL_P):  Use DECL_FINAL rather than old LOCAL_FINAL.
3365         (DECL_INIT_CALLS_THIS):  New macro.
3366         (struct lang_decl):  New bit-field init_calls_this.
3367         (DECL_FUNCTION_ALL_FINAL_INITIALIZED, DECL_FIELD_FINAL_LIIC,
3368         DECL_FIELD_FINAL_IERR, LOCAL_FINAL, TYPE_HAS_FINAL_VARIABLE
3369         (DECL_BIT_INDEX):  Change to use pointer_alias_set since we now
3370         use it for both local variables and final fields.
3371         (struct lang_decl_var):  Remove bit-fields final_liic, final_ierr,
3372         and local_final.
3373         (struct lang_type):  Remove hfv bit-field.
3374         (check_for_initialization):  Change to return void.
3375
3376         * java-tree.h (IS_ARRAY_LENGTH_ACCESS):  New macros.
3377         * expr.c (build_java_array_length_access):  Set IS_ARRAY_LENGTH_ACCESS.
3378         * check-init.c (final_assign_error):  New helper function.
3379         (check_final_reassigned, check_init):  Use it.
3380         (check_init):  Also check IS_ARRAY_LENGTH_ACCESS for ARRAY.length.
3381
3382         * java-tree.h (struct lang_decl, struct lang_decl_var):  Change all
3383         bit-fields to unsigned.
3384
3385 2001-12-03  Per Bothner  <per@bothner.com>
3386
3387         * parse.y (patch_binop):  Minor constant folding.
3388
3389         * parse.y (build_current_thisn):  Shorter 'buffer'.
3390
3391 2001-12-03  Per Bothner  <per@bothner.com>
3392
3393         * decl.c (complete_start_java_method):  Now generate TRY_FINALLY_EXPR
3394         instead of CLEANUP_POINT_EXPR and WITH_CLEANUP_EXPR.
3395         * jcf-write.c (generate_bytecode_insns):  Remove support for
3396         CLEANUP_POINT_EXPR and WITH_CLEANUP_EXPR as they are no longer used.
3397         * check-init.c (check_init):  Likewise.
3398
3399 2001-12-03  Per Bothner  <per@bothner.com>
3400
3401         * verify.c (subroutine_nesting):  New function.
3402         (verify_jvm_instructions):  Use it to fix logic for checking that
3403         we're done with the current subroutine.
3404
3405         * verify.c (verify_jvm_instruction): For OPCODE_checkcast and
3406         OPCODE_instanceof use POP_TYPE macro for better diagnostics.
3407
3408 2001-12-03  Per Bothner  <per@bothner.com>
3409
3410         * jcf.h:  Fix obvious typo in comment.
3411         * typeck.c (build_null_signature):  Add comment.
3412
3413 2001-12-03  Neil Booth  <neil@daikokuya.demon.co.uk>
3414
3415         * expr.c: Remove leading capital from diagnostic messages, as
3416         per GNU coding standards.
3417         * jcf-io.c: Similarly.
3418         * jcf-parse.c: Similarly.
3419         * jv-scan.c: Similarly.
3420         * jvspec.c: Similarly.
3421         * mangle.c: Similarly.
3422
3423 2001-12-02  Tang Ching-Hui  <nicholas@cs.nthu.edu.tw>
3424             Alexandre Petit-Bianco  <apbianco@redhat.com>
3425
3426         * expr.c (build_java_arrayaccess): Call save_expr on array for
3427         correct evaluation order, modified comment, fixed indentation.
3428         * parse.y: (patch_assignment): Correctly extract the array base
3429         from the tree generate by build_java_arrayaccess, added comments.
3430         (patch_array_ref): Remove SAVE_EXPR on ARRAY_REF.
3431         Fixes PR java/3096, PR java/3803, PR java/3965.
3432
3433 2001-12-01  Neil Booth  <neil@daikokuya.demon.co.uk>
3434
3435         * expr.c (expand_byte_code): Remove trailing periods from messages.
3436         * jcf-parse.c (load_class, jcf_parse): Similarly.
3437         * jcf-write.c (generate_classfile): Similarly.
3438         * lex.c (java_lex): Similarly.
3439
3440 2001-11-30  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
3441
3442         * class.c (add_interface_do): Set BINFO_VPTR_FIELD.
3443
3444 2001-11-29  Joseph S. Myers  <jsm28@cam.ac.uk>
3445
3446         * Make-lang.in (java.generated-manpages): New dummy target.
3447
3448 2001-11-27  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
3449
3450         * jvspec.c (jvgenmain_spec): Cannot use %umain, breaks
3451         ASM_FINAL_SPEC.
3452         (lang_specific_pre_link): Use set_input to set input_filename.
3453         Append `main' here.
3454         * jvgenmain.c (usage): Append literal `main' to CLASSNAME.
3455         (main): Fix definition.
3456         Strip `main' from classname.
3457         Fixes PR java/227.
3458
3459 2001-11-18  Roger Sayle <roger@eyesopen.com>
3460
3461         * parse.h (java_expand_switch): Remove old prototype.
3462
3463 2001-11-18  Tom Tromey  <tromey@redhat.com>
3464
3465         Fix for PR java/1401:
3466         * jcf-write.c (generate_bytecode_insns) [binop]: Handle case where
3467         arg0 is null.
3468         (generate_bytecode_insns) [MODIFY_EXPR]: Handle `OP=' case
3469         correctly.
3470
3471 2001-11-18  Neil Booth  <neil@daikokuya.demon.co.uk>
3472
3473         * lang.c (finish_parse): Rename to java_finish.
3474         (LANG_HOOKS_FINISH, java_finish): New.
3475
3476 2001-11-15  Neil Booth  <neil@daikokuya.demon.co.uk>
3477
3478         * decl.c (init_decl_processing): Rename java_init_decl_processing.
3479         * java-tree.h: New prototype.
3480         * lang.c (java_init): Update prototype.  Combine with old init_parse.
3481
3482 2001-11-13  Tom Tromey  <tromey@redhat.com>
3483
3484         * gjavah.c (method_signature): New global.
3485         (HANDLE_METHOD): Set it.
3486         (decompile_return_statement): New function.
3487         (decompile_method): Use it.
3488         (print_method_info): Removed `synth' argument.
3489
3490 2001-11-09  Neil Booth  <neil@daikokuya.demon.co.uk>
3491
3492         * java-tree.h (java_set_yydebug): New.
3493         * jcf-parse.c (set_yydebug): Rename java_set_yydebug.
3494         * lang.c (LANG_HOOKS_SET_YYDEBUG): Override.
3495         (print_lang_decl, print_lang_type, print_lang_identifier,
3496         print_lang_statistics, lang_print_xnode): Remove.
3497
3498 2001-11-09  Neil Booth  <neil@daikokuya.demon.co.uk>
3499
3500         * jcf-parse.c (init_lex): Remove.
3501         * lang.c (language_string, lang_identify): Remove.
3502         (struct lang_hooks): Constify.
3503         (LANG_HOOKS_NAME): Override.
3504         (init_parse): Update.
3505
3506 2001-11-08  Andreas Franck  <afranck@gmx.de>
3507
3508         * Make-lang.in (JAVA_INSTALL_NAME, JAVA_CROSS_NAME): Handle
3509         program_transform_name the way suggested by autoconf.
3510         (java.install-common): Also transform auxiliary program names with
3511         program_transform_name.
3512
3513 2001-11-08  Tom Tromey  <tromey@cygnus.com>
3514
3515         * parse.y (trap_overflow_corner_case): New rule.
3516         (unary_expression): Use it.
3517         * lex.c (java_init_lex): Don't set minus_seen.
3518         (yylex): Don't use minus_seen.  Communicate overflow to parser for
3519         it to handle.
3520         (error_if_numeric_overflow): New function.
3521         * parse.h (minus_seen): Removed field.
3522         (JAVA_RADIX10_FLAG): New define.
3523
3524 2001-11-07  Tom Tromey  <tromey@redhat.com>
3525
3526         Patch for PR java/1414:
3527         * parse.y (case_label_list): New global.
3528         (goal): Register case_label_list with GC.
3529         (java_complete_lhs): Save new case on case_label_list.
3530         (patch_switch_statement): Check for duplicate case labels.
3531
3532 2001-11-07  Alexandre Petit-Bianco  <apbianco@redhat.com>
3533
3534         * parse.y (patch_assignment): Removed unused third argument.
3535         (java_complete_lhs): Removed unused third argument to patch_assignment.
3536
3537 2001-11-06  Neil Booth  <neil@cat.daikokuya.demon.co.uk>
3538
3539         * lang.c: Include langhooks-def.h.
3540         * Make-lang.in: Update.
3541
3542 2001-10-31  Zack Weinberg  <zack@codesourcery.com>
3543
3544         * Make-lang.in: Replace $(INTL_TARGETS) with po-generated.
3545
3546 2001-10-29  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
3547
3548         * mangle.c (find_compression_record_match): Don't match compression
3549         records for package name elements unless they occur at the start of
3550         the name. Fix for PR java/4717.
3551
3552 2001-10-25  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
3553
3554         * expr.c (expand_java_field_op): Don't special-case references to
3555         java.lang.PRIMTYPE.TYPE.
3556         (build_primtype_type_ref): Removed.
3557         * java-tree.h (build_primtype_type_ref): Remove prototype.
3558         * parse.y (maybe_build_primttype_type_ref): Removed.
3559         (complete_function_arguments): Don't special-case references to
3560         java.lang.PRIMTYPE.TYPE.
3561         (patch_assignment): Likewise.
3562         (array_constructor_check_entry): Likewise.
3563
3564 2001-10-24  Alexandre Petit-Bianco  <apbianco@redhat.com>
3565
3566         * mangle.c (static tree compression_table): Fixed leading comment.
3567         * parse.h (struct parser_ctxt): Fixed field comment.
3568         * parse.y (check_pkg_class_access): New prototype, fixed leading
3569         comment, new parameter used to emit error only if passed as true.
3570         (parse_check_super): Pass extra argument to check_pkg_class_access.
3571         (do_resolve_class): Likewise.
3572         (process_imports): Likewise.
3573         (read_import_dir): Fixed indentation.
3574         (find_in_imports_on_demand): New local class_type_name. Local
3575         node_to_use deleted. while loop changed into for loop. Report
3576         multiple definition only for accessible classes. Improved error
3577         message.
3578         (start_complete_expand_method): Local `ptr' removed. DECL_ARGUMENTS
3579         assigned to parameter list, fixed indentation. while loop changed
3580         into for loop, restore TREE_CHAIN on local `tem' before the next
3581         iteration.
3582
3583 2001-10-23  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
3584
3585         * lang.c (lang_get_alias_set): Deleted.
3586
3587 2001-10-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3588
3589         * gjavah.c (jni_print_char): Fix thinko in last change.
3590
3591         * gjavah.c (jni_print_char, decode_signature_piece): Use
3592         safe-ctype macros and/or fold extra calls into fewer ones.
3593         * lex.c (java_read_unicode, java_lex): Likewise.
3594         * lex.h (JAVA_START_CHAR_P, JAVA_PART_CHAR_P, JAVA_ASCII_DIGIT,
3595         JAVA_ASCII_HEXDIGIT, JAVA_ASCII_LETTER): Likewise.
3596         * mangle_name.c (append_unicode_mangled_name,
3597         unicode_mangling_length): Likewise.
3598
3599 2001-10-17  Richard Henderson  <rth@redhat.com>
3600
3601         * Make-lang.in (java/lang.o): Depend on langhooks.h.
3602
3603 2001-10-15  Alexandre Petit-Bianco  <apbianco@redhat.com>
3604
3605         * lang.c (langhooks.h): Included.
3606         (LANG_HOOKS_INIT): Redefined.
3607         (LANG_HOOKS_INIT_OPTIONS): Likewise.
3608         (LANG_HOOKS_DECODE_OPTION): Likewise.
3609         (struct lang_hooks lang_hooks): New initialization.
3610
3611 2001-10-11  Per Bothner  <per@bothner.com>
3612
3613         * parse.y (patch_synchronized_statement):  Use a TRY_FINALLY_EXPR
3614         rather than a CLEANUP_POINT_EXPR/WITH_CLEANUP_EXPR pair.
3615         The former is simpler, and jcf-write.c handles it better.
3616         (java_complete_lhs):  No longer need to handle CLEANUP_POINT_EXPR
3617         or WITH_CLEANUP_EXPR.
3618         * jcf-write.c:  Revert Alex's change from 2000-10-18.  It is no
3619         longer needed, as we already handle empty TRY_FINALLY_EXPR bodies fine.
3620
3621         * parse.y (patch_if_else_statement):  If the condition is constant,
3622         optimize away the test.
3623
3624 2001-10-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
3625
3626         * parse.y (patch_cast): Call patch_string on the first operand of
3627         the incoming node, update it if necessary. Fixes PR java/4510.
3628
3629 2001-10-09  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
3630
3631         * parse.y (find_as_inner_class): Don't disregard the enclosing scope
3632         when name qualifier matches a package name.
3633
3634 2001-10-08  Tom Tromey  <tromey@redhat.com>
3635
3636         Fix for PR java/4489:
3637         * jcf-write.c (generate_bytecode_insns) [SWITCH_EXPR]: Always
3638         force a new label when computing `body_block'.
3639
3640 2001-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3641
3642         * jcf-io.c (format_uint): Const-ify.
3643         * lang.c (java_tree_code_type, java_tree_code_length): Likewise.
3644         * lex.c (java_get_line_col): Likewise.
3645         * parse.y (build_incdec): Likewise.
3646
3647 2001-10-05  Alexandre Petit-Bianco  <apbianco@redhat.com>
3648
3649         * parse.y (register_incomplete_type): Set JDEP_SUPER to be given
3650         a NULL enclosing context if appropriate. Fixes PR java/4466.
3651
3652 2001-10-03  Alexandre Petit-Bianco  <apbianco@redhat.com>
3653
3654         * parse.y (patch_assignment): Use lvalue's original TYPE when
3655         building the final COMPOUND_EXPR.
3656         (try_reference_assignconv): Fixed leading comment.
3657
3658 2001-09-26  Alexandre Petit-Bianco  <apbianco@redhat.com>
3659
3660         * parse.y (check_final_variable_indirect_assignment): For
3661         COMPOUND_EXPR, return only if finals were found initialized
3662         properly, if not, keep on checking.
3663         (check_final_variable_global_assignment_flag): New local
3664         error_found, set when appropriate and used to decide whether to
3665         report uninitialized finals. Fixed typo in comment.
3666
3667 2001-09-22  Alexandre Petit-Bianco  <apbianco@redhat.com>
3668
3669         * decl.c (init_decl_processing): Fixed typo in predef_filenames
3670         last three initializations. Fixes PR java/4360.
3671
3672 2001-09-21  Richard Henderson  <rth@redhat.com>
3673
3674         * class.c (get_dispatch_table): Handle function descriptors.
3675         (build_dtable_decl): Likewise.
3676         * expr.c (build_invokevirtual): Likewise.
3677
3678 2001-09-20  Alexandre Petit-Bianco  <apbianco@redhat.com>
3679
3680         * parse.y (patch_method_invocation): Build class initialization
3681         when static finals are used to qualify method invocation.
3682         Fixes PR java/4366.
3683
3684 2001-09-19  Alexandre Petit-Bianco  <apbianco@redhat.com>
3685
3686         * parse.h: (WFL_STRIP_BRACKET): Re-written using
3687         build_type_name_from_array_name.
3688         (STRING_STRIP_BRACKETS): New macro.
3689         * parse.y (build_type_name_from_array_name): New function.
3690         (array_creation_expression:): Accumulate []s instead of [s.
3691         (cast_expression:): Accumulate []s instead of [s after cast type
3692         name.
3693         (build_array_from_name): Local string deleted, use
3694         build_type_name_from_array_name.
3695         (build_unresolved_array_type): Accumulate []s instead of [s after
3696         type name.
3697         (register_fields): Fixed comment.
3698         (resolve_class): Local name, base deleted, new locals tname and
3699         array_dims. Use build_type_name_from_array_name. Use array_dims to
3700         build array type.
3701         (purify_type_name): Use STRING_STRIP_BRACKETS.
3702
3703 2001-09-18  Andreas Jaeger  <aj@suse.de>
3704
3705         * parse.y: Use VA_OPEN/VA_CLOSE/VA_FIXEDARG throughout.
3706         * jv-scan.c: Likewise.
3707
3708 2001-09-17  Alexandre Petit-Bianco  <apbianco@redhat.com>
3709
3710         * parse.y (patch_method_invocation): Inner class creation context
3711         check not enforced within constructors. Fixes PR java/1873.
3712
3713 2001-09-16  Tom Tromey  <tromey@redhat.com>
3714
3715         * jcf-write.c (generate_bytecode_insns) [SWITCH_EXPR]: Call
3716         NOTE_PUSH for single-case push.  Fixes PR java/4189.
3717
3718 2001-09-13  Alexandre Petit-Bianco  <apbianco@redhat.com>
3719
3720         * java-tree.h (TYPE_IMPORT_LIST): New macro.
3721         (TYPE_IMPORT_DEMAND_LIST): Likewise.
3722         (struct lang_type): New fields import_list and import_demand_list.
3723         * parse.y (java_complete_class): Initialize TYPE_IMPORT_LIST and
3724         TYPE_IMPORT_DEMAND_LIST with ctxp counterparts.
3725         (do_resolve_class): New local saved_enclosing_type, initialized,
3726         passed as parameter to find_in_imports and find_in_imports_on_demand.
3727         (find_in_imports): Added paramater enclosing_type, use its
3728         TYPE_IMPORT_LIST when applicable.
3729         (find_in_imports_on_demand): Added parameter enclosing_type, use
3730         its TYPE_IMPORT_DEMAND_LIST when applicable. Reorganized locals
3731         declaration and initialization.
3732         (fold_constant_for_init): Switch/restore current_class to the
3733         appropriate context.
3734
3735 2001-09-13  Mark Mitchell  <mark@codesourcery.com>
3736
3737         * verify.c (verify_jvm_instructions): Fix typo.
3738
3739 2001-09-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3740
3741         * expr.c (expand_invoke): Const-ification.
3742         * parse.y (patch_method_invocation): Likewise.
3743
3744 2001-09-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3745
3746         * gjavah.c (cxx_keywords): Const-ification.
3747         * keyword.gperf (java_keyword): Likewise.
3748         * lang.c (java_tree_code_name): Likewise.
3749         * lex.c (cxx_keywords): Likewise.
3750         * parse.y (java_parser_context_suspend, merge_string_cste): Likewise.
3751
3752 2001-09-11  Richard Henderson  <rth@redhat.com>
3753
3754         * parse.h (ctxp_for_generation): Mark extern.
3755
3756 2001-09-10  Richard Henderson  <rth@redhat.com>
3757
3758         * class.c (build_class_ref): Set DECL_EXTERNAL before make_decl_rtl.
3759
3760 2001-09-07  Matt Kraai  <kraai@alumni.carnegiemellon.edu>
3761
3762         * typeck.c (java_array_type_length, build_prim_array_type):
3763         Represent empty arrays by NULL index.
3764
3765 2001-09-06  Alexandre Petit-Bianco  <apbianco@redhat.com>
3766
3767         * java-tree.h (compile_resource_file): Grouped with other prototypes.
3768         * jvspec.c (lang_specific_driver): Removed unused local `ptr.'
3769
3770 2001-09-06  Anthony Green  <green@redhat.com>
3771
3772         * class.c (O_BINARY): Define if necessary.
3773         (registerResource_libfunc): Declare.
3774         (init_class_processing): Initilize registerResource_libfunc.
3775         (compile_resource_file): New function.
3776         * java-tree.h (resource_name): Declare.
3777         (compile_resource_file): Declare.
3778         * jcf-parse.c (yyparse): Handle compiling java resource files.
3779         * lang.c (java_decode_option): Handle -fcompile-resource option.
3780         * jvspec.c (lang_specific_driver): Handle -R flag for compiling
3781         resource files.
3782         * gcj.texi (Code Generation): Add documentation for -R flag.
3783
3784 2001-09-05 Alexandre Petit-Bianco  <apbianco@redhat.com>
3785
3786         * jcf-write.c (generate_classfile): Issue an error in case of
3787         field/initial value mismatch.
3788         * parse.y (analyze_clinit_body): Keep <clinit> if an array is
3789         being initialized and we're generating bytecode.
3790         (java_complete_lhs): In MODIFY_EXPR section: added comments,
3791         set DECL_INITIAL properly when appropriate.
3792         Fixes PR java/4230
3793         Fixes PR java/4204
3794
3795 2001-09-01  Per Bothner  <per@bothner.com>
3796
3797         * parse.y (maybe_yank_clinit):  A field without an initializer is not
3798         relevant.  All initializers except static final and constant require
3799         <clinit>, regardless of flag_emit_class_files.
3800
3801 2001-08-31  Per Bothner  <per@bothner.com>
3802
3803         * class.c (set_constant_value):  When not emitting class files, then a
3804         String ConstantValue is a utf8const_ptr_type.
3805
3806 2001-08-30  Per Bothner  <per@bothner.com>
3807
3808         * jcf-write.c (generate_classfile):  Check that field is primitive
3809         or string before emitting ConstantValue attribute.
3810
3811 2001-08-30  Per Bothner  <per@bothner.com>
3812
3813         * parse.y (resolve_qualified_expression_name):  If creating a
3814         COMPOUND_EXPR, set it's type correctly.
3815
3816 2001-08-30  Per Bothner  <per@bothner.com>
3817
3818         * jcf-io.c (open_class):  Set filename field.
3819
3820         * jcf-parse,c (parse_class_file):  Set current_function_decl
3821         for better error message when Code attribute is missing.
3822
3823         * lang.c (put_decl_node, lang_print_error):  Re-arrange for
3824         better diagnostics, especially for constructors.
3825
3826 2001-08-30  Per Bothner  <per@bothner.com>
3827
3828         * jcf-write.c (generate_classfile):  Don't write ConstantValue
3829         attribute if field is not final, for compatibility with jdk.
3830
3831         * jcf-write.c (generate_classfile):  Convert ConstantValue values
3832         to correct type.  Work-around for front-end bug.
3833         * class.c (set_constant_value):  Error if constant has wrong type.
3834
3835 2001-08-30  Per Bothner  <per@bothner.com>
3836
3837         * jcf-dump.c (print_constant):  Fix fencepost error so "Float" and
3838         "Double" are printed at verbosity 1.
3839
3840         * jcf-dump.c (main):  Disable flag_print_attributes if --javap.
3841
3842         * jcf-dump.c (SPECIAL_IINC):  Remove unneeded casts to long.
3843
3844 2001-08-30  Alexandre Petit-Bianco  <apbianco@redhat.com>
3845
3846         * parse.y (patch_assignment): Don't verify final re-assignment here.
3847         (java_complete_lhs): Verify assignments to finals calling
3848         patch_assignment. Verify re-assignments to finals before calling
3849         patch_assignment.
3850
3851 2001-08-29  Alexandre Petit-Bianco  <apbianco@redhat.com>
3852
3853         * parse.y (java_complete_lhs): Allow final locals in CASE_EXPRs.
3854         Fixes PR java/1413
3855
3856 2001-08-28  Alexandre Petit-Bianco  <apbianco@redhat.com>
3857
3858         * lex.c (java_lex): new local found_hex_digits. Set and then used
3859         in test to reject invalid hexadecimal numbers.
3860         * parse.y (java_complete_tree): Prevent unwanted cast with
3861         initialized floating point finals.
3862         (patch_binop): Emit a warning when detecting a division by zero,
3863         mark result not constant, don't simplify non integer division.
3864
3865 2001-08-28  Per Bothner  <per@bothner.com>
3866
3867         * jcf-write.c  (generate_bytecode_insns):  For increments and
3868         decrements just recurse to push constant.  Improvement on Mark's patch.
3869
3870 2001-08-28  Mark Mitchell  <mark@codesourcery.com>
3871
3872         * jcf-write.c (generate_bytecode_insns): Generate an integer to
3873         real conversion for increments and decrements of reals.
3874
3875 2001-08-27  Alexandre Petit-Bianco  <apbianco@redhat.com>
3876
3877         * parse.y (resolve_qualified_expression_name): Handle unresolved
3878         qualified expressions, prevent numerical qualifiers, fixed typo.
3879         Fixes PR java/4141
3880
3881 2001-08-24  Alexandre Petit-Bianco  <apbianco@redhat.com>
3882
3883         * parse.y (check_deprecation): Handle TYPE_DECL in a special case,
3884         don't report anything but deprecated class when marked so. Handle
3885         VAR_DECL.
3886         (patch_method_invocation): Check deprecation on methods and types.
3887         (patch_binop): code becomes an enum tree_code, added default: to
3888         switch to handle that. Detect division by zero, try to fold and
3889         return before using a subroutine.
3890
3891 2001-08-23  Alexandre Petit-Bianco  <apbianco@redhat.com>
3892
3893         * jcf-parse.c (yyparse): Set magic to 0, don't issue error for a
3894         file smaller than 4 bytes.
3895         * parse.y (check_inner_circular_reference): New function.
3896         (check_circular_reference): Likewise.
3897         (array_initializer:): Accept {,}.
3898         (java_check_circular_reference): Rewritten using
3899         check_circular_reference and check_inner_circular_reference.
3900         (java_complete_expand_method): Unconditionally save and restore
3901         the unpurged exception list.
3902         (build_dot_class_method_invocation): Unmangle signature parameter.
3903
3904 2001-08-21  Tom Tromey  <tromey@redhat.com>
3905
3906         * decl.c (init_decl_processing): Add `throws' field to method
3907         descriptor.
3908         * class.c (make_method_value): Compute `throws' field for method.
3909
3910 2001-08-22  Alexandre Petit-Bianco  <apbianco@redhat.com>
3911
3912         * parse.y (resolve_inner_class): Keep local_enclosing to NULL if
3913         circularity is detected.
3914         (ctors_unchecked_throws_clause_p): Fixed leading comment.
3915
3916 2001-08-17  Richard Henderson  <rth@redhat.com>
3917
3918         * class.c (emit_register_classes): Add align parameter to
3919         call to assemble_integer.
3920
3921 2001-08-16  Alexandre Petit-Bianco  <apbianco@redhat.com>
3922
3923         * jcf-parse.c (load_class): New locals saved and class_loaded. If
3924         loading a class_or_name fails, try considering an innerclass name
3925         and load the enclosing context.
3926         * parse.y (resolve_inner_class): New function.
3927         (find_as_inner_class): Added leading comment.
3928         (register_incomplete_type): Keep the current context as enclosing
3929         context for JDEP_FIELD dependencies.
3930         (do_resolve_class): Locals new_class_decl and super initialized to
3931         NULL. Call resolve_inner_class, explore the enclosing context
3932         superclass if necessary.
3933         Fixes PR java/4007
3934
3935 2001-08-16  Tom Tromey  <tromey@redhat.com>
3936
3937         * jcf-dump.c (main): Updated for change to jcf_path_seal.
3938         * gjavah.c (main): Updated for change to jcf_path_seal.
3939         * lang.c (version_flag): New global.
3940         (java_decode_option): Recognize `-version'.
3941         (java_init): Update for change to jcf_path_seal.
3942         * jcf.h (jcf_path_seal): Added `print' argument.
3943         * jcf-path.c (jcf_path_seal): Added `print' argument.
3944
3945 2001-08-13  Zack Weinberg  <zackw@panix.com>
3946
3947         * Make-lang.in (java/decl.o): Update dependencies.
3948         * decl.c: Include libfuncs.h, don't include toplev.h.
3949
3950 2001-08-12  Alexandre Petit-Bianco  <apbianco@redhat.com>
3951
3952         * decl.c (init_decl_processing): exception_type_node,
3953         class_not_found_type_node, and no_class_def_found_type_node
3954         initialized. predef_filenames augmented accordingly.
3955         instinit_identifier_node initialized.
3956         * java-tree.def (INSTANCE_INITIALIZERS_EXPR): Entry removed.
3957         * java-tree.h (enum java_tree_index): New entries
3958         JTI_EXCEPTION_TYPE_NODE, JTI_CLASS_NOT_FOUND_TYPE_NODE,
3959         JTI_NO_CLASS_DEF_FOUND_TYPE_NODE, JTI_INSTINIT_IDENTIFIER_NODE.
3960         (exception_type_node): New macro.
3961         (class_not_found_type_node): Likewise.
3962         (no_class_def_found_type_node): Likewise.
3963         (instinit_identifier_node): Likewise.
3964         (PREDEF_FILENAMES_SIZE): Adjusted.
3965         (TYPE_HAS_FINAL_VARIABLE): Fixed typo.
3966         (struct lang_type): Fixed typo in bitfield name.
3967         (DECL_INSTINIT_P): New macro.
3968         (ID_INSTINIT_P): Likewise.
3969         * jcf-write.c (generate_classfile): instinit$ bears the Synthetic
3970         attribute.
3971         * parse.y (encapsulate_with_try_catch): New function.
3972         (generate_instinit): Likewise.
3973         (build_instinit_invocation): Likewise.
3974         (ctors_unchecked_throws_clause_p): Likewise.
3975         (add_instance_initializer): Deleted.
3976         (build_instance_initializer): Likewise.
3977         (in_instance_initializer): Likewise.
3978         (check_method_redefinition): instinit$ not to be verified.
3979         (java_complete_expand_methods): Generate instinit$, simplified code.
3980         (build_dot_class_method): Eliminated unnecessary locals. Use
3981         encapsulate_with_try_catch, removed unnecessary code.
3982         (fix_constructors): New local iii. Use build_instinit_invocation.
3983         (patch_method_invocation): Added comment.
3984         (maybe_use_access_method): Don't consider instinit$.
3985         (find_applicable_accessible_methods_list): Shorten the search for
3986         instinit$ too.
3987         (java_complete_lhs): case INSTANCE_INITIALIZERS_EXPR removed.
3988         (patch_return): Use DECL_INSTINIT_P instead of in_instance_initializer.
3989         (patch_throw_statement): Likewise. Fixed typo.
3990
3991 2001-08-12  David Edelsohn  <edelsohn@gnu.org>
3992
3993         Revert:
3994         2001-08-02  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
3995         * jvspec.c (jvgenmain_spec): Cannot use %umain, breaks
3996         ASM_FINAL_SPEC.
3997         (lang_specific_pre_link): Use set_input to set input_filename.
3998         Append `main' here.
3999         * jvgenmain.c (usage): Append literal `main' to CLASSNAME.
4000         (main): Fix definition.
4001         Strip `main' from classname.
4002         Fixes PR java/227.
4003
4004 2001-08-11  Zack Weinberg  <zackw@panix.com>
4005
4006         * lex.h: Don't include setjmp.h.  Don't define
4007         SET_FLOAT_HANDLER or prototype set_float_handler.
4008
4009 2001-08-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
4010
4011         * expr.c (java_lang_expand_expr): Call `expand_end_bindings' and
4012         `poplevel' in the right order.
4013
4014 2001-08-09  Richard Henderson  <rth@redhat.com>
4015
4016         * Make-lang.in (class.o): Depend on TARGET_H.
4017         * class.c (emit_register_classes): Use target hooks instead of
4018         assemble_constructor and assemble_destructor.
4019
4020 2001-08-08  Alexandre Petit-Bianco  <apbianco@redhat.com>
4021
4022         * check-init.c (flags.h): Include
4023         (check_init): Don't report uninitialized static class
4024         initialization flags, don't free bit index when doing static class
4025         initialization optimization.
4026         (check_for_initialization): Return type changed to `unsigned int.'
4027         (attach_initialized_static_class): New function.
4028         * class.c (add_method_1): Create the initialized static class
4029         table if necessary.
4030         (finish_class): Always emit deferred inline methods.
4031         * decl.c (emit_init_test_initialization): Moved to expr.c
4032         (complete_start_java_method): Don't traverse
4033         DECL_FUNCTION_INIT_TEST_TABLE.
4034         (lang_mark_tree): Mark hash tables in function decls.
4035         * expr.c (emit_init_test_initialization): Moved from decl.c.
4036         (build_class_init): Create LAG_DECL_SPECIFIC for the static class
4037         initialization flag, set DECL_CONTEXT and
4038         LOCAL_CLASS_INITIALIZATION_FLAG.
4039         (java_lang_expand_expr): Emit initialization code for static class
4040         initialized flags when entering block, if necessary.
4041         * gcj.texi (-fno-optimize-static-class-initialization): Documented.
4042         * java-tree.h (flag_optimize_sci): New global variable declaration.
4043         (DECL_FUNCTION_INITIALIZED_CLASS_TABLE): New macro.
4044         (DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND): Likewise.
4045         (LOCAL_FINAL_P): Fixed typo in comment.
4046         (FINAL_VARIABLE_P): Likewise.
4047         (LOCAL_CLASS_INITIALIZATIO_FLAG): New macro.
4048         (LOCAL_CLASS_INITIALIZATIO_FLAG_P): Likewise.
4049         (struct lang_decl): New fields `ict', `smic' and `cif.'
4050         (check_for_initialization): New returned value for global.
4051         (attach_initialized_static_class): New global function.
4052         (STATIC_CLASS_INIT_OPT_P): New macro.
4053         * lang-options.h (-fno-optimize-static-class-initialization): New flag.
4054         * lang.c (java_decode_option): Handle
4055         `-fno-optimize-static-class-initialization'
4056         * parse.y (start_complete_expand_method): New function.
4057         (java_expand_method_bodies): Likewise.
4058         (attach_init_test_initialization_flags): Likewise.
4059         (adjust_init_test_initialization): Likewise.
4060         (emit_test_initialization): Likewise.
4061         (java_complete_expand_methods): Nullify abstract and native method
4062         bodies.
4063         (java_complete_expand_method): New locals `fbody', `block_body'
4064         and `exception_copy.' Reorganized: directly return on empty method
4065         bodies, call `start_complete_expand_method', remember definitely
4066         initialized static class in function, don't expand method bodies.
4067         (java_expand_classes): Call `java_expand_method_bodies' before
4068         `finish_class' when compiling to native.
4069         (resolve_expression_name): Use `orig' after building outer class
4070         field access.
4071         (patch_invoke): Remember static method invocations.
4072
4073 2001-08-06  Richard Henderson  <rth@redhat.com>
4074
4075         * class.c (emit_register_classes): Pass a symbol_ref and priority
4076         to assemble_constructor.
4077
4078 2001-08-02  Alexandre Petit-Bianco  <apbianco@redhat.com>
4079
4080         * java-tree.h (all_class_filename): New macro.
4081         (enum java_tree_index): New enum `JTI_ALL_CLASS_FILENAME.'
4082         (BUILD_FILENAME_IDENTIFIER_NODE): Fixed leading comment. Link
4083         newly created IDENTIFIER_NODE to `all_class_filename.'
4084
4085 2001-08-01  Jeff Sturm  <jsturm@one-point.com>
4086
4087         * java-tree.h (BUILD_FILENAME_IDENTIFIER_NODE):
4088         Use ggc_add_tree_root to register roots.
4089
4090 2001-07-31  Alexandre Petit-Bianco  <apbianco@redhat.com>
4091
4092         * check-init.c (check_init): WITH_CLEANUP_EXPR node to use its
4093         second operand calling check_init.
4094         * decl.c (complete_start_java_method): Swaped second and third
4095         arguments while creating WITH_CLEANUP_EXPR node.
4096         * jcf-write.c (generate_bytecode_insns): Use second operand
4097         instead of third when handling WITH_CLEANUP_EXPR.
4098         * parse.y (java_complete_lhs): Expand second operand of
4099         WITH_CLEANUP_EXPR nodes.
4100         (patch_synchronized_statement): Swaped second and third arguments
4101         while creating WITH_CLEANUP_EXPR node.
4102
4103 2001-07-18  Alexandre Petit-Bianco  <apbianco@redhat.com>
4104
4105         * parse.y (create_interface): Avoid cyclic inheritance report when
4106         syntax error encountered during class definition.
4107         Fixes PR java/2956
4108
4109 2001-08-02  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
4110
4111         * jvspec.c (jvgenmain_spec): Cannot use %umain, breaks
4112         ASM_FINAL_SPEC.
4113         (lang_specific_pre_link): Use set_input to set input_filename.
4114         Append `main' here.
4115         * jvgenmain.c (usage): Append literal `main' to CLASSNAME.
4116         (main): Fix definition.
4117         Strip `main' from classname.
4118         Fixes PR java/227.
4119
4120 2001-07-18  Tom Tromey  <tromey@redhat.com>
4121
4122         For PR java/2812:
4123         * lex.h: Use HAVE_ICONV, not HAVE_ICONV_H.
4124         * lex.c (java_new_lexer): Use ICONV_CONST.
4125         (java_read_char): Likewise.
4126         * Make-lang.in (jc1$(exeext)): Link against LIBICONV.
4127         (jv-scan$(exeext)): Likewise.
4128
4129 2001-07-17  Alexandre Petit-Bianco  <apbianco@redhat.com>
4130
4131         * parse.h (INTERFACE_INNER_MODIFIERS): Disallow `private.'
4132         * parse.y (check_class_interface_creation): Allow `private' if the
4133         enclosing is not an interface.
4134         (create_interface): Interface tagged public if the enclosing
4135         context is an interface.
4136         (create_class): Class tagged public if the enclosing context
4137         is an interface.
4138         Fixes PR java/2959
4139
4140 2001-07-17  Alexandre Petit-Bianco  <apbianco@redhat.com>
4141
4142         * class.c (push_class): Set DECL_SIZE to `integer_zero_node.'
4143         Fixes PR java/2665
4144
4145 2001-07-14  Tim Josling  <tej@melbpc.org.au>
4146
4147         * check-init.c (check_init): Remove references to EXPON_EXPR.
4148
4149 2001-07-13  Alexandre Petit-Bianco  <apbianco@redhat.com>
4150
4151         * parse.y (java_complete_lsh): Set CAN_COMPLETE_NORMALLY and unset
4152         TREE_CONSTANT_OVERFLOW of CASE_EXPR value.
4153         Fixes PR java/3602
4154
4155 2001-07-13  Tom Tromey  <tromey@redhat.com>
4156
4157         * jvspec.c (jvgenmain_spec): Remove -ffilelist-file from cc1
4158         invocation.
4159
4160 2001-07-12  Alexandre Petit-Bianco  <apbianco@redhat.com>
4161
4162         * parse.y (patch_method_invocation): Don't override primary if one
4163         is already provided, but let this$<n> be built. Fixed comment.
4164
4165 2001-07-12  Alexandre Petit-Bianco  <apbianco@redhat.com>
4166
4167         * parse.y (empty_statement:): Report empty statement error only
4168         when found at class declaration level.
4169         Fixes PR java/3635
4170
4171 2001-07-12  Tom Tromey  <tromey@redhat.com>
4172
4173         * expr.c (expand_load_internal): New function.
4174         (LOAD_INTERNAL): Use it.
4175
4176 2001-07-11  Alexandre Petit-Bianco  <apbianco@redhat.com>
4177
4178         * parse.y (verify_constructor_super): Compare anonymous class ctor
4179         args with `valid_method_invocation_conversion_p.'
4180         Fixes PR java/3285
4181
4182 2001-07-10  Alexandre Petit-Bianco  <apbianco@redhat.com>
4183
4184         * lang-specs.h: Forbit the use if `-femit-class-file{s}' without
4185         `-fsyntax-only.' Fixes PR java/3248
4186
4187 2001-07-10  Alexandre Petit-Bianco  <apbianco@redhat.com>
4188
4189         * jcf-io.c (find_class): Clarified error message. Fixes PR java/2603
4190
4191 2001-07-10  Alexandre Petit-Bianco  <apbianco@redhat.com>
4192
4193         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): No `this' is fine if the
4194         current function is static. Fixes PR java/1970
4195
4196 2001-07-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
4197
4198         * parse.y (patch_method_invocation): Add enclosing context to ctor
4199         calls if necessary. Fixes PR java/2953
4200
4201 2001-07-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
4202
4203         * parse.y (resolve_package): Abort if qualified expression member
4204         isn't right.
4205         (qualify_ambiguous_name): Don't qualify as type if `this' in use.
4206         Fixes PR java/1391
4207
4208 2001-07-07  Zack Weinberg  <zackw@stanford.edu>
4209
4210         * verify.c: Don't use // comments.
4211
4212 2001-07-05  Tom Tromey  <tromey@redhat.com>
4213
4214         * lang.c (flag_assume_compiled): Removed.
4215         * java-tree.h (flag_assume_compiled): Removed.
4216         * lang-options.h: Removed -ffile-list-file, -fuse-boehm-gc,
4217         -fhash-synchronization, -fuse-divide-subroutine,
4218         -fcheck-references, -femit-class-file, -femit-class-files,
4219         -fassume-compiled.  Updated --encoding information.  Changed
4220         -foutput-class-dir to `-d'.
4221
4222 2001-07-04  Daniel Berlin  <dan@cgsoftware.com>
4223
4224         * jcf-parse.c (parse_class_file): Add lineno parameter to
4225         debug_start_source_file call.
4226
4227 2001-07-04  Joseph S. Myers  <jsm28@cam.ac.uk>
4228
4229         * gcj.texi: Use gpl.texi.
4230         * Make-lang.in ($(srcdir)/java/gcj.info, java/gcj.dvi): Update
4231         dependencies and use doc/include in search path.
4232
4233 2001-07-03  Jeff Sturm  <jsturm@one-point.com>
4234
4235         * parse.y (fix_constructors): Test if a CALL_EXPR invokes
4236         `this'.  If so, don't build instance initializers.
4237
4238 2001-07-03  Alexandre Petit-Bianco  <apbianco@redhat.com>
4239
4240         * parse.y (resolve_expression_name): Improved error message for
4241         inner class cases. Fixes PR java/1958
4242
4243 2001-06-28  Gabriel Dos Reis  <gdr@codesourcery.com>
4244
4245         * lang.c: #include diagnostic.h
4246         (lang_print_error): Add a `diagnostic_context *' parameter.
4247         (java_dummy_print): Likewise.
4248         * Make-lang.in (JAVA_LEX_C): Depend on diagnostic.h
4249
4250 2001-06-27  Alexandre Petit-Bianco  <apbianco@redhat.com>
4251
4252         * jcf-parse.c (gcc_mark_jcf): Test for a finished JCF.
4253         * jcf.h (typedef struct JCF): New bitfield `finished.'
4254         (JCF_FINISH): Set `finished.'
4255         (JCF_ZERO): Reset `finished.'
4256         Fixes PR java/2633
4257
4258 2001-06-27  Alexandre Petit-Bianco  <apbianco@redhat.com>
4259
4260         * parse.y (class_body_declaration:): Don't install empty instance
4261         initializers.
4262         Fixes PR java/1314
4263
4264 2001-06-27  Alexandre Petit-Bianco  <apbianco@redhat.com>
4265
4266         * class.c (set_super_info): Call `set_class_decl_access_flags.'
4267         (set_class_decl_access_flags): New function.
4268         * java-tree.h (set_class_decl_access_flags): New prototype.
4269         * jcf-parse.c (handle_innerclass_attribute): Read and set access flags.
4270         (parse_class_file): New local `decl_max_locals.' Take wide types
4271         into account to compute DECL_MAX_LOCALS.
4272         * parse.y (type_import_on_demand_declaration:): Ignore duplicate
4273         imports on demand.
4274
4275 2001-06-22  Jan van Male  <jan.vanmale@fenk.wau.nl>
4276
4277         * zipfile.h: Use GCC_JCF_H instead of JCF_H.
4278
4279 2001-06-20  Alexandre Petit-Bianco  <apbianco@redhat.com>
4280
4281         * class.c (java_hash_tree_node): Fixed indentation in leading comment.
4282         * parse.y (do_resolve_class): Moved comments out to leading comment
4283         section. Removed local `start', New local `_ht' and
4284         `circularity_hash.'  Record `enclosing' in hash table and search
4285         it to detect circularity.  Use `enclosing' as an argument to
4286         `lookup_cl.' Free the hash table when done.
4287
4288 2001-06-19  Tom Tromey  <tromey@redhat.com>
4289
4290         * lex.c (java_read_char): Disallow invalid and overlong
4291         sequences.  Fixes PR java/2319.
4292
4293 2001-06-05  Jeff Sturm  <jsturm@one-point.com>
4294
4295         * decl.c (create_primitive_vtable): Don't call make_decl_rtl.
4296
4297 2001-06-04  Alexandre Petit-Bianco  <apbianco@redhat.com>
4298
4299         * expr.c (force_evaluation_order): Match wrapped ctor calls, locate
4300         arguments accordingly.
4301
4302 2001-06-02  Joseph S. Myers  <jsm28@cam.ac.uk>
4303
4304         * gcj.texi: Move contents to just after title page.
4305
4306 2001-06-01  Alexandre Petit-Bianco  <apbianco@redhat.com>
4307
4308         * parse.y (type_literals:): Use `build_incomplete_class_ref' with
4309         builtin type.
4310         (patch_incomplete_class_ref): Build the class ref, build the class
4311         init if necessary, complete the tree.
4312         Fixes PR java/2605
4313
4314 2001-05-31  Alexandre Petit-Bianco  <apbianco@redhat.com>
4315
4316         * parse.y (lookup_field_wrapper): Test `name' code.
4317         (resolve_qualified_expression_name): Test `qual_wfl' code.
4318         (qualify_ambiguous_name): Handle `CONVERT_EXPR', fixe indentation,
4319         handle `qual_wfl' by code.
4320         (maybe_build_primttype_type_ref): Test `wfl' code.
4321
4322 2001-05-23  Theodore Papadopoulo  <Theodore.Papadopoulo@sophia.inria.fr>
4323
4324         * Make-lang.in ($(srcdir)/java/gcj.info): Added dependencies on
4325         fdl.texi.
4326         (java/gcj.dvi): Use TEXI2DVI instead of custom tex calls.  Create
4327         the dvi file in the java directory.
4328
4329 2001-05-25  Sam TH  <sam@uchicago.edu>
4330
4331         * gen-table.pl javaop.h jcf.h lex.h,
4332         parse.h: Fix header include guards.
4333
4334 2001-05-23  Joseph S. Myers  <jsm28@cam.ac.uk>
4335
4336         * jv-scan.c (version): Update copyright year.
4337
4338 2001-05-21  Per Bothner  <per@bothner.com>
4339
4340         * jcf-parse.c (read_class):  If class is from .class or .zip file
4341         and it's already been read, don't push/pop parser context.
4342
4343 2001-05-18  Per Bothner  <per@bothner.com>
4344
4345         * jvspec.c (lang_specific_pre_link):  Re-arrange the linker
4346         command line so the jvgenmain-generated main program comes first.
4347
4348 2001-05-15  Tom Tromey  <tromey@redhat.com>
4349
4350         * class.c (build_utf8_ref): Don't generate identifier based on
4351         utf8const contents.
4352
4353 2001-05-12  Richard Henderson  <rth@redhat.com>
4354
4355         * java-tree.def (JAVA_EXC_OBJ_EXPR): New.
4356         * expr.c (java_lang_expand_expr): Expand it.
4357         (process_jvm_instruction): Build JAVA_EXC_OBJ_EXPR instead of
4358         calling build_exception_object_ref.
4359         * parse.y (catch_clause_parameter): Likewise.
4360         (build_dot_class_method): Likewise.
4361         (try_reference_assignconv): Likewise.
4362         * check-init.c (check_init): Check JAVA_EXC_OBJ_EXPR not EXC_PTR_EXPR.
4363         * jcf-write.c (generate_bytecode_insns): Likewise.
4364
4365 2001-05-07  Alexandre Petit-Bianco  <apbianco@redhat.com>
4366
4367         * parse.y (build_unresolved_array_type): Set
4368         EXPR_WFL_QUALIFICATION on the newly created wfl.
4369         Fixes PR java/2538. Fixes PR java/2535.
4370
4371 2001-05-07  Alexandre Petit-Bianco  <apbianco@redhat.com>
4372
4373         * parse.y (fix_constructors): Removed unnecessary assignment to
4374         local. Moved assignment to `this$<n>', fixed comments and
4375         indentation.
4376         (build_wfl_wrap): Fixed indentation.
4377         Fixes PR java/2598, java/2579 and java/2658.
4378
4379 2001-05-03  Mo DeJong  <mdejong@redhat.com>
4380
4381         * lex.c (java_new_lexer): Call iconv_close on temp handle used to
4382         check for byte swap.
4383
4384 2000-05-02  Jeff Sturm  <jsturm@one-point.com>
4385
4386         * expr.c (build_class_init): Move MODIFY_EXPR
4387         outside of COND_EXPR.  Remove variable `call'.
4388
4389 2001-05-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4390
4391         * decl.c: NULL_PTR -> NULL.
4392         * jcf-write.c: Likewise.
4393
4394 2001-05-01  Tom Tromey  <tromey@redhat.com>
4395
4396         * Make-lang.in ($(srcdir)/java/gcj.info): Added `-I..'.
4397         (java/gcj.dvi): Added $(srcdir) to TEXINPUTS.
4398         * gcj.texi: Updated copyright text.  Include fdl.texi.
4399         (Top): Link to new node.
4400
4401 2001-05-01  Per Bothner  <per@bothner.com>
4402
4403         * parse.h (REGISTER_IMPORT):  Use tree_cons instead of chainon.
4404
4405 2001-05-01  Per Bothner  <per@bothner.com>
4406
4407         * parse.y (java_pop_parser_context):  The TREE_VALUE of a link in the
4408         import_list contains the name, not the TREE_PURPOSE.
4409
4410 2001-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4411
4412         * jcf-io.c (read_zip_member): Cast to long in comparison with
4413         signed value.
4414
4415         * jvspec.c (lang_specific_driver): Initialize variables.
4416
4417         * mangle.c (find_compression_record_match): Likewise.
4418
4419         * typeck.c (build_null_signature): Provide static prototype.  Mark
4420         parameter with ATTRIBUTE_UNUSED.
4421
4422         * verify.c (verify_jvm_instructions): Initialize variable.
4423
4424 2001-04-27  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
4425
4426         * parse.y (do_resolve_class): Check for cyclic inheritance during
4427         inner class resolution.
4428
4429 2001-04-27  Per Bothner  <per@bothner.com>
4430
4431         * parse.y (java_expand_classes):  Don't change ctxp_for_generation
4432         while iterating, since that could cause gc to lose stuff.
4433
4434 2001-04-26  Per Bothner  <per@bothner.com>
4435
4436         Fix method search wrt scope of inner classes to match JLS2.
4437         * typeck.c (build_null_signature):  New static function.
4438         (has_method):  New function.  Uses build_null_signature and lookup_do.
4439         * java-tree.h (has_method):  New declaration.
4440         * parse.y (find_applicable_accessible_methods_list):  Do not search
4441         context of inner classes here.
4442         (patch_method_invocation):  Search scope, ie. current and outer clases,
4443         for method matching simple name, to find class.
4444
4445 2001-04-26  Per Bothner  <per@bothner.com>
4446
4447         * jcf-write.c (generate_bytecode_insns case SWITCH_EXPR):
4448         Fix thinko:  If a single case, use if_icmpeq, not ifeq.
4449
4450         * constants.c (find_methodref_with_class_index):  New function.
4451         (find_methodref_index):  Use find_methodref_with_class_index.
4452         * java-tree.h (find_methodref_with_class_index):  New declaration.
4453         * jcf-write.c (generate_bytecode_insns case CALL_EXPR):  Don't change
4454         DECL_CONTEXT, instead use new find_methodref_with_class_index function.
4455         If context changed from interface to class, don't use invokeinterface.
4456
4457 2001-04-25  Per Bothner  <per@bothner.com>
4458
4459         * verify.c (verify_jvm_instructions):  For field instructions,
4460         check that field index is valid.  For invoke instructions, check that
4461         method index is valid.
4462
4463 2001-04-25  Alexandre Oliva  <aoliva@redhat.com>
4464
4465         * config-lang.in (target_libs): Copy from $libgcj_saved.
4466
4467 2001-04-25  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
4468
4469         * decl.c (init_decl_processing): Add new class "protectionDomain"
4470         field.
4471         * class.c (make_class_data): Set initial value for "protectionDomain".
4472
4473 2001-04-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4474
4475         * jvspec.c (lang_specific_driver): Fix memory allocation
4476         deficit, by using concat in lieu of xmalloc/sprintf.
4477
4478 2001-04-20  Per Bothner  <per@bothner.com>
4479
4480         Fixes to compile multiple .class files at once.
4481         * decl.c (init_decl_processing):  Don't set CLASS_LOADED_P.
4482         * java-tree.h (CLASS_PARSED_P):  New macro.
4483         (CLASS_LOADED_P):  Re-define to use TYPE_SIZE and CLASS_PARSED_P.
4484         * jcf-parse.c (jcf_parse_source):  Inline into read_class.
4485         (read_class):  Avoid some code duplication.
4486         Don't call JCF_FINISH for a .class file - might be needed later.
4487         (jcf_parse):  Don't call layout_class here.  Check/set CLASS_PARSED_P
4488         rather than CLASS_LOADED_P, since latter implies class laid out.
4489         (yyparse):  Do layout_class and JCF_FINISh here instead, in pass 2.
4490         * parse.y:  Don't need to set CLASS_LOADED_P for array types.
4491
4492 2001-04-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4493
4494         * Make-lang.in (java/boehm.o): Depend on toplev.h.
4495
4496         * boehm.c: Include toplev.h.
4497
4498 2001-04-06  Tom Tromey  <tromey@redhat.com>
4499             Alexandre Petit-Bianco  <apbianco@redhat.com>
4500
4501         Fix for PR gcj/1404 and PR gcj/2332:
4502         * parse.y (build_array_from_name): If we use the type_wfl then
4503         accumulate dimensions from the original type as well.
4504         (build_unresolved_array_type): Don't modify TYPE_OR_WFL in place.
4505
4506 2001-04-06  Tom Tromey  <tromey@redhat.com>
4507
4508         * parse.y (analyze_clinit_body): Return true if the second operand
4509         of a METHOD_EXPR is nonzero.
4510
4511 2001-04-06  Tom Tromey  <tromey@redhat.com>
4512
4513         * Make-lang.in ($(srcdir)/java/parse-scan.c): Run bison from build
4514         directory.
4515         ($(srcdir)/java/parse.c): Likewise.
4516
4517 2001-04-05  Alexandre Petit-Bianco  <apbianco@redhat.com>
4518
4519         * gcj.texi: Use `which-gcj' instead of `which-g77.'
4520         (version-gcc): Initialized.
4521         (which-gcj): Likewise.
4522
4523 2001-04-04  Alexandre Petit-Bianco  <apbianco@redhat.com>
4524
4525         * java-tree.h (struct lang_decl): New macro
4526         `DECL_FIXED_CONSTRUCTOR_P.' New field `fixed_ctor.'
4527         * parse.y (build_instance_initializer): New function.
4528         (add_instance_initializer): Use it.
4529         (java_fix_constructors): Set `current_class' before fix pass.
4530         (fix_constructors): Just return if already fixed. Move `super()'
4531         invocation ahead. Use `build_instance_initializer.'
4532         Fixes PR java/1315.
4533
4534 2001-04-04  Alexandre Petit-Bianco  <apbianco@redhat.com>
4535
4536         * parse.y (resolve_qualified_expression_name): Pass field's
4537         DECL_CONTEXT to `not_accessible_p.'
4538         (not_accessible_p): Changed parameters order in `inherits_from_p'
4539         invocation.
4540
4541 2001-03-27  Andrew Haley  <aph@cambridge.redhat.com>
4542
4543         * lang-options.h: Add flag_check_references.
4544
4545 2001-04-04  Per Bothner  <per@bothner.com>
4546
4547         * java-tree.h (CONSTANT_VALUE_P):  New macro.
4548         * jcf-write.c (generate_classfile):  Use CONSTANT_VALUE_P.
4549         * parse.y (maybe_build_class_init_for_field):  New static function.
4550         (resolve_expression_name, resolve_field_access):  Use
4551         maybe_build_class_init_for_field instead of build_class_init
4552         This does not do the init if the field is compile-time-constant.
4553         (resolve_field_access):  Simplify.
4554
4555         * parse.y (fold_constant_for_init):  Merge test into switch.
4556
4557 2001-04-03  Zack Weinberg  <zackw@stanford.edu>
4558
4559         * Make-lang.in (buffer.o, check-init.o, class.o): Don't depend
4560         on gansidecl.h.
4561         * buffer.c, jvgenmain.c: Don't include gansidecl.h.
4562
4563 2001-04-02  Zack Weinberg  <zackw@stanford.edu>
4564
4565         * expr.c (pop_type_0): Save the result of the first
4566         lang_printable_name call in a scratch buffer, so it
4567         won't be clobbered by the second call.
4568
4569 2001-03-30  Alexandre Petit-Bianco  <apbianco@redhat.com>
4570
4571         * parse-scan.y (array_type:): Rewritten.
4572         (type_declaration:): `empty_statement' replaces `SC_TK.'
4573         (class_member_declaration:): `empty statement' added.
4574         (method_body:): Simplified.
4575         (static_initializer:): Likewise.
4576         (primary_no_new_array:): Use `type_literals.'
4577         (type_literals:): New rule.
4578         (dims:): Set and update `bracket_count.'
4579         Fixes PR java/1074. Fixes PR java/2412.
4580
4581 2001-03-28  Hans Boehm  <boehm@acm.org>
4582
4583         * boehm.c (PROCEDURE_OBJECT_DESCRIPTOR): Set to use `build_int_2.'
4584         (get_boehm_type_descriptor): Set type on returned value to be a
4585         pointer length integer.
4586
4587 2001-03-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4588
4589         * expr.c (pop_type_0): Call `concat' rather than building the
4590         string manually.
4591         (pop_type): Add format specifier in call to `error'.
4592
4593         * parse.y (patch_method_invocation): Avoid casting away
4594         const-ness.
4595
4596 2001-03-28  Jeffrey Oldham  <oldham@codesourcery.com>
4597
4598         * jvgenmain.c (do_mangle_classname): End string constant with '\0'.
4599
4600 2001-03-28  Richard Henderson  <rth@redhat.com>
4601
4602         IA-64 ABI Exception Handling:
4603         * Make-lang.in (except.o): Don't depend on eh-common.h.
4604         * check-init.c (check_init): Handle EXC_PTR_EXPR.
4605         * decl.c (init_decl_processing) [throw_node]: No _Jv_Sjlj_Throw.
4606         [soft_exceptioninfo_call_node]: Remove.
4607         [eh_personality_libfunc, lang_eh_runtime_type]: New.
4608         (end_java_method): No emit_handlers.
4609         * except.c (java_set_exception_lang_code): Remove.
4610         (method_init_exceptions): Don't call it.
4611         (prepare_eh_table_type): No CATCH_ALL_TYPE.
4612         (build_exception_object_ref): New.
4613         (expand_end_java_handler): Update for except.h name changes.
4614         (emit_handlers, expand_resume_after_catch): Remove.
4615         * expr.c (java_lang_expand_expr): Update for except.h name changes.
4616         (process_jvm_instruction): Use build_exception_object_ref.
4617         * java-tree.h (JTI_SOFT_EXCEPTIONINFO_CALL_NODE): Remove.
4618         (soft_exceptioninfo_call_node): Remove.
4619         (build_exception_object_ref): Declare.
4620         * jcf-write.c (generate_bytecode_insns) [CALL_EXPR]: No
4621         soft_exceptioninfo_call_node.  Move processing ...
4622         [EXC_PTR_EXPR]: ... here.
4623         * parse.h (BUILD_ASSIGN_EXCEPTION_INFO): Remove dead code.
4624         * parse.y (catch_clause_parameter): Use build_exception_object_ref.
4625         (source_end_java_method): No java_set_exception_lang_code or
4626         emit_handlers.
4627         (build_dot_class_method): Use build_exception_object_ref.
4628         (try_reference_assignconv): Check EXC_PTR_EXPR not
4629         soft_exceptioninfo_call_node.
4630
4631 2001-03-28  Richard Henderson  <rth@redhat.com>
4632
4633         * java-tree.h (throw_node): Define as a single member of
4634         java_global_trees instead of a separate array.
4635         (JTI_THROW_NODE): New.
4636         * decl.c (throw_node): Don't declare.
4637         (init_decl_processing): Init a scalar throw_node.
4638         Don't register it for gc.
4639         * check-init.c (check_init): Reference scalar throw_node.
4640         * expr.c (build_java_athrow): Likewise.
4641         * jcf-write.c (generate_bytecode_insns): Likewise.
4642         * parse.h (BUILD_THROW): Likewise.
4643
4644 2001-03-28  Richard Henderson  <rth@redhat.com>
4645
4646         * decl.c (end_java_method): Do not save and restore
4647         flag_non_call_exceptions.
4648         * parse.y (source_end_java_method): Likewise.
4649         * lang.c (flag_exceptions): Don't declare.
4650         (java_init_options): Set flag_non_call_exceptions.  Set
4651         flag_exceptions here ...
4652         (java_init): ... not here.
4653
4654 2001-03-27  Richard Henderson  <rth@redhat.com>
4655
4656         * expr.c, parse.h: Use USING_SJLJ_EXCEPTIONS instead of
4657         exceptions_via_longjmp.
4658
4659         * lang.c (flag_new_exceptions): Don't declare it.
4660         (java_init_options): Or set it.
4661
4662 2001-03-27  Richard Henderson  <rth@redhat.com>
4663
4664         * decl.c (end_java_method): Rename asynchronous_exceptions to
4665         flag_non_call_exceptions.
4666         * parse.y (source_end_java_method): Likewise.
4667
4668 2001-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4669
4670         * Make-lang.in: Depend on $(SYSTEM_H), not system.h.
4671
4672 2001-03-26  Mark Mitchell  <mark@codesourcery.com>
4673
4674         * parse.h (DECL_END_SOURCE_LINE): Don't rely on DECL_FRAME_SIZE.
4675
4676 2001-03-26  Alexandre Petit-Bianco  <apbianco@redhat.com>
4677
4678         * parse.y (find_as_inner_class): Follow current package
4679         indications not to mistakingly load an unrelated class.
4680
4681 2001-03-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4682
4683         * constants.c (PUTN): Use memcpy, not bcopy.
4684
4685         * lex.c (java_read_char): Use memmove, not bcopy.
4686
4687         * parse.y (java_parser_context_resume): Use memcpy, not bcopy.
4688
4689 2001-03-23  Per Bothner  <per@bothner.com>
4690
4691         * verify.c (verify_jvm_instructions):  Replace 3 pop_type by POP_TYPE
4692         macro for better error pin-pointing.
4693         * java-tree.h:  Fix typo in comment.
4694
4695         * jcf-write.c (generate_bytecode_insns):  Changes to TRY_FINALLY_EXPR.
4696         Don't include jsr/goto in exception range.
4697         Check if start and end of exception range are the same (also TRY_EXPR).
4698         Don't emit jsr after try_block if CAN_COMPLETE_NORMALLY is false.
4699         However, do emit the following goto even if try_block is empty.
4700         Defer freeing exception_decl until after the finalizer, to make
4701         sure the local isn't reused in the finalizer.  Fixes PR java/1208.
4702
4703         * parse.y (java_complete_lhs):  If the try-clause is empty, just
4704         return the finally-clause and vice versa.
4705
4706 2001-03-23  Alexandre Petit-Bianco  <apbianco@redhat.com>
4707
4708         * gcj.texi (Input Options): documented the check for attribute
4709         `gnu.gcc.gccj-compiled' and the `-fforce-classes-archive-check' flag.
4710         * java-tree.h (flag_force_classes_archive_check): Declared extern.
4711         * jcf-parse.c (HANDLE_GCJCOMPILED_ATTRIBUTE): New macro.
4712         (jcf_parse): Check for the right classes archive if necessary.
4713         * jcf-reader.c (get_attribute): Define `MATCH_ATTRIBUTE' and use it.
4714         (jcf_parse_fields): Fixed indentation.
4715         * jcf-write.c (append_gcj_attribute): New function.
4716         (generate_classfile): Compute the attribute count, invoke
4717         `append_gcj_attribute'.
4718         * jcf.h (typedef struct JCF): `seen_in_zip' and `java_source'
4719         turned into bit-fields. New bit-field `right_zip.'
4720         (JCF_ZERO): Set `right_zip' to zero.
4721         * lang-options.h (-fforce-classes-archive-check): Added flag.
4722         * lang.c (flag_force_classes_archive_check): New flag.
4723         (lang_f_options): New entry `force-classes-archive-check.'
4724         Fixes PR java/1213.
4725
4726 2001-02-07  Andrew Haley  <aph@redhat.com>
4727
4728         * gcj.texi (Configure-time Options): Add -fcheck-references.
4729         * expr.c (build_java_indirect_ref): New function.
4730         (java_check_reference): New function.
4731         (build_java_array_length_access): Use build_java_indirect_ref to
4732         check for null references.
4733         (build_java_arrayaccess): Likewise.
4734         (build_get_class): Likewise.
4735         (build_field_ref): Likewise.
4736         (invoke_build_dtable): Likewise.
4737         (build_invokeinterface): Likewise.
4738         * lang.c (lang_f_options): Add flag_check_references.
4739         * jvspec.c (jvgenmain_spec): Add flag_check_references.
4740         * java-tree.h (flag_check_references): New variable.
4741         * lang.c (flag_check_references): Likewise.
4742         * parse.y (patch_invoke): Use java_check_reference.
4743         (patch_assignment): Allow for extra nesting in
4744         _Jv_CheckArrayStore.
4745
4746 2001-03-23  Bryce McKinlay  <bryce@albatross.co.nz>
4747
4748         * gjavah.c (cxx_keywords): Update from the definitive list in cp/lex.c.
4749         * lex.c (cxx_keywords): Likewise.
4750
4751 2001-03-21  Alexandre Petit-Bianco  <apbianco@redhat.com>
4752
4753         * parse.y (qualify_ambiguous_name): Broaden `length'
4754         recognition. Help MODIFY_EXPR be resolved as expression names.
4755         Fixes PR java/2066. Fixes PR java/2400.
4756
4757 2001-03-21  Bryce McKinlay  <bryce@albatross.co.nz>
4758
4759         * gjavah.c (process_file): Mark interface definitions with
4760         "__attribute__ ((java_interface))".
4761
4762 2001-03-21  Alexandre Petit-Bianco  <apbianco@redhat.com>
4763
4764         * class.c (layout_class): Fixed push_super_field's second
4765         argument. Fixes PR java/2333.
4766         (jdep_resolve_class): Reset TYPE_SIZE if `error_mark_node', it's
4767         too early to lay innerclasses out.
4768
4769 2001-03-20  Tom Tromey  <tromey@redhat.com>
4770             Alexandre Petit-Bianco <apbianco@redhat.com>
4771
4772         * parse.y (patch_assignment): Handle the case of a SAVE_EXPR
4773         inside an array reference. Insertion of the array store check
4774         rewritten. Fixes PR java/2299.
4775
4776 2001-03-20  Tom Tromey  <tromey@redhat.com>
4777
4778         * lex.c (java_read_unicode): Only accept leading `u's.
4779
4780 2001-03-20  Tom Tromey  <tromey@redhat.com>
4781
4782         * jcf-parse.c (read_class): Initialize `class'.
4783
4784 2001-03-20  Matt Kraai  <kraai@alumni.carnegiemellon.edu>
4785
4786         * jcf_parse.c (jcf_parse): Eliminate unused variable.
4787
4788 2001-03-19  Mark Mitchell  <mark@codesourcery.com>
4789
4790         * class.c (build_class_ref): Use SET_DECL_ASSEMBLER_NAME.
4791         (layout_class): Likewise.
4792         (layout_class_method): Likewise.
4793         (emit_register_classes): Likewise.
4794         * decl.c (builtin_function): Likewise.
4795         (give_name_to_locals): Likewise.
4796
4797 2001-03-19  Per Bothner  <per@bothner.com>
4798
4799         * jcf-parse.c (load_inner_classes):  Check CLASS_LOADED_P
4800         before trying to load an inner class.
4801
4802         Fixes to process to command-line .class files in two passes.
4803         * java-tree.h (JAVA_FILE_P, CLASS_FILE_P, ZIP_FILE_P):  New flags.
4804         (CLASS_FROM_CURRENTLY_COMPILED_SOURCE_P):  Rename to ..
4805         (CLASS_FROM_CURRENTLY_COMPILED_P):  ... because it is more general now.
4806         * class.c (is_compiled_class):  Fix for renamed flag.
4807         * parse.y (maybe_create_class_interface_decl):  Likewise.
4808         * jcf-parse.c (yyparse):  Also set if compiling .class files.
4809         * jcf-parse.c (read_class);  Read current_class.
4810         (jcf_parse):  Make static.
4811         (load_inner_classes):  New function, with code moved from jcf_parse,
4812         because we need to inner classes after the command-line files are read.
4813         (yyparse):  Set finput to NULL when it doesn't need to be closed.
4814         Reduce use of main_jcf (basically only for archive) and
4815         use finput instead of main_jcf->read_state.
4816         Inline jcf_figure_file_type into yyparse.
4817         Set JAVA_FILE_P, CLASS_FILE_P, or ZIP_FILE_P on filename list name.
4818         Defer load_inner_classes and parse_class_file to a second pass,
4819         after we've correctly mapped command-line .clas fiels to classes.
4820         (jcf_figure_file_type):  Removed.
4821         * jcf.h (JCF_ZIP, JCF_CLASS, JCF_SOURCE):  Removed flags.
4822         (JCF_ZERO):  Also clear zipd field.
4823         * zipfile.h:  Conditionalize on JCF_H insread of JCF_ZIP.
4824
4825 2001-03-18  Matt Kraai  <kraai@alumni.carnegiemellon.edu>
4826
4827         * jcf-parse.c (yyparse): Change ch from char * to char.
4828
4829 2001-03-19  Per Bothner  <per@bothner.com>
4830
4831         * jvspec.c (lang_specific_driver):  Check for .zip and .jar files.
4832         Add constructed filelist-file at end, following -xjava.  Thus any .o
4833         and library files are not affected by the -xjava.  Also wrap
4834         explicit @FILE with -xjava and -xnone.
4835
4836 2001-03-19  Andrew Haley  <aph@cambridge.redhat.com>
4837
4838         * class.c (build_static_field_ref): Call make_decl_rtl() after
4839         setting the DECL_EXTERNAL flag.
4840
4841 2001-03-17  Per Bothner  <per@bothner.com>
4842
4843         * decl.c (clear_binding_level):  Fix initializer (broke 03-15).
4844
4845         * jcf-write.c (generate_bytecode_insns):  Handle emitting iinc
4846         when result is is needed (target is STACK_TARGET).
4847
4848         * parse.h (JDEP_SOLV):  Removed.
4849         * parse.y (register_incomplete_type):  Use JDEP_TO_RESOLVE instead.
4850
4851         * parse.y (incomplete_class_list): Removed.
4852         (obtain_incomplete_type): Don't use or set incomplete_class_list.
4853         It doesn't work if resolve_class changes the name of an array type
4854         that is on the list and then someone else looks for the modified name.
4855         Also, seems liable to break when compiling multiple source files at
4856         once.  So the simplest is to just remove incomplete_class_list -
4857         it is only a minor space win and it is not even clear it saves time.
4858
4859         * parse.y (resolve_class):  Remove unneeded promote_type.
4860
4861 2001-03-15  Per Bothner  <per@bothner.com>
4862
4863         * java-tree.h (BLOCK_IS_IMPLICIT):  New flag.
4864         * parse.h (BLOCK_EXPR_ORIGIN):  Removed macro.
4865         * parse.y (declare_local_variables, maybe_absorb_scoping_blocks):
4866         Use BLOCK_IS_IMPLICIT rather than BLOCK_EXPR_ORIGIN.
4867
4868         * jcf-parse.c (yyparse):  Set/reset input_filename for source file.
4869         * parse.y (java_expand_classes):  Likewise.
4870
4871         * parse.y (expand_start_java_method):  Was only called once and had a
4872         misleading name, so inline in caller java_complete_expand_method.
4873         (enter_a_block):  Likewise inline in enter_block and remove.
4874
4875         Remove junk from when gcc/java was created (by copying from C/C++).
4876         * decl.c (keep_next_level_flag, keep_next_if_subblocks):  Remove.
4877         (struct binding_level):  Remove fields keep, keep_if_subblocks,
4878         more_cleanups_ok, have_cleanups (which have never been used).
4879         (pushlevel, poplevel):  Remove related useless code.
4880
4881         * class.c (make_class_data):  The class_dtable_decl (i.e. the
4882         vtable for Class) should be external, except when compiling Class.
4883
4884         * jvspec.c (lang_specific_driver):  Fix -C handling.
4885         Check -save-temps to see if temp @FILE should be deleted.
4886         Follow-up to/fix for February 16 patch.
4887
4888         * verify.c (verify_jvm_instructions):  Better error msgs for dup.
4889         (type_stack_dup):  Remove no-longer neded error check.
4890
4891 2001-03-15  Bryce McKinlay  <bryce@albatross.co.nz>
4892
4893         * mangle.c (mangle_record_type): Rename 'from_pointer' argument
4894         to 'for_pointer'. If this type is for a pointer (argument) mangling,
4895         don't surround the element with 'N..E' if the type name is
4896         unqualified.
4897
4898 2001-03-14  Mark Mitchell  <mark@codesourcery.com>
4899
4900         * class.c (build_static_field_ref): Use COPY_DECL_RTL,
4901         DECL_RTL_SET_P, etc.
4902         (make_method_value): Likewise.
4903         (get_dispatch_table): Likewise.
4904
4905         * decl.c (push_jvm_slot): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
4906
4907 2001-03-07  Tom Tromey  <tromey@redhat.com>
4908
4909         * config-lang.in (lang_requires): Define.
4910
4911 2001-03-07  Brad Lucier  <lucier@math.purdue.edu>
4912
4913         * typeck.c (convert): Check flag_unsafe_math_optimizations,
4914         not flag_fast_math.
4915
4916 2001-03-05  Per Bothner  <per@bothner.com>
4917
4918         Fix a problem where rest_of_decl_compilation applied to
4919         class_dtable_decl causes problems because it was done too early,
4920         before output file was opened.
4921         * decl.c (init_decl_processing):  Remove init of class_dtable_decl.
4922         * class.c (class_dtable_decl):  Add macro - element of class_roots.
4923         (make_class_data):  Define class_dtable_decl.
4924         * java-tree.h (JTI_CLASS_DTABLE_DECL, class_dtable_decl):  Removed.
4925
4926 2001-03-01  Zack Weinberg  <zackw@stanford.edu>
4927
4928         * java/class.c, java/decl.c, java/java-tree.h: Replace all
4929         uses of 'boolean' with 'bool'.
4930
4931 2001-03-01  Zack Weinberg  <zackw@stanford.edu>
4932
4933         * lang-specs.h: Add zero initializer for cpp_spec field to all
4934         array elements.
4935
4936 2001-02-16  Per Bothner  <per@bothner.com>
4937
4938         Handle compiling multiple input files at once, and @FILE syntax.
4939         * gcj.texi:  Updated documentation to match.
4940         * java-tree.h (flag_filelist_file, init_src_parse):  New declarations.
4941         * jcf-parse.c (parse_source_file):  Split into ...
4942         (parse_source_file_1):  New function - and:
4943         (parse_source_file_2):  New function.
4944         (yyparse):  On -ffilelist-file, open and scan named file.
4945         On first pass over files, only do parse_source_file_1.
4946         A new second pass calls parse_source_file_2 for each file to compile.
4947         (init_jcf_parse):  Call init_src_parse.
4948         * jvspec.c (INDIRECT_FILE_ARG):  New flag.
4949         (lang_specific_driver):  Support @FILELIST-FILE syntax, as well
4950         as multiple input file combined in one compilation.
4951         * lang-options.h:  Add -ffilelist-file
4952         * lang.c (flag_filelist_file):  New flag variable.
4953         (lang_f_options):  Handle -ffilelist-file.
4954         * lex.c (java_init_lex): Don't clear ctxp->incomplete_class.
4955         * parse.h (struct parse_ctxt):  Remove fields incomplete_class and
4956         gclass_list - use global fields of src_parse_roots instead.
4957         * parse.y (src_parse_roots):  New array.
4958         (incomplete_class_list, gclass_list):  New macros.
4959         (push_parser_context, java_pop_parser_context,
4960         java_parser_context_resume):  Don't fiddle with deleted fields.
4961         (various):  Use incomplete_class gclass_list and global macros
4962         instead of parse_ctxt fields - the lists are global.
4963         (init_src_parse):  New function.
4964
4965 2001-02-23  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
4966
4967         * decl.c (set_block): Set NAMES and BLOCKS from BLOCK.
4968
4969 2001-02-20  Alexandre Petit-Bianco  <apbianco@redhat.com>
4970
4971         * parse.y (check_inner_class_access): Moved declaration of local
4972         `enclosing_decl_type' to the right location.
4973
4974 2001-02-19  Bryce McKinlay  <bryce@albatross.co.nz>
4975
4976         * parse.y (parser_check_super_interface): Don't call
4977         check_pkg_class_access for an inner interface.
4978         (parser_check_super): Don't call check_pkg_class_access for inner
4979         class.
4980         (do_resolve_class): Simplify enclosing type loop. Don't call
4981         check_pkg_class_access if CL and DECL are not set.
4982         (find_in_imports_on_demand): Set DECL if class_type needed to be
4983         loaded. Don't call check_pkg_class_access for an inner class.
4984         (check_inner_class_access): Rewritten to implement member access
4985         rules as per spec 6.6.1.
4986         (check_pkg_class_access): Handle the empty package correctly.
4987         (in_same_package): New function. Determine if two classes are in the
4988         same package.
4989
4990 2001-02-18  Bryce McKinlay  <bryce@albatross.co.nz>
4991
4992         * typeck.c (build_java_array_type): Don't try to poke a public `clone'
4993         method into array types.
4994         * parse.y (patch_method_invocation): Bypass access check on clone call
4995         to array instance.
4996
4997 2001-02-15  Alexandre Petit-Bianco  <apbianco@redhat.com>
4998
4999         * expr.c (build_instanceof): Check for arrays when trying fold to
5000         false.
5001
5002 2001-02-15  Jim Meyering  <meyering@lucent.com>
5003
5004         * Make-lang.in (java.install-common): Depend on `installdirs'.
5005         (java.install-info): Likewise.
5006
5007 2001-02-15  Bryce McKinlay  <bryce@albatross.co.nz>
5008
5009         * Make-lang.in (jvspec.o): Modify rule to match that of cp/g++spec.o.
5010
5011 2001-02-14  Tom Tromey  <tromey@redhat.com>
5012             Alexandre Petit-Bianco  <apbianco@cygnus.com>
5013
5014         Fix for PR java/1261.
5015         * typeck.c (build_java_array_type): Add public `clone' method to
5016         arrays.
5017         * parse.y (resolve_qualified_expression_name): Use current_class
5018         when checking for inaccessibility.
5019         (patch_method_invocation): Fixed error message when accessibility
5020         denied.  Added `from_super' argument.
5021
5022 2001-02-14  Alexandre Petit-Bianco  <apbianco@redhat.com>
5023
5024         * parse.y (resolve_class): Don't build a fake decl. Use the one
5025         already built.
5026         * typeck.c (build_java_array_type): Build and assign decl to array
5027         type.
5028
5029 2001-02-14  Alexandre Petit-Bianco  <apbianco@redhat.com>
5030
5031         * parse.y (not_accessible_p): Changed leading comment. Added extra
5032         `where' argument. Use it to enforce protected access rules.
5033         (resolve_qualified_expression_name): Added extra argument to
5034         not_accessible_p.
5035         (patch_method_invocation): Use argument `primary' to provide
5036         not_accessible_p with an extra argument.
5037         (lookup_method_invoke): Added extra argument to not_accessible_p.
5038         (search_applicable_method_list): Likewise.
5039
5040 2001-02-13  Alexandre Petit-Bianco  <apbianco@redhat.com>
5041
5042         * parse.y (resolve_qualified_expression_name): Try to resolve as
5043         an inner class access only if `decl' is a TYPE_DECL.
5044
5045 2001-02-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5046
5047         * decl.c (classdollar_identifier_node): Initialize.
5048         * java-tree.h (enum java_tree_index): New entry
5049         `JTI_CLASSDOLLAR_IDENTIFIER_NODE.'
5050         (classdollar_identifier_node): New macro.
5051         (ID_CLASSDOLLAR_P): Likewise.
5052         * parse.y (build_dot_class_method): Use `classdollar_identifier_node.'
5053         (build_dot_class_method_invocation): Likewise.
5054         (find_applicable_accessible_methods_list): `class$' can't be
5055         inherited.
5056
5057 2001-02-09  Raja R Harinath  <harinath@cs.umn.edu>
5058
5059         * Make-lang.in (java/mangle_name.o): Add 'make' prereqs.
5060
5061 2001-02-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
5062
5063         * Manke-lang.in (JVGENMAIN_OBJS): Added `errors.o'
5064         * jvgenmain.c (error): Reversed 2001-02-09 patch. `error' is now
5065         gone.
5066
5067 2001-02-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
5068
5069         * mangle_name (append_unicode_mangled_name): Emit `_' or `U'
5070         outside of the `__U' sequence too.
5071         (unicode_mangling_length): Count `_' or `U' outside of the `__U'
5072         sequence too.
5073
5074 2001-02-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
5075
5076         * jvgenmain.c (error): Reversed 2001-02-01 deletion.
5077
5078 2001-02-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5079
5080         * Make-lang.in (JAVA_OBJS): Added java/mangle_name.o
5081         (JVGENMAIN_OBJS): Likewise.
5082         * java-tree.h (append_gpp_mangled_name): New prototype.
5083         * jcf-parse.c (ggc_mark_jcf): Argument now `void *.'
5084         Removed cast calling `gcc_add_root.'
5085         * jvgenmain.c (mangle_obstack): New global, initialized.
5086         (main): Use it.
5087         (do_mangle_class): Constify local `ptr.'
5088         Removed macro `MANGLE_NAME.' Removed cast in `for.' Call
5089         append_gpp_mangle_name and update `count' if necessary.
5090         Use `mangle_obstack.'
5091         * mangle.c (append_unicode_mangled_name): Removed.
5092         (append_gpp_mangled_name): Likewise.
5093         (unicode_mangling_length): Likewise.
5094         (mangle_member_name): Return type set to `void.'
5095         (mangle_field_decl): Don't append `U' in escaped names.
5096         (mangle_method_decl): Likewise.
5097         (mangle_member_name): Just use `append_gpp_mangled_name.'
5098         * mangle_name.c: New file.
5099
5100 2001-02-07  Per Bothner  <per@bothner.com>
5101
5102         * check-init.c (check_init):  Fix TRY_FINALLY_EXPR logic.
5103
5104         * check-init.c (check_init):  Don't call done_alternative after
5105         processing loop code, as a LOOP_EXPR never terminates normally.
5106
5107 2001-02-08  Joseph S. Myers  <jsm28@cam.ac.uk>
5108
5109         * gcj.texi: Change sources.redhat.com reference to gcc.gnu.org.
5110
5111 2001-02-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5112
5113         * jcf-parse.c (HANDLE_SYNTHETIC_ATTRIBUTE): Don't handle field
5114         DECLs.
5115
5116 2001-02-06  Tom Tromey  <tromey@redhat.com>
5117
5118         * lex.c (java_new_lexer): Longer error message.
5119
5120 2001-02-05  Jeff Sturm  <jeff.sturm@commerceone.com>
5121             Alexandre Petit-Bianco  <apbianco@cygnus.com>
5122
5123         * typeck.c (build_prim_array_type): Added leading comment.
5124         (build_java_array_type): Moved locals out of
5125         block. Always create the `data' field, fixed alignment to match
5126         C++.
5127
5128 2001-02-04  Tom Tromey  <tromey@redhat.com>
5129
5130         * expr.c (java_lang_expand_expr): Don't bother recomputing
5131         `length'.  Use rest_of_decl_compilation, not make_decl_rtl.
5132         Fixes PR java/1866.
5133
5134 2001-02-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5135
5136         * parse.y (process_imports): Save the original name of the import
5137         for better error report.
5138
5139 2001-02-04  Bryce McKinlay  <bryce@albatross.co.nz>
5140
5141         * Make-lang.in (jvspec.o): Add DRIVER_DEFINES to the list
5142         of macros used when compiling jvspec.c.
5143         * jvspec.c (lang_specific_driver): Link with the shared
5144         libgcc by default.
5145
5146 2001-02-04  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
5147
5148         * check-init.c (check_init): Call internal_error instead of fatal.
5149         * expr.c (java_lang_expand_expr): Likewise.
5150         * jcf-parse.c (get_constant): Likewise.
5151         * mangle.c (java_mangle_decl): Likewise.
5152         * parse.y (make_nested_class_name, java_complete_lhs): Likewise.
5153         (operator_string): Likewise.
5154         * check-init.c (check_init): Call abort instead of fatal.
5155         * class.c (build_class_ref): Likewise.
5156         * constants.c (write_constant_pool): Likewise.
5157         * decl.c (start_java_method): Likewise.
5158         * expr.c (push_type, java_stack_pop, java_stack_swap): Likewise.
5159         (java_stack_dup, encode_newarray_type): Likewise.
5160         (build_java_array_length_access): Likewise.
5161         (build_java_check_indexed_type, expand_java_pushc): Likewise.
5162         (build_java_soft_divmod, build_invokeinterface): Likewise.
5163         * java-tree.h (INNER_CLASS_P): Likewise.
5164         * jcf-parse.c (parse_signature, get_name_constant): Likewise.
5165         (give_name_to_class, get_class_constant): Likewise.
5166         * jcf-write.c (CHECK_PUT, CHECK_OP, get_access_flags): Likewise.
5167         (find_constant_index, generate_bytecode_conditional): Likewise.
5168         (generate_bytecode_insns, perform_relocations): Likewise.
5169         * lex.c (java_unget_unicode, java_lex): Likewise.
5170         * mangle.c (mangle_type, mangle_record_type): Likewise.
5171         (mangle_pointer_type, mangle_array_type, init_mangling): Likewise.
5172         (finish_mangling): Likewise.
5173         * parse.h (MARK_FINAL_PARMS): Likewise.
5174         * parse.y (pop_current_osb, unreachable_stmt_error): Likewise.
5175         (obtain_incomplete_type, java_complete_class): Likewise.
5176         (java_check_regular_methods, java_complete_expand_method): Likewise.
5177         (cut_identifier_in_qualified, check_deprecation): Likewise.
5178         (patch_invoke, find_applicable_accessible_methods_list): Likewise.
5179         (java_complete_lhs, lookup_name_in_blocks): Likewise.
5180         (check_final_variable_indirect_assignment, build_unaryop): Likewise.
5181         * typeck.c (set_local_type, parse_signature_type): Likewise.
5182         (parse_signature_string, build_java_signature): Likewise;
5183         (set_java_signature): Likewise.
5184         * verify.c (type_stack_dup, CHECK_PC_IN_RANGE): Likewise.
5185         * class.c (add_method): Call fatal_error instead of fatal.
5186         (build_static_field_ref): Likewise.
5187         * expr.c (build_known_method_ref, expand_invoke): Likewise.
5188         * jcf-parse.c (get_constant, jcf_parse): Likewise.
5189         * lex.c (java_new_new_lexer): Likewise.
5190         * jv-scan.c (main): Likewise.
5191         (fatal_error): Renamed from fatal.
5192         * jcf-parse.c (yyparse): Call fatal_io_error instead of
5193         pfatal_with_name.
5194         * jcf-parse.c (jcf_parse_source): Call fatal_io_error, not fatal.
5195         (yyparse): Likewise.
5196         * jcf-write.c (make_class_file_name, write_classfile): Likewise.
5197         * lex.c (java_get_line_col): Likewise.
5198         * jcf-parse.c (load_class): Make errors non-fatal.
5199         * lex.c (byteswap_init, need_byteswap): Only #ifdef HAVE_ICONV.
5200
5201 2001-02-01  Bryce McKinlay  <bryce@albatross.co.nz>
5202
5203         * jvgenmain.c (class_mangling_suffix): Remove unused string.
5204         (error): Remove unused function.
5205         (main): Don't use "__attribute__ alias" on generated class symbol.
5206
5207 2001-01-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5208
5209         * jcf-parse.c (init_jcf_parse): Added cast to ggc_add_root's last
5210         argument.
5211         * parse.y (finish_method_declaration): Code accounting for WFLed
5212         method DECL_NAMEs deleted.
5213         (check_abstract_method_definitions): Likewise.
5214         (resolve_type_during_patch): Layout resolved type.
5215         * typeck.c (lookup_do): Removed unused local.
5216
5217 2001-01-30  Bryce McKinlay  <bryce@albatross.co.nz>
5218
5219         * java-tree.h: Remove JTI_INTEGER_NEGATIVE_ONE_NODE.
5220         * decl.c (init_decl_processing): Use integer_minus_one_node, not
5221         integer_negative_one_node.
5222         * expr.c (build_java_binop): Likewise.
5223
5224 2001-01-24  Jeff Sturm  <jeff.sturm@commerceone.com>
5225
5226         * zextract.c (read_zip_archive): Read file_offset before writing
5227         zipd and consequently clobbering the header contents.
5228
5229 2001-01-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5230
5231         * Make-lang.in: Remove all dependencies on defaults.h.
5232         * decl.c: Don't include defaults.h.
5233         * expr.c: Likewise.
5234         * parse.y: Likewise.
5235
5236 2001-01-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5237
5238         * ChangeLog (2001-01-21): Fixed typo.
5239         * class.c (layout_class_method): Code accounting for WFLed
5240         method DECL_NAMEs deleted.
5241         * constant.c (find_methodref_index): Likewise.
5242         * decl.c (lang_mark_tree): Mark `wfl' field in struct lang_decl.
5243         * java-tree.h (DECL_FUNCTION_WFL): New macro.
5244         (struct lang_decl): New field `wfl'.
5245         (java_get_real_method_name): Prototype deleted.
5246         * mangle.c (mangle_method_decl): Code accounting for WFLed
5247         method DECL_NAMEs deleted.
5248         * parse.h (GET_METHOD_NAME): Macro deleted.
5249         * parse.y (reset_method_name): Deleted.
5250         (method_header): Set DECL_FUNCTION_WFL.
5251         (check_abstract_method_header): Code accounting for WFLed method
5252         DECL_NAMEs deleted.
5253         (java_get_real_method_name): Deleted.
5254         (check_method_redefinition): Code accounting for WFLed method
5255         DECL_NAMEs deleted. Use DECL_FUNCTION_WFL.
5256         (java_check_regular_methods): Likewise.
5257         (java_check_abstract_methods): Likewise.
5258         (java_expand_classes): Don't call `reset_method_name.'
5259         (search_applicable_method_list): Use DECL_NAMEs instead of
5260         GET_METHOD_NAME.
5261         * typeck.c (lookup_do): Code accounting for WFLed method
5262         DECL_NAMEs deleted.
5263
5264 2001-01-25  Richard Earnshaw  <rearnsha@arm.com>
5265
5266         * lex.c (java_read_char): Check for EOF from getc first.
5267
5268 2001-01-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5269
5270         * class.c (layout_class): Don't lay the superclass out if it's
5271         already being laid out.
5272         * jcf-parse.c (handle_innerclass_attribute): New function.
5273         (HANDLE_INNERCLASSES_ATTRIBUTE): Invoke
5274         handle_innerclasses_attribute.
5275         (jcf_parse): Don't load an innerclasses if it's already being
5276         laid out.
5277         * jcf-write.c (append_innerclass_attribute_entry): Static
5278         `anonymous_name' and its initialization deleted. `ocii' and `ini'
5279         to be zero for anonymous classes.
5280
5281 2001-01-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5282
5283         * class.c (set_constant_value): Set DECL_FIELD_FINAL_IUD if
5284         necessary.
5285         * jcf-parse.c (set_source_filename): Use
5286         MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC if necessary.
5287
5288 2001-01-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5289
5290         * expr.c (build_jni_stub): Set DECL_CONTEXT on `meth_var' so it
5291         gets a unique asm name.
5292
5293 2001-01-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5294
5295         * jcf-parse.c (HANDLE_END_METHODS): Nullify current_method.
5296         (HANDLE_START_FIELD): Invoke MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC
5297         if necessary.
5298         (HANDLE_SYNTHETIC_ATTRIBUTE): New macro.
5299         * jcf-reader.c (get_attribute): Handle `Synthetic' attribute.
5300         * parse.y (lookup_package_type_and_set_next): Deleted.
5301         (resolve_package): Removed unnecessary code.
5302         (find_applicable_accessible_methods_list): `finit$' can't be
5303         inherited.
5304         * verify.c (pop_argument_types): Added missing prototype.
5305
5306 2001-01-23  Bryce McKinlay  <bryce@albatross.co.nz>
5307
5308         * config-lang.in: Disable java by default.
5309
5310 2001-01-23  Tom Tromey  <tromey@redhat.com>
5311
5312         * gcj.texi (Copying): New node.
5313         Added copyright information.
5314
5315 2001-01-21  Per Bothner  <per@bothner.com>
5316
5317         Various fixes to allow compiling a compressed .jar/.zip archive.
5318         * zipfile.h (struct ZipFileCache):  Replace by struct ZipFile.
5319         (struct ZipFile):  Add fields name and next (from  ZipFileCache).
5320         (struct ZipDirectory):  New field zipf points to owning ZipFile.
5321         * jcf.h (struct ZipDirectory):  Add forward declaration.
5322         (struct JCF):   Declare zipd field to have type struct ZipDirectory.
5323         Remove seen_in_zip and zip_offset fields.
5324         (JCF_SEEN_IN_ZIP):  New macro.
5325         * zextract.c (read_zip_archive):  Set ZipDirectory's zipf field.
5326         * jcf-io.c:  Change all ZipFileCache to ZipFile.
5327         (read_zip_member):  New function.
5328         (open_in_zip):  Call read_zip_member.
5329         * jcf-parse.c (find_in_current_zip):  Remove function.
5330         (read_class):  Merge in find_in_current_zip functionality.
5331         Call read_zip_member if needed.
5332         (parse_zip_file_entries):  Use read_zip_member.
5333         (process_zip_dir):  Update for removed and added JCF fields.
5334         (jcf_figure_file_type):  Re-use, don't copy initial ZipFile struct.
5335
5336 2001-01-21  Per Bothner  <per@bothner.com>
5337
5338         Minor optimization of static ggc roots.
5339         * jcf-parse.c (parse_roots):  New static field.
5340         (current_field, current_method, current_file_list):  Replace by macros
5341         naming fields of parse_roots.
5342         (init_jcf_parse):  Combine 3 ggc_add_tree_root calls to 1.
5343         * class.c (class_roots):  New static field.
5344         (registered_class, fields_ident, info_ident, class_list):
5345         New macros naming fields of parse_roots.
5346         (build_static_field_ref):  Don't register roots here.
5347         (layout_class):  Static field list replaced by macro class_list.
5348         (init_class_processing):  Call ggc_add_tree_root for 4 roots.
5349         Initialize fields_ident and info_ident here.
5350
5351 2001-01-21  Per Bothner  <per@bothner.com>
5352
5353         * jcf-parse.c (ggc_mark_jcf):  New function.
5354         (init_jcf_parse):  Register current_jcf as ggc root.
5355
5356 2001-01-21  Per Bothner  <per@bothner.com>
5357
5358         * lang.c (put_decl_node):  Print method's name.
5359
5360 2001-01-21  Per Bothner  <per@bothner.com>
5361
5362         * verify.c (VERIFICATION_ERROR_WITH_INDEX):  New macro.
5363         (verify_jvm_instructions):  Use it, for better error messages on loads.
5364
5365 2001-01-21  Per Bothner  <per@bothner.com>
5366
5367         * verify.c (merge_type_state):  Still may have to merge even if
5368         LABEL_VERIFIED (label).
5369
5370 2001-01-21  Per Bothner  <per@bothner.com>
5371
5372         * parse.y (method_header):  Don't set the DECL_NAME of a FUNCTION_DECL
5373         to a EXPR_WITH_FILE_LOCATION - that is just too fragile and wrong.
5374
5375 2001-01-19  Per Bothner  <per@bothner.com>
5376
5377         * expr.c (pop_type_0):  Only return object_ptr_type_node on mismatch
5378         if expeting an interface type.  Refines Tom's change of 2000-09-12.
5379
5380 2001-01-18  Per Bothner  <per@bothner.com>
5381
5382         * gcj.texi (Input Options): Mention .java files.
5383
5384 2001-01-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5385
5386         * lang-options.h (-Wunsupported-jdk11): Removed.
5387         * lang.c (flag_not_overriding): Deleted.
5388         (flag_static_local_jdk1_1): Likewise.
5389         (lang_W_options): Removed "unsupported-jdk11" entry.
5390         * parse.y (java_check_methods): Removed dead code.
5391
5392 2001-01-17  Tom Tromey  <tromey@redhat.com>
5393
5394         Changes suggested by Per Bothner:
5395         * gcj.texi (Input Options): Don't mention input files.
5396         (Code Generation): Updated --main information.
5397         (Invoking jcf-dump): Mention that --javap is incomplete.
5398         From Alexandre Petit-Bianco:
5399         (Warnings): Don't mention -Wunsupported-jdk11.
5400         My stuff:
5401         (Compatibility): Mention JDK 1.2-ness of libraries.
5402         (Resources): Mention resources used when writing gcj.
5403
5404 2001-01-17  Tom Tromey  <tromey@redhat.com>
5405
5406         * gcj.texi: New file.
5407         * Make-lang.in ($(srcdir)/java/gcj.info): New target.
5408         (java.info): Depend on gcj.info.
5409         (java/gcj.dvi): New target.
5410         (java.dvi): Depend on gcj.dvi.
5411         (java.install-info): Wrote.
5412
5413 2001-01-16  Jeff Sturm  <jeff.sturm@appnet.com>
5414
5415         * expr.c (java_lang_expand_expr): Use TREE_SYMBOL_REFERENCED after
5416         having called make_decl_rtl.
5417
5418 2001-01-14  Per Bothner  <per@bothner.com>
5419
5420         Various patches to emit better messages on verification errors.
5421         * expr.c (push_type_0):  Return error indication on stack overflow,
5422         instead of callinfg fatal.
5423         (push_type):  Now just call push_type_0 (nd fatal on overflow).
5424         (pop_type_0):  Return detailed error message (in a char** argument).
5425         (pop_type):  If pop_type_0 fails, print error message.
5426         (pop_argument_types):  Moved to verify.c.
5427         * verify.c (pop_argument_types):  Moved from expr.c.
5428         Return a (possible) error message, rather than void.
5429         (POP_TYPE, POP_TYPE_CONV, PUSH_TYPE, PUSH_PENDING):  New macros.
5430         (verify_jvm_instruction):  Use new macros, improving error messages.
5431         For case OPCODE_astore use object_ptr_type_node.
5432         * java-tree.h (TYPE_UNDERFLOW, TYPE_UNEXPECTED):  New macros.
5433         (pop_type_0, push_type_0, pop_argument_types):  Update accordingly.
5434
5435         * parse.y (java_complete_lhs case EXPR_WITH_FILE_LOCATION): If body is
5436         constant, return body without wrapper.  (Improves constant folding.)
5437         * lex.c (build_wfl_node):  Clear TREE_TYPE from returned node.
5438
5439 2001-01-13  Per Bothner  <per@bothner.com>
5440
5441         * expr.c (expand_java_field_op):  Assigning to a final field outside
5442         an initializer does not violate JVM spec, so should be warning, not
5443         error.  (Sun's verifier does not complain - though MicroSoft's does.)
5444
5445 2001-01-12  Joseph S. Myers  <jsm28@cam.ac.uk>
5446
5447         * gjavah.c (version), jcf-dump.c (version): Update copyright year
5448         to 2001.
5449
5450 2001-01-11  Bryce McKinlay  <bryce@albatross.co.nz>
5451
5452         * parse.y (resolve_expression_name): Permit instance variables from
5453         enclosing context in super constructor call.
5454         (resolve_qualified_expression_name): Permit enclosing class's qualified
5455         "this" in super constructor call.
5456
5457 2001-01-10  Mark Mitchell  <mark@codesourcery.com>
5458
5459         * class.c (build_utf8_ref): Remove last argument in call to
5460         make_decl_rtl; use make_function_rtl instead of make_decl_rtl.
5461         (build_class_ref): Likewise.
5462         (build_static_field_ref): Likewise.
5463         (get_dispatch_table): Likewise.
5464         (layout_class_method): Likewise.
5465         (emit_register_classes): Likewise.
5466         * constants.c (build_constant_data_ref): Likewise.
5467         * decl.c (builtin_function): Likewise.
5468         (create_primitive_vtable): Likewise.
5469         * expr.c (build_known_method_def): Likewise.
5470         (build_jni_stub): Likewise.
5471         (java_lang_expand_expr): Likewise.
5472
5473 2001-01-10  Tom Tromey  <tromey@redhat.com>
5474
5475         * jvspec.c (jvgenmain_spec): Omit -fencoding from cc1 invocation.
5476
5477 2001-01-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5478
5479         * java-tree.h (lang_printable_name_wls): New prototype.
5480         * lang.c (put_decl_name): Removed dead code. Use DECL_CONTEXT
5481         rather than `current_class' to print type name. Don't prepend type
5482         names when printing constructor names.
5483         (lang_printable_name_wls): New function.
5484         * jcf-parse.c (jcf_parse_source): Pass NULL `file' argument to
5485         `build_expr_wfl', alway set EXPR_WFL_FILENAME_NODE.
5486         * parse.y (patch_method_invocation): Message tuned for constructors.
5487         (not_accessible_p): Grant `private' access from within
5488         enclosing contexts.
5489
5490 2001-01-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5491
5492         All files with updated copyright when applicable.
5493         * Make-lang.in (JVGENMAIN_OBS): Removed java/mangle.o.
5494         * class.c (mangle_class_field): Function removed.
5495         (append_gpp_mangled_type, mangle_static_field, mangle_field): Likewise.
5496         (utf8_cmp, cxx_keyword_p): Moved to lex.c.
5497         (build_class_ref): Call `java_mangle_class_field' instead of
5498         `mangle_class_field.'
5499         (build_dtable_decl): Rewritten to call `java_mangle_vtable.'
5500         (layout_class): Call `java_mangle_decl' instead of
5501         `mangle_static_field.'
5502         (cxx_keywords): Initialized static array moved to `lex.c.'
5503         (layout_class_method): Changed leading comment. Simplified to
5504         call `java_mangle_decl.' Local `ptr' moved in for loop body.
5505         * decl.c (lang_mark_tree): Mark field `package_list.'
5506         * java-tree.h (TYPE_PACKAGE_LIST): New macro.
5507         (struct lang_type): New field `package_list.'
5508         (unicode_mangling_length): Prototype removed.
5509         (append_gpp_mangled_name, append_gpp_mangled_classtype,
5510         emit_unicode_mangled_name): Likewise.
5511         (cxx_keyword_p): New prototype.
5512         (java_mangle_decl, java_mangle_class_field,
5513         java_mangle_class_field_from_string, java_mangle_vtable): Likewise.
5514         * jcf-parse.c (jcf_parse_source): Constify `file' argument to
5515         `build_expr_wfl.'
5516         * jvgenmain.c (main_method_prefix): Global variable removed.
5517         (main_method_suffix): Likewise.
5518         (do_mangle_classname): New function.
5519         (main): Call it. Format changed to accommodate new mangling scheme.
5520         * lex.c: (utf8_cmp): Conditionally prototyped.
5521         (cxx_keywords): Moved from class.c, conditionally defined.
5522         (utf8_cmp, cxx_keyword_p): Likewise.
5523         * mangle.c (obstack.h, ggc.h): Included.
5524         (mangle_field_decl): New function.
5525         (mangle_method_decl, mangle_type, mangle_pointer_type,
5526         mangle_array_type, mangle_record_type,
5527         find_compression_pointer_match, find_compression_array_match,
5528         find_compression_record_match,
5529         find_compression_array_template_match, set_type_package_list,
5530         entry_match_pointer_p, emit_compression_string, init_mangling,
5531         finish_mangling, compression_table_add, mangle_member_name): Likewise.
5532         (mangle_obstack): New global.
5533         (MANGLE_RAW_STRING): New macro.
5534         (unicode_mangling_length): Turned static.
5535         (append_unicode_mangled_name): Renamed from
5536         `emit_unicode_mangled_name.'  Turned static. `mangle_obstack'
5537         replaces `obstack', removed from the parameter list.
5538         (append_gpp_mangled_name): Turned static. `mangle_obstack'
5539         replaces parameter `obstack', removed from the parameter list. Call
5540         `append_unicode_mangled_name' instead of `emit_unicode_mangled_name.
5541         (append_gpp_mangled_classtype): Removed.
5542         (compression_table, compression_next): New static variables.
5543         * parse.y (temporary_obstack): Extern declaration removed.
5544
5545 2001-01-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5546
5547         * parse.y (patch_binop): Compute missing type in error situations.
5548
5549 2001-01-05  Bryce McKinlay  <bryce@albatross.co.nz>
5550
5551         * class.c (make_class_data): Push initial value for "arrayclass".
5552         * decl.c (init_decl_processing): Add new class field "arrayclass".
5553
5554 2001-01-05  Bryce McKinlay  <bryce@albatross.co.nz>
5555
5556         From patha@softlab.ericsson.se:
5557         * parse.y (switch_label): Use build, not build1, to construct
5558         DEFAULT_EXPR.
5559
5560 2001-01-04  Neil Booth  <neil@daikokuya.demon.co.uk>
5561
5562         * lang.c (lang_decode_option): Change -MA to -MP.
5563         * jcf-depend.c (jcf_dependency_add_target, jcf_dependency_set_target):
5564         Update to new prototype; do quote targets.
5565         (jcf_dependency_write): Update.
5566
5567 2000-12-22  Bryce McKinlay  <bryce@albatross.co.nz>
5568
5569         Shorten primitive array allocation path:
5570         * decl.c (init_decl_processing): Use _Jv_NewPrimArray not _Jv_NewArray
5571         to create new primitive arrays.
5572         * expr.c (build_newarray): If generating native code, call
5573         soft_newarray_node with a reference to the primitive TYPE identifier
5574         instead of type_value.
5575
5576 2000-12-17  Bryce McKinlay  <bryce@albatross.co.nz>
5577
5578         Fix for PRs gcj/312 and gcj/253:
5579         * parse.y (valid_ref_assignconv_cast_p): Load classes for source and
5580         dest if they arn't already.
5581         * class.c (layout_class): Call maybe_layout_super_class on
5582         superinterfaces also, but only if compiling from bytecode.
5583
5584         Fix for PR gcj/373:
5585         * parse.y (create_class): Set ACC_STATIC if class is declared in an
5586         interface.
5587
5588 2000-12-15  Tom Tromey  <tromey@redhat.com>
5589
5590         * jcf-parse.c (jcf_parse_source): Set wfl_operator if not already
5591         set.
5592
5593 2000-12-14  Andrew Haley  <aph@redhat.com>
5594
5595         * boehm.c (mark_reference_fields): Change test to correctly detect
5596         bitmap overflow.
5597
5598 2000-12-15  Andreas Jaeger  <aj@suse.de>
5599
5600         * config-lang.in (lang_dirs): Added.
5601
5602 2000-12-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5603
5604         * parse.y (end_artificial_method_body): Fixed undefined behavior.
5605         Credits go to rth for finding it.
5606
5607 2000-12-13  Mike Stump  <mrs@wrs.com>
5608
5609         * parse.y (check_static_final_variable_assignment_flag): Fix spelling.
5610
5611 2000-11-07  Tom Tromey  <tromey@cygnus.com>
5612
5613         * Make-lang.in (JAVA_LEX_C): Added chartables.h.
5614         * lex.c (java_ignorable_control_p): Removed.
5615         (java_letter_or_digit_p): Removed.
5616         (java_start_char_p): New function.
5617         (java_read_char): Return `int', not `unicode_t'.  Changed
5618         callers.
5619         (java_read_unicode): Likewise.
5620         (java_read_unicode_collapsing_terminators): Likewise.
5621         (java_get_unicode): Likewise.
5622         (java_new_lexer): Initialize hit_eof.
5623         (java_parse_end_comment): Take `int' argument.
5624         (java_parse_doc_section): Likewise.
5625         (java_parse_escape_sequence): Don't allow backlash-newline.
5626         Return `int'.
5627         * lex.h (JAVA_DIGIT_P): Removed.
5628         (_JAVA_LETTER_OR_DIGIT_P): Removed.
5629         (_JAVA_IDENTIFIER_IGNORABLE): Removed.
5630         (JAVA_START_CHAR_P): Renamed from JAVA_ID_CHAR_P.
5631         (JAVA_PART_CHAR_P): New macro.
5632         (UEOF): Now -1.
5633         (JAVA_CHAR_ERROR): Now -2.
5634         (java_lexer): New field `hit_eof'.
5635         * chartables.h: New file.
5636         * gen-table.pl: new file.
5637
5638 2000-11-20  Tom Tromey  <tromey@cygnus.com>
5639             Alexandre Petit-Bianco  <apbianco@cygnus.com>
5640
5641         * parse.y (java_complete_lhs): Only allow compound assignment of
5642         reference type if type is String.
5643
5644 2000-12-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5645
5646         * Make-lang.in (java/jcf-path.o:): libgcj.jar replaces libgcj.zip.
5647         jcf-path.c: Likewise.
5648
5649 2000-12-09  Anthony Green  <green@redhat.com>
5650
5651         * zipfile.h (ZipDirectory): Declare size, uncompressed_size,
5652         filestart and filename_length as int values.
5653
5654 2000-12-07  Mo DeJong  <mdejong@redhat.com>
5655
5656         * jcf-io.c (find_class): Correct the logic that tests to see if a
5657         .java file is newer than its .class file. The compiler was
5658         incorrectly printing a warning when file mod times were equal.
5659
5660 2000-12-07  Zack Weinberg  <zack@wolery.stanford.edu>
5661
5662         * jvgenmain.c: Use ISPRINT not isascii.
5663
5664 2000-12-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5665
5666         * parse.y (end_artificial_method_body): Fixed typo.
5667
5668 2000-12-04  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5669
5670         * parse.y (patch_method_invocation): Pick the correct enclosing
5671         context when creating inner class instances.
5672         Fixes gcj/332.
5673
5674 2000-11-26  Joseph S. Myers  <jsm28@cam.ac.uk>
5675
5676         * gjavah.c (version), jcf-dump.c (version), jv-scan.c (version):
5677         Update copyright year to 2000.
5678
5679 2000-11-23  Anthony Green  <green@redhat.com>
5680
5681         * jcf-parse.c (init_jcf_parse): Register current_file_list root.
5682         Move current_file_list out of yyparse and make it static.
5683
5684         * expr.c: Declare quick_stack and tree_list_free_list as static
5685         (init_expr_processing): Register quick_stack and
5686         tree_list_free_list roots.
5687
5688 2000-11-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5689
5690         * parse.y (build_outer_field_access): New local `decl_ctx', use
5691         it. Check for field's context and current class immediate outer
5692         context inheritance.
5693         (outer_field_access_p): Consider fields inherited from the last
5694         enclosing context.
5695         (build_access_to_thisn): Stop at the last enclosing context if
5696         necessary.
5697         Fixes gcj/367.
5698
5699 2000-11-23  J"orn Rennecke <amylaar@redhat.com>
5700
5701         * Make-lang.in (jvspec.o): Depend on $(CONFIG_H).
5702
5703 2000-11-22  Bryce McKinlay  <bryce@albatross.co.nz>
5704
5705         * jcf-parse.c (get_constant): Call UT8_CHAR_LENGTH on `utf8', not the
5706         scratch buffer.
5707
5708 2000-11-20  Tom Tromey  <tromey@cygnus.com>
5709
5710         * jv-scan.c (help): Document --complexity.
5711         (options): Added --complexity.
5712         (flag_complexity): New global.
5713         (main): Call `report'.
5714         * parse-scan.y (complexity): New global.
5715         (if_then_statement, if_then_else_statement,
5716         if_then_else_statement_nsi, switch_block_statement_group,
5717         while_expression, do_statement, for_begin, continue_statement,
5718         throw_statement, catch_clause, finally, method_invocation,
5719         conditional_and_expression, conditional_or_expression,
5720         conditional_expression): Update complexity.
5721         (reset_report): Reset complexity.
5722         (report): New function.
5723
5724 2000-11-20  Tom Tromey  <tromey@cygnus.com>
5725
5726         * lex.c (yylex): Added STRICT_TK case.
5727         * parse.y (STRICT_TK): Added.
5728         * parse-scan.y (STRICT_TK): Added.
5729         * Make-lang.in ($(srcdir)/java/keyword.h): Added missing `\' and
5730         `;'.  Use 4, not 3, with -k option.  Correctly rename resulting
5731         file.
5732         * keyword.h: Rebuilt.
5733         * keyword.gperf (strictfp): Added.
5734
5735 2000-11-20  Tom Tromey  <tromey@cygnus.com>
5736
5737         * lex.c (yylex): Recognize floating point constants with leading
5738         0.
5739
5740 2000-11-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5741
5742         * java-tree.h (cyclic_inheritance_report): Constify.
5743         * parse.y (cyclic_inheritance_report): Likewise.
5744
5745 2000-11-17  Zack Weinberg  <zack@wolery.stanford.edu>
5746
5747         * parse.y (goal): Remove call to ggc_add_string_root.
5748
5749 2000-11-16  Zack Weinberg  <zack@wolery.stanford.edu>
5750
5751         * jcf-parse.c (get_constant), parse.y (do_merge_string_cste):
5752         Create string in scratch buffer, then pass to build_string.
5753
5754 2000-11-13  Joseph S. Myers  <jsm28@cam.ac.uk>
5755
5756         * parse.y (issue_warning_error_from_context): Add
5757         ATTRIBUTE_PRINTF.
5758
5759 2000-11-11  Anthony Green  <green@redhat.com>
5760
5761         * jcf-parse.c (process_zip_dir): Add finput parameter.
5762         (jcf_figure_file_type): Call process_zip_dir with appropriate
5763         argument.
5764
5765 2000-11-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5766
5767         * decl.c (copy_lang_decl): Use memcpy, not bcopy.
5768         * jcf-parse.c (jcf_figure_file_type): Likewise.
5769
5770 2000-11-09  Joseph S. Myers  <jsm28@cam.ac.uk>
5771
5772         * parse.y (create_new_parser_context): Use memset () instead of
5773         bzero ().
5774
5775 2000-11-08  Tom Tromey  <tromey@cygnus.com>
5776
5777         * gjavah.c (process_file): Only include gcj/cni.h when generating
5778         CNI stubs.
5779
5780 2000-11-07  Joseph S. Myers  <jsm28@cam.ac.uk>
5781
5782         * expr.c (note_instructions), jcf-io.c (find_class), jcf-parse.c
5783         (init_outgoing_cpool), lex.c (java_init_lex): Use memset ()
5784         instead of bzero ().
5785
5786 2000-11-05  Tom Tromey  <tromey@cygnus.com>
5787
5788         * lex.h (JAVA_FLOAT_RANGE_ERROR): Typo fix.
5789         * lex.c (IS_ZERO): New define.
5790         (java_perform_atof): Error on floating point underflow.
5791
5792 2000-11-04  Tom Tromey  <tromey@cygnus.com>
5793
5794         * lex.c (java_parse_escape_sequence): Only read two octal
5795         characters if the first one is greater than 3.  Don't allow
5796         "octal" numbers to include the digits 8 or 9.
5797
5798 2000-11-05  Joseph S. Myers  <jsm28@cam.ac.uk>
5799
5800         * Make-lang.in (java.distdir): Remove.
5801
5802 2000-11-03  Tom Tromey  <tromey@cygnus.com>
5803
5804         * Make-lang.in (java.dvi): New target.
5805         Partial fix for PR other/567.
5806
5807         * lang-options.h: Mention -Wout-of-date.
5808         * jcf-dump.c (flag_newer): New global.
5809         * gjavah.c (flag_newer): New global.
5810         * jcf-io.c (find_class): Only warn when flag_newer set.
5811         * lang.c (flag_newer): New global.
5812         (struct string_option): New declaration.
5813         (lang_W_options): New global.
5814         (process_option_with_no): New function.
5815         (lang_decode_option): Use it.
5816
5817         * class.c (cxx_keyword_p): Accept keywords with trailing `$'s.
5818         * gjavah.c (cxx_keyword_subst): Handle any number of trailing
5819         `$'.
5820
5821         * lex.h (_JAVA_IDENTIFIER_IGNORABLE): New macro.
5822         (JAVA_ID_CHAR_P): Also try java_ignorable_control_p.
5823         * lex.c (java_read_unicode): Removed `term_context' argument.
5824         Recognize any number of `u' in `\u'.
5825         (java_read_unicode_collapsing_terminators): New function.
5826         (java_get_unicode): Use it.
5827         (java_lineterminator): Removed.
5828         (yylex): Produce error if character literal is newline or single
5829         quote.  Return if eof found in middle of `//' comment.  EOF in
5830         `//' comment is only an error if pedantic.
5831         (java_ignorable_control_p): New function.
5832         (java_parse_end_comment): Return if eof found in middle of
5833         comment.
5834         Include flags.h.
5835         * jv-scan.c (pedantic): New global.
5836
5837 2000-10-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5838
5839         * parse.y (outer_field_access_p): Inherited fields aren't
5840         consider outer fields.
5841         (maybe_build_thisn_access_method): Use
5842         PURE_INNER_CLASS_TYPE_P instead of INNER_CLASS_TYPE_P.
5843         (resolve_expression_name): Trigger an error if a static field
5844         is being accessed as an outer field.
5845
5846 2000-10-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5847
5848         * Make-lang.in (LIBGCJ_ZIP_FILE): Define with `$(prefix)'.
5849         Fixes gcj/365.
5850
5851 2000-10-27  Zack Weinberg  <zack@wolery.stanford.edu>
5852
5853         * Make-lang.in: Move all build rules here from Makefile.in,
5854         adapt to new context.  Wrap all rules that change the current
5855         directory in parentheses.  Expunge all references to $(P).
5856         When one command depends on another and they're run all at
5857         once, use && to separate them, not ;.  Add OUTPUT_OPTION to
5858         all object-file generation rules.  Delete obsolete variables.
5859
5860         * Makefile.in: Delete.
5861         * config-lang.in: Delete outputs= line.
5862
5863 2000-10-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5864
5865         * parse.y (patch_method_invocation): NULLify this_arg when already
5866         inserted.
5867         (maybe_use_access_method): Handle call to methods unrelated to the
5868         current class. Fixed comment.
5869         Fixes gcj/361.
5870
5871 2000-10-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5872
5873        * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Check inherited type in
5874        scope.
5875
5876 2000-10-24  Tom Tromey  <tromey@cygnus.com>
5877
5878         * lex.c (java_new_lexer): Initialize new fields.  Work around
5879         broken iconv() implementations.
5880         (java_read_char): Swap bytes if required.  Use fallback decoder if
5881         required.
5882         (byteswap_init, need_byteswap): New globals.
5883         (java_destroy_lexer): Only close iconv handle if it is in use.
5884         * lex.h (java_lexer): New fields read_anything, byte_swap,
5885         use_fallback.
5886         Made out_buffer unsigned.
5887
5888 2000-10-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5889
5890         * parse.y (register_incomplete_type): Include JDEP_FIELD as a case
5891         where an enclosing context can be set on the jdep.
5892         (do_resolve_class): Fixed identation.
5893
5894 2000-10-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5895
5896         * gjavah.c (NEED_PEEK_ATTRIBUTE, NEED_SKIP_ATTRIBUTE): Define
5897
5898         * jcf-reader.c (peek_attribute, skip_attribute): Only define
5899         when requested.
5900
5901         * parse.h (yyerror): If JC1_LITE, mark with ATTRIBUTE_NORETURN.
5902
5903         * verify.c (CHECK_PC_IN_RANGE): Cast result of stmt-expr to void.
5904
5905 2000-10-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5906
5907         * jcf-write.c (OP1): Update `last_bc'.
5908         (struct jcf_block): Fixed indentation and typo in comments.  New
5909         field `last_bc'.
5910         (generate_bytecode_insns): Insert `nop' if `jsr' immediately
5911         follows `monitorenter'.
5912         * parse.y (patch_synchronized_statement): New local `tmp'. Call
5913         `patch_string'.
5914         Fixes gcj/232.
5915
5916 2000-10-16  Tom Tromey  <tromey@cygnus.com>
5917
5918         * jvspec.c (lang_specific_driver): Recognize -MF and -MT.
5919         * lang-specs.h: Added %{MA}, %{MF*}, %{MT*}.
5920         * lang-options.h: Added -MA, -MT, -MF..
5921         * lang.c (lang_decode_option): Recognize -MA, -MT, -MF.
5922         (DEPEND_TARGET_SET): New macro.
5923         (DEPEND_FILE_ALREADY_SET): Likewise.
5924         (init_parse): Handle new flags.
5925         * jcf.h (jcf_dependency_print_dummies): Declare.
5926         * Make-lang.in (s-java): Added mkdeps.o.
5927         * Makefile.in (BACKEND): Added mkdeps.o.
5928         (../gcjh$(exeext)): Added mkdeps.o.
5929         (../jcf-dump$(exeext)): Added mkdeps.o.
5930         * jcf-depend.c: Include mkdeps.h.
5931         (struct entry, dependencies, targets, MAX_OUTPUT_COLUMNS,
5932         add_entry): Removed.
5933         (jcf_dependency_reset): Rewrote.
5934         (dependencies): New global.
5935         (jcf_dependency_set_target): Rewrote.
5936         (jcf_dependency_add_target): Likewise.
5937         (jcf_dependency_add_file): Likewise.
5938         (munge): Removed.
5939         (print_ents): Removed.
5940         (jcf_dependency_write): Rewrote.
5941         (print_dummies): New global.
5942         (jcf_dependency_print_dummies): New function
5943         (jcf_dependency_write): Call deps_dummy_targets if required.
5944
5945 2000-10-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5946
5947         * gjavah.c (add_class_decl): Removed unused variables `tname',
5948         `tlen' and `name_index'.
5949         * java-tree.h (BUILD_FILENAME_IDENTIFIER_NODE): New macro.
5950         * jcf-parse.c (jcf_parse_source): Use it and set EXPR_WFL_FILENAME
5951         in `wfl_operator' with value.
5952         (yyparse): Use BUILD_FILENAME_IDENTIFIER_NODE.
5953         (jcf_figure_file_type): Fixed identation.
5954         * lex.c (java_get_line_col): Use EOF. Tuned `^' placement.
5955         * parse.y (analyze_clinit_body): New function.
5956         (static_initializer:): Reset `current_static_block'.
5957         (java_parser_context_restore_global): Set EXPR_WFL_FIILENAME_NODE in
5958         `wfl_operator' with new value.
5959         (lookup_cl): Use EXPR_WFL_FILENAME.
5960         (maybe_yank_clinit): Handle bogus <clinit> bodies, call
5961         analyze_clinit_body.
5962         (build_outer_field_access): Access to this$<n> built from
5963         current_class, not its outer context.
5964         (build_access_to_thisn): Fixed leading comment. Tidied things up.
5965         (resolve_qualified_expression_name): Handle `T.this' and `T.this.f()'.
5966         (patch_method_invocation): Use `is_static_flag' when already
5967         initialized.
5968         (patch_newarray): Removed assignment in ternary operator.
5969
5970 2000-10-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5971
5972         * except.c (free_eh_ranges): Don't free `whole_range'.
5973
5974 2000-10-15  Anthony Green  <green@redhat.com>
5975
5976         * decl.c (init_decl_processing): Call init_class_processing before
5977         anything else.
5978
5979 2000-10-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5980
5981         * check-init.c (check_init): Fixed leading comment. Use
5982         LOCAL_FINAL_P.
5983         * decl.c (push_jvm_slot): Use MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC.
5984         (give_name_to_locals): Likewise.
5985         (lang_mark_tree): Handle FIELD_DECL. Register `am' and `wfl'
5986         fields in lang_decl_var.
5987         * java-tree.h (DECL_FUNCTION_SYNTHETIC_CTOR,
5988         DECL_FUNCTION_ALL_FINAL_INITIALIZED): New macros.
5989         (FIELD_INNER_ACCESS): Removed ugly cast, macro rewritten.
5990         (FIELD_INNER_ACCESS_P, DECL_FIELD_FINAL_IUD, DECL_FIELD_FINAL_LIIC,
5991         DECL_FIELD_FINAL_IERR, DECL_FIELD_FINAL_WFL): New macros.
5992         (LOCAL_FINAL): Rewritten.
5993         (LOCAL_FINAL_P, FINAL_VARIABLE_P, CLASS_FINAL_VARIABLE_P
5994         MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC): New macros.
5995         (struct lang_decl): Fixed comments. Added `synthetic_ctor' and
5996         `init_final' fields.
5997         (struct lang_decl_var): Fixed leading comment. Added `am', `wfl',
5998         `final_uid', `final_liic', `final_ierr' and `local_final' fields.
5999         (TYPE_HAS_FINAL_VARIABLE): New macro.
6000         (struct lang_type): Added `afv' field.
6001         * parse.y (check_static_final_variable_assignment_flag): New function.
6002         (reset_static_final_variable_assignment_flag): Likewise.
6003         (check_final_variable_local_assignment_flag): Likewise.
6004         (reset_final_variable_local_assignment_flag): Likewise.
6005         (check_final_variable_indirect_assignment): Likewise.
6006         (check_final_variable_global_assignment_flag): Likewise.
6007         (add_inner_class_fields): Use LOCAL_FINAL_P.
6008         (register_fields): Handle local finals and final variables.
6009         (craft_constructor): Set DECL_FUNCTION_SYNTHETIC_CTOR.
6010         (declare_local_variables): Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC.
6011         (source_start_java_method): Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC
6012         on local finals.
6013         (java_complete_expand_methods): Loop to set
6014         TYPE_HAS_FINAL_VARIABLE. Call
6015         `reset_final_variable_local_assignment_flag' and
6016         `check_final_variable_local_assignment_flag' accordingly before
6017         and after constructor expansion. Call
6018         `reset_static_final_variable_assignment_flag'
6019         before expanding <clinit> and after call
6020         `check_static_final_variable_assignment_flag' if the
6021         current_class isn't an interface. After all methods have been
6022         expanded, call `check_final_variable_global_assignment_flag' and
6023         `check_static_final_variable_assignment_flag' if the current class
6024         is an interface.
6025         (maybe_yank_clinit): Fixed typo in comment.
6026         (build_outer_field_access_methods): Removed old sanity check. Use
6027         FIELD_INNER_ACCESS_P. Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC.
6028         Don't create access methods for finals.
6029         (resolve_field_access): Use `CLASS_FINAL_VARIABLE_P'.
6030         (java_complete_tree): Likewise. Reset DECL_FIELD_FINAL_IUD if
6031         existing DECL_INIT has been processed.
6032         (java_complete_lhs): Likewise.
6033         (check_final_assignment): Filter input on `lvalue''s TREE_CODE.
6034         Test for COMPONENT_REF to get to the FIELD_DECL. Implemented new
6035         logic.
6036         (patch_assignment): Use LOCAL_FINAL_P.
6037         (fold_constant_for_init): Reset DECL_FIELD_FINAL_IUD if
6038         DECL_INITIAL is nullified.
6039         Fixes gcj/163.
6040
6041 2000-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6042
6043         * Make-lang.in (parse.c, parse-scan.c): Create atomically.
6044
6045         * Makefile.in (parse.c, parse-scan.c): Likewise.
6046
6047 2000-10-12  Mark Mitchell  <mark@codesourcery.com>
6048
6049         * class.c (temporary_obstack): Remove.
6050         (make_class): Don't mess with obstascks.
6051         (push_class): Likewise.
6052         (set_super_info): Likewise.
6053         (add_method_1): Likewise.
6054         (add_method): Likewise.
6055         (add_field): Likewise.
6056         (build_utf8_ref): Likewise.
6057         (build_class_ref): Likewise.
6058         (build_static_field_ref): Likewise.
6059         (finish_class): Likewise.
6060         (push_super_field): Likewise.
6061         (layout_class): Likewise.
6062         (layout_class_methods): Likewise.
6063         (init_class_processing): Likewise.
6064         * constants.c (get_tag_node): Likewise.
6065         (build_constant_data_ref): Likewise.
6066         * decl.c (ggc_p): Remove.
6067         (copy_lang_decl): Use ggc_alloc.
6068         (complete_start_java_method): Don't mess with obstacks.
6069         (start_java_method): Likewise.
6070         (end_java_method): Likewise.
6071         * except.c (link_handler): Use xmalloc.
6072         (free_eh_ranges): New function.
6073         (method_init_exceptions): Use it.
6074         (add_handler): Use xmalloc.
6075         (expand_start_java_handler): Don't mess with obstacks.
6076         (prepare_eh_table_type): Likewise.
6077         (expand_end_java_handler): Likewise.
6078         * expr.c (push_value): Likewise.
6079         (create_label_decl): Likewise.
6080         (build_jni_stub): Likewise.
6081         (java_lang_expand_expr): Likewise.
6082         (note_instructions): Use xrealloc.
6083         (java_push_constant_from_pool): Don't mess with obstacks.
6084         (process_jvm_instruction): Likewise.
6085         * java-tree.h (cyclic_inheritance_report): Remove duplicate
6086         declaration.
6087         * jcf-parse.c (get_constant): Don't mess with obstacks.
6088         (read_class): Likewise.
6089         (jcf_parse): Likewise.
6090         * lex.c (expression_obstack): Remove.
6091         (java_lex): Don't use obstack_free.
6092         * parse.h (exit_java_complete_class): Don't mess with obstacks.
6093         (MANGLE_OUTER_LOCAL_VARIABLE_NAME): Adjust.
6094         (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID): Likewise.
6095         (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_STRING): Likewise.
6096         * parse.y (gaol): Add more GC roots.
6097         (add_inner_class_fields): Adjust calls to MANGLE_* macros.
6098         (lookup_field_wrapper): Likewise.
6099         (obtain_incomplete_type): Don't mess with obstacks.
6100         (build_alias_initializer_parameter_list): Adjust calls to MANGLE_*
6101         macros.
6102         (craft_constructor): Don't mess with obstacks.
6103         (safe_layout_class): Likewise.
6104         (java_complete_class): Likewise.
6105         (source_end_java_method): Likewise.
6106         (build_outer_field_access_methods): Likewise.
6107         (build_outer_method_access_method): Likewise.
6108         (maybe_build_thisn_access_method): Likewise.
6109         (build_dot_class_method_invocation): Likewise.
6110         (java_complete_tree): Likewise.
6111         (java_complete_lhs): Likewise.
6112         (do_merge_string_cste): Likewise.
6113         (patch_string_cst): Likewise.
6114         (array_constructor_check_entry): Likewise.
6115         * typeck.c (build_java_array_type): Likewise.
6116         (parse_signature_string): Likewise.
6117         (build_java_signature): Likewise.
6118
6119 2000-10-12  Tom Tromey  <tromey@cygnus.com>
6120
6121         Fix for PR gcj/356:
6122         * gjavah.c (add_class_decl): Don't special-case inner classes.
6123         (add_namelet): Likewise.
6124
6125 2000-10-11  Rodney Brown  <RodneyBrown@mynd.com>
6126
6127         * java-tree.h: Constify current_encoding.
6128         * lang.c: Constify current_encoding.
6129
6130 2000-10-10  Jeff Sturm  <jeff.sturm@appnet.com>
6131
6132         * jvgenmain.c (class_mangling_suffix): Omit `.'.
6133         (main): Use `$' when NO_DOLLAR_IN_LABEL is not set, otherwise `.'.
6134
6135 2000-10-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6136
6137         * expr.c (java_lang_expand_expr): Reinstall 1999-08-14 Anthony's
6138         patch. Fixes gcj/340.
6139
6140 2000-10-10  Tom Tromey  <tromey@cygnus.com>
6141
6142         * lex.c (java_new_lexer): Initialize out_first and out_last
6143         fields.
6144         * lex.h (java_lexer): Added out_buffer, out_first, out_last.
6145
6146 2000-10-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6147
6148         * parse.y (pop_current_osb): New function.
6149         (array_type:): Use `dims:', changed actions
6150         accordingly. Suggested by Anthony Green.
6151         (array_creation_expression:): Used pop_current_osb.
6152         (cast_expression:): Likewise.
6153         (search_applicable_method_list): Fixed indentation.
6154
6155 2000-10-08  Anthony Green  <green@redhat.com>
6156
6157         * parse.y (array_type_literal): Remove production.
6158         (type_literals): Refer to array_type, not array_type_literal.
6159
6160 2000-10-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6161
6162         Patch contributed by Corey Minyard.
6163         * decl.c (check_local_named_variable): New function.
6164         (tree check_local_unnamed_variable): Likewise.
6165         (find_local_variable): Splitted. Call check_local_{un}named_variable.
6166
6167 2000-10-07  Anthony Green  <green@redhat.com>
6168
6169         * class.c (layout_class): Handle case where superclass can't be
6170         layed out yet.
6171
6172 2000-10-07  Joseph S. Myers  <jsm28@cam.ac.uk>
6173
6174         * Makefile.in (keyword.h): Refer to GNU FTP site for updated
6175         gperf.
6176
6177 2000-10-05  Tom Tromey  <tromey@cygnus.com>
6178
6179         * jvspec.c (jvgenmain_spec): Added `-fdollars-in-identifiers'.
6180         * jvgenmain.c (class_mangling_prefix): Removed.
6181         (class_mangling_suffix): New global.
6182         (main): Use it.
6183         * gjavah.c (cxx_keyword_subst): Mangle C++ keywords by appending
6184         `$'.
6185         (print_method_info): Handle overrides for static and final
6186         methods.
6187         (process_file): Generate declaration for class object field.
6188         * class.c (cxx_keywords): New array.
6189         (utf8_cmp): New function.
6190         (cxx_keyword_p): New function.
6191         (layout_class_method): Mangle C++ keywords by appending `$'.
6192         (mangle_field): New function.
6193         (mangle_class_field): Use mangle_field.  Mangle class name as
6194         `class$'.
6195         (mangle_static_field): Use mangle_field.
6196
6197 2000-10-03  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6198
6199         * decl.c (find_local_variable): Removed uncessary type check and
6200         fixed range check typo. From Corey Minyard.
6201
6202 2000-09-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6203
6204         * decl.c (give_name_to_locals): New local `code_offset'. Call
6205         `maybe_adjust_start_pc'.
6206         * expr.c (note_instructions): New function.
6207         (expand_byte_code): Don't collect insn starts here.
6208         (peek_opcode_at_pc): New function.
6209         (maybe_adjust_start_pc): Likewise.
6210         * java-tree.h (maybe_adjust_start_pc): Declare.
6211         (note_instructions): Likewise.
6212         * jcf-parse.c (parse_class_file): Call `note_instructions'.
6213
6214 2000-09-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6215
6216         * parse.y (field_access:): Fixed indentation.
6217         (qualify_ambiguous_name): Properly qualify `this.a[b].c'.
6218
6219 2000-09-07  Tom Tromey  <tromey@cygnus.com>
6220
6221         Fix for PR gcj/307:
6222         * parse.y (patch_binop): Use JNUMERIC_TYPE_P, not
6223         JPRIMITIVE_TYPE_P, for arithmetic operators.
6224         (patch_method_invocation): Indentation fix.
6225         (try_builtin_assignconv): Handle boolean specially.  Fixed typo.
6226         (valid_builtin_assignconv_identity_widening_p): Handle boolean.
6227         (do_unary_numeric_promotion): Cleaned up code.
6228         (valid_cast_to_p): Handle boolean correctly.
6229
6230 2000-09-27  Tom Tromey  <tromey@cygnus.com>
6231
6232         * lex.c (java_read_unicode): Reset bs_count when finished with
6233         `\u' sequence.
6234
6235 2000-10-01  Mark Mitchell  <mark@codesourcery.com>
6236
6237         Convert to GC.
6238         * Make-lang.in (s-java): Don't depend on ggc-callbacks.o.
6239         * Makefile.in (BACKEND): Don't include ggc-callbacks.o.
6240         (typeck.o): Depend on ggc.h.
6241         * class.c (add_method_1): Use GC functions for allocation.
6242         (init_class_processing): Register roots.
6243         * decl.c (ggc_p): Set to 1.
6244         (pending_local_decls): Make it static.
6245         (push_jvm_slot): Use GC functions for allocation.
6246         (init_decl_processing): Register roots.
6247         (give_name_to_locals): Use GC functions for allocation.
6248         (lang_mark_tree): New function.
6249         * java-tree.h (MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Use GC
6250         functions for allocation.
6251         * jcf-parse.c (jcf_parse_source): Use ggc_strdup.
6252         * lex.c (java_lex): Use build_string, rather than replicating it
6253         inline.
6254         * parse.y (goal): Add more roots.
6255         (mark_parser_ctxt): New function.
6256         * typeck.c: Include ggc.h.
6257
6258 2000-09-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6259
6260         * parse.y (maybe_yank_clinit): Also keep <clinit> if its body
6261         contains something else than MODIFY_EXPR.
6262
6263 2000-09-23  Mark Mitchell  <mark@codesourcery.com>
6264
6265         * Make-lang.in (JAVA_SRCS): Include java-tree.h.
6266         * Makefile.in (parse.o): Depend on ggc.h.
6267         (class.o): Likewise.
6268         (constants.o): Likewise.
6269         (decl.o): Likewise.
6270         (expr.o): Likewise.
6271         (jcf-parse.o): Likewise.
6272         (jcf-write.o): Likewise.
6273         (mangle.o): Likewise.
6274         * class.c: Include ggc.h.
6275         (build_static_field_ref): Register GC roots.
6276         (layout_class): Likewise.
6277         (init_class_processing): Likewise.
6278         * constants.c: Include ggc.h.
6279         (current_constant_pool_data_ref): Remove.
6280         (tag_nodes): Move it to ...
6281         (get_tag_node): ... here.  Register GC roots.
6282         * decl.c: Include ggc.h.  Remove many global tree definitions.
6283         (throw_node): Define.
6284         (java_global_trees): Likewise.
6285         (predef_filenames): Make the size a constant.
6286         (init_decl_processing): Adjust accordingly.
6287         (init_decl_processing): Call init_jcf_parse.  Register GC roots.
6288         * expr.c: Include ggc.h.
6289         (init_expr_processing): Register GC roots.
6290         (build_invokeinterface): Likewise.
6291         * java-tree.h: Replace extern tree declarations with macros.
6292         (java_global_trees): New variable.
6293         (java_tree_index): New enumeration.
6294         (init_jcf_parse): Declare.
6295         * jcf-parse.c: Include ggc.h.
6296         (current_class): Remove declaration.
6297         (main_class): Likewise.
6298         (all_class_list): Likewise.
6299         (predefined_filename_p): Adjust for constant size of
6300         predef_filenames.
6301         (init_jcf_parse): New function.
6302         * jcf-write.c: Include ggc.h.
6303         (generate_classfile): Register GC roots.
6304         (append_synthetic_attribute): Likewise.
6305         (append_innerclass_attribute_entry): Likewise.
6306         * lang.c: Include ggc.h.
6307         (lang_print_error): Register GC roots.
6308         * parse.h (struct parser_ctxt): Rename fields to avoid conflicts
6309         with macros.
6310         * parse.y: Include ggc.h.
6311         (wfl_operator): Remove.
6312         (goal): Register GC roots.
6313         (java_pop_parser_context): Adjust for new field names.
6314         (java_parser_context_save_global): Likewse.
6315         (java_parser_context_restore_global): Likewise.
6316         (java_parser_context_suspend): Likewise.
6317         (java_parser_context_resume): Likewise.
6318         (verify_constructor_circularity): Register GC roots.
6319         (lookup_cl): Likewise.
6320         (java_reorder_fields): Likewise.
6321         (build_current_this): Likewise.
6322         (class_in_current_package): Likewise.
6323         (argument_types_convertible): Likewise.
6324         (patch_cast): Rename wfl_op parameter to avoid macro conflicts.
6325
6326 2000-09-14  Tom Tromey  <tromey@cygnus.com>
6327
6328         * lex.h: Use HAVE_ICONV_H, not HAVE_ICONV.
6329
6330 2000-09-13  Tom Tromey  <tromey@cygnus.com>
6331
6332         * jcf-parse.c: Include <locale.h>.
6333         * jv-scan.c: Include <locale.h>.
6334
6335 2000-09-12  Tom Tromey  <tromey@cygnus.com>
6336
6337         * expr.c (pop_type_0): Return `Object' if trying to merge two
6338         interface types.
6339         * verify.c (merge_types): Don't return `TYPE_UNKNOWN' for
6340         interface types; `Object' is always a valid supertype.
6341
6342 2000-09-12  Tom Tromey  <tromey@cygnus.com>
6343
6344         Fix for PR gcj/33:
6345         * jv-scan.c (help): Document --encoding.
6346         (options): Added `encoding' entry.
6347         (OPT_ENCODING): New define.
6348         (main): Handle --encoding.
6349         Include <langinfo.h> if nl_langinfo exists.
6350         * lang-options.h: Document --classpath, --CLASSPATH, --main, and
6351         --encoding.
6352         * jcf-parse.c Include <langinfo.h> if we have nl_langinfo.
6353         (parse_source_file): Correctly call java_init_lex.  Added `finput'
6354         argument.  Use nl_langinfo to determine default encoding.
6355         * java-tree.h (current_encoding): Declare.
6356         * parse.y (java_parser_context_restore_global): Don't restore
6357         `finput'.
6358         (java_parser_context_save_global): Don't set `finput' field.
6359         (java_pop_parser_context): Don't restore `finput'.  Free old lexer
6360         if required.
6361         * lang.c (current_encoding): New global.
6362         (lang_decode_option): Recognize `-fencoding='.
6363         (finish_parse): Don't close finput.
6364         * parse.h (struct parser_ctxt): Removed `finput' and
6365         `unget_utf8_value' fields.  Added `lexer' field.
6366         (java_init_lex): Fixed declaration.
6367         * lex.c (java_new_lexer): New function.
6368         (java_destroy_lexer): Likewise.
6369         (java_read_char): Added `lex' argument.  Handle iconv case.
6370         (java_read_unicode): Added `lex' argument.  Count backslashes in
6371         lexer structure.
6372         (java_init_lex): Added `finput' and `encoding' arguments.  Set
6373         `lexer' field in ctxp.
6374         (BAD_UTF8_VALUE): Removed.
6375         (java_lex): Handle seeing UEOF in the middle of a string literal.
6376         * lex.h: Include <iconv.h> if HAVE_ICONV defined.
6377         (java_lexer): New structure.
6378         (UNGETC): Removed.
6379         (GETC): Removed.
6380         (DEFAULT_ENCODING): New define.
6381         (java_destroy_lexer): Declare.
6382
6383 2000-09-12  Tom Tromey  <tromey@cygnus.com>
6384
6385         Fix for PR gcj/343:
6386         * lex.c (java_init_lex): Initialize java_io_serializable.
6387         * parse.y (java_io_serializable): New global.
6388         (valid_ref_assignconv_cast_p): An array can be cast to
6389         serializable.
6390
6391 2000-09-10  Zack Weinberg  <zack@wolery.cumb.org>
6392
6393         * decl.c, expr.c: Include defaults.h if not already included.
6394         Don't define the *_TYPE_SIZE macros.
6395
6396 2000-09-09  Geoffrey Keating  <geoffk@cygnus.com>
6397
6398         * typeck.c (build_java_array_type): Correct first parameter
6399         in ADJUST_FIELD_ALIGN invocation.
6400
6401 2000-09-06  Tom Tromey  <tromey@cygnus.com>
6402
6403         * lang-specs.h: Also recognize `-femit-class-files'.
6404
6405 2000-09-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6406
6407         * verify.c (merge_types): Load the types to merge if necessary.
6408
6409 2000-09-02  Anthony Green  <green@redhat.com>
6410
6411         * jcf-io.c: Include zlib.h.
6412         (open_in_zip): Read compressed class file archives.
6413         * zipfile.h (ZipDirectory): Add uncompressed_size and
6414         compression_method fields.
6415         * zextract.c (read_zip_archive): Collect file compression info.
6416
6417 2000-08-15  Bryce McKinlay  <bryce@albatross.co.nz>
6418
6419         * parse.y (do_resolve_class): Also explore superclasses of
6420         intermediate enclosing contexts when searching for inner classes.
6421
6422 2000-08-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6423
6424         * parse.y (variable_declarator_id:): Better error message.
6425         (expression_statement:): Use YYNOT_TWICE.
6426         (cast_expression:): Likewise.
6427         (assignment:): Likewise.
6428
6429 2000-08-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6430
6431         * parse.y (do_merge_string_cste): New locals. Create new
6432         STRING_CSTs each time, use memcpy. Fixes gcj/311.
6433
6434 2000-08-07  Hans Boehm  <boehm@acm.org>
6435
6436         * boehm.c (mark_reference_fields): Set marking bits for all words in
6437         a multiple-word record.
6438         (get_boehm_type_descriptor): Use the procedure marking descriptor for
6439         java.lang.Class.
6440
6441 2000-08-31  Mike Stump  <mrs@wrs.com>
6442
6443         * Make-lang.in (jc1$(exeext), gcjh$(exeext), jv-scan$(exeext),
6444         jcf-dump$(exeext)): Make parallel safe.
6445
6446 2000-08-29  Zack Weinberg  <zack@wolery.cumb.org>
6447
6448         * jcf-parse.c (set_source_filename): Constify a char *.
6449         * jcf-write.c (append_innerclasses_attribute,
6450         make_class_file_name): Constify a char *.  Don't recycle a
6451         variable for an unrelated purpose.
6452         * parse.y: (build_alias_initializer_parameter_list): Constify a char *.
6453         (breakdown_qualified): Do not modify IDENTIFIER_POINTER strings.
6454
6455 2000-08-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6456
6457         * expr.c (can_widen_reference_to): Fixed indentation.
6458         * java-tree.h (CLASS_METHOD_CHECKED_P): Added leading comment.
6459         * parse.y: `finit$' replaces `$finit$' in comments.
6460         (try_builtin_assignconv): Fixed leading comment.
6461
6462 2000-08-25  Greg McGary  <greg@mcgary.org>
6463
6464         * gjavah.c (cxx_keyword_subst): Use ARRAY_SIZE.
6465
6466 2000-08-24  Greg McGary  <greg@mcgary.org>
6467
6468         * lang.c (lang_decode_option): Use ARRAY_SIZE.
6469         * parse.y (BINOP_LOOKUP): Likewise.
6470
6471 2000-08-22  Andrew Haley  <aph@cygnus.com>
6472
6473         * javaop.h (WORD_TO_INT): Mask lower 32 bits of a jword before
6474         sign extending. Fixes gcj/321.
6475         * jcf-parse.c (get_constant): Mask lower 32 bits of a jint before
6476         combining to make a jlong. Fixes gcj/321.
6477
6478 2000-08-21  Nix  <nix@esperi.demon.co.uk>
6479
6480         * lang-specs.h: Do not process -o or run the assembler if
6481         -fsyntax-only.
6482
6483 2000-08-16  Andrew Haley  <aph@cygnus.com>
6484
6485         * typeck.c (build_java_array_type): Rewrite code to do array
6486         alignment.  Take into account back-end macros when aligning array
6487         data.  Remove setting of TYPE_USER_ALIGN; Java doesn't allow the
6488         user to set alignment. Fixes gcj/252 and 160.
6489
6490 2000-08-09  Tom Tromey  <tromey@cygnus.com>
6491
6492         * parse.y (check_abstract_method_definitions): Now return `int'.
6493         Check implemented interfaces.  Fixes PR gcj/305.
6494
6495         * parse.y (patch_switch_statement): Disallow `long' in switch
6496         expressions.  Fixes PR gcj/310.
6497
6498 2000-08-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6499
6500         * decl.c (finit_leg_identifier_node): New global.
6501         (init_decl_processing): Use `finit$' to initialize
6502         finit_identifier_node. Use `$finit$' to initialize
6503         finit_leg_identifier_node.
6504         * expr.c (expand_java_field_op): Use ID_FINIT_P.
6505         * java-tree.h (finit_identifier_node): Changed attached comment.
6506         (finit_leg_identifier_node): New declaration.
6507         (ID_FINIT_P): Take finit_identifier_node and
6508         finit_leg_identifier_node into account. This is a backward
6509         compatibility hack.
6510
6511 2000-08-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6512
6513         * jcf-write.c (generate_bytecode_conditional): Re-installed lost
6514         Jan 6 2000 patch.
6515         (generate_bytecode_insns): Check `nargs' before emitting it.
6516         * verify.c (merge_type_state): Fixed typo.
6517         * ChangeLog: Fixed typo in some jcf-write.c entries mentioning
6518         generate_bytecode_{conditional,insns}.
6519
6520 2000-08-13  Anthony Green  <green@redhat.com>
6521
6522         * check-init.c (check_init): Add case for BIT_FIELD_REF (required
6523         for -pg builds).
6524
6525 2000-08-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6526
6527         * class.c (maybe_layout_super_class): Fixed indentation.
6528         * java-tree.h (CLASS_METHOD_CHECKED_P): New macro.
6529         (java_check_methods): New function declaration.
6530         * jcf-parse.c (get_constant): Let `char_len' go up to 3. Use `str'
6531         instead of `str_ptr'.
6532         * jcf-write.c (generate_bytecode_insns): Emit number the of args
6533         of a `invokeinterface' at the right time.
6534         * parse.h (WFL_STRIP_BRACKET): New macro.
6535         (SET_TYPE_FOR_RESOLUTION): Use it.
6536         * parse.y (build_unresolved_array_type): Reuse `type_or_wfl'.
6537         (check_class_interface_creation): Don't check for cross package
6538         innerclass name clashes.
6539         (method_header): Behave properly if MDECL is `error_mark_node'.
6540         (method_declarator): Return `error_mark_node' if bogus current
6541         class.
6542         (resolve_class): Apply WFL_STRIP_BRACKET on `cl' if necessary.
6543         (resolve_and_layout): New local `decl_type', set and used. Call
6544         java_check_methods.
6545         (java_check_methods): New method.
6546         (java_layout_classes): Use it.
6547         (resolve_qualified_expression_name): No EH check necessary in
6548         access$<n>.
6549         (java_complete_lhs): Use VAR_DECL's DECL_INITIAL when evaluating
6550         `case' statement.
6551         (patch_assignment): Set DECL_INITIAL on integral final local.
6552
6553 2000-08-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6554
6555         * java-tree.h (flag_extraneous_semicolon): New extern.
6556         * lang-options.h: (-Wextraneous-semicolon): New option.
6557         * lang.c (flag_redundant): Fixed typo in leading comment.
6558         (flag_extraneous_semicolon): New global.
6559         (lang_decode_option): Set `flag_extraneous_semicolon' when
6560         -Wall. Decode `-Wextraneous-semicolon'.
6561         * parse.y (type_declaration:): Removed `SC_TK' hack, added
6562         `empty_statement' rule.
6563         (class_body_declaration): Likewise.
6564         (method_body:): Accept `;' as a method body.
6565         (static_initializer:): Removed `SC_TK' hack.
6566         (constructor_block_end:): Likewise.
6567         (empty_statement:): Report deprecated empty declaration. Fixes
6568         gcj/295
6569
6570 2000-08-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6571
6572         * parse.y (build_dot_class_method_invocation): Changed parameter
6573         name to `type'. Build signature from `type' and convert it to a
6574         STRING_CST if it's an array.
6575         (patch_incomplete_class_ref): `build_dot_class_method_invocation'
6576         to use `ref_type' directly.
6577
6578 2000-08-06  Ovidiu Predescu  <ovidiu@cup.hp.com>
6579
6580         * lang-options.h: Added a comma after the last element to avoid
6581         syntax errors when other languages define additional options.
6582
6583 2000-08-04  Zack Weinberg  <zack@wolery.cumb.org>
6584
6585         * Make-lang.in (jc1, jv-scan): Depend on $(BACKEND), not stamp-objlist.
6586         * Makefile.in: Add BACKEND; delete OBJS, OBJDEPS.
6587         (jc1): Link with $(BACKEND).
6588         (jv-scan): Depend on version.o, not all of $(OBJS) or $(BACKEND).
6589
6590 2000-08-02  Zack Weinberg  <zack@wolery.cumb.org>
6591
6592         * jvspec.c: Adjust type of second argument to
6593         lang_specific_driver, and update code as necessary.
6594
6595         * class.c (build_dtable_decl): Initialize dummy.
6596
6597 2000-08-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6598
6599         * parse.y (maybe_yank_clinit): When generating bytecode: non empty
6600         method bodies not to rule out discarding `<clinit>'; don't use
6601         <clinit> to initialize static fields with constant initializers.
6602
6603 2000-08-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6604
6605         * gjavah.c (print_method_info): Added `synth' parameter. Skip
6606         synthetic methods.
6607         (method_synthetic): New global.
6608         (HANDLE_METHOD): Recognize synthetic method and tell
6609         `print_method_info' about it.
6610         (HANDLE_END_METHOD): Do not issue an additional `;\n' if we're
6611         processing a synthetic method.
6612         * jcf-reader.c (skip_attribute): New function.
6613         ( skip_attribute): Likewise.
6614
6615 2000-08-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6616
6617         * parse.y (build_outer_field_access): Fixed comments.
6618         (fix_constructors): Emit the initialization of this$<n> before
6619         calling $finit$.
6620         (resolve_qualified_expression_name): Build an access to `decl' if
6621         necessary.
6622
6623 2000-07-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6624
6625         * parse-scan.y (curent_class): Non longer const.
6626         (inner_qualifier, inner_qualifier_length): Deleted.
6627         (current_class_length): New global.
6628         (bracket_count): Fixed typo in leading comment.
6629         (anonymous_count): New global.
6630         (class_instance_creation_expression:): Handle anonymous classes.
6631         (anonymous_class_creation:): New rule.
6632         (push_class_context): Rewritten.
6633         (pop_class_context): Likewise.
6634         (INNER_QUALIFIER): Macro deleted.
6635         (report_class_declaration): call `push_class_context' when
6636         entering the function. `fprintf' format modified not to use
6637         INNER_QUALIFIER.
6638         (report_class_declaration): Assign `package_name' and
6639         `current_class' to NULL separately.
6640
6641 2000-07-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6642
6643         * expr.c (build_invokeinterface): Call layout_class_methods on
6644         target interface.
6645
6646 2000-07-27  Tom Tromey  <tromey@cygnus.com>
6647             Anthony Green  <green@cygnus.com>
6648             Alexandre Petit-Bianco  <apbianco@cygnus.com>
6649
6650         * class.c (make_class_data): Create vtable for abstract classes.
6651         (get_dispatch_table): Changed to cope with abstract classes.
6652
6653 2000-07-27  Tom Tromey  <tromey@cygnus.com>
6654
6655         * parse.y (patch_method_invocation): Don't reverse the argument
6656         list when dealing with anonymous class constructors. Fixed typo in
6657         comment.
6658
6659 2000-07-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6660
6661         * parse.y (build_alias_initializer_parameter_list): Reverse
6662         crafted list when building aliases for anonymous class
6663         constructors.
6664
6665 2000-07-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6666
6667         * parse.y (jdep_resolve_class): Don't bother checking potential
6668         innerclass access if `decl' is NULL.
6669         (find_in_imports_on_demand): TREE_PURPOSE of `import' contains the
6670         WFL.
6671
6672 2000-07-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6673
6674         * parse.c: Remove (again.)
6675
6676 2000-07-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6677
6678         * parse.y (find_as_inner_class): Removed 2000-07-19 patches.
6679         * jcf-parse.c (HANDLE_INNERCLASSES_ATTRIBUTE): Local `decl' moved
6680         outside the `if' statement, alias to innerclass removed, `decl'
6681         used to mark the class complete.
6682
6683 2000-07-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6684
6685         * parse.y (simple_name:): Fixed typo in error message.
6686
6687 2000-07-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6688
6689         * parse.y (java_complete_lhs): LOOP_EXPR:, SWITCH_EXPR: the node
6690         or its first operand can be error marks.
6691
6692 2000-07-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6693
6694         * parse.h (SET_TYPE_FOR_RESOLUTION): Use GET_CPC.
6695         * parse.y (method_header): Likewise.
6696
6697 2000-07-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6698
6699         * parse.y (process_imports): Consider that one might be trying to
6700         import an innerclass. Fixes gcj/254
6701
6702 2000-07-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6703
6704         * parse.y (find_as_inner_class): Handle the case where the
6705         enclosing context of an innerclass has been loaded as bytecode.
6706
6707 2000-07-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6708
6709         * parse.y (simple_name:): Reject `$' in type names.
6710         (resolve_type_during_patch): Use `type' as a second
6711         argument to resolve_no_layout. Fixes gcj/257.
6712
6713 2000-07-18  Bryce McKinlay  <bryce@albatross.co.nz>
6714
6715         * parse.y (find_most_specific_methods_list): Select the only
6716         non-abstract method even if max has been set.
6717         Fixes gcj/285, gcj/298.
6718
6719 2000-07-18  Jeff Sturm  <jeff.sturm@appnet.com>
6720
6721         * lang-specs.h: Added %(jc1) to java compiler options.
6722
6723 2000-07-14  Zack Weinberg  <zack@wolery.cumb.org>
6724
6725         * .cvsignore: New file.
6726
6727 2000-07-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6728
6729         * parse.y (not_accessible_p): Access granted to innerclasses
6730         (indirectly) extending the reference type. Fixes gcj/249.
6731
6732 2000-07-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6733
6734         * parse.y (patch_method_invocation): Fixed comment.
6735         (maybe_use_access_method): Build this$<n>s to the context of the
6736         target method, or a type that extends it. Fixes gcj/242.
6737
6738 2000-07-13  Mark Mitchell  <mark@codesourcery.com>
6739
6740         * parse.c: Remove.
6741
6742 2000-07-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6743
6744         * parse.y (fold_constant_for_init): Avoid bullish conversion.
6745
6746 2000-07-13  Tom Tromey  <tromey@cygnus.com>
6747
6748         * lang-specs.h: Added %{I*}.
6749
6750 2000-07-13  Zack Weinberg  <zack@wolery.cumb.org>
6751
6752         * lang-specs.h: Use the new named specs.  Remove unnecessary braces.
6753
6754 2000-07-12  Mark Mitchell  <mark@codesourcery.com>
6755
6756         * parse-scan.c: Remove.
6757
6758 2000-07-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6759
6760         * class.c (set_super_info): Handled protected inner classes.
6761         (common_enclosing_context_p): Bail early if arguments aren't both
6762         inner classes.
6763         (get_access_flags_from_decl): Handle private and protected inner
6764         classes.
6765         * java-tree.h (TYPE_PROTECTED_INNER_CLASS): New macro.
6766         (CLASS_PROTECTED): Likewise.
6767         (struct lang_type): New bitfield `poic'.
6768         * parse.y (jdep_resolve_class): Call check_inner_class_access on
6769         inner classes only.
6770         (check_inner_class_access): Renamed arguments, added
6771         comments. Handles protected inner classes (fixes gcj/225)
6772         (not_accessible_p): Fixed comments. Avoid handling inner classes.
6773
6774 2000-07-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6775
6776         * parse.y (resolve_qualified_expression_name): Verify qualified
6777         access to `this'. Fixes gcj/239.
6778
6779 2000-07-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6780
6781         * jcf-write.c (generate_classfile): Don't install ConstantValue
6782         for null pointers.
6783
6784 2000-07-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6785
6786         * parse.y (resolve_qualified_expression_name): Handle inner class
6787         access. Fixes gcj/256.
6788
6789 2000-07-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6790
6791         * jcf-write.c (generate_classfile): Properly install the
6792         ConstantValue attribute and the initial value constant pool index
6793         on string constants.
6794         * parse.y (java_complete_lhs): Keep DECL_INITIAL when emitting
6795         class files.
6796
6797 2000-07-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6798
6799         * parse.h (BUILD_PTR_FROM_NAME): Surround with a do/while
6800         construct.
6801         * parse.y (find_as_inner_class): Fixed typo.
6802         (do_resolve_class): Explore enclosing contexts when searching for
6803         innerclasses. Removed curly brackets around BUILD_PTR_FROM_NAME.
6804         (check_inner_class_access): Check `decl' which can be null in case
6805         of previous errors.
6806
6807 2000-07-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6808
6809         * java-tree.h (java_debug_context): Declared `extern'.
6810         (safe_layout_class): Likewise.
6811         * parse.y (resolve_field_access): Field must be `static' in order
6812         to be replaced by its initial value. Added comments.
6813         (find_applicable_accessible_methods_list): Fixed typo.
6814         (find_most_specific_methods_list): Methods found in innerclasses
6815         take over methods founds in the enclosing contexts.
6816         (java_complete_tree): Loosen restrictions on the type of DECLs
6817         that can be replaced by their initialization values.
6818         (valid_ref_assignconv_cast_p): Removed call to `enclosing_context_p'.
6819
6820 2000-07-05  Tom Tromey  <tromey@cygnus.com>
6821
6822         * Make-lang.in (PARSE_DIR): New macro.
6823         (PARSE_RELDIR): Likewise.
6824         (PARSE_C): Likewise.
6825         (PARSE_SCAN_C): Likewise.
6826         ($(PARSE_C)): New target.
6827         ($(PARSE_SCAN_C)): Likewise.
6828         (SET_BISON): New macro.
6829         (BISONFLAGS): Likewise.
6830         (JAVABISONFLAGS): Likewise.
6831
6832 2000-07-02  Bryce McKinlay  <bryce@albatross.co.nz>
6833
6834         * gjavah.c (HANDLE_METHOD): Call print_method_info with a NULL stream
6835         argument on the first pass for CNI as well as JNI.
6836         (print_method_info): Set up method name on the first pass only.
6837
6838 2000-07-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6839
6840         * parse.y (parser_qualified_classname): Removed parameter
6841         `is_static'.
6842         (create_interface): Removed first passed parameter to
6843         parser_qualified_classname.
6844         (create_class): Likewise. Don't install alias on static
6845         innerclasses. Fixes gcj/275.
6846
6847 2000-07-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6848
6849         * parse.y (maybe_generate_pre_expand_clinit): Don't build a
6850         debugable statement with empty_stmt_node. Fixes gcj/272
6851
6852 2000-07-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6853
6854         * expr.c (build_instanceof): Layout type after it's loaded. Fixes
6855         gcj/271.
6856
6857 2000-06-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6858
6859         * jcf-write.c (push_long_const): Appropriately cast short negative
6860         constant to jword.
6861
6862 2000-06-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6863
6864         * parse.y (verify_constructor_super): Use loop variable
6865         `m_arg_type' initialized with `mdecl_arg_type'.
6866
6867 2000-06-29  Tom Tromey  <tromey@cygnus.com>
6868
6869         * parse.y (resolve_field_access): Handle case where `type_found'
6870         is NULL.
6871
6872 2000-06-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6873
6874         * expr.c (lookup_field): The same field can be found through two
6875         different interface. Don't declare it ambiguous in that case.
6876
6877 2000-06-27  Tom Tromey  <tromey@cygnus.com>
6878
6879         * lex.c (java_lineterminator): Don't recognize \r after \n.  If \r
6880         follows \r, then unget it at a lower level.
6881
6882 2000-06-26  Tom Tromey  <tromey@cygnus.com>
6883
6884         * parse.y (resolve_field_access): Pass decl, not DECL_INITIAL, to
6885         java_complete_tree.
6886
6887 2000-06-25  Tom Tromey  <tromey@cygnus.com>
6888
6889         * parse.y (for_statement): Wrap expression in a WFL if it is a
6890         constant.  For PR gcj/268.
6891
6892 2000-06-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6893
6894         * parse.y (do_resolve_class): Minor optimiztion in the package
6895         list search. Removed unnecessary test and return statement.
6896         (valid_ref_assignconv_cast_p): Order of arguments to
6897         enclosing_context_p fixed.
6898
6899 2000-06-24  Tom Tromey  <tromey@cygnus.com>
6900
6901         * expr.c (lookup_field): Print error and return error_mark_node if
6902         field reference is ambiguous.
6903
6904         * parse.y (check_abstract_method_definitions): Also check if
6905         `other_method' is abstract.
6906
6907 2000-06-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6908
6909         * class.c (set_super_info): Handle ACC_PRIVATE for (inner)
6910         classes.
6911         * java-tree.h (TYPE_PRIVATE_INNER_CLASS): New macro.
6912         (struct lang_type): New field `pic'.
6913         (CLASS_PRIVATE): New macro.
6914         * parse.y (check_inner_class_access): New function.
6915         (jdep_resolve_class): Call it.
6916
6917 2000-06-23  Tom Tromey  <tromey@cygnus.com>
6918
6919         * parse.y (patch_incomplete_class_ref): Initialize the returned
6920         class.  For PR gcj/260.
6921
6922 2000-06-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6923
6924         * except.c (prepare_eh_table_type): Use `CATCH_ALL_TYPE'.
6925
6926 2000-06-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6927
6928         * check-init.c (ENABLE_JC1_CHECKING): Replaces ENABLE_CHECKING for
6929         Java specific checks.
6930         * expr.c (build_instanceof): CLASS_INTERFACE and CLASS_FINAL usage
6931         screened by DECL_P.
6932         * java-tree.def (CASE_EXPR): Marked 'e'.
6933         (DEFAULT_EXPR): Likewise.
6934         * jcf-parse.c (set_source_filename): CLASS_COMPLETE_P usage
6935         screened by DECL_P.
6936         * jcf-write.c (ENABLE_JC1_CHECKING): Replaces ENABLE_CHECKING for
6937         Java specific checks.
6938         (generate_bytecode_insns): Test try_block for BLOCK before using
6939         BLOCK_EXPR_BODY.
6940         * parse.y (build_wfl_wrap): Added `location' argument. Set
6941         EXPR_WFL_LINECOL accordingly.
6942         (dim_expr:): Wrap constants with WFLs.
6943         (method_declarator): Use TREE_TYPE not TYPE_NAME on GET_CPC.
6944         (resolve_package): Check for `stmt' not being a BLOCK before
6945         building a debuggable statement with it.
6946         (make_qualified_primary): Added extra parameter to build_wfl_wrap
6947         invocation.
6948         (resolve_field_access): Make sure `decl' is a DECL before treating
6949         it as such.
6950         (maybe_build_primttype_type_ref): Make sure `wfl''s node is an
6951         IDENTIFIER_NODE before treating it as such.
6952         (patch_new_array_init): Make sure `elt' is a TREE_LIST before
6953         treating it as such.
6954         (find_applicable_accessible_methods_list): CLASS_INTERFACE macro
6955         to be applied only on non array types.
6956
6957 2000-06-16  Per Bothner  <per@bothner.com>
6958
6959         * java-tree.h (LABEL_RETURN_LABELS, LABEL_PENDING_CHAIN):  Don't
6960         define in terms of DECL_RESULT, as that fails when --enable-checking.
6961
6962 2000-06-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6963
6964         * jcf-write.c (CHECK_PUT): Add static prototype.  Make pointer
6965         types the same in comparison.
6966         (CHECK_OP): Add static prototype.
6967
6968 2000-06-13  Jakub Jelinek  <jakub@redhat.com>
6969
6970         * typeck.c (build_java_array_type): Set TYPE_USER_ALIGN.
6971         * parse.y (java_complete_class): Set DECL_USER_ALIGN.
6972         * parse.c: Rebuilt.
6973
6974 2000-06-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6975
6976         * decl.c (create_primitive_vtable): Prototype.
6977
6978         * jcf-write.c (generate_bytecode_insns): Initialize variable
6979         `saved_context'.
6980
6981         * lang.c (lang_get_alias_set): Mark parameter with ATTRIBUTE_UNUSED.
6982
6983 2000-06-09  Bryce McKinlay  <bryce@albatross.co.nz>
6984
6985         * parse.y (find_applicable_accessible_methods_list): Use a hashtable
6986         to track searched classes, and do not search the same class more than
6987         once. Call find_applicable_accessible_methods_list on immediate
6988         superclass, instead of search_applicable_method_list on all ancestors.
6989         Fix for PR gcj/238.
6990
6991 2000-06-09  Bryce McKinlay  <bryce@albatross.co.nz>
6992
6993         * parse.y (register_fields): Permit static fields in inner classes
6994         if they are final. Fix for PR gcj/255.
6995
6996 2000-06-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6997
6998         * parse.h (REGISTER_IMPORT): Use `chainon' to link new entries.
6999         * parse.y (find_in_imports): Returned type changed to void,
7000         leading comment fixed.
7001         (register_package): New function.
7002         (qualify_and_find): Likewise.
7003         (package_declaration:): Use `register_package'.
7004         (single_type_import_declaration:): Removed local variable
7005         `node'. Added missing `;' for consistency.
7006         (type_import_on_demand_declaration:): Use `chainon' to link new
7007         entries.
7008         (lookup_field_wrapper): Lookup local variables defined in outer
7009         contexts first.
7010         (java_complete_class): Don't reverse the list of imported on demand.
7011         (do_resolve_class): Reorganized. Removed local variable
7012         `original_name'. Call `qualify_and_find' with the current package
7013         name, invoke `find_in_imports_on_demand' right after. Call
7014         `qualify_and_find' with the packages we've seen so far. Fixed
7015         operations numbering in comments.
7016         (java_expand_class): Don't reverse `package_list'.
7017         (find_most_specific_methods_list): New local variables `abstract'
7018         and `candidates'. Use them to pick the right method.
7019
7020 2000-06-06  Tom Tromey  <tromey@ferrule.cygnus.com>
7021
7022         * parse.y (check_modifiers_consistency): Don't subtract out
7023         `PUBLIC_TK' from argument to THIS_MODIFIER_ONLY.
7024
7025 2000-06-04  Philipp Thomas  <pthomas@suse.de>
7026
7027         * Makefile.in (INTLLIBS): New.
7028         (LIBS): Add above.
7029         (DEPLIBS): Ditto.
7030
7031 2000-06-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7032
7033         * class.c (get_dispatch_table): Build the vtable dummy entry list
7034         element with a null purpose. Fixed leading comment.
7035         (build_dtable_decl): Build an accurate dtable type when appropriate
7036         and use it.
7037
7038 2000-06-02  Richard Henderson  <rth@cygnus.com>
7039
7040         * lang.c (lang_get_alias_set): New.
7041
7042 2000-05-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7043
7044         * parse.y (resolve_field_access): Complete the DECL_INITIAL tree
7045         before using it as the accessed field.
7046
7047 2000-05-31  Tom Tromey  <tromey@cygnus.com>
7048
7049         * java-tree.h (boolean_array_vtable, byte_array_vtable,
7050         char_array_vtable, short_array_vtable, int_array_vtable,
7051         long_array_vtable, float_array_vtable, double_array_vtable):
7052         Declare.
7053         * expr.c (get_primitive_array_vtable): New function.
7054         (create_primitive_vtable): New function.
7055         (java_lang_expand_expr): Enable code to statically generate
7056         arrays.
7057         * decl.c (init_decl_processing): Create primitive vtables.
7058         (boolean_array_vtable, byte_array_vtable, char_array_vtable,
7059         short_array_vtable, int_array_vtable, long_array_vtable,
7060         float_array_vtable, double_array_vtable): Define.
7061
7062 2000-05-26  Zack Weinberg  <zack@wolery.cumb.org>
7063
7064         * java/parse.y (find_applicable_accessible_methods_list):
7065         Don't add an uninitialized value to the list.
7066
7067 2000-05-25  Tom Tromey  <tromey@cygnus.com>
7068
7069         * parse.y (resolve_field_access): Don't check DECL_LANG_SPECIFIC
7070         when trying to see if field's class should be initialized.  Always
7071         initialize field's declaring class, not qualified class.
7072         For PR gcj/162.
7073
7074         * parse.y (array_constructor_check_entry): Pass `wfl_value', not
7075         `wfl_operator', to maybe_build_primttype_type_ref.
7076         Fixes PR gcj/235.
7077
7078 2000-05-23  Bryce McKinlay  <bryce@albatross.co.nz>
7079
7080        * parse.y (patch_method_invocation): Don't try to lookup methods
7081        in primitive types.
7082
7083 2000-05-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7084
7085         * parse.y (resolve_field_access): Call the appropriate <clinit>
7086         before accessing the length of a static array. Craft a decl for
7087         the field while its time. Fixes PR gcj/129.
7088
7089 2000-05-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7090
7091         * parse.y (resolve_package): Correctly set `*next' (was off by
7092         one.)
7093         (resolve_qualified_expression_name): Fixed comment.
7094
7095 2000-04-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7096
7097         * jcf-parse.c (jcf_parse_source): Reset current_class and
7098         current_function_decl to NULL before parsing a new file.
7099
7100 2000-04-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7101
7102         * parse.y (block_end:): If the collected block doesn't feature a
7103         statement, insert an empty statement.
7104
7105 2000-04-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7106
7107         * parse.y (maybe_yank_clinit): New function.
7108         (maybe_generate_pre_expand_clinit): Always link <clinit> at the
7109         end of the list of methods belonging to a class.
7110         (java_complete_expand_method): Check whether <clinit> is really
7111         necessary and expand it accordingly.
7112
7113 2000-04-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7114
7115         * parse.y (fold_constant_for_init): Let VAR_DECL and FIELD_DECL be
7116         processed by the method's switch statement.
7117
7118 2000-05-19  Tom Tromey  <tromey@cygnus.com>
7119
7120         * java-tree.h: Added init state enum.
7121         * decl.c (emit_init_test_initialization): Initialize class
7122         initialization check variable by looking at class' state.
7123
7124 2000-05-19  Tom Tromey  <tromey@cygnus.com>
7125
7126         * java-tree.h (build_instanceof): Declare.
7127         (build_get_class): Declare.
7128         * parse.y (patch_binop): Use build_instanceof.
7129         * expr.c (build_instanceof): New function.  If class is final,
7130         don't make a function call.
7131         (expand_java_INSTANCEOF): Use it.
7132         (build_get_class): New function.
7133
7134 2000-05-18  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>
7135
7136         * jcf-write.c (generate_classfile): Scan the source_file for
7137         slashes with the right pointer variable.
7138
7139 2000-05-17  Andrew Cagney  <cagney@b1.cygnus.com>
7140
7141         * lang.c (lang_decode_option): Update -Wunused flags by calling
7142         set_Wunused.
7143         * decl.c (poplevel): Replace warn_unused with warn_unused_label.
7144
7145 2000-05-09  Zack Weinberg  <zack@wolery.cumb.org>
7146
7147         * check_init.c (check_init): Constify local char *.
7148         * class.c (push_class): Constify local char *.
7149         * java_tree.h: Update prototypes.
7150         * jcf-io.c (open_class): Constify filename parameter and
7151         return value.
7152         (find_class): Remove redundant string copy.  Cast return from
7153         open_class.
7154         * jcf-parse.c (read_class, parse_class_file, yyparse):
7155         Constify local char *.
7156         * jcf-write.c (generate_bytecode_insns, generate_classfile):
7157         Constify local char *.
7158         * jcf.h (JCF): Constify filename and classname.
7159         (JCF_FINISH): Cast args to FREE to char * when appropriate.
7160         * lang.c (init_parse): Constify parameter and return value.
7161         * lex.c (java_get_line_col): Constify filename parameter.
7162         * parse.h: Constify parser_ctxt.filename.  Update prototypes.
7163         * parse.y (java_parser_context_suspend,
7164         issue_warning_error_from_context, safe_layout_class): Constify
7165         local char *.
7166         * parse.c: Regenerate.
7167
7168 2000-05-08  Tom Tromey  <tromey@cygnus.com>
7169
7170         * expr.c (build_jni_stub): Cache the result of
7171         _Jv_LookupJNIMethod.
7172
7173 2000-05-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7174
7175         * decl.c (predef_filenames_size): Now 7.
7176         (predef_filenames): New seventh entry.
7177
7178 2000-05-04  Tom Tromey  <tromey@cygnus.com>
7179
7180         * boehm.c (mark_reference_fields): Don't mark RawData fields.
7181         Keep track of when we've seen a reference field after a
7182         non-reference field.
7183         (get_boehm_type_descriptor): Handle case where we see
7184         non-reference fields but no trailing reference field.
7185         * decl.c (rawdata_ptr_type_node): Define.
7186         (init_decl_processing): Initialize rawdata_ptr_type_node.
7187         * java-tree.h (rawdata_ptr_type_node): Declare.
7188
7189 2000-05-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7190
7191         * jcf-dump.c (SPECIAL_IINC): Ensure arguments match format
7192         specifiers in calls to fprintf.
7193
7194 2000-05-03  Andrew Haley  <aph@cygnus.com>
7195
7196         * expr.c (build_java_jsr): Use emit_jump, not expand_goto.
7197
7198         * javaop.h (WORD_TO_INT): New function.
7199         (IMMEDIATE_s4): Use WORD_TO_INT.
7200         * jcf.h (JPOOL_INT): Ditto.
7201
7202         * gjavah.c (decode_signature_piece): Don't treat `$' as namespace
7203         separator.
7204
7205 2000-04-19  Tom Tromey  <tromey@cygnus.com>
7206
7207         * class.c (add_method_1): Set both DECL_EXTERNAL and METHOD_NATIVE
7208         on native function.
7209         * jcf-parse.c (parse_class_file): Call build_jni_stub for native
7210         JNI methods.
7211         * expr.c (build_jni_stub): New function.
7212         * lang-specs.h: -fjni and -femit-class-file are incompatible.
7213         * parse.c: Rebuilt.
7214         * parse.y (java_complete_expand_methods): Expand a native method
7215         and call build_jni_stub if -fjni given.
7216         * lang-options.h: Document -fjni.
7217         * lang.c (flag_jni): New global.
7218         (lang_f_options): Added `jni' entry.
7219         * java-tree.h (soft_lookupjnimethod_node,
7220         soft_getjnienvnewframe_node, soft_jnipopsystemframe_node):
7221         Declare.
7222         (flag_jni): Declare.
7223         (build_jni_stub): Declare.
7224         (struct lang_decl): Added `native' flag.
7225         (METHOD_NATIVE): Redefined to use `native' field of lang specific
7226         structure.
7227         * decl.c (soft_lookupjnimethod_node, soft_getjnienvnewframe_node,
7228         soft_jnipopsystemframe_node): New globals.
7229         (init_decl_processing): Set them.  _Jv_InitClass only takes one
7230         argument.
7231
7232         * java-tree.def: Put into `C' mode.
7233
7234 2000-04-27  Tom Tromey  <tromey@cygnus.com>
7235
7236         Fix for PR gcj/2:
7237         * expr.c (expand_invoke): Generate check to see if object pointer
7238         is null in nonvirtual invocation case.
7239         * java-tree.h (soft_nullpointer_node): Declare.
7240         * decl.c (soft_nullpointer_node): New global.
7241         (init_decl_processing): Initialize soft_nullpointer_node.
7242         * parse.y (invocation_mode): Return INVOKE_NONVIRTUAL for `final'
7243         or `private' methods.
7244         (patch_invoke): Handle INVOKE_NONVIRTUAL case.
7245
7246 2000-04-26  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7247
7248         * decl.c (complete_start_java_method): Don't call _Jv_InitClass
7249         from <clinit>
7250
7251 2000-04-26  Tom Tromey  <tromey@cygnus.com>
7252
7253         * zextract.c (find_zip_file_start): New function.
7254         (read_zip_archive): Use it.
7255
7256 2000-04-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7257
7258         * parse.y (register_incomplete_type): Handle JDEP_ANONYMOUS.
7259
7260 2000-04-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7261
7262         * class.c (common_enclosing_context_p): New function.
7263         * java-tree.h (common_enclosing_context_p): Added prototype.
7264         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Relaxed test to allow
7265         classes sharing an outer context with the current instance.
7266         * parse.y (build_access_to_thisn): Fixed leading comment.
7267         (verify_constructor_super): New local `supper_inner'. Skip
7268         enclosing context argument in the case of inner class constructors.
7269         (patch_method_invocation): Insert proper context as second
7270         parameter to pure inner class constructor super invocations.
7271
7272 2000-04-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7273
7274         * parse.y (end_class_declaration): Reset the interface number
7275         counter.
7276
7277 2000-04-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7278
7279         * parse.y (source_start_java_method): Deleted unnecessary code.
7280         (patch_method_invocation): Fixed comment.
7281
7282 2000-04-24  Robert Lipe <robertlipe@usa.net>
7283
7284         * parse.h (_jdep): Member `kind' now ENUM_BITFIELD.
7285
7286 2000-04-23  Tom Tromey  <tromey@cygnus.com>
7287
7288         * boehm.c (mark_reference_fields): Use int_byte_position.
7289
7290 2000-04-22  Tom Tromey  <tromey@cygnus.com>
7291
7292         * boehm.c (mark_reference_fields): Only call byte_position on
7293         non-static fields.
7294
7295 2000-04-22  Tom Tromey  <tromey@cygnus.com>
7296
7297         * boehm.c (mark_reference_fields): Added `last_view_index'
7298         argument.  Use DECL_FIELD_OFFSET to determine field's offset.
7299
7300 2000-04-20  Mo DeJong  <mdejong@cygnus.com>
7301
7302         * parse.h (INTERFACE_INNER_MODIFIERS): New macro.
7303         * parse.y (check_class_interface_creation): Fixed comments. Select
7304         permitted modifiers for (inner) interfaces. Changed error message
7305         to report rejected modifiers used with local classes.
7306
7307 2000-04-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7308
7309         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Immediate inner classes
7310         of directly inherited type considered in scope.
7311         * parse.y (do_resolve_class): Search inherited classes for inner
7312         classes.
7313
7314 2000-04-20  Tom Tromey  <tromey@cygnus.com>
7315
7316         * parse.y (not_accessible_p): Use member's class, not current
7317         class, when doing inheritance check for protected reference.
7318         Fixes PR gcj/124.
7319
7320 2000-04-20  Jason Schroeder  <shrode@subnature.com>
7321
7322         * jcf-dump.c (SPECIAL_IINC): Fixed typo printing iinc instruction.
7323
7324 2000-04-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7325
7326         * parse.y (lookup_field_wrapper): Search for final local aliases.
7327         (resolve_expression_name): Let lookup_field_wrapper search for
7328         final local aliases. Force the value of `name' if one is found.
7329         (qualify_ambiguous_name): CONVERT_EXPR is enough to now we have
7330         an expression name. Fixed comments.
7331
7332 2000-04-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7333
7334         * parse.y (yyerror): `msg' can be null, don't use it in that case.
7335
7336 2000-04-19  Tom Tromey  <tromey@cygnus.com>
7337
7338         * gjavah.c (cxx_keyword_subst): Avoid potential infinite loop.
7339
7340 2000-04-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7341
7342         * parse.y (maybe_make_nested_class_name): Use `obstack_grow0'.
7343
7344 2000-04-18  Tom Tromey  <tromey@cygnus.com>
7345
7346         PR gcj/211:
7347         * gjavah.c (utf8_cmp): Changed return value.
7348         (cxx_keyword_subst): Handle all C++ keywords.  Allocate new return
7349         result.
7350         (cxx_keywords): New global.
7351         (get_field_name): Handle new result of cxx_keyword_subst.
7352         (print_method_info): Likewise.
7353
7354 2000-04-17  Bryce McKinlay  <bryce@albatross.co.nz>
7355
7356         * gjavah.c (print_name_for_stub_or_jni): Don't prefix method names
7357         with a newline, for CNI.
7358         (print_stub_or_jni): Print a space or newline before method name for
7359         CNI as well as JNI.
7360         (print_cxx_classname): Don't write leading "::" in CNI stub method.
7361         (process_file): Include gcj/cni.h if generating CNI stubs.
7362
7363 2000-04-16  Tom Tromey  <tromey@cygnus.com>
7364
7365         * gjavah.c (decompile_method): Use print_field_name.
7366         Fixes PR gcj/205.
7367
7368 2000-04-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7369
7370         * parse.y (java_expand_classes): Reverse the package list once.
7371         (java_complete_lhs): PLUS_EXPR: don't try rhs and lhs at string
7372         reduction.
7373         (patch_binop): New temp `cn'. Call patch_string on LHS/RHS of
7374         the `==' and `!=' operators.
7375
7376 2000-04-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7377
7378         * jcf-write.c (generate_bytecode_insns): At invocation time,
7379         always relate an interface method to the type of its selector.
7380
7381 2000-04-05  Tom Tromey  <tromey@cygnus.com>
7382
7383         Fix for PR gcj/2:
7384         * expr.c (expand_invoke): Generate check to see if object pointer
7385         is null in nonvirtual invocation case.
7386         * java-tree.h (soft_nullpointer_node): Declare.
7387         * decl.c (soft_nullpointer_node): New global.
7388         (init_decl_processing): Initialize soft_nullpointer_node.
7389         * parse.y (invocation_mode): Return INVOKE_NONVIRTUAL for `final'
7390         or `private' methods.
7391         (patch_invoke): Handle INVOKE_NONVIRTUAL case.
7392
7393 2000-04-05  Tom Tromey  <tromey@cygnus.com>
7394
7395         Fix for PR gcj/140:
7396         * parse.y (check_final_assignment): Recognize assignments to the
7397         `length' field of an array when generating class files.
7398
7399 2000-04-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7400
7401         * class.c (decl_hash): Prototype removed.
7402         (decl_compare): Likewise.
7403
7404 2000-04-05  Tom Tromey  <tromey@cygnus.com>
7405
7406         * parse.h (THIS_MODIFIER_ONLY): Changed meaning of `v' parameter.
7407         * parse.y (check_modifiers_consistency): Check for final/volatile
7408         clash.  Fixes PR gcj/164.
7409
7410 2000-04-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7411
7412         * class.c: (java_hash_hash_tree_node): Renamed from `decl_hash',
7413         made global.
7414         (java_hash_compare_tree_node): Renamed from `decl_compare, made
7415         global.
7416         (add_method_1): Use `java_hash_hash_tree_node' and
7417         `java_hash_compare_tree_node'.
7418         * java-tree.h: (java_hash_hash_tree_node): Prototyped.
7419         (java_hash_compare_tree_node): Likewise.
7420         * parse.y (find_applicable_accessible_methods_list): Create,
7421         delete and use a hash table to remember already searched interfaces.
7422
7423 2000-04-03  Matt Welsh  <mdw@cs.berkeley.edu>
7424
7425         * jcf-depend.c (add_entry): Fixed bug where list was always replaced
7426         with latest entry.
7427
7428 2000-04-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7429
7430         * boehm.c (mark_reference_fields, set_bit): Prototype.
7431         (set_bit): Un-ANSI-fy definition.
7432
7433         * class.c (init_test_hash_newfunc, decl_hash, decl_compare):
7434         Prototype.
7435
7436         * decl.c (emit_init_test_initialization): Likewise.
7437
7438         * gjavah.c (jni_print_char): Likewise.
7439
7440         * parse.y (create_new_parser_context): Likewise.
7441
7442 2000-03-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7443
7444         * expr.c (java_lang_expand_expr): Added Anthony's Thu Jan 6 2000
7445         patch missing hunk. Fixed indentation.
7446
7447 2000-03-30  Tom Tromey  <tromey@cygnus.com>
7448
7449         * gjavah.c (D_NAN_MASK): Only define as word-reversed when
7450         HOST_FLOAT_WORDS_BIG_ENDIAN and HOST_WORDS_BIG_ENDIAN disagree.
7451
7452 2000-03-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7453
7454         * parse-scan.y (pop_class_context): Reset `inner_qualifier_length'
7455         when negative *before* using it as an array index.
7456         * ChangeLog: Fixed typo.
7457
7458 2000-03-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7459
7460         * parse-scan.y (pop_class_context): Reset `inner_qualifier_length'
7461         to 0 when it reaches -1.
7462
7463 2000-03-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7464
7465         * jcf-parse.c (get_constant): Properly cast `num' during the
7466         invocation of `add_double'.
7467         * jcf-write.c (push_long_const): Properly cast `lo' before
7468         comparing it to short bounds.
7469         * parse-scan.y (interface_declaration:): Rule re-arrange so that
7470         `interface_body:' is reduced after the current interface is
7471         pushed.
7472
7473 2000-03-26  Tom Tromey  <tromey@cygnus.com>
7474
7475         * jvspec.c (jvgenmain_spec): Add `%{<...}' construct for each
7476         Java-specific `-f' option.
7477
7478 2000-03-26  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
7479
7480         * decl.c (init_decl_processing): Only call initialize_sizetypes once.
7481         Adjust order of making types.
7482         Make bitsize_*_node values.
7483
7484 2000-03-25  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
7485
7486         * class.c (make_field_value): Use byte_position.
7487         * expr.c (JAVA_ARRAY_LENGTH_OFFSET): Use byte_position.
7488         (java_array_data_offset): Likewise.
7489         * java-tree.h (MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Add case to
7490         bzero call.
7491
7492 2000-03-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7493
7494         * parse.y (check_abstract_method_definitions): New local
7495         `end_type_reached'. Make sure we also consider `end_type'.
7496         (java_check_abstract_method_definitions): Make sure we eventually
7497         consider `java.lang.Object'.
7498         (maybe_use_access_method): Don't use access method if not in the
7499         context of a pure inner class or if the method's context is right.
7500         (find_applicable_accessible_methods_list): New static flag
7501         `object_done'. Don't search abstract classes as interfaces. Fixed
7502         indentation. Fixed the `java.lang.Object' only search. Search
7503         class interface(s) first, then fully search enclosing contexts.
7504         (find_most_specific_methods_list): Pick the closest candidate when
7505         they're all abstract.
7506
7507 2000-03-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7508
7509         * jcf-write.c (generate_bytecode_insns): TRY_FINALLY_EXPR:
7510         properly initialize `finished_label'. Don't emit gotos for empty
7511         try statements.
7512
7513 2000-03-19  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
7514
7515         * except.c (emit_handlers): Clear catch_clauses_last.
7516
7517 2000-03-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7518
7519         * parse.y (check_method_types_complete): New function.
7520         (create_class): Reset anonymous class counter only when seeing an
7521         non inner classe.
7522         (java_complete_class): JDEP_METHOD: Don't recompute signature
7523         if incomplete.
7524
7525 2000-03-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7526
7527         * class.c (build_static_ref): Fixed indentation in comment.
7528         * java-tree.def (TRY_EXPR): Fixed typo in name.
7529         (CLASS_LITERAL): Likewise.
7530         * java-tree.h: (TYPE_DOT_CLASS): New macro.
7531         (struct lang_type): New field `dot_class'.
7532         * jcf-write.c (generate_bytecode_insns): Fixed error message.
7533         (generate_classfile): Method `class$' is synthetic.
7534         * parse.y (build_do_class_method): New function.
7535         (build_dot_class_method_invocation): Likewise.
7536         (java_complete_expand_methods): Expand TYPE_DOT_CLASS if necessary.
7537         (resolve_qualified_expression_name): Handle CLASS_LITERAL.
7538         (qualify_ambiguous_name): Likewise.
7539         (patch_incomplete_class_ref): Invoke synthetic method if necessary.
7540         (build_try_statement): Fixed leading comment.
7541
7542 2000-03-17  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
7543
7544         * class.c (make_field_value): Properly handle sizes.
7545         (get_dispatch_vector): Use tree_low_cst and host_integerp.
7546         (layout_class_method): Count using trees.
7547         * decl.c (push_promoted_type): Set TYPE_{MIN,MAX}_VALUE with copy_node.
7548         * expr.c (java_array_data_offset): Use int_bit_position.
7549         (build_newarray, build_anewarray): Use host_integerp and tree_low_cst.
7550         (build_invokevirtual): Use tree_low_cst and do computations with trees.
7551
7552 2000-03-16  Tom Tromey  <tromey@cygnus.com>
7553
7554         * lang.c (flag_hash_synchronization): New global.
7555         (lang_f_options): Added `hash-synchronization'.
7556         * lang-options.h: Mention -fhash-synchronization.
7557         * java-tree.h (flag_hash_synchronization): Declare.
7558         * expr.c (java_lang_expand_expr): Only push `sync_info' value when
7559         hash table synchronization is disabled.
7560         * decl.c (init_decl_processing): Only push `sync_info' value when
7561         hash table synchronization is disabled.
7562         * class.c (make_class_data): Only push `sync_info' field when hash
7563         table synchronization is disabled.  Removed dead code.
7564
7565 2000-03-16  Tom Tromey  <tromey@cygnus.com>
7566
7567         * lang.c (lang_decode_option): Enable -Wunused when -Wall given.
7568
7569 2000-03-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7570
7571         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Disregard anonymous
7572         classes.
7573         * parse.y (patch_method_invocation): Handle anonymous classes
7574         creation in static context.
7575
7576 2000-03-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7577
7578         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): New macro.
7579         * parse.y (resolve_qualified_expression_name): Use it.
7580         (patch_method_invocation): Likewise.
7581
7582 2000-03-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7583
7584         * parse.y (register_incomplete_type): JDEP_ENCLOSING set
7585         depending on the type of dependency which dictates what the
7586         current class is.
7587         (unresolved_type_p): Resolved types limited to the current class.
7588
7589 2000-03-15  Tom Tromey  <tromey@cygnus.com>
7590
7591         * decl.c (init_decl_processing): Set type of `sync_info' to be
7592         pointer to Object.
7593
7594         * boehm.c (get_boehm_type_descriptor): Correctly compute `bits'.
7595         Correctly compute bit number for current slot.  Zero `high' and
7596         `low' in DS_LENGTH case.  Don't skip inherited fields.  Use
7597         mark_reference_fields.
7598         (mark_reference_fields): New function.
7599
7600 2000-03-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7601
7602         * parse.y (register_incomplete_type): Fixed initialization of
7603         JDEP_ENCLOSING.
7604
7605 2000-02-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7606
7607         * parse-scan.y (inner_qualifier, inner_qualifier_length): New
7608         static globals.
7609         (push_class_context, pop_class_context): New function.
7610         (class_body:): Call pop_class_context.
7611         (interface_body:): Likewise.
7612         (INNER_QUALIFIER): New macro.
7613         (report_class_declaration): Changed output format and use
7614         INNER_QUALIFIER. Call push_class_context.
7615
7616 2000-02-14  Andrew Haley  <aph@cygnus.com>
7617
7618         * check-init.c (check_init): Add new cases for unary and binary
7619         tree nodes.
7620
7621 2000-03-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7622
7623         * parse.y (resolve_package): Set `next' once a type name has been
7624         progressively discovered.
7625         (resolve_qualified_expression_name): Propagate resolution only if
7626         there are remaining qualifiers. Take into account `q' might have
7627         been cleared after re-qualification.
7628         * parse.y (patch_method_invocation): New local `resolved'.
7629         Section dealing with qualified expression rewritten to use
7630         resolve_field_access.
7631
7632 2000-03-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7633
7634         * parse.h (PUSH_CPC): Fixed indentation.
7635         (DEBUG_CPC): New macro.
7636         (SET_CPC_INITIALIZER_STMT, SET_CPC_STATIC_INITIALIZER_STMT,
7637         SET_CPC_INSTANCE_INITIALIZER_STMT): New macros.
7638         * parse.y (class_body_declaration:): Use
7639         SET_CPC_INSTANCE_INITIALIZER_STMT.
7640         (method_declaration:): Check for null current_function_decl.
7641         (static_initializer:): Use SET_CPC_STATIC_INITIALIZER_STMT.
7642         (java_parser_context_pop_initialized_field): Better handling of
7643         empty lists.
7644         (maybe_make_nested_class_name): Mark nested class name as
7645         qualified when necessary.
7646         (end_class_declaration): Don't call java_parse_context_resume when
7647         one or more error occurred.
7648         (add_inner_class_fields): Use SET_CPC_INITIALIZER_STMT.
7649         (register_fields): Use SET_CPC_STATIC_INITIALIZER_STMT and
7650         SET_CPC_INITIALIZER_STMT.
7651         (method_header): Check for inner classes declaring static methods.
7652         (resolve_qualified_expression_name): Handle situation where `this'
7653         is implied.
7654
7655 2000-03-13  Hans Boehm <boehm@acm.org>
7656
7657         * typeck.c (build_prim_array_type): Correctly set the high word too.
7658
7659 2000-03-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7660
7661         * parse.y (java_complete_expand_methods): Leave <clinit> out of
7662         ordinary methods.
7663         (maybe_generate_pre_expand_clinit): Put <clinit> at the end of the
7664         list of methods for interfaces.
7665
7666 2000-03-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7667
7668         * parse.y (qualify_ambiguous_name): Properly handle expressions
7669         using `null'.
7670
7671 2000-03-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7672
7673         * parse.y (check_final_assignment): Extended to process
7674         COMPOUND_EXPR.
7675         (patch_assignment): Have check_final_assignment called only once.
7676
7677 2000-03-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7678
7679         * java-tree.h (IS_INIT_CHECKED): New flag.
7680         * check-init.c (check_init): Test and set IS_INIT_CHECKED.
7681         * parse.y (patch_string): Call force_evaluation_order on the
7682         completed string concatenation tree.
7683         * expr.c (force_evaluation_order): Call force_evaluation_order on
7684         function's arguments too.
7685
7686 2000-03-06  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
7687
7688         * decl.c (emit_init_test_initialization): Mark KEY as unused.
7689         * expr.c (build_newarray): Cast TREE_INT_CST_LOW to HOST_WIDE_INT.
7690         (build_anewarray): Likewise.
7691         * parse.y (patch_newarray): Likewise.
7692         * parse.c: Regenerated.
7693
7694 2000-03-06  Bryce McKinlay  <bryce@albatross.co.nz>
7695
7696         * decl.c (init_decl_processing): Added new class fields `depth',
7697         `ancestors', and `idt' to class_type_node. Use
7698         _Jv_LookupInterfaceMethodIdx for soft_lookupinterfacemthod_node.
7699         * class.c (make_class_data): Push initial values for new fields.
7700         * java-tree.h: Updated prototype for `build_invokeinterface'.
7701         * expr.c (build_invokeinterface): Changed parameters to accept
7702         `method' tree. Calculate index of `method' in its declaring
7703         interface. Build call to _Jv_LookupInterfaceMethodIdx.
7704         (expand_invoke): Call `build_invokeinterface' with new parameters.
7705         * parse.y (patch_invoke): Call `build_invokeinterface' with new
7706         parameters.
7707
7708 2000-03-06  Bryce McKinlay <bryce@albatross.co.nz>
7709
7710         * typeck.c (lookup_do): Search superinterfaces first
7711         when looking up an interface method. From Godmar Back
7712         <gback@cs.utah.edu>
7713
7714 2000-03-06  Tom Tromey  <tromey@cygnus.com>
7715
7716         * Make-lang.in (JAVA_SRCS): Added boehm.c, lex.c.
7717
7718 2000-03-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7719
7720         * java-tree.h (lookup_argument_method2): Declared.
7721         (safe_layout_class): Prototype moved from parse.h.
7722         * parse.h (safe_layout_class): Prototype moved to java-tree.h.
7723         * parse.y (java_check_regular_methods): Local `super_class' gone.
7724         Call lookup_argument_method2 instead of lookup_argument_method.
7725         Perform modifier match for methods found declared in implemented
7726         interfaces. Fixed indentation problem. Overriding/hiding error
7727         report to take place only for methods found in classes.
7728         * typeck.c (lookup_argument_method): Changed leading
7729         comment. Re-written by calling lookup_do.
7730         (lookup_argument_method2): New function.
7731         (lookup_java_method): Re-written by calling lookup_do.
7732         (lookup_do): New function.
7733
7734 2000-03-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7735
7736         * check-init.c (check_init): Removed dead code. Handle (blank)
7737         final variables.
7738         * parse.y (declare_local_variables): New local `final_p', set it
7739         and use it to initialize LOCAL_FINAL.
7740         (check_final_assignment): Only check FIELD_DECLs.
7741
7742 2000-02-17  Tom Tromey  <tromey@cygnus.com>
7743
7744         * Makefile.in (JAVA_OBJS): Added boehm.o.
7745         (boehm.o): New target.
7746         * Make-lang.in (JAVA_SRCS): Added boehm.c.
7747         * java-tree.h (flag_use_boehm_gc): Declare.
7748         (get_boehm_type_descriptor): Declare.
7749         * lang.c (lang_f_options): Added `use-boehm-gc'.
7750         (flag_use_boehm_gc): New global.
7751         * lang-options.h: Added -fuse-boehm-gc.
7752         * boehm.c: New file.
7753         * class.c (get_dispatch_table): If class uses a Boehm type
7754         descriptor, put it in the vtable.
7755         (make_class_data): Removed dead code.
7756
7757 2000-03-03  Per Bothner  <per@bothner.com>
7758
7759         * decl.c (init_decl_processing):  Initialize sizetype properly.
7760
7761 2000-03-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7762
7763         * java-tree.h (LOCAL_CLASS_P): New flag usage and macro.
7764         (PURE_INNER_CLASS_DECL_P, PURE_INNER_CLASS_TYPE_P): New macros.
7765         * jcf-dump.c (HANDLE_INNERCLASSES_ATTRIBUTE): New macro.
7766         * jcf-parse.c (HANDLE_INNERCLASSES_ATTRIBUTE): Likewise.
7767         (jcf_parse): New local `current'. Load innerclasses seen in outer
7768         context being processed.
7769         * jcf-reader.c (HANDLE_INNERCLASSES_ATTRIBUTE): New macro.
7770         * jcf-write.c (append_innerclasses_attribute): New function.
7771         (append_innerclasses_attribute_entry): Likewise.
7772         (get_access_flags): Handle static classes. Set anonymous and local
7773         classes to be private.
7774         (generate_classfile): Attribute count adjusted. Call
7775         append_innerclasses_attribute.
7776         * parse.h (SKIP_THIS_AND_ARTIFICIAL_PARMS): Use
7777         PURE_INNER_CLASS_TYPE_P.
7778         * parse.y (parser_qualified_classname): New parameter `is_static',
7779         produce non qualified name accordingly.
7780         (block_statement:): Set LOCAL_CLASS_P when declaring local class.
7781         (create_interface): Added argument to parser_qualified_classname.
7782         (create_class): Added argument to parser_qualified_classname. Setup
7783         alias for top level classes. Use PURE_INNER_CLASS_DECP_P.
7784         (add_inner_class_fields): Fixed indentation.
7785         (method_declarator): Use PURE_INNER_CLASS_DECP_P.
7786         (method_declarator): Fixed typo in comment.
7787         (craft_constructor): Use PURE_INNER_CLASS_DECP_P.
7788         (build_current_thisn): Likewise.
7789         (patch_method_invocation): Likewise.
7790
7791 2000-03-01  Martin von Loewis  <loewis@informatik.hu-berlin.de>
7792
7793         * decl.c (current_function_decl): Move to toplev.c.
7794
7795 2000-02-28  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
7796
7797         * java-tree.h (LABEL_PC): Relect name changes in ../tree.h.
7798         (DECL_BIT_INDEX): Use underlying representation.
7799         * parse.h (DECL_INHERITED_SOURCE_LINE): Likewise.
7800
7801 2000-02-27  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
7802
7803         * expr.c (build_java_ret): Pass proper type to size_binop.
7804
7805 2000-02-25  Anthony Green  <green@cygnus.com>
7806
7807         * expr.c (build_class_init): Mark the decl to be ignored by
7808         check_init.
7809         * java-tree.h (DECL_BIT_INDEX): Move definition from check-init.c
7810         * check-init.c: Move DECL_BIT_INDEX to java-tree.h
7811         * class.c (init_test_hash_newfunc): New function.
7812         (decl_hash): New function.
7813         (decl_compare): New function.
7814         * decl.c (emit_init_test_initialization): New function.
7815         (complete_start_java_method): Traverse the init test hashtable,
7816         calling emit_init_test_initialization.
7817         (always_initialize_class_p): Define.
7818         * expr.c (build_class_init): Use initialization tests when
7819         emitting class initialization code.
7820         (always_initialize_class_p): Declare.
7821         * jcf-parse.c (parse_class_file): Set always_initialize_class_p to
7822         1.
7823         * java-tree.h: Include hash.h.
7824         (DECL_FUNCTION_INIT_TEST_TABLE): Define.
7825         (struct lang_decl): Add init_test_table field.
7826         (init_test_hash_entry): Define.
7827
7828 2000-02-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7829
7830         * gjavah.c (main): Avoid using `argi' to report unimplemented
7831         options.
7832
7833 2000-02-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7834
7835         * jcf-write.c (generate_bytecode_insns): TRY_FINALLY_EXPR:
7836         initialize locals to avoid warnings. Local `exception_type' moved
7837         into if statement.
7838
7839 2000-02-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7840
7841         * parse.y (resolve_expression_name): Use `orig' as a second
7842         argument to resolve_field_access.
7843         (resolve_field_access): Removed unnecessary code when dealing with
7844         static fields.
7845
7846 2000-02-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7847
7848         * class.c (push_super_field): Don't push the field twice.
7849         * jcf-parse.c (parse_source_file): Call java_reorder_fields.
7850         * parse.h (java_reorder_fields): Prototyped.
7851         * parse.y (java_reorder_fields): New function.
7852         (java_layout_class): Simplified not to worry about re-ordering.
7853
7854 2000-02-23  Tom Tromey  <tromey@cygnus.com>
7855
7856         * gjavah.c (print_name): In JNI case, correctly quote string.
7857         (print_method_info): Don't handle overrides in JNI mode.
7858
7859 2000-02-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7860
7861         * parse.y (init_decl_processing): `_Jv_IsInstanceOf' returned
7862         value type set to `boolean_type_node'.
7863
7864 2000-01-18  Joerg Brunsmann  <joerg.brunsmann@fernuni-hagen.de>
7865
7866         * jcf-dump.c (main): Test for correct condition after
7867         output file creation.
7868
7869 2000-02-19  Anthony Green  <green@cygnus.com>
7870
7871         * jcf-depend.c (add_entry): Fix test for first list entry.
7872
7873 2000-02-19  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
7874
7875         * class.c (build_class_ref, push_super_field): Set DECL_SIZE_UNIT.
7876         * constants.c (build_constants_constructor): Likewise.
7877
7878 2000-02-19  Anthony Green  <green@cygnus.com>
7879
7880         * jcf-depend.c (add_entry): Add entries to the end of the list.
7881
7882 1999-11-03  Pekka Nikander  <pekka.nikander@hut.fi>
7883
7884         * decl.c (INT_TYPE_SIZE): Define if necessary.
7885         (expand_java_return): Handle the case of a native integer smaller
7886         than a JVM integer.
7887
7888 2000-02-18  Martin von Loewis  <loewis@informatik.hu-berlin.de>
7889
7890         * gjavah.c (help): Use GCCBUGURL.
7891         * jv-scan.c (help): Likewise.
7892         * jcf-dump.c (help): Likewise.
7893
7894 2000-02-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7895
7896         * jcf-write.c (generate_bytecode_insns): Don't generate empty
7897         `finally' clauses.
7898
7899 2000-02-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7900
7901         * jcf-parse.c (load_class): Call `fatal' if no file containing
7902         the target class are found.
7903
7904 2000-02-16  Zack Weinberg  <zack@wolery.cumb.org>
7905
7906         * Makefile.in (PARSE_C, PARSE_SCAN_C): Move dependencies on
7907         lex.c, lex.h, and PARSE_H to...
7908         (parse.o, parse-scan.o): ...here, respectively.
7909
7910         * lex.c: Split out code that may trigger SIGFPE from yylex()
7911         to its own function.
7912         * lex.h (JAVA_FLOAT_RANGE_ERROR): Don't set value.
7913
7914 2000-02-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7915
7916         * Make-lang.in (jvspec.o): Depend on $(GCC_H), not gcc.h.
7917
7918 2000-02-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7919
7920         * parse.y (outer_field_access_p): Stop in time when outer contexts
7921         are exhausted.
7922         (resolve_qualified_expression_name): Properly qualify *everything*
7923         after a package.type to be resoled as expression names.
7924         (find_applicable_accessible_methods_list): Save/restore `class' to
7925         isolate it from a possible outer context search.
7926
7927 2000-02-15  Tom Tromey  <tromey@cygnus.com>
7928
7929         * gjavah.c (jni_print_char): New function.
7930         (print_full_cxx_name): Use it.
7931         (decode_signature_piece): Likewise.
7932         (print_cxx_classname): Likewise.
7933
7934 2000-02-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7935
7936         * Makefile.in (jv-scan, jcf-dump, gcjh): Depend on and link with
7937         version.o.
7938         (jcf-dump.o, gjavah.o, jv-scan.o): Depend on version.h.
7939
7940         * gjavah.c: Include version.h.
7941
7942         * jcf-dump.c: Likewise.
7943
7944         * jv-scan.c: Likewise.
7945
7946 2000-02-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7947
7948         * parse.y (outer_field_access_fix): First parameter now a tree
7949         node. Check for assignment to final. First argument to
7950         build_outer_field_access_fix modified to accommodate prototype.
7951         (build_outer_field_access): Don't check for assignment to final
7952         here.
7953         (java_complete_lhs): MODIFY_EXPR case: Check for `error_mark_node'
7954         possibly returned by outer_field_access_fix. Changed
7955         outer_field_access_fix's first argument.
7956         (check_final_assignment): $finit$'s context is OK.
7957         (patch_unaryop): Use node instead of its line/column value when
7958         calling outer_field_access_fix.
7959
7960 2000-02-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7961
7962         * parse.y (interface_declaration:): No longer tagged
7963         <node>. Re-installed default action.
7964         (class_member_declaration:): Handle inner interfaces.
7965         (interface_member_declaration): Handle inner interfaces and
7966         classes.
7967         (create_interface): Push error if one seen. Suspend parsing
7968         context when processing an inner interface.
7969         (register_fields): Inner class static field limitations not to
7970         apply to inner interfaces.
7971
7972 2000-02-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7973
7974         * jcf-parse.c (load_class): Update `java_error_count' when a
7975         class' file can't be found.
7976         (parse.y): Avoid (byte)code generation when errors seen.
7977
7978 2000-02-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7979
7980         * parse.y (java_complete_lhs): Handle TRUNC_DIV_EXPR. Ensure `fatal'
7981         decodes a valid node.
7982         (patch_binop): Handle TRUNC_DIV_EXPR.
7983
7984 2000-02-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7985
7986         * parse.y (resolve_package): New local `acc'. Try to progressively
7987         build and guess a package and type name.
7988
7989 2000-02-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7990
7991         * parse.y (find_applicable_accessible_methods_list): Load and
7992         layout the search class if necessary.
7993         (java_complete_tree): Keep to original type of the folded initial
7994         value.
7995
7996 2000-02-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7997
7998         * class.c (layout_class): Set and test CLASS_BEING_LAIDOUT.
7999         Generate error message if circularity is detected. New static
8000         local `list'.
8001         * java-tree.h (CLASS_BEING_LAIDOUT): New flag usage, new macro.  *
8002         * jcf-write.c (generate_bytecode_insns): Very simply handle
8003         SAVE_EXPR.
8004         * parse.y (java_check_circular_reference): Use
8005         `cyclic_inheritance_report' during report, if necessary.
8006         (java_complete_lhs): fixed comment with `THROW_EXPR:' case. Avoid
8007         walking NEW_ARRAY_INIT twice.
8008
8009 2000-02-09  Tom Tromey  <tromey@cygnus.com>
8010
8011         * parse.y (check_class_interface_creation): Allow inner classes to
8012         be `private' or `protected', check modifiers' consistency. Prevent
8013         block local classes from bearing any modifiers.
8014
8015 2000-02-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8016
8017         * except.c (check_start_handlers): Re-add prototype lost in last
8018         patch.
8019         (maybe_start_try): Remove excess argument to `check_start_handlers'.
8020
8021 2000-02-09  Andrew Haley  <aph@cygnus.com>
8022
8023         * decl.c (clear_binding_level): Remove excess initializer.
8024         (maybe_poplevels): Remove unused variable.
8025         (force_poplevels): Ditto.
8026         (struct binding_level): Add comment.
8027
8028 2000-02-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8029
8030         * jcf-write.c (generate_classfile): Don't consider
8031         pre-initialization with reference value (use <clinit> instead.)
8032         * parse.y (java_fix_constructors): No generated constructor for
8033         interfaces.
8034         (build_outer_field_access): Removed debug message.
8035         (outer_field_expanded_access_p): Adapted to bytecode generation.
8036         (build_outer_field_access_method): Use fix_method_argument_names.
8037         (build_outer_method_access_method): Fixed indentation. Added
8038         comment. Handle access method generation for static and also void
8039         methods.
8040         (build_access_to_thisn): Inserted debug message.
8041         (maybe_build_thisn_access_method): Use fix_method_argument_names.
8042         (resolve_qualified_expression_name): Fixed comment.
8043         (not_accessible_p): Adapted to bytecode generation. Added comment.
8044         (patch_method_invocation): Added comment.
8045         (maybe_use_access_method): Fixed leading comment. Handle static
8046         methods.
8047         (java_complete_lhs): Don't shortcut handling of initialized upon
8048         declaration String type static fields when generating bytecode.
8049         (patch_unaryop): Handle outer field access when generating
8050         bytecode.
8051
8052 2000-02-03  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8053
8054         * java-tree.h (FIELD_THISN): New macro.
8055         * jcf-write.c (append_synthetic_attribute): New function.
8056         (generate_classfile): Set "Synthetic" attribute on this$<n>,
8057         val$<name> fields, access$<n> and $finit$ methods. Fixed indentation.
8058         * parse.y (add_inner_class_fields): Set FIELD_THISN for created
8059         this$<n> fields.
8060         (build_outer_field_access): Turned on access functions usage and
8061         generation when compiling to bytecode.
8062         (maybe_use_access_method): Likewise.
8063
8064 2000-01-25  Andrew Haley  <aph@cygnus.com>
8065
8066         * java-except.h (struct eh_range): Add `expanded' field.
8067         (maybe_start_try): Add end_pc arg.
8068         (maybe_end_try): Ditto.
8069         * java-tree.h (force_poplevels): new function.
8070         * expr.c (expand_byte_code): Don't call maybe_start_try or
8071         maybe_end_try.
8072         * except.c (add_handler): Reset expanded.
8073         (expand_start_java_handler): Set expanded.
8074         (check_start_handlers): Don't expand a start handler that's
8075         already been expanded.
8076         (maybe_start_try): Add end_pc arg.  Only expand a handler which
8077         ends after end_pc.
8078         (expand_end_java_handler): call force_poplevels.
8079         (force_poplevels): new function.
8080         * decl.c (binding_level): Add start_pc of binding level.
8081         (maybe_pushlevels): Call maybe_start_try when pushing binding
8082         levels.
8083         (maybe_poplevels): Call maybe_end_try when popping binding levels.
8084         (LARGEST_PC): Define.
8085         (clear_binding_level): Use LARGEST_PC.
8086
8087         * java-tree.h (DEBUG_JAVA_BINDING_LEVELS): new define.
8088         * decl.c (DEBUG_JAVA_BINDING_LEVELS): new define.
8089         (binding_depth, is_class_level, current_pc): new variables.
8090         (struct binding_level): ditto.
8091         (indent): new function.
8092         (push_jvm_slot): add debugging info.
8093         (maybe_pushlevels): ditto.
8094         (maybe_poplevels): ditto.
8095         (pushlevel): ditto.
8096         (poplevel): ditto.
8097         (start_java_method): ditto.
8098         (give_name_to_locals): comment only.
8099         * except.c (binding_depth, is_class_level, current_pc):
8100         new variables.
8101         (expand_start_java_handler): add debugging info.
8102         (expand_end_java_handler): ditto.
8103
8104 2000-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8105
8106         * gjavah.c (overloaded_jni_method_exists_p): Add prototype.
8107         (print_name_for_stub_or_jni, process_file): Constify a char*.
8108
8109 2000-02-03  Tom Tromey  <tromey@cygnus.com>
8110
8111         * jcf-io.c (jcf_print_utf8_replace): Handle UTF-8 input.
8112
8113 2000-01-31  Scott Bambrough  <scottb@netwinder.org>
8114
8115         * gcc/java/javaop.h (WORDS_TO_DOUBLE): Allow WORDS_TO_DOUBLE to
8116         assemble doubles correctly when HOST_FLOAT_WORDS_BIG_ENDIAN is
8117         defined to be 1.
8118
8119 2000-02-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8120
8121         * java-tree.def (INSTANCE_INITIALIZERS_EXPR): New tree code.
8122         * java-tree.h (TYPE_II_STMT_LIST): New macro.
8123         (struct lang_type): New field `ii_block'.
8124         * lex.c (java_init_lex): Use CPC_INITIALIZER_LIST,
8125         CPC_STATIC_INITIALIZER_LIST and CPC_INSTANCE_INITIALIZER_LIST.
8126         * parse.h (struct parser_ctxt): New field `instance_initializers'.
8127         (CPC_INITIALIZER_LIST, CPC_STATIC_INITIALIZER_LIST,
8128         CPC_INSTANCE_INITIALIZER_LIST, CPC_INITIALIZER_STMT,
8129         CPC_STATIC_INITIALIZER_STMT, CPC_INSTANCE_INITIALIZER_STMT): New
8130         macros.
8131         * parse.y (add_instance_initializer): New function.
8132         (in_instance_initializer): New static global.
8133         (class_body_declaration:): Link instance initializer block.
8134         (static_initializer:): Use CPC_STATIC_INITIALIZER_STMT.
8135         (array_creation_expression:): Remove unused local.
8136         (java_parser_context_push_initialized_field): Fixed leading
8137         comment. Use CPC_STATIC_INITIALIZER_LIST, CPC_INITIALIZER_LIST and
8138         CPC_INSTANCE_INITIALIZER_LIST.
8139         (java_parser_context_pop_initialized_field): Likewise.
8140         (add_inner_class_fields): Use CPC_INITIALIZER_STMT.
8141         (register_fields): Use CPC_STATIC_INITIALIZER_STMT and
8142         CPC_INITIALIZER_STMT.
8143         (fix_constructors): New local `class_type'. Use it. Call
8144         add_instance_initializer.
8145         (java_complete_lhs): New case INSTANCE_INITIALIZERS_EXPR.
8146         (patch_return): Forbid return in instance initializers.
8147         (patch_throw_statement): Enforce exception handling in the context
8148         of instance initializers.
8149
8150 2000-02-03  Tom Tromey  <tromey@cygnus.com>
8151
8152         * Make-lang.in (java.mostlyclean): Remove executables in
8153         `mostlyclean'.
8154
8155 2000-01-31  Scott Bambrough  <scottb@netwinder.org>
8156
8157         * gcc/java/gjavah.c (D_NAN_MASK): Alternate definition required when
8158         HOST_FLOAT_WORDS_BIG_ENDIAN is defined to be 1.
8159         (java_float_finite): Convert to use union Word from javaop.h.
8160         (java_double_finite): Convert to use union DWord from javaop.h.
8161
8162 2000-02-02  Tom Tromey  <tromey@cygnus.com>
8163
8164         * gjavah.c (options): Added `jni' entry.
8165         (help): Document -jni.
8166         (flag_jni): New global.
8167         (process_file): Handle JNI output.  Don't print text from
8168         -prepend, -add, etc, when generating stubs.  Only remove `.class'
8169         suffix if it actually exists.
8170         (main): Create a `.c' file when run with `--jni --stubs'.  Create
8171         correct output file name with `--jni'.
8172         (print_include): Mangle header name differently in JNI case.
8173         (HANDLE_METHOD): In JNI mode, call print_method_info to generate
8174         method list.
8175         (print_method_info): Handle JNI case.  Put signature info into
8176         method name.  Handle case when STREAM is NULL.
8177         (print_name_for_stub_or_jni): New function.
8178         (print_stub_or_jni): Renamed from `print_stub'.  Handle JNI.
8179         (print_cxx_classname): Handle JNI.
8180         (print_full_cxx_name): Likewise.
8181         (decode_signature_piece): Likewise.
8182         (overloaded_jni_method_exists_p): New function.
8183         (struct method_name): Added `signature' and `sig_length' fields.
8184         (HANDLE_END_FIELD): Do nothing in JNI mode.
8185
8186 2000-02-02  Tom Tromey  <tromey@cygnus.com>
8187
8188         * jv-scan.c: Include version.c, <getopt.h>.
8189         (LONG_OPT, OPT_HELP, OPT_VERSION): New macros.
8190         (options): New array.
8191         (usage): New function.
8192         (version): New function.
8193         (main): Use getopt_long to parse command line.
8194         * jcf-dump.c: Include version.c, <getopt.h>.
8195         (LONG_OPT, OPT_classpath, OPT_CLASSPATH, OPT_HELP, OPT_VERSION,
8196         OPT_JAVAP): New macros.
8197         (options): New array.
8198         (usage): Return `void'.  Changed message.
8199         (help): New function.
8200         (version): New function.
8201         (main): Use getopt_long_only to parse command line.
8202         * gjavah.c: Include <getopt.h>.
8203         (LONG_OPT, OPT_classpath, OPT_CLASSPATH, OPT_HELP, OPT_TEMP,
8204         OPT_VERSION, OPT_PREPEND, OPT_FRIEND, OPT_ADD, OPT_APPEND, OPT_M,
8205         OPT_MM, OPT_MG, OPT_MD, OPT_MMD): New macros.
8206         (options): New array.
8207         (java_no_argument): Removed.
8208         (help): Updated with missing options.
8209         (main): Use getopt_long_only to parse command line.
8210         (usage): Changed message.
8211
8212 2000-02-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8213
8214         * java-tree.def (NEW_ANONYMOUS_ARRAY_EXPR): New tree code.
8215         * parse.h (ANONYMOUS_ARRAY_BASE_TYPE, ANONYMOUS_ARRAY_DIMS_SIG,
8216         ANONYMOUS_ARRAY_INITIALIZER): New access macros.
8217         * parse.y (array_creation_expression:): Handle anonymous arrays.
8218         (build_array_from_name): Don't set `ret_name' if null.
8219         (resolve_qualified_expression_name): New case NEW_ANONYMOUS_ARRAY_EXPR.
8220         (qualify_ambiguous_name): Likewise.
8221         (java_complete_expand_class): Likewise.
8222
8223 2000-02-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8224
8225         * java-tree.def (SYNCHRONIZED_EXPR): Fixed typo.
8226         * parse.h (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID): New macro.
8227         (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_STR): Likewise.
8228         (SKIP_THIS_AND_ARTIFICIAL_PARMS): Use DECL_FINIT_P.
8229         (AIPL_FUNCTION_FINIT_INVOCATION): Replaces
8230         AIPL_FUNCTION_COMPLETED_INVOCATION.
8231         (AIPL_FUNCTION_CTOR_INVOCATION): Replaces
8232         AIPL_FUNCTION_INVOCATION_READY.
8233         (AIPL_FUNCTION_DECLARATION): New enum entry.
8234         * parse.y (reorder_static_initialized): New function.
8235         (java_parser_context_pop_initialized_field): Use it.
8236         (add_inner_class_fields): Use
8237         MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID. Comment
8238         augmented. Install marker after last alias initializer, if any.
8239         (generate_finit): Fixed typo. Don't try to retain only the used
8240         fields.
8241         (method_header): Compute and set DECL_FUNCTION_NAP.
8242         (method_declarator): Fixed comment. Insert alias initializer in
8243         parameter list.
8244         (build_alias_initializer_parameter_list): Fixed leading
8245         comment. New case for AIPL_FUNCTION_DECLARATION. Old enum value
8246         replaced by new ones. Use MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID.
8247         (java_complete_expand_class): Code to retain only used aliases
8248         removed.
8249         (java_complete_expand_methods): New local `first_decl'. Generate
8250         $finit$ first, then expand the constructors, regular methods and
8251         <clinit>.
8252         (java_complete_expand_method): Don't report error on missing
8253         return statement if previously detected bogus.
8254         (fix_constructors): Don't patch constructor parameters list.
8255         (patch_method_invocation): Use new AIPL enum values. Reverse
8256         alias initializer list for anonymous classes.
8257
8258 2000-01-30  Anthony Green  <green@redhat.com>
8259
8260         * jcf-write.c (generate_bytecode_insns): Use TYPE_IS_WIDE to
8261         determine how many stack slots to pop.
8262
8263 2000-01-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8264
8265         * parse.y (formal_parameter:): Set `$$' to NULL_TREE for better
8266         error handling/recovery.
8267         * java-tree.h (SYNCHRONIZED_EXPR): Fixed typo in comment.
8268
8269 2000-01-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8270
8271         * java-tree.h (ARG_FINAL_P, FIELD_LOCAL_ALIAS,
8272         FIELD_LOCAL_ALIAS_USED): New macros.
8273         (DECL_FUNCTION_NAP): New macro.
8274         (struct lang_decl): New field `nap'.
8275         (TYPE_FINIT_STMT_LIST, TYPE_CLINIT_STMT_LIST): New macros.
8276         (struct lang_type): New fields `finit_stmt_list' and
8277         `clinit_stmt_list'.
8278         (CLASS_HAS_FINIT_P): Defined using TYPE_FINIT_STMT_LIST.
8279         * parse.h (MANGLE_OUTER_LOCAL_VARIABLE_NAME): New macro.
8280         (SKIP_THIS_AND_ARTIFICIAL_PARMS, MARK_FINAL_PARMS,
8281         UNMARK_FINAL_PARMS, CRAFTED_PARAM_LIST_FIXUP): New macros.
8282         (AIPL_FUNCTION_CREATION, AIPL_FUNCTION_COMPLETED_INVOCATION,
8283         AIPL_FUNCTION_INVOCATION_READY): New enum fields.
8284         (BUILD_THROW): Macro line separator re-indented.
8285         * parse.y (end_class_declaration): New function.
8286         (maybe_generate_pre_expand_clinit): New name for
8287         java_pre_expand_clinit. Create <clinit> off TYPE_CLINIT_STMT_LIST,
8288         pre-expand static fields.
8289         (maybe_generate_clinit): Function deleted.
8290         (check_for_static_method_reference): Prototype's parameter list
8291         indented.
8292         (generate_finit): New name for maybe_generate_finit. Changed
8293         leading comment. Function rewritten to use
8294         TYPE_FINIT_STMT_LIST. Call build_alias_initializer_parameter_list.
8295         (build_alias_initializer_parameter_list): New function.
8296         (java_parser_context_pop_initialized_field): Likewise.
8297         (add_inner_class_fields): Likewise.
8298         (type_declaration:): Call end_class_declaration.
8299         (class_member_declaration:): Likewise.
8300         (formal_parameter_list:): Fixed typos.
8301         (formal_parameter:): Use ARG_FINAL_P to mark created tree list
8302         element. Improved error handling.
8303         (block_statement:): Call end_class_declaration.
8304         (anonymous_class_creation:): Likewise.
8305         (create_anonymous_class): Fixed comments.
8306         (create_class): Call add_inner_class_fields.
8307         (register_fields): Set FIELD_LOCAL_ALIAS according to ARG_FINAL_P.
8308         (method_header): Use MARK_FINAL_PARMS.
8309         (finish_method_declaration): Use UNMARK_FINAL_PARMS.
8310         (method_declarator): Propagate final argument flag.
8311         (craft_constructor): New local `artificial'. Call
8312         build_alias_initializer_parameter_list. Use
8313         CRAFTED_PARAM_LIST_FIXUP, assign DECL_FUNCTION_NAP.
8314         (source_start_java_method): Mark parm decls with LOCAL_FINAL if
8315         necessary.
8316         (complete_expand_class): Get rid of unused outer context local
8317         alias fields.
8318         (java_complete_expand_methods): Fixed leading
8319         comment. Generate/pre-expand <clinit> first. Changed method
8320         expansion order to regular, $finit$, constructors, <clinit>.
8321         (java_complete_expand_method): Set current_function_decl.
8322         (fix_constructors): Fix constructor parameter list to account for
8323         outer context local alias initializers.
8324         (verify_constructor_super): Use SKIP_THIS_AND_ARTIFICIAL_PARMS.
8325         (resolve_expression_name): Lookup outer context local aliases. New
8326         local `access', use it.
8327         (patch_method_invocation): Patch inner class ctor invocation with
8328         outer context local aliases initialization values. $finit$
8329         invocation patching now includes things generated with
8330         build_alias_initializer_parameter_list.
8331         (argument_types_convertible): Use SKIP_THIS_AND_ARTIFICIAL_PARMS.
8332         (build_super_invocation): Likewise.
8333         (patch_assignment): Changed comment.
8334
8335 2000-01-27  Andrew Haley  <aph@cygnus.com>
8336
8337         * jcf-write.c (emit_goto): RESERVE 3 bytes for insn.
8338         (emit_if): Ditto.
8339         (emit_jsr): Ditto.
8340
8341 2000-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8342
8343         * parse.h (OBSOLETE_MODIFIER_WARNING): Don't use ANSI string
8344         concatenation.
8345         (OBSOLETE_MODIFIER_WARNING2): New macro allowing two args.
8346
8347         * parse.y (register_fields): Don't pass a format specifier to
8348         OBSOLETE_MODIFIER_WARNING.
8349         (check_abstract_method_header): Use OBSOLETE_MODIFIER_WARNING2
8350         instead of OBSOLETE_MODIFIER_WARNING, and don't pass a format
8351         specifier.
8352         (check_modifiers): Change function into a macro.
8353         (check_class_interface_creation): Pass a literal format string.
8354
8355 2000-01-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8356
8357         * buffer.h: PROTO -> PARAMS.
8358         * check-init.c: Likewise.
8359         * class.c: Likewise.
8360         * constants.c: Likewise.
8361         * convert.h: Likewise.
8362         * decl.c: Likewise.
8363         * except.c: Likewise.
8364         * expr.c: Likewise.
8365         * gjavah.c: Likewise.
8366         * java-except.h: Likewise.
8367         * java-tree.h: Likewise.
8368         * jcf-depend.c: Likewise.
8369         * jcf-dump.c: Likewise.
8370         * jcf-parse.c: Likewise.
8371         * jcf-path.c: Likewise.
8372         * jcf-reader.c: Likewise.
8373         * jcf-write.c: Likewise.
8374         * jcf.h: Likewise.
8375         * jv-scan.c: Likewise.
8376         * jvgenmain.c: Likewise.
8377         * jvspec.c: Likewise.
8378         * lang.c: Likewise.
8379         * lex.c: Likewise.
8380         * lex.h: Likewise.
8381         * parse-scan.y: Likewise.
8382         * parse.h: Likewise.
8383         * parse.y: Likewise.
8384         * typeck.c: Likewise.
8385         * verify.c: Likewise.
8386         * xref.c: Likewise.
8387         * xref.h: Likewise.
8388         * zextract.c: Likewise.
8389         * zipfile.h: Likewise.
8390
8391 2000-01-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8392
8393         * class.c (make_class): Use MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC.
8394         (is_compiled_class): Remove test on TYPE_LANG_SPECIFIC, use TYPE_JCF.
8395         * constants.c (build_constant_data_ref): Check for cached
8396         current_constant_pool_data_ref. Cache current_constant_pool_data_ref
8397         in TYPE_CPOOL_DATE_REF.
8398         * java-tree.h (TYPE_JCF, TYPE_CPOOL, TYPE_CPOOL_DATA_REF,
8399         MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC:) New macros.
8400         (struct lang_type): New fields `cpool' and `cpool_data_ref'.
8401         (LOCAL_FINAL): New macro.
8402         * jcf-parse.c (init_outgoing_cpool): Always allocate new outgoing
8403         constant pool -- don't try to reuse.
8404         (parse_zip_file_entries): Use TYPE_JCF, don't lazily allocate
8405         TYPE_LANG_SPECIFIC.
8406         (find_in_current_zip): Use TYPE_JCF.
8407         * parse.h (java_check_final): Prototype removed.
8408         * parse.y (create_class): Reversed Jan 12, 2000 extra argument patch.
8409         (maybe_create_class_interface_decl,
8410         check_class_interface_creation): Likewise.
8411         (java_expand_finals): Function removed.
8412         (class_declaration:): Reversed Jan 12, 2000 extra argument patch.
8413         (block_statement:): Fixed comment.
8414         (anonymous_class_creation:): Likewise.
8415         (check_class_interface_creation): Reversed Jan 12, 2000 extra
8416         argument patch.
8417         (check_class_interface_creation): Loosened error report on (inner)
8418         public class declarations. CPC_INNER_P replaces GET_CPC_LIST.
8419         (link_nested_class_to_enclosing): Reversed Jan 12, 2000 patch.
8420         (maybe_create_class_interface_decl): Reversed Jan 12, 2000 extra
8421         argument patch.
8422         (create_interface): Likewise.
8423         (anonymous_class_counter): New static global.
8424         (create_anonymous_class): Reversed Jan 12, 2000 extra argument
8425         patch. Fixed comments.
8426         (create_class): Reversed Jan 12, 2000 extra argument patch. Reset
8427         anonymous_class_counter when declaring a toplevel class.
8428         (craft_constructor): Fixed constructor name when handling
8429         anonymous classes. Anonymous class constructors to feature hidden
8430         this$<n> parameter.
8431         (java_fix_constructors): Added comment.
8432         (java_check_final): Function removed.
8433         (java_complete_expand_methods): Fixed comment. Don't generate
8434         class data, save its outgoing constant pool instead.
8435         (verify_constructor_super): Skip anonymous class constructor
8436         hidden this$<n> parameter.
8437         (java_expand_classes): New local `saved_ctxp'. Removed call to
8438         java_expand_finals and java_check_final. Expand anonymous class
8439         constructors. Generate class data.
8440         (build_super_invocation): Skip anonymous class hidden this$<n>
8441         parameter.
8442         * typeck.c (build_java_signature): Use TYPE_SIGNATURE and
8443         MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC.
8444         (set_java_signature): Likewise.
8445
8446 2000-01-18  Joerg Brunsmann  <joerg.brunsmann@fernuni-hagen.de>
8447
8448         * gjavah.c: Delete ACC_VISIBILITY define.
8449         * jcf.h: Add ACC_VISIBILITY define.
8450         * parse.y: final: rule tagged <value>.
8451         (java_check_regular_methods): Use ACC_VISIBILITY define for
8452         default package access check.
8453         (local_variable_declaration_statement): Use final: rule.
8454
8455 2000-01-17  Joerg Brunsmann  <joerg.brunsmann@fernuni-hagen.de>
8456
8457         * parse.y (format_parameter:): Use final: rule instead of modifiers:.
8458         (final:): New rule.
8459
8460 2000-01-17  Tom Tromey  <tromey@cygnus.com>
8461
8462         * gjavah.c (print_field_info): Allow non-static final fields.
8463
8464 2000-01-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8465
8466         * parse.h (enum jdep_code): New entry `JDEP_ANONYMOUS'.
8467         * parse.y (patch_anonymous_class): New function.
8468         (create_anonymous_class): Register incomplete type when the
8469         class/interface to extends/implement isn't known yet.
8470         (parser_check_super_interface): Simplify argument to CLASS_INTERFACE.
8471         (verify_constructor_super): Tuned error message.
8472
8473 2000-01-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8474
8475         * java-tree.h (FOR_LOOP_P): Replaces IS_FOR_LOOP_P.
8476         (ANONYMOUS_CLASS_P): New macro.
8477         (TYPE_SIGNATURE, TYPE_JCF): New macros.
8478         (INNER_CLASS_TYPE_P): Fixed typo in leading comment.
8479         * parse.y (create_class): Added leading argument.
8480         (maybe_create_class_interface_decl,
8481         check_class_interface_creation): Likewise.
8482         (craft_constructor): New function.
8483         (verify_constructor_super): Added argument in prototype.
8484         (class_declaration:): Inserted leading argument.
8485         (for_begin:): Use FOR_LOOP_P.
8486         (anonymous_class_creation): Create WFL of the anonymous class to
8487         instantiate. Call build_new_invocation. Added comments.
8488         (check_class_interface_creation): Handle parameter `anonymous' in
8489         verbose mode class creation announce.
8490         (link_nested_class_to_enclosing): Exclude anonymous classes.
8491         (maybe_create_class_interface_decl): Don't set DECL_CONTEXT on
8492         anonymous class, even though they appear to have an enclosing
8493         context.
8494         (create_interface): Pass extra argument to
8495         check_class_interface_creation.
8496         (create_anonymous_class): Set ANONYMOUS_CLASS_P to 1.
8497         (create_class): Call check_class_interface_creation and
8498         maybe_create_class_interface_decl with extra new argument. Don't
8499         add private this$<n> to anonymous classes.
8500         (method_declarator): Insert hidden this$<n> to anonymous class
8501         constructors.
8502         (java_fix_constructors): Deleted code creating default
8503         constructor. Call craft_constructor instead.
8504         (java_check_regular_methods): Set `saw_constructor' to 1 for
8505         anonymous classes.
8506         (fix_constructors): Pass extra argument to verify_constructor_super.
8507         (verify_constructor_super): New local `sdecl', use it. Search for
8508         matching constructor (possibly featuring arguments) in super
8509         class.
8510         (lookup_method_invoke): Craft constructor according to arguments
8511         list when dealing with anonymous class constructors.
8512         (build_super_invocation): Pass arguments to anonymous class super
8513         constructors.
8514         (search_loop): Use FOR_LOOP_P.
8515         (labeled_block_contains_loop_p): Likewise.
8516
8517 2000-01-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8518
8519         * class.c (set_super_info): Set CLASS_STATIC when appropriate.
8520         (enclosing_context_p): New function.
8521         (get_access_flags_from_decl): Handle CLASS_STATIC.
8522         (maybe_layout_super_class): Extra first argument passed to
8523         do_resolve_class.
8524         (layout_class_method): Use ID_FINIT_P, DECL_CLINIT_P and
8525         ID_INIT_P.
8526         * decl.c (access0_identifier_node): New global.
8527         (init_decl_processing): access0_identifier_node initialized.
8528         (pushdecl): Set DECL_CONTEXT only on non type decls.
8529         * expr.c (lookup_field): Lookup inner class fields in enclosing
8530         contexts.
8531         (expand_invoke): Use ID_INIT_P.
8532         (expand_java_field_op): Use DECL_CLINIT_P.
8533         * java-tree.def (CLASS_LITERAL): New tree code.
8534         * java-tree.h (DECL_FUNCTION_ACCESS_DECL,
8535         DECL_FUNCTION_INNER_ACCESS, FIELD_INNER_ACCESS): New macros.
8536         (struct lang_decl): New field `inner_access'.
8537         (enclosing_context_p): Prototyped.
8538         (DECL_INIT_P, DECL_FINIT_P, DECL_CLINIT_P, ID_INIT_P, ID_FINIT_P,
8539         ID_CLINIT_P): New macros.
8540         (CLASS_STATIC): New macro.
8541         (CLASS_ACCESS0_GENERATED_P): New macro.
8542         (OUTER_FIELD_ACCESS_IDENTIFIER_P, INNER_CLASS_DECL_P,
8543         TOPLEVEL_CLASS_DECL_P, INNER_CLASS_TYPE_P, TOPLEVEL_CLASS_TYPE_P,
8544         INNER_CLASS_P): New macros.
8545         (DECL_INNER_CLASS_LIST): New macro.
8546         * jcf-parse.c (yyparse): Avoid the use of ANSI string
8547         concatenation.
8548         * jcf-write.c (generate_bytecode_insns): binop: Change the type of
8549         the shift value to int. Fixed typo in comment.
8550         * lex.c (inst_id, wpv_id): Initialize.
8551         * mangle.c (unicode_mangling_length): Take `$' into account.
8552         * parse.h (DRECOVER, RECOVER): Terminate properly.
8553         (IDENTIFIER_INNER_CLASS_OUTER_FIELD_ACCESS): New macro.
8554         (typedef struct _jdep): New field `enclosing'.
8555         (JDEP_ENCLOSING): New macro.
8556         (IS_CLINIT): Deleted (DECL_CLINIT_P replaces it.)
8557         (struct parser_ctxt): New fields `marker_beginning', `marked_end'.
8558         (GET_CPC_LIST, CPC_INNER_P, GET_CPC, GET_CPC_UN, GET_CPC_UN_MODE,
8559         GET_CPC_DECL_NODE, GET_ENCLOSING_CPC, GET_NEXT_ENCLOSING_CPC,
8560         GET_ENCLOSING_CPC_CONTEXT): New macros.
8561         (PUSH_CPC, PUSH_ERROR, POP_CPC): New macros.
8562         (do_resolve_class): Added extra argument in prototype.
8563         * parse.y (resolve_class): Added extra argument in prototype.
8564         (maybe_create_class_interface_decl): Likewise.
8565         (maybe_use_access_method, build_wfl_wrap): New functions.
8566         (java_complete_expand_classes, java_complete_expand_class):
8567         Likewise.
8568         (java_parser_context_push_initialized_field,
8569         java_parser_context_suspend, java_parser_context_resume):
8570         Likewise.
8571         (maybe_make_nested_class_name, make_nested_class_name,
8572         set_nested_class_simple_name_value,
8573         link_nested_class_to_enclosing, find_as_inner_class,
8574         find_as_inner_class_do, check_inner_class_redefinition,
8575         build_thisn_assign, build_current_thisn, build_access_to_thisn,
8576         maybe_build_thisn_access_method, build_outer_field_access,
8577         build_outer_field_access_methods, build_outer_field_access_expr,
8578         build_outer_method_access_method, build_new_access_id,
8579         build_outer_field_access_method, outer_field_access_p,
8580         outer_field_expanded_access_p, outer_field_access_fix,
8581         build_incomplete_class_ref, patch_incomplete_class_ref,
8582         create_anonymous_class): Likewise.
8583         (inst_id, wpv_id): New static global variables.
8584         (synchronized:): New rule, tagged <node>.
8585         (type_declaration:): No longer tagged <node>. Call POP_CPC in sub
8586         rules.
8587         (anonymous_class_creation:): New rule, tagged <node>.
8588         (NEW_TK): Tagged <node>.
8589         (type_literals, array_type_literal): New rules, tagged <node>.
8590         (class_declaration:): Removed action when reducing by class_body:
8591         (class_body:): Set DECL_END_SOURCE_LINE and rule's returned value
8592         using GET_CPC in sub-rules.
8593         (class_member_declaration): Handle inner classes.
8594         (method_declaration): When reducing method_header:, reset
8595         current_function_decl when appropriate.
8596         (method_declarator:): Set the number of formal parameter to 0 for
8597         method declared without arguments.
8598         (constructor_declarator:): Likewise.
8599         (static_initializer:): List of elements kept in a list.
8600         (static:): Rule modifiers: replaces MODIFIER_TK. Enforce correct
8601         use of the keyword `static' for type declarations.
8602         (block_statement:): Handle inner class declarations.
8603         (primary_no_new_array:): Use type_literals:. Fixed comment. Handle
8604         type qualified `this'.
8605         (class_instance_creation_expression): Use anonymous_class_creation:
8606         to handle inner class instances creation. Handle qualified `new'.
8607         (something_dot_new): Added appropriate actions.
8608         (create_new_parser_context): New function.
8609         (java_push_parser_context, java_parser_context_save_global,
8610         java_parser_context_suspend): Use create_new_parser_context.
8611         (check_modifiers): Changed leading comment.
8612         (check_class_interface_creation): Handle interclasses.
8613         (add_superinterfaces): Fixed comment.
8614         (create_interface): Build qualified name from the raw_name instead
8615         of its matching WFL. Push the initialized fields list. raw_name added
8616         as an extra argument to maybe_create_class_interface_decl.
8617         (create_class): Build qualified name from the raw_name instead of
8618         its matching WFL. Removed assignment to current_parsed_class_un.
8619         Call PUSH_ERROR before returning an error. Suspend the current
8620         parser context when processing an inner class. Push the
8621         initialized fields list. raw_name added as an extra argument to
8622         maybe_create_class_interface_decl. Add the private this$<n>
8623         field.
8624         (duplicate_declaration_error_p): Use GET_CPC when calling find_field.
8625         (register_fields): Get the class type from GET_CPC and handle
8626         previous errors.  Added code to handle the creation of static
8627         fields in inner classes. Initialized fields initialization
8628         statements kept in a list of lists.
8629         (maybe_generate_finit): Initialized fields initialization
8630         statements kept in a list of lists. Use GET_CPC.
8631         (maybe_generate_clinit): Likewise.
8632         (method_header): Use GET_CPC and GET_CPC_UN.
8633         (parser_qualified_classname): Handle inner classes.
8634         (register_incomplete_type): Set JDEP_ENCLOSING using GET_CPC.
8635         (java_fix_constructors): Hide pointer to enclosing context
8636         instance in constructor list when dealing with inner classes.
8637         (jdep_resolve_class): Call resolve_class with extra first argument
8638         JDEP_ENCLOSING.
8639         (resolve_class): Add enclosing context as a first extra argument
8640         to do_resolve_class.
8641         (do_resolve_class): Call find_as_inner_class. Handle WFLs
8642         properly.
8643         (resolve_no_layout): Extra argument added to resolve_class
8644         invocation.
8645         (reset_method_name): Use DECL_CLINIT_P, DECL_FINIT_P.
8646         (java_get_real_method_name): Use GET_CPC_UN.
8647         (check_abstract_method_definitions): Use DECL_CLINIT_P.
8648         (java_check_abstract_methods): Handle static method declared in
8649         inner classes by an error.
8650         (java_check_regular_methods): Use DECL_CLINIT_P.
8651         (source_start_java_method): Also set DECL_MAX_LOCALS.
8652         (create_artificial_method): Call java_parser_context_save_global
8653         and java_parser_context_restore_global instead of saving/restoring
8654         the context by hand.
8655         (expand_start_java_method): Improved verbose mode message.
8656         (java_complete_expand_methods): Fixed leading comment. Use
8657         DECL_CLINIT_P.
8658         (fix_constructors): Added assignment to this$<n> if necessary.
8659         (java_expand_classes): Call java_complete_expand_classes instead
8660         of java_complete_expand_methods.
8661         (make_qualified_primary): Simplified.
8662         (merge_qualified_name): Optimized for missing left or right parts.
8663         (resolve_expression_name): Handle access to outer class fields from
8664         interclasses.
8665         (resolve_qualified_expression_name): New macro
8666         RESTORE_THIS_AND_CURRENT_CLASS, used. Handle creation of inner
8667         classes. Report error on non appropriate qualification of
8668         `new'. Handle qualified `this'.
8669         (not_accessible_p): Allow access to outer class private fields from
8670         inner classes.
8671         (patch_method_invocation): Handle method invocations through
8672         access methods and inner class constructor invocations.
8673         (find_applicable_accessible_methods_list): Search enclosing
8674         contexts of an inner class.
8675         (search_applicable_methods_list): Fixed typo.
8676         (argument_types_convertible): Handle inner class constructors'
8677         hidden outer context reference argument.
8678         (qualify_ambiguous_name): Handle qualified `this'.
8679         (java_complete_lhs): Handle use of field accessed through
8680         artificial access methods in various cases of assignments. Handle
8681         CLASS_LITERAL node.
8682         (check_final_assignment): Use DECL_CLINIT_P.
8683         (valid_ref_assignconv_cast_p): Handle the destination being an
8684         enclosing context of the source.
8685         (patch_unaryop): Handle use of field accessed through artificial
8686         access methods.
8687         (patch_return): Use DECL_CLINIT_P.
8688         (patch_throw_statement): Use DECL_CLINIT_P.
8689         (check_thrown_exceptions): Use DECL_FINIT_P and DECL_INIT_P.
8690         * verify.c (verify_jvm_instructions): Use ID_CLINIT_P and
8691         ID_INIT_P.
8692
8693 2000-01-16  Anthony Green  <green@cygnus.com>
8694
8695         * parse.y (build_string_concatenation): Only use
8696         StringBuffer(String) shortcut if String arg is constant.
8697
8698 2000-01-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8699
8700         * jcf-write.c (generate_bytecode_insns): binop: Change the type of
8701         the shift value to int. Fixed typo in comment.
8702
8703 2000-01-11  Mumit Khan  <khan@xraylith.wisc.edu>
8704
8705         * jcf-path.c: Delete PATH_SEPARATOR and DIR_SEPARATOR macros.
8706         * jcf-write.c: Likewise.
8707         * parse.y: Likewise.
8708         * parse.c: Regenerate.
8709
8710 2000-01-09  Anthony Green  <green@cygnus.com>
8711
8712         * jcf-write.c (generate_bytecode_insns): Emit invokeinterface
8713         bytecodes in the correct order.
8714
8715 2000-01-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8716
8717         * Makefile.in (jcf-dump, gcjh): Move ../errors.o before $(LIBS).
8718
8719 2000-01-06  Anthony Green  <green@cygnus.com>
8720
8721         * expr.c (java_lang_expand_expr): Switch to permanent obstack
8722         before building constant array decl.
8723
8724 2000-01-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8725
8726         * jcf-write.c (generate_bytecode_conditional): Fixed indentation in
8727         method invocation and typo in conditional expression.
8728         (generate_bytecode_insns): COND_EXPR can be part of a binop. Issue
8729         the appropriate NOTE_POP.
8730         * parse.y (patch_binop): Shift value mask to feature the right
8731         type.
8732
8733 1999-12-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8734
8735         * class.c (assume_compiled, assume_compiled_node): Add static
8736         prototype.
8737         (add_assume_compiled): Use xmalloc/xstrdup, not malloc/strdup.
8738
8739         * jcf-dump.c (ARRAY_NEW_NUM): Cast long to int in switch.
8740
8741         * jvgenmain.c (usage): Add static prototype with ATTRIBUTE_NORETURN.
8742
8743         * parse.h (OBSOLETE_MODIFIER_WARNING): Rename parameter `modifier'
8744         to `__modifier' to avoid stringifying it.
8745
8746         * parse.y (verify_constructor_circularity): Don't call a variadic
8747         function with a non-literal format string.
8748         (java_check_abstract_methods): Move unreachable code inside
8749         `continue' statement.
8750         (lookup_method_invoke): Call xstrdup, not strdup.
8751
8752         * expr.c (expand_java_field_op): Avoid the use of ANSI string
8753         concatenation.
8754
8755         * jcf-parse.c (yyparse): Likewise.
8756
8757         * jv-scan.c (main): Likewise.
8758
8759 1999-12-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8760
8761         * parse.h (ABSTRACT_CHECK, JCONSTRUCTOR_CHECK,
8762         ERROR_CANT_CONVERT_TO_BOOLEAN, ERROR_CANT_CONVERT_TO_NUMERIC,
8763         ERROR_CAST_NEEDED_TO_INTEGRAL): Avoid the use of ANSI string
8764         concatenation.
8765
8766         * parse.y (synchronized, variable_redefinition_error,
8767         check_class_interface_creation, create_interface, create_class,
8768         method_header, finish_method_declaration,
8769         check_modifiers_consistency, method_declarator,
8770         complete_class_report_errors, check_abstract_method_definitions,
8771         java_check_regular_methods, check_throws_clauses,
8772         java_check_abstract_methods, read_import_dir,
8773         check_pkg_class_access, declare_local_variables, fix_constructors,
8774         cut_identifier_in_qualified, resolve_expression_name,
8775         resolve_qualified_expression_name, patch_method_invocation,
8776         java_complete_lhs, patch_assignment, try_builtin_assignconv,
8777         patch_binop, patch_array_ref, patch_newarray, build_labeled_block,
8778         patch_exit_expr, patch_exit_expr, patch_switch_statement,
8779         patch_try_statement, patch_synchronized_statement,
8780         patch_throw_statement, check_thrown_exceptions,
8781         patch_conditional_expr): Likewise.
8782
8783 1999-12-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8784
8785         * Makefile.in (LIBDEPS): Added gcc's errors.o
8786         (../jcf-dump$(exeext):): Link with gcc's errors.o
8787         (../gcjh$(exeext):): Likewise.
8788         * expr.c (expand_java_NEW): Layout the entire target type instead of
8789         laying out its methods only.
8790         (lookup_field): Layout the class after having loaded it.
8791         * java-tree.h (java_debug_context): Declared.
8792         * jcf-io.c (toplev.h): Included.
8793         (find_class): Removed assignment to jcf's outofsynch
8794         field. Force source file to be read if newer than its matching
8795         class file. Tweaked debug messages.
8796         * jcf-parse.c (jcf_out_of_synch): Deleted.
8797         (read_class): Call to jcf_out_of_synch removed.
8798         * jcf.h (typedef struct JCF): Field `outofsynch' deleted.
8799         (jcf_out_of_synch): Prototype deleted.
8800         * parse.h (struct parser_ctxt): `minus_seen', `java_error_flag',
8801         `deprecated' and `class_err': integer turned into bit-fields.
8802         New bit-fields `saved_data_ctx' and `saved_data'. Fixed comments.
8803         * parse.y (package_list): New global.
8804         (package_declaration:): Record newly parsed package name.
8805         (extra_ctxp_pushed_p): Static global deleted.
8806         (java_parser_context_save_global): Create buffer context for the
8807         purpose of saving globals, if necessary.
8808         (java_parser_context_restore_global): Pop context pushed for the
8809         purpose of saving globals, if necessary.
8810         (java_debug_context_do): New prototype and function.
8811         (java_debug_context): Likewise.
8812         (do_resolve_class): Use already parsed package names to qualify
8813         and lookup class candidate.
8814         (java_pre_expand_clinit): Removed unnecessary local variable.
8815
8816 1999-12-17  Tom Tromey  <tromey@cygnus.com>
8817
8818         * gjavah.c (decode_signature_piece): Print "::" in JArray<>.  This
8819         fixes PR gcj/119.
8820         (process_file): Use `\n\' at end of each line in string.
8821
8822 1999-12-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8823
8824         * expr.c (expand_invoke): Layout the loaded class before
8825         attempting to use it.
8826         (expand_java_field_op): Allow final field assignments to take
8827         place in $finit$.
8828         * typeck.c (convert): Return error_mark_node if expr is null.
8829
8830 1999-12-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8831
8832         * class.c (class_depth): Return -1 if the class doesn't load
8833         properly.
8834         * expr.c (can_widen_reference_to): Check for errors during depth
8835         computation and return 0 accordingly.
8836         * jcf-parse.c (parse_source_file): Call java_fix_constructors to
8837         create default constructors and add an other error check.
8838         * parse.h (java_fix_constructors): Prototyped.
8839         * parse.y (java_pre_expand_clinit): Likewise.
8840         (build_super_invocation): Re-prototyped to feature one argument.
8841         (java_check_circular_reference): Directly use `current'.
8842         (java_fix_constructors): New function.
8843         (java_check_regular_methods): Don't create default constructors
8844         here, but abort if none were found.
8845         (java_complete_expand_methods): Pre-process <clinit> calling
8846         java_pre_expand_clinit.
8847         (java_pre_expand_clinit): New function.
8848         (fix_constructors): build_super_invocation invoked with the
8849         current method declaration as an argument.
8850         (build_super_invocation): Use the context of the processed method
8851         decl argument instead of current_class.
8852         * typeck.c (lookup_java_method): Take WFLs in method names into
8853         account.
8854
8855 1999-12-14  Per Bothner  <per@bothner.com>
8856
8857         * class.c (make_class_data): flag_keep_inline_functions to keep
8858         private methods in the method array.
8859
8860 1999-12-15  Anthony Green  <green@cygnus.com>
8861
8862         * check-init.c (check_init): Take into account both types of
8863         `throw's when checking for uninitialized variables.
8864
8865 1999-12-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8866
8867         * parse.y (java_complete_lhs): Force conversion of array
8868         dimensions to int_type_node, that's what runtime's ABI expects.
8869
8870 1999-12-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8871
8872         * parse.h (EXPR_WFL_QUALIFICATION): Temporary uses the third
8873         operand of a WFL, until the Java front-end gets fixed with regard
8874         to Mark Mitchell's gcc/tree.h patch (1999-12-04.)
8875
8876 1999-12-10  Andrew Haley  <aph@cygnus.com>
8877
8878         * parse.h (BUILD_THROW): Add support for sjlj-exceptions.
8879         decl.c (init_decl_processing): Add _Jv_Sjlj_Throw.
8880         expr.c (build_java_athrow): Add support for sjlj-exceptions.
8881         java-tree.h: Ditto.
8882         jcf-write.c: Ditto.
8883
8884 1999-12-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8885
8886         * expr.c (java_lang_expand_expr): Switch to permanent obstack
8887         before calling expand_eh_region_start and expand_start_all_catch.
8888         * except.c (expand_start_java_handler): Switch to permanent
8889         obstack before calling expand_eh_region_start.
8890         (expand_end_java_handler): Switch to permanent obstack before
8891         calling expand_start_all_catch.
8892
8893 1999-12-5  Anthony Green  <green@cygnus.com>
8894
8895         * decl.c (init_decl_processing): Mark throw_node as a noreturn
8896         function with side effects.
8897         (init_decl_processing): Mark all memory allocating DECLs with
8898         DECL_IS_MALLOC.
8899
8900 1999-12-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8901
8902         * except.c (expand_end_java_handler): Call
8903         expand_resume_after_catch and end_catch_handler.
8904
8905 1999-11-30  Anthony Green  <green@cygnus.com>
8906
8907         * verify.c (verify_jvm_instructions): Create new return label
8908         chain if non existent (don't rely on the verified state of the jsr
8909         target.)
8910
8911 1999-11-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8912
8913         * jcf-write.c (generate_bytecode_insns): Fixed indentation for
8914         COMPOUND_EXPR and FIX_TRUNC_EXPR cases.
8915
8916         * parse.y (patch_assignment): Removed bogus final class test on
8917         lhs when checking on whether to emit an ArrayStoreException runtime
8918         check.
8919         * expr.c (expand_java_arraystore): Likewise.
8920
8921 1999-11-28 Anthony Green <green@cygnus.com>
8922
8923         * decl.c (find_local_variable): Reuse single slot decls when
8924           appropriate.
8925
8926 1999-11-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8927
8928         * jcf-parse.c (saw_java_source): Global variable removed.
8929         (read_class): Don't use `saw_java_source'. Added extra braces.
8930         (yyparse): Code setting `saw_java_source' removed.
8931
8932 1999-11-24  Mark Mitchell  <mark@codesourcery.com>
8933
8934         * except.c (emit_handlers): Zero catch_clauses after emitting them.
8935
8936 1999-11-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8937
8938         * verify.c (merge_type_state): Non verified subroutines being
8939         considered more than once to trigger passive type merge.
8940
8941 1999-11-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8942
8943         * parse.y (catch_clause_parameter:): Still set `$$' to NULL_TREE
8944         in case of error. Error message tuned.
8945
8946 1999-11-21  Anthony Green  <green@cygnus.com>
8947
8948         * constants.c (find_methodref_index): Unwrap method names before
8949         inserting them in the constant pool.
8950
8951         * jcf-parse.c (jcf_parse): Display `interface' when appropriate.
8952
8953         * class.c (assume_compiled_node): New typedef.
8954         (assume_compiled_tree): New static data.
8955         (find_assume_compiled_node): New function.
8956         (add_assume_compiled): New function.
8957         (assume_compiled): New function.
8958         * class.c (make_class_data): Use assume_compiled.
8959         (is_compiled_class): Use assume_compiled.
8960
8961         * java-tree.h (add_assume_compiled): Declare.
8962
8963         * lang.c (lang_decode_option): Parse new options.
8964
8965 1999-11-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8966
8967         * class.c (layout_class): Always convert TYPE_SIZE_UNIT to
8968         int_type_node: that's what `_Jv_AllocObject' expects.
8969
8970 1999-11-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8971
8972         * parse.y (lookup_method_invoke): Use lang_printable_name to
8973         reliably build the type name during error report. Fixes PR gcj/97.
8974
8975 1999-11-09  Tom Tromey  <tromey@cygnus.com>
8976
8977         * jcf-path.c: Include <sys/stat.h>.
8978         (jcf_path_init): Search for libjava.zip.  Fixes PR gcj/84.
8979         (DIR_UP): New macro.
8980
8981 1999-11-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8982
8983         * parse.y (source_end_java_method): Resume permanent allocation,
8984         reversing Apr 27 1998 patch.
8985         (patch_string_cst): Pop obstacks after having pushed the permanent
8986         ones.
8987
8988 1999-11-05  Tom Tromey  <tromey@cygnus.com>
8989
8990         * class.c (finish_class): Emit inlined methods if any native
8991         methods exist in the class.  Fixes PR gcj/85.
8992
8993 1999-11-04  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8994
8995         * parse.y (resolve_qualified_expression_name): Handle PLUS_EXPR.
8996         (qualify_ambiguous_name): Likewise.
8997
8998 1999-11-03  Godmar Back <gback@cs.utah.edu>
8999
9000         * typeck.c: (lookup_java_method):  search all inherited
9001         interfaces when looking up interface method.
9002
9003 1999-11-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9004
9005         * parse.y (method_header:): Issue error message for rule `type
9006         error'.
9007         (synchronized:): Error report when not using synchronized.
9008
9009 1999-11-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9010
9011         * parse.y (resolve_qualified_expression_name): Prevent `this' from
9012         being used before the superclass constructor has been called.
9013         (complete_function_arguments): Use CALL_EXPLICIT_CONSTRUCTOR_P
9014         instead of `CALL_THIS_CONSTRUCTOR_P'.
9015
9016 1999-10-30  Todd T. Fries <todd@lighthouse.fries.net>
9017
9018         * check-init.c: Fix typo in comment.
9019
9020 1999-10-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9021
9022         * class.c (add_method_1): Set DECL_INLINE to 1 for private, static
9023         and final method.
9024
9025 1999-10-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9026
9027         * parse.y (expression_statement:): Call function to report
9028         improper invocation of a constructor.
9029         (parse_ctor_invocation_error): New function.
9030
9031 1999-10-26  Mark Mitchell  <mark@codesourcery.com>
9032
9033         * decl.c (poplevel): Don't set BLOCK_TYPE_TAGS or call
9034         remember_end_note.
9035
9036 1999-10-21  Tom Tromey  <tromey@cygnus.com>
9037
9038         * jvgenmain.c (main): _Jv_Compiler_Properties now an extern; set
9039         in generated `main'.
9040
9041 1999-10-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9042
9043         * parse.y (resolve_qualified_expression_name): Handle MODIFY_EXPR.
9044         (qualify_ambiguous_name): Likewise.
9045
9046 1999-10-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9047
9048         * parse.y (java_complete_tree): fold_constant_for_init to work on
9049         permanent_obstack.
9050         (java_complete_lhs): Likewise.
9051         (array_constructor_check_entry): Complete an initializer element
9052         on permanent_obstack.
9053
9054 1999-10-19  Tom Tromey  <tromey@cygnus.com>
9055
9056         * jcf-parse.c (parse_source_file): Call jcf_dependency_add_file.
9057         From Mike Moreton <mike@pillim.demon.co.uk>.
9058
9059 1999-10-15  Greg McGary  <gkm@gnu.org>
9060
9061         * java-tree.h (flag_bounds_check): Remove extern decl.
9062         * lang.c (flag_bounds_check): Remove global variable.
9063         (lang_f_options): Remove "bounds-check" entry.
9064         (lang_init_options): Default flag_bounds_check to "on".
9065
9066 1999-10-14  Tom Tromey  <tromey@cygnus.com>
9067
9068         * jvgenmain.c (usage): New function.
9069         (main): Use it.  Also, handle `-D' options.
9070         * jvspec.c (lang_specific_driver): Recognize -D.
9071         (jvgenmain_spec): Added `%{D*}' to jvgenmain invocation.
9072
9073         * jvspec.c (jvgenmain_spec): Use `%umain', not just `%u'.
9074
9075 1999-10-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9076
9077         * jcf-dump.c (print_constant, disassemble_method): Don't call a
9078         variadic function with a non-literal format string.
9079
9080         * parse-scan.y (report_main_declaration): Likewise.
9081
9082         * parse.h (ERROR_CAST_NEEDED_TO_INTEGRAL): Likewise.
9083
9084         * parse.y (read_import_dir, patch_assignment, patch_binop,
9085         patch_array_ref): Likewise.
9086
9087         * typeck.c (build_java_array_type): Likewise.
9088
9089         * verify.c (verify_jvm_instructions): Likewise.
9090
9091 1999-10-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9092
9093         * jcf-write.c (RELOCATION_VALUE_1): Fixed integer value from 0 to 1.
9094
9095 1999-10-07  Anthony Green  <green@cygnus.com>
9096
9097         * jcf-write.c (generate_classfile): Use UNSAFE_PUTx in cases
9098         where CHECK_PUT may fail for valid reasons.
9099
9100         * jcf-write.c (UNSAFE_PUT1, UNSAFE_PUT2, UNSAFE_PUT3,
9101         UNSAFE_PUTN): New macros.
9102
9103 1999-10-04  Tom Tromey  <tromey@cygnus.com>
9104
9105         * lex.h (BUILD_OPERATOR2): Return ASSIGN_ANY_TK in `lite' case as
9106         well.  Fixes Java PR gcj/59.
9107         * parse-scan.y (yyerror): Report errors.
9108
9109 1999-09-24  Glenn Chambers  <GChambers@provsol.com>
9110
9111         * decl.c (insert_block): Remove unconditional `abort'.
9112
9113 1999-09-24  Bernd Schmidt  <bernds@cygnus.co.uk>
9114
9115         * decl.c (builtin_function): No longer static.  New arg CLASS.  Arg
9116         FUNCTION_CODE now of type int.  All callers changed.
9117         Set the builtin's DECL_BUILT_IN_CLASS.
9118
9119 1999-09-23  Tom Tromey  <tromey@cygnus.com>
9120
9121         * jvspec.c (lang_specific_driver): Don't read spec file if
9122         -fsyntax-only given.
9123
9124 1999-09-22  Tom Tromey  <tromey@cygnus.com>
9125
9126         * lang-specs.h: Added `%(jc1)' to the jc1 spec.
9127
9128         * javaop.h (WORD_TO_FLOAT): Use `inline' unconditionally.
9129         (WORDS_TO_LONG): Likewise.
9130         (WORDS_TO_DOUBLE): Likewise.
9131
9132 1999-09-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9133
9134         * jcf-write.c (RELOCATION_VALUE_0): New macro.
9135         (RELOCATION_VALUE_1): Likewise.
9136         (emit_iinc, emit_reloc, push_constant1, push_constant2,
9137         push_in_const, push_long_const): Prototyped.
9138         (push_constant1): Argument `index' is of type HOST_WIDE_INT.
9139         (push_constant2): Likewise.
9140         (push_int_const): Cast find_constant1's integer arguments to `jword'.
9141         (find_constant_wide): Cast find_constant2's integer arguments to
9142         `jword'.
9143         (find_constant_index): Cast find_constant2's and find_constant2's
9144         integer arguments to `jword'.
9145         (emit_pop): Argument `value' is of type HOST_WIDE_INT.
9146         (emit_switch_reloc): Use RELOCATION_VALUE_0.
9147         (emit_if): Use RELOCATION_VALUE_1.
9148         (emit_goto): Likewise.
9149         (emit_jsr): Likewise.
9150         (generate_bytecode_insns): Use RELOCATION_VALUE_0. Cast second
9151         argument to push_long_const to HOST_WIDE_INT.
9152
9153 1999-09-15  Andreas Schwab  <schwab@suse.de>
9154
9155         * Makefile.in (parse.o): Depend on $(JAVA_TREE_H).
9156
9157 1999-09-20  Nick Clifton  <nickc@cygnus.com>
9158
9159         * lang.c (lang_decode_option): Extend comment.
9160
9161 1999-09-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9162
9163         * parse.y (java_method_add_stmt): Test against GET_CURRENT_BLOCK
9164         instead of fndecl.
9165
9166 1999-09-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9167
9168         * gjavah.c (get_field_name, print_method_info, print_include,
9169         add_namelet): Use xmalloc, not malloc.
9170
9171         * jcf-depend.c (add_entry): Likewise.  Use xstrdup, not strdup.
9172         (munge): Use xrealloc, not realloc, trust xrealloc to handle a
9173         NULL pointer.
9174
9175         * jcf-io.c (open_in_zip, find_class): Use xstrdup, not strdup.
9176
9177         * jcf-parse.c (jcf_out_of_synch, yyparse): Likewise.
9178
9179         * jcf-path.c (add_entry): Likewise.
9180
9181         * jcf.h (ALLOC, REALLOC): Use xmalloc/xrealloc, not malloc/realloc.
9182
9183         * jv-scan.c (xmalloc): Remove definition.
9184
9185         * jvgenmain.c (xmalloc): Likewise.
9186
9187         * jvspec.c (lang_specific_driver): Use xcalloc, not xmalloc/bzero.
9188
9189         * lex.c (java_store_unicode): Use xrealloc, not realloc.
9190
9191         * parse-scan.y: Use concat, not of xmalloc/assign/strcpy.  Use
9192         concat, not xmalloc/sprintf.
9193         (java_push_parser_context): Use xcalloc, not xmalloc/bzero.
9194         (xstrdup): Remove definition.
9195
9196         * parse.y (duplicate_declaration_error_p,
9197         constructor_circularity_msg, verify_constructor_circularity,
9198         check_abstract_method_definitions, java_check_regular_methods,
9199         java_check_abstract_methods, patch_method_invocation,
9200         check_for_static_method_reference, patch_assignment, patch_binop,
9201         patch_cast, array_constructor_check_entry, patch_return,
9202         patch_conditional_expr): Use xstrdup, not strdup.
9203
9204         * zextract.c (ALLOC): Use xmalloc, not malloc.
9205
9206 1999-09-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9207
9208         * Make-lang.in (jvspec.o): Depend on system.h and gcc.h.
9209
9210         * jvspec.c: Include gcc.h.  Don't include gansidecl.h.
9211         (do_spec, lang_specific_pre_link, lang_specific_driver,
9212         input_filename, input_filename_length): Don't declare.
9213         (main_class_name, jvgenmain_spec, lang_specific_driver):
9214         Constify a char*.
9215         (lang_specific_driver): All calls to the function pointer
9216         parameter now explicitly call `fatal'.
9217
9218 1999-09-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9219
9220         * parse.y (find_applicable_accessible_methods_list): Search
9221         abstract classes as interfaces.
9222
9223 1999-09-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9224
9225         * class.c (finish_class): We're now outside a valid method
9226         declaration. Tell the rest of gcc so.
9227
9228 1999-09-08  Bruce Korb  autogen@linuxbox.com
9229
9230         * Makefile.in: Give the gperf user a hint about why "gperf -F" fails.
9231
9232 1999-09-07  Tom Tromey  <tromey@cygnus.com>
9233
9234         * gjavah.c (add_class_decl): Generate include for gcj/array.h, not
9235         java-array.h.
9236         (decode_signature_piece): Don't emit "::" in JArray<>.
9237         (print_namelet): Only print trailing `;' when printing a class.
9238
9239 1999-09-10  Bernd Schmidt  <bernds@cygnus.co.uk>
9240
9241         * java-tree.h: Delete declarations for all tree nodes now moved to
9242         global_trees.
9243         * decl.c: Delete their definitions.
9244
9245 1999-09-04  Mark Mitchell  <mark@codesourcery.com>
9246
9247         * Make-lang.in (jc1): Depend on ggc-callbacks.o.
9248         * Makefile.in (OBJS): Add ggc-callbacks.o.
9249         (OBJDEPS): Likewise.
9250
9251 1999-09-03  Tom Tromey  <tromey@cygnus.com>
9252
9253         * parse.y (strip_out_static_field_access_decl): Return operand if
9254         it satisfies JDECL_P.
9255
9256 1999-09-02  Tom Tromey  <tromey@cygnus.com>
9257
9258         * gjavah.c (decode_signature_piece): Emit "::" in JArray<>.
9259         Handle nested arrays, like `[[I'.
9260
9261 1999-09-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9262
9263         * class.c (finish_class): Remove unused parameter, all callers
9264         changed.
9265
9266         * expr.c (build_java_athrow): Change return type to void.
9267         (java_lang_expand_expr): Make sure each case in switch returns a
9268         value.
9269
9270         * java-tree.h (finish_class): Fix prototype to take void args.
9271
9272         * jcf-dump.c (usage): Mark with ATTRIBUTE_NORETURN.
9273         (main): Issue return from main, not exit.
9274
9275         * jcf-parse.c (parse_class_file): Fix call to `finish_class'.
9276
9277         * jcf.h (jcf_unexpected_eof): Mark with ATTRIBUTE_NORETURN.
9278
9279         * jv-scan.c (main): Issue return from main, not exit.
9280
9281         * parse.y (check_abstract_method_definitions,
9282         java_check_abstract_method_definitions): Add static prototypes.
9283         (java_complete_expand_methods): Fix call to `finish_class'.
9284
9285         * verify.c (verify_jvm_instructions): Initialize variables `oldpc'
9286         and `prevpc'.
9287
9288 1999-08-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9289
9290         * lang.c (language_string): Constify.
9291
9292 1999-08-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9293
9294         * Makefile.in (LIBS): Fix definition so we link with $(CLIB).
9295         Remove hacks for stuff which comes from libiberty.
9296
9297         * Make-lang.in: Likewise.
9298
9299 1999-08-30  Hans-Peter Nilsson  <hp@axis.se>
9300
9301         * Makefile.in (xref.o): Depend on xref.c explicitly.
9302
9303 1999-08-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9304
9305         * java-tree.h (lang_printable_name): Constify a char*.
9306
9307         * lang.c (lang_printable_name): Likewise.
9308
9309 1999-08-27  Jeffrey A Law  (law@cygnus.com)
9310
9311         * gjavah.c, jcf-write.c, verify.c: Do not use C++ style
9312         comments in C code.
9313
9314 1999-08-26  Tom Tromey  <tromey@cygnus.com>
9315
9316         * gjavah.c (print_cxx_classname): Print "::" before qualified
9317         name.
9318
9319 1999-08-26  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9320
9321         * parse.y (lookup_cl): Changed leading comment. Now does its best
9322         to set the column number.
9323         (qualify_ambiguous_name): Take WFL wrappers into account.
9324
9325 1999-08-25  Gregg Townsend  <gmt@cs.arizona.edu>
9326
9327         * verify.c (verify_jvm_instructions): Don't check instruction
9328         validity beyond end of method.
9329
9330 1999-08-25  Tom Tromey  <tromey@cygnus.com>
9331
9332         * jvspec.c (lang_specific_driver): Correctly handle --help again.
9333
9334 1999-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9335
9336         * gjavah.c (print_name, print_base_classname, utf8_cmp,
9337         cxx_keyword_subst, generate_access, name_is_method_p,
9338         get_field_name, print_field_name, super_class_name, print_include,
9339         decode_signature_piece, print_class_decls, usage, help,
9340         java_no_argument, version, add_namelet, print_namelet): Add static
9341         prototype.
9342         (print_base_classname, utf8_cmp, cxx_keyword_subst,
9343         name_is_method_p): Constify a char*.
9344         (get_field_name): Likewise.  Prefer xstrdup over malloc/strcpy.
9345         Provide a final else clause in an if-else-if.
9346         (print_field_info): Add missing final arg in function call to
9347         `print_field_name'.
9348         (print_method_info, decompile_method, decode_signature_piece,
9349         print_c_decl, print_full_cxx_name, print_stub,
9350         print_mangled_classname, super_class_name, print_include,
9351         add_namelet, add_class_decl, print_class_decls, process_file,
9352         help): Constify a char*.
9353
9354         * jcf-write.c (jcf_handler, push_constant1, push_constant2,
9355         push_int_const, find_constant_wide, find_constant_index,
9356         push_long_const, field_op, maybe_wide, emit_dup, emit_pop,
9357         emit_iinc, emit_load_or_store, emit_load, emit_store, emit_unop,
9358         emit_binop, emit_reloc, emit_switch_reloc, emit_case_reloc,
9359         emit_if, emit_goto, emit_jsr, call_cleanups,
9360         make_class_file_name): Add static prototypes.
9361         (generate_bytecode_return, generate_bytecode_insns): Pass a
9362         NULL_PTR, not a NULL_TREE.
9363
9364         * jv-scan.c: Include "jcf.h".
9365         (main): Declare using DEFUN macro.
9366
9367         * jvspec.c (find_spec_file, lang_specific_pre_link,
9368         lang_specific_driver): Add prototypes.
9369         (find_spec_file): Constify a char*.
9370
9371         * keyword.gperf (hash, java_keyword): Add prototypes.
9372
9373         * lang.c (lang_print_error): Add static prototype.
9374         (lang_init): Prefer memcpy over bcopy to avoid casts.
9375
9376         * lex.c (yylex): Add static prototype.
9377
9378         * parse-scan.y: Include "lex.c" earlier.
9379
9380         * parse.h: Remove redundant declaration for `yylex'.
9381
9382         * parse.y (java_decl_equiv, binop_compound_p, search_loop,
9383         labeled_block_contains_loop_p): Add static prototypes.
9384         (not_accessible_p): Make static to match prototype.
9385
9386         * verify.c (start_pc_cmp): Don't needlessly cast away const.
9387
9388 1999-08-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9389
9390         * parse.y (check_method_redefinition): Changed leading comment.
9391         (check_abstract_method_definitions): New function.
9392         (java_check_abstract_method_definitions): New function.
9393         (java_check_regular_methods): Call it.
9394         (verify_constructor_super): Fixed indentation.
9395         (lookup_method_invoke): Likewise.
9396
9397 1999-08-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9398
9399         * parse.y (method_header): Return a null pointer if the current
9400         class node is null.
9401         (finish_method_declaration): Return if the current function decl
9402         is null.
9403         (source_start_java_method): Likewise.
9404         (java_method_add_stmt): Likewise.
9405
9406 1999-08-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9407
9408         * class.c (emit_register_class): Removed unnecessary call to
9409         start_sequence.
9410         * parse.y (labeled_block_contains_loop_p): Removed unused local
9411         variable.
9412
9413 1999-08-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9414
9415         * parse.y (java_refold): Added prototype.
9416
9417 1999-08-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9418
9419         * parse.y (BINOP_COMPOUND_CANDIDATES): New macro.
9420         (java_stabilize_reference): Removed unnecessary `else'.
9421         (java_complete_lhs): Set flag to remember boolean. Call
9422         java_refold. Added comments.
9423         (java_decl_equiv): New function.
9424         (binop_compound_p): Likewise.
9425         (java_refold): Likewise.
9426         (patch_unaryop): Striped static field access assigned to decl and
9427         op. Changed promotion scheme for ++/-- operators.
9428         (search_loop): New function.
9429         (labeled_block_contains_loop_p): Likewise.
9430         (patch_loop_statement): Call labeled_block_contains_loop_p. Added
9431         comment.
9432         (patch_bc_statement): Call search_loop. Fixed comment.
9433
9434 1999-08-14  Anthony Green  <green@cygnus.com>
9435
9436         * expr.c (java_lang_expand_expr): Mark static array data as
9437         referenced.
9438
9439 1999-08-10  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
9440
9441         * jvgenmain.c (main): NUL-terminate name_obstack.
9442
9443 1999-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9444
9445         * check-init.c (check_bool2_init, done_alternative): Add static
9446         prototypes.
9447
9448         * class.c (add_interface_do, maybe_layout_super_class): Likewise.
9449         (add_method, build_utf8_ref, build_class_ref,
9450         append_gpp_mangled_type, layout_class_method): Constify a char*.
9451
9452         * decl.c (push_promoted_type, make_binding_level): Add static
9453         prototypes.
9454         (push_promoted_type, pushdecl): Constify a char*.
9455
9456         * except.c (find_handler_in_range, link_handler,
9457         check_start_handlers): Add static prototypes.
9458
9459         * expr.c (process_jvm_instruction): Constify a char*.
9460
9461         * gjavah.c (main): Constify a char*.
9462
9463         * java-tree.h (verify_jvm_instructions, process_jvm_instruction):
9464         Constify a char*.
9465
9466         * jcf-depend.c (free_entry, add_entry, munge, print_ents): Add
9467         static prototypes.
9468         (add_entry, jcf_dependency_set_target, jcf_dependency_add_target,
9469         munge, print_ents): Constify a char*.
9470
9471         * jcf-dump.c (disassemble_method): Constify a char*.
9472         (print_constant_pool, print_exception_table): Add static prototypes.
9473         (print_constant, print_exception_table, main, disassemble_method):
9474         Constify a char*.
9475
9476         * jcf-io.c (find_classfile, find_class): Likewise.
9477
9478         * jcf-parse.c (JPOOL_UTF_DATA, find_in_current_zip): Likewise.
9479         (set_source_filename, predefined_filename_p): Add static prototypes.
9480         (set_source_filename, get_constant, get_class_constant,
9481         find_in_current_zip): Constify a char*.
9482
9483         * jcf-path.c (free_entry, append_entry, add_entry, add_path): Add
9484         static prototypes.
9485         (add_entry, add_path, jcf_path_classpath_arg,
9486         jcf_path_CLASSPATH_arg, jcf_path_include_arg): Constify a char*.
9487
9488         * jcf-reader.c (get_attribute, jcf_parse_preamble,
9489         jcf_parse_constant_pool, jcf_parse_class, jcf_parse_fields,
9490         jcf_parse_one_method, jcf_parse_methods,
9491         jcf_parse_final_attributes): Add static prototypes.
9492         (get_attribute): Constify a char*.
9493
9494         * jcf.h (find_class, find_classfile, jcf_dependency_set_target,
9495         jcf_dependency_add_target, jcf_path_classpath_arg,
9496         jcf_path_CLASSPATH_arg, jcf_path_include_arg): Constify a char*.
9497
9498         * jv-scan.c (main): Constify a char*.
9499         (gcc_obstack_init): Add prototype arguments.
9500
9501         * jvgenmain.c (gcc_obstack_init): Likewise.
9502         (main): Constify a char*.
9503
9504         * lang.c (put_decl_string, put_decl_node, java_dummy_print): Add
9505         static prototypes.
9506         (put_decl_string, lang_print_error): Constify a char*.
9507         (lang_init): Remove redundant extern prototype.
9508
9509         * mangle.c (emit_unicode_mangled_name): Constify a char*.
9510
9511         * typeck.c (convert_ieee_real_to_integer, parse_signature_type):
9512         Add static prototypes.
9513         (get_type_from_signature): Constify a char*.
9514
9515         * verify.c (check_pending_block, type_stack_dup, start_pc_cmp ):
9516         Add static prototypes.
9517         (start_pc_cmp): Prefer PTR over GENERIC_PTR.
9518         (verify_jvm_instructions): Constify a char*.
9519
9520         * xref.c (xref_flag_value): Likewise.
9521
9522         * xref.h (xref_flag_value): Likewise.
9523
9524         * zextract.c (makeword, makelong): Add static prototypes.
9525         (makeword, makelong): Constify a uch*.
9526
9527 1999-08-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9528
9529         * lang.c (java_dummy_print): Constify a char*.
9530         (lang_print_error): Likewise.
9531         (lang_init): Remove redundant prototype for `print_error_function'.
9532         (lang_init_source): Likewise.
9533         (lang_identify): Constify a char*.
9534
9535 1999-08-09  Tom Tromey  <tromey@cygnus.com>
9536
9537         * javaop.h (WORD_TO_FLOAT): only inline if building with gcc.
9538         (WORDS_TO_LONG): Likewise.
9539         (WORDS_TO_DOUBLE): Likewise.
9540
9541 1999-08-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9542
9543         * Makefile.in (lang.o): Depend on $(RTL_H) $(EXPR_H).
9544
9545         * expr.c (java_stack_pop, java_array_data_offset,
9546         build_java_throw_out_of_bounds_exception, case_identity,
9547         build_java_check_indexed_type): Add static prototypes.
9548         (linenumber_table, expand_invoke, expand_java_field_op,
9549         build_primtype_type_ref, expand_byte_code): Constify a char*.
9550
9551         * java-tree.h (build_primtype_type_ref, linenumber_table):
9552         Constify a char*.
9553         (java_lang_expand_expr): Add prototype.
9554
9555         * lang.c: Include rtl.h and expr.h.  Remove extern prototype for
9556         `java_lang_expand_expr'.
9557
9558         * lex.c (java_lex_error): Constify a char*.
9559         (java_get_unicode, java_read_char, java_allocate_new_line,
9560         java_unget_unicode, java_sneak_unicode): Prototype.
9561
9562         * parse-scan.y (current_class, package_name, method_declarator,
9563         report_class_declaration, yyerror): Constify a char*.
9564
9565         * parse.h (java_report_errors): Prototype.
9566         (yyerror): Constify a char*.
9567
9568         * parse.y (classitf_redefinition_error, check_modifiers,
9569         parse_jdk1_1_error, lookup_package_type,
9570         lookup_package_type_and_set_next, get_printable_method_name,
9571         purify_type_name): Constify a char*.
9572         (build_super_invocation, maybe_generate_finit,
9573         verify_constructor_super, parser_add_interface,
9574         add_superinterfaces, jdep_resolve_class, note_possible_classname,
9575         java_complete_expand_methods, java_expand_finals,
9576         cut_identifier_in_qualified, java_stabilize_reference,
9577         do_unary_numeric_promotion, operator_string, do_merge_string_cste,
9578         merge_string_cste): Prototype.
9579         (single_type_import_declaration, yyerror,
9580         variable_redefinition_error, build_array_from_name,
9581         build_unresolved_array_type, check_class_interface_creation,
9582         resolve_class, complete_class_report_errors,
9583         note_possible_classname, read_import_dir,
9584         find_in_imports_on_demand, resolve_package, fix_constructors,
9585         check_deprecation, lookup_method_invoke,
9586         maybe_build_primttype_type_ref, array_constructor_check_entry):
9587         Constify a char*.
9588         (java_complete_expand_methods, java_expand_finals): Make static.
9589         (convert_narrow): Remove static prototype.
9590
9591 1999-08-03  J"orn Rennecke <amylaar@cygnus.co.uk>
9592
9593         * Makefile.in (decl.o): Depends on $(srcdir)/../defaults.h.
9594
9595 1999-08-02  Richard Henderson  <rth@cygnus.com>
9596
9597         * decl.c: Include defaults.h instead of expr.h.
9598         * parse.y: Likewise.
9599
9600 1999-08-02  Jakub Jelinek  <jj@ultra.linux.cz>
9601
9602         * java/decl.c (start_java_method): Change all uses of
9603         PROMOTE_PROTOTYPES, so that it tests it as a C expression.
9604         Ensure expr.h is included.
9605         * java/expr.c (pop_arguments): Ditto.
9606         * java/parse.y (expand_start_java_method): Ditto.
9607
9608 1999-08-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9609
9610         * Makefile.in (ALL_CFLAGS): Add '-W -Wall'.
9611
9612 1999-07-31  Bernd Schmidt  <bernds@cygnus.co.uk>
9613
9614         * decl.c: Include "function.h".
9615         * except.c: Likewise.
9616         * parse.y: Likewise.
9617         * Makefile.in: Update dependencies.
9618
9619 1999-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9620
9621         * expr.c (build_java_soft_divmod): Provide a default case in switch.
9622         (java_lang_expand_expr): Mark parameters `target', `tmode' and
9623         `modifier' with ATTRIBUTE_UNUSED.
9624
9625         * gjavah.c (process_file): Add braces around ambiguous `else'.
9626
9627         * jcf-dump.c (print_access_flags, localvar_free): Change return
9628         type to void.
9629
9630         * parse.y (java_complete_expand_method): Initialize variable
9631         `exception_copy'.
9632         (resolve_qualified_expression_name): Likewise for `field_decl'.
9633         (patch_method_invocation): Likewise for `class_to_search'.
9634         (qualify_ambiguous_name): Likewise for `name' and `ptr_type'.
9635         (patch_assignment): Likewise for `lhs_type'.
9636
9637         * verify.c (verify_jvm_instructions): Remove unused variable
9638         `caller'.
9639
9640 1999-07-25  Richard Henderson  <rth@cygnus.com>
9641
9642         * decl.c (va_list_type_node): New.
9643
9644 1999-07-25  Anthony Green  <green@cygnus.com>
9645
9646         * gjavah.c (print_stub): New function.
9647         (METHOD_IS_NATIVE): New macro.
9648         (print_mangled_classname): Make static.
9649         (HANDLE_END_FIELD): Don't emit fields during stub generation.
9650         (process_file): Perform stub generation.
9651         (HANDLE_METHOD): Don't emit class decls during stub
9652         generation.
9653         (HANDLE_END_METHOD): Take into account stub generation.
9654         (print_method_info): Handle stub generation.
9655         (print_stub): New function.
9656         (print_cxx_classname): Make signature consistant with others.
9657         (help): Describe -stubs option.
9658         (main): Create stub file.
9659         (version): Use version.c.
9660         (print_full_cxx_name): New function.
9661         (print_c_decl): Use print_full_cxx_name.
9662
9663 1999-07-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9664
9665         * check-init.c (check_init): Handle MAX_EXPR.
9666
9667 1999-07-15  Andrew Haley  <aph@cygnus.com>
9668
9669         * lang.c (flag_use_divide_subroutine): New variable.
9670         * typeck.c: (convert_ieee_real_to_integer): Bounds check
9671         fp-to-integer conversion.
9672         (convert): Call convert_ieee_real_to_integer when flag_fast_math
9673         is not set.
9674
9675         * expr.c (build_java_soft_divmod): New function.
9676         (build_java_binop): Call build_java_soft_divmod if
9677         flag_use_divide_subroutine is set.
9678         * decl.c: soft_idiv_node, soft_irem_node, soft_ldiv_node, tree
9679         soft_lrem_node: new builtin functions.
9680         (init_decl_processing) Initialize the new builtins.
9681         * java-tree.h soft_idiv_node, soft_irem_node, soft_ldiv_node, tree
9682         soft_lrem_node: new builtin functions.
9683         (build_java_soft_divmod): New function.
9684         * parse.y: Call build_java_soft_divmod if
9685         flag_use_divide_subroutine is set.
9686         * parse.c: Rebuilt.
9687
9688         * jvspec.c (lang_specific_driver): Always allow an extra arg (for
9689         a --specs= arg) even if not linking.
9690         * lang-options.h (DEFINE_LANG_NAME ("Java")): Add
9691         -fuse-divide-subroutine
9692
9693 1999-07-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9694
9695         * parse.y (resolve_and_layout): Check methods only once.
9696         (resolve_qualified_expression_name): Verify thrown exceptions
9697         compatibility.
9698         (check_thrown_exceptions): Reject exceptions thrown in
9699         initializer. Error message tuned.
9700
9701 1999-07-14  Andrew Haley  <aph@cygnus.com>
9702
9703         * expr.c (expand_expr): Do not return the last statement in a
9704         block as the block's value.
9705
9706 1999-07-03  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9707
9708         * expr.c (force_evaluation_order): Save the COMPOUND_EXPR'ed
9709         CALL_EXPR, to avoid order of evaluation changes.
9710
9711 1999-07-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9712
9713         * parse.y (qualify_ambiguous_name): Do not use
9714         IDENTIFIER_LOCAL_VALUE when name is a STRING_CST.
9715
9716 1999-07-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9717
9718         * check-init.c (check_init): Handle MAX_EXPR.
9719         * expr.c (force_evaluation_order): Force method call arguments to
9720         be evaluated in left-to-right order.
9721         * parse.y (qualify_ambiguous_name): Loop again to qualify
9722         NEW_ARRAY_EXPR properly.
9723
9724 1999-06-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9725
9726         * parse.y (patch_invoke): Resolve unresolved invoked method
9727         returned type.
9728         (qualify_ambiguous_name): STRING_CST to qualify expression for
9729         type name resolution.
9730
9731 1999-06-24  Andrew Haley  <aph@cygnus.com>
9732
9733         * class.c (finish_class): Whenever a deferred method is
9734         output, rescan the list of methods to see if a new candidate for
9735         output can be found.
9736
9737 1999-06-28  Tom Tromey  <tromey@cygnus.com>
9738
9739         * jvspec.c (lang_specific_driver): Recognize --help.
9740
9741 1999-06-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9742
9743         * parse.y (resolve_package): Fixed bogus return statement.
9744         (patch_method_invocation): Resolve method invocation beginning with
9745         a package name qualifier.
9746
9747 1999-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9748
9749         * Make-lang.in (java.stage1): Depend on stage1-start.
9750         (java.stage2): Likewise for stage2-start.
9751         (java.stage3): Likewise for stage3-start.
9752         (java.stage4): Likewise for stage4-start.
9753
9754 1999-06-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9755
9756         * parse.y (java_complete_lhs): When doing cross referencing, don't
9757         try to keep file location on a WFL expanded as a CALL_EXPR.
9758
9759 1999-06-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9760
9761         * parse.y (finish_method_declaration): Insert a RETURN_EXPR when
9762         compiling to class file a void method with an empty method body.
9763         As a side effect, the bytecode backend will generate the
9764         appropriate `return' instruction.
9765
9766 1999-06-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9767
9768         * parse.y (lookup_package_type_and_set_next): New function prototype.
9769         (resolve_package): Search current and imported packages.
9770         (lookup_package_type_and_set_next): New function.
9771
9772 1999-06-22  Andrew Haley  <aph@cygnus.com>
9773
9774         * verify.c (verify_jvm_instructions): Check for pending blocks
9775         before invalid PC test and opcode switch, not after.
9776
9777 1999-06-21  Andrew Haley  <aph@cygnus.com>
9778
9779         * except.c (find_handler_in_range): The upper limit for exception
9780         ranges is exclusive, not inclusive: (start <= pc < end).
9781         (link_handler): find child pointer which points to outer by
9782         searching sibling list: previous code incorrectly assumed that
9783         outer->outer->first_child must point to outer.
9784         * verify.c (verify_jvm_instructions): FIXME added to code for
9785         `athrow'.
9786         (verify_jvm_instructions): Do not assume that the last block
9787         processed in a subroutine is a block which ends with a `ret'
9788         instruction.  With some control flows it is possible that the last
9789         block ends with an `athrow'.
9790
9791 1999-06-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9792
9793         * parse.y (qualify_ambiguous_name): Reorganized the post
9794         evaluation of non WFL leading expression nodes.
9795
9796 1999-06-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9797
9798         * parse.y (qualify_ambiguous_name): Handle ARRAY_REF after
9799         CONVERT_EXPR.
9800
9801 1999-06-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9802
9803         * parse.y (qualify_ambiguous_name): Handle qualified expression
9804         beginning with a STRING_CST.
9805
9806 1999-06-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9807
9808         * parse.y (register_fields): Set DECL_INITIAL on both
9809         pre-initialized static and public fields.
9810         (resolve_field_access): Static field access expressions to always
9811         use pointer types.
9812         (qualify_ambiguous_name): Work out buried CALL_EXPR for proper
9813         qualification. CONVERT_EXPR to be resolved as an expression name.
9814         (java_complete_lhs): Identify and access qualified final
9815         initialized field in switch statement case expression.
9816         (fold_constant_for_init): Pre-initialized field decl constant to
9817         be folded.
9818
9819 1999-06-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9820
9821         * parse.y (note_possible_classname): Mark returned node with
9822         QUALIFIED_P only if the original class name contained a '/'.
9823
9824 1999-06-05  Anthony Green  <green@cygnus.com>
9825
9826         * Make-lang.in (gcjh): More parallel build fixes.
9827
9828 1999-06-03  Mike Stump  <mrs@wrs.com>
9829
9830         * Make-lang.in (JCF_DUMP_SOURCES, jvgenmain): Fix parallel builds.
9831
9832 1999-06-02  Anthony Green  <green@cygnus.com>
9833
9834         * except.c (link_handler): Chain exception handlers in order.
9835
9836 1999-06-02  Anthony Green  <green@cygnus.com>
9837
9838         * expr.c (expand_byte_code): Fill unreachable bytecode regions
9839         with nops and process as usual in order to always set correct EH
9840         ranges.  Emit detailed warnings about unreachable bytecodes.
9841
9842 1999-06-02  Anthony Green  <green@cygnus.com>
9843
9844         * class.c (build_utf8_ref): Mark cinit and utf8 tree nodes as
9845         constant.
9846
9847 1999-05-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9848
9849         * parse.y (lookup_field_wrapper): Unified returned value to NULL
9850           or the searched field decl.
9851
9852 1999-05-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9853
9854         * parse.y (fold_constant_for_init): Convert numerical constant
9855         values to the type of the assigned field.
9856
9857 1999-05-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9858
9859         * expr.c (lookup_field): Relaxed the test on class loading error
9860         detection.
9861         * parse.y (fold_constant_for_init): Enabeled old code.
9862
9863 1999-05-26  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9864
9865         * parse.y (valid_ref_assignconv_cast_p): Let `_Jv_CheckCast'
9866         decide the validity of the cast of a java.lang.Cloneable reference
9867         to an array.
9868         (patch_conditional_expr): Fixed first argument passed to
9869         binary_numeric_promotion.
9870
9871 1999-05-26  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9872
9873         * parse.y (qualify_ambiguous_name): Take into account that a
9874         CONVERT_EXPR might specify a type as a WFL.
9875
9876 1999-05-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9877
9878         * parse.y (patch_assignment): Save the rhs before using it as an
9879         argument to _Jv_CheckArrayStore.
9880
9881 1999-05-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9882
9883         * lex.c (java_parse_doc_section): Fixed `tag' buffer size.
9884
9885 1999-05-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9886
9887         * lex.c (java_lex): Accepts `+' or `-' after the beginning of a
9888         floating point literal only when the exponent indicator has been
9889         parsed.
9890
9891 1999-05-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9892
9893         * parse.y (formal_parameter:): Construct argument tree list
9894         element even if a yet unsupported final parameter was encountered.
9895
9896 1999-05-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9897
9898         * parse.y (finish_method_declaration): Issue errors for native or
9899         abstract methods declared with a method body, as well as for non
9900         native or non abstract methods with no method body.
9901
9902 1999-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9903
9904         * class.c (build_utf8_ref): Initialize variable `field'.
9905
9906         * decl.c (init_decl_processing): Initialize variable `field'.
9907
9908         * expr.c (build_known_method_ref): Mark parameters `method_type',
9909         `method_signature' and `arg_list' with ATTRIBUTE_UNUSED.
9910         (process_jvm_instruction): Likewise for parameter `length'.
9911
9912         * jvspec.c (lang_specific_driver): Mark variables `saw_math',
9913         `saw_libc', `saw_gc', `saw_threadlib' and `saw_libgcj' with
9914         ATTRIBUTE_UNUSED.
9915
9916         * parse.y (maybe_generate_clinit): Remove unused variable
9917         `has_non_primitive_fields'.
9918         (find_in_imports_on_demand): Initialize variables `node_to_use'
9919         and `cl'.
9920         (patch_binop): Likewise for variable `prom_type'.
9921         (patch_unaryop): Likewise for variable `prom_type'.
9922
9923         * verify.c (verify_jvm_instructions): Likewise for variable `last'.
9924
9925         * xref.c (xref_table): Add missing initializer.
9926
9927 1999-05-14  Tom Tromey  <tromey@cygnus.com>
9928
9929         * java-except.h (struct eh_range): Removed unused `next' member.
9930         * verify.c (verify_jvm_instructions): Call check_nested_ranges
9931         after adding all exception handlers.  Sort exception ranges in
9932         order of start PC.
9933         (struct pc_index): New structure.
9934         (start_pc_cmp): New function.
9935         * except.c (add_handler): Return `void'.  Don't call link_handler;
9936         instead construct an ordinary linked list and do range
9937         coalescing.
9938         (check_nested_ranges): New function.
9939         (link_handler): Changed interface to allow merging of eh_ranges.
9940         Split overlapping ranges.  Return `void'.
9941
9942 1999-05-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9943
9944         * parse.y (constructor_block_end:): New rule, tagged <node>.
9945         (constructor_body:): Use `constructor_block_end' instead of
9946         `block_end'.
9947
9948 1999-05-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9949
9950         * parse.y (statement_nsi:): Pop `for' statement block.
9951         (java_complete_lhs): Labeled blocks containing no statement are
9952         marked as completing normally.
9953
9954 1999-05-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9955
9956         * xref.c (xref_set_current_fp): New function, defined.
9957         * xref.h (xref_set_current_fp): New function, prototyped.
9958
9959 1999-05-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9960
9961         * check-init.c (check_init): Take into account that
9962         LABELED_BLOCK_STMT can be empty.
9963
9964 1999-05-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9965
9966         * parse.y (java_check_regular_methods): Warning check on not
9967         overriding methods with default access in other packages does not
9968         apply to `<clinit>'.
9969         (java_complete_lhs): If block body is an empty_stmt_node, replace
9970         it by NULL_TREE. This prevents gcc from generating an irrelevant
9971         warning.
9972
9973 1999-05-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9974
9975         * check-init.c (check_init): Removed code accepting to see things
9976         falling through default:, when doing xrefs.
9977         * java-tree.h (do_not_fold): New global variable, declared.
9978         * parse.y (do_not_fold): New global variable, defined.
9979         (java_complete_expand_method): Set `do_not_fold' to the value of
9980         `flag_emit_xref'. When doing xrefs: copy the thrown exceptions,
9981         and reinstall them after them have been purged; do not check for
9982         initializations; do not issue missing return errors.
9983         (java_complete_lhs): Do not attempt to patch INSTANCEOF_EXPR nodes
9984         when doing xrefs.
9985         (patch_binop): Skip the fold part when doing xrefs.
9986         (build_string_concatenation): Skip the concatenation part when
9987         doing xrefs.
9988         (patch_synchronized_statement): Do not generate a try-finally when
9989         doing xrefs.
9990         (patch_throw_statement): When doing xrefs, do not call BUILD_THROW
9991         and keep the location where the throw was seen.
9992         * typeck.c (convert): When `do_not_fold' is set, do not attempt
9993         any treatment on the converted node an simply return a NOP_EXPR of
9994         the targeted type.
9995         * xref.c (xref_get_data): New function, defined.
9996         * xref.h (xref_get_data): New function, declared.
9997         (XREF_GET_DATA): Use xref_get_data.
9998
9999 1999-05-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10000
10001         * gjavah.c (print_include): Cast the result of `strlen' to int
10002         when comparing against a signed value.
10003         (add_namelet): Likewise.
10004
10005 1999-05-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10006
10007         * expr.c (expand_invoke): Mark parameter `nargs' with
10008         ATTRIBUTE_UNUSED.
10009         (PRE_LOOKUP_SWITCH): Likewise for variable `match'.
10010
10011         * jcf-io.c (jcf_unexpected_eof): Mark parameter `count' with
10012         ATTRIBUTE_UNUSED.
10013
10014         * jcf-reader.c (get_attribute): Cast a value to long
10015         when comparing against a signed expression.  Likewise.
10016
10017         * lex.h: Never define HOST_WIDE_INT, HOST_BITS_PER_WIDE_INT or
10018         HOST_BITS_PER_CHAR.
10019
10020 1999-05-11  Andrew Haley  <aph@cygnus.com>
10021
10022         * parse.y (source_end_java_method): If the current method contains
10023         any exception handlers, force asynchronous_exceptions: this is
10024         necessary because signal handlers in libjava may throw exceptions.
10025         * decl.c (end_java_method): Ditto.
10026
10027 1999-05-11  Tom Tromey  <tromey@cygnus.com>
10028
10029         * Make-lang.in (jvspec.o): Don't define WITH_THREAD_x or WITH_GC_x
10030         flags.
10031         * jvspec.c (THREAD_NAME): Removed.
10032         (GC_NAME): Likewise.
10033         (MATHLIB): Likewise.
10034         (WITHLIBC): Likewise.
10035         (GCLIB): Likewise.
10036         (THREADLIB): Likewise.
10037         (MATH_LIBRARY): Likewise.
10038         (lang_specific_driver): Don't add `-l' options to command line.
10039         Instead, add a single --specs option.  Recognize `-L' options and
10040         use them to search for spec file.
10041         (find_spec_file): New function.
10042         (SPEC_FILE): New define.
10043
10044 1999-05-11  Dave Brolley  <brolley@cygnus.com>
10045
10046         * lang-options.h: -MD, -MMD, -M and -MM not needed here for
10047         cpplib-enabled build.
10048
10049 1999-05-05  Per Bothner  <bothner@cygnus.com>
10050
10051         * class.c (make_field_value):  DECL_INITIAL may be a string literal;
10052         temporarily zero it while calling rest_of_decl_compilation.
10053
10054         * java-tree.h (string_ptr_type_node):  Add declaration.
10055         * decl.c:  Define and initialize string_ptr_type_node.
10056         * parse.y (patch_string_cst):  Use string_ptr_type_node.
10057
10058         * parse.h (LOOP_HAS_LABEL_P, LOOP_HAS_LABEL_SKIP_P):  Removed.
10059         * parse.y (for_statement):  Now unconditionally exit_block.
10060         (finish_labeled_statement):  No longer exit_block if for-loop.
10061         (patch_loop_statement):  Check harder if the loop is already labeled.
10062
10063         * parse.y (patch_initialized_static_field):  Removed function.
10064         (maybe_generate_clinit):  Removed special handling for interfaces.
10065         (java_complete_expand_methods):  Do a preliminary java_complete_tree
10066         on <clinit> to determine if it can be removed.
10067         (java_complete_expand_method):  Remove special handling for <clinit>.
10068         (java_complete_lhs):  For BLOCK and EXPR_WITH_FILE_LOCATION
10069         optimize if we get back empty_stmt_node.
10070         For MODIFY_EXPR, re-do checking of static initializers.
10071         (fold_constant_for_init):  Don't return immediate if VAR_DECL.
10072         For VAR_DECL, pass correct context.
10073
10074         * verify.c (verify_jvm_instructions):  Better error messages.
10075
10076 1999-05-03  Tom Tromey  <tromey@cygnus.com>
10077
10078         * parse-scan.y (interface_declaration): Call
10079         report_class_declaration for interfaces.
10080
10081 1999-04-30 20:54 -0400  Zack Weinberg  <zack@rabi.columbia.edu>
10082
10083         * Makefile.in: Remove -v from bison command lines.
10084
10085 1999-04-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10086
10087         * check-init.c (check_init): Exclude a case of error when doing
10088         xrefs.
10089         * class.c (layout_class_method): Don't generate the error message
10090         twice when compiling from source.
10091         * lang-options.h: Added `-Wredundant-modifers' and
10092         `-Wunusupported-jdk11' flags and help text.
10093         * lang.c (lang_decode_option): Added support for
10094         `-Wunsupported-jdk11' and `-Wredundant-modifiers'.
10095         flag_static_local_jdk11 and flag_redundant set accordingly.
10096         * lex.c (java_lex): Call BUILD_OPERATOR on CCB_TK.
10097         * parse.h (EXPR_WFL_ADD_COL): New macro.
10098         (DECL_END_SOURCE_LINE): Likewise.
10099         (DECL_INHERITED_SOURCE_LINE): Likewise.
10100         * parse.y (static_ref_err): New function, prototyped.
10101         (CCB_TK): Now tagged <operator>.
10102         (class_body:): Remember the location of the closing '}' of a class
10103         definition when doing xrefs.
10104         (block:): Likewise.
10105         (block_end:): Likewise.
10106         (create_class): Remember the location of the inherited class
10107         identifier when doing xrefs.
10108         (register_fields): Added test on first operand of `init' before
10109         testing it TREE_CODE.
10110         (method_header): Store the location of the class identifier in the
10111         class decl when doing xrefs.
10112         (finish_method_declaration): Don't combine first/last method line
10113         when doing xref.
10114         (java_check_regular_methods): Warning check on not overriding
10115         methods with default access on other packages move before check on
10116         static methods. Initialization of `aflags' also moved up.
10117         (resolve_expression_name): Call static_ref_err to report the error.
10118         (static_ref_err): New function, implemented.
10119         (resolve_field_access): Returned simplified static field access
10120         when doing xrefs.
10121         (resolve_qualified_expression_name): Check for illegal use of
10122         static fields in a non static context. Call static_ref_err to
10123         report error in various places.
10124         (java_complete_tree): Do not fold initialized static fields when
10125         doing xrefs.
10126         (java_complete_lhs): Likewise.
10127
10128 1999-04-29  Anthony Green  <green@cygnus.com>
10129
10130         * expr.c (generate_name): Use ASM_GENERATE_INTERNAL_LABEL to
10131         create internal labels.
10132         (lookup_label): Ditto.
10133
10134 1999-04-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10135
10136         * class.c (layout_class_method): Generate <clinit>'s rtl for
10137         interfaces.
10138         * decl.c (complete_start_java_method): Don't call _Jv_InitClass
10139         for interfaces' <clinit>.
10140         * expr.c (lookup_field): Search for fields in interfaces.
10141         (expand_invoke): Fixed indentation.
10142         (expand_java_field_op): Likewise. Use IS_CLINIT.
10143         * parse.h (JPRIMITIVE_TYPE_OR_VOID_P): Macro removed.
10144         (IS_CLINIT): New macro.
10145         * parse.y (type_declaration:): Call maybe_generate_clinit after an
10146         interface was parsed.
10147         (maybe_generate_clinit): Don't generate if the current class is an
10148         interface with only fields of primitive types.
10149         (reset_method_name): Use IS_CLINIT.
10150         (java_complete_expand_method): Expand <clinit> when it exists for
10151         interfaces. Use IS_CLINIT.
10152         (resolve_expression_name): Use DECL_CONTEXT instead of
10153         current_class to build static field references.
10154         (java_complete_lhs): Use IS__CLINIT. Don't use SAVE_EXPR on
10155         ARRAY_REF when doing xreferencing.
10156         (check_final_assignment): Fixed typo in leading comment. Use
10157         IS_CLINIT.
10158         (patch_array_ref): Don't fully expand array references when
10159         xreferencing.
10160         (patch_return): Use IS_CLINIT.
10161         (patch_throw_statement): Likewise.
10162
10163 1999-04-22  Tom Tromey  <tromey@cygnus.com>
10164
10165         * Make-lang.in (JAVA_SRCS): Added check-init.c.
10166
10167 1999-04-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10168
10169         * decl.c (predef_filenames, predef_filenames_size): New globals
10170         (init_decl_processing): predef_filenames and predef_filenames_size
10171         initialized.
10172         * java-tree.h (predef_filenames, predef_filenames_size): Declared
10173         extern.
10174         * jcf-parse.c (predefined_filename_p): New function.
10175         (yyparse): Check that files on the command line are specified only
10176         once and issue a warning otherwise.
10177         * parse.h (JPRIMITIVE_TYPE_OR_VOID_P): New macro.
10178         * parse.y (source_end_java_method): Nullify NOP method bodies, to
10179         avoid a gcc warning with -W -Wall turned on.
10180         (java_expand_classes): Abort if errors were encountered.
10181         (java_complete_lhs): If the cross reference flag is set, wrap
10182         field DECL node around a WFL when resolving expression name.
10183
10184 1999-04-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10185
10186         * lang.c (lang_decode_option): Fixed returned value when parsing
10187         `-fxref=...' and `-Wall'.
10188         * parse.y (source_end_java_method): Do not generate code when
10189         flag_emit_xref is set.
10190         (resolve_expression_name): Do not build static field access when
10191         flag_emit_xref is set.
10192         (resolve_field_access): No special treatment on `length' when
10193         flag_emit_xref is set. Do not build qualified static field access
10194         when flag_emit_xref is set.
10195         (patch_invoke): Keep the method DECL as operand 0 of the CALL_EXPR
10196         when flag_emit_xref is set.
10197         (patch_assignment): Do not generate array store runtime check when
10198         flag_emit_xref is set.
10199         * xref.c (xref_flag_value): Fixed function declaration
10200         indentation.
10201         (xset_set_data): New function.
10202         * xref.h (xref_set_data): Added prototype for new function.
10203         (typedef struct xref_flag_table): New field data.
10204         (XREF_GET_DATA): New macro.
10205
10206 1999-04-19  Tom Tromey  <tromey@cygnus.com>
10207
10208         * xref.h (enum): Removed trailing comma.
10209
10210         * parse.y (resolve_qualified_expression_name): Added missing
10211         `break'.
10212
10213 1999-04-15  Anthony Green  <green@cygnus.com>
10214
10215         * gjavah.c: New prototypes for java_float_finite and
10216         java_double_finite.
10217
10218 1999-04-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10219
10220         * parse.y (patch_unaryop): Fixed ++/-- operator check on array
10221         references.
10222
10223 1999-04-06  Jeffrey A Law  (law@cygnus.com)
10224
10225         * Makefile.in (TREE_H): Add tree-check.h.
10226         (RTL_H): Add genrtl.h.
10227
10228 1999-04-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10229
10230         * parse.y (patch_assignment): Added ArrayStoreException runtime
10231         check.
10232
10233 1999-04-06  Per Bothner  <bothner@cygnus.com>
10234
10235         * expr.c (pop_type_0):  New function.
10236         (pop_type):  Use pop_type_0.
10237         * java-tree.h (pop_type_0):  New declaration.
10238         * verify.c (verify_jvm_instructions):  Check return instructions.
10239
10240         * parse.y (patch_binop):  Don't fold if non-constant and emiting
10241         class files.
10242
10243 1999-04-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10244
10245         * Makefile.in (gjavah.o): Depend on $(JAVA_TREE_H).
10246
10247         * gjavah.c: Include math.h earlier.  Include tree.h/java-tree.h.
10248         (main_jcf): Don't define.
10249         (process_file): Don't set `main_jcf'.
10250
10251         * java-tree.h (main_jcf): Don't declare.
10252
10253         * jcf-parse.c (main_jcf): Add static definition.
10254
10255         * lang.c (main_jcf): Don't define.
10256
10257 1999-04-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10258
10259         * class.c (add_method_1): Cast the argument of `bzero' to PTR.
10260
10261         * decl.c (copy_lang_decl): Likewise for `bcopy'.
10262
10263         * jcf-depend.c: Include "config.h", not <config.h>.
10264
10265         * jcf-parse.c (jcf_figure_file_type): Cast the arguments of
10266         `bcopy' to PTR.
10267
10268         * jcf-path.c: Include "config.h", not <config.h>.
10269
10270         * lex.c: Don't include various system header files.
10271         (java_init_lex): Cast the argument of `bzero' to PTR
10272
10273         * parse-scan.y (java_push_parser_context): Likewise.
10274
10275         * parse.y (java_push_parser_context): Likewise.
10276         (patch_bc_statement): Match format specifier to variable argument.
10277
10278         * xref.c: Don't include <stdio.h>.
10279
10280 1999-04-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10281
10282         * parse.y (struct parser_ctxt *ctxp): Now global.
10283         (declare_local_variables): Use WFL compound value for the
10284         declaration source line value, when doing cross-referencing.
10285
10286 1999-03-31  Tom Tromey  <tromey@cygnus.com>
10287
10288         * gjavah.c (print_field_info): Allow constants of other types.
10289         (print_include): Generate include when new name is proper prefix
10290         of already printed name.
10291         (add_namelet): Likewise.
10292         (cxx_keyword_subst): New function.
10293         (print_method_info): Use it.
10294         (print_field_name): New function.
10295         (get_field_name): New function.
10296         (print_field_info): Use get_field_name and print_field_name.
10297
10298 1999-03-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10299
10300         * Makefile.in (keyword.h): Generate using gperf language 'C', not
10301         'KR-C', so gperf uses the `const' keyword on strings.
10302
10303         * keyword.gperf (java_keyword): Const-ify a char*.
10304
10305 1999-03-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10306
10307         * parse.y (patch_bc_statement): Fixed identation and a bogus
10308         `printf' format.
10309
10310 1999-03-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10311
10312         * parse.y (patch_assignment): Allow static variables in other
10313         classes to be assigned.
10314
10315 1999-03-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10316
10317         * class.c (maybe_add_interface): Remove unused variable
10318         `interface_binfo'.
10319         (make_class_data): Use = for assignment, not ==.  Likewise.
10320         (emit_register_classes): Remove unused variable `decl'.
10321
10322         * lex.c: Fix comment so as not to contain an embedded `/*'.
10323
10324         * verify.c (verify_jvm_instructions): Remove unused variable
10325         `self_type'.
10326
10327 1999-03-27  Per Bothner  <bothner@cygnus.com>
10328
10329         * parse.y (complete_loop_body):  Rename to finish_loop_body.
10330         (complete_labeled_statement):  Rename to finish_labeled_statement.
10331         (complete_for_loop):  Rename to finish_for_loop.
10332         (complete_method_declaration):  Rename to finish_method_declaration.
10333
10334         * java-tree.h (continue_identifier_node):  New global node.
10335         * decl.c:  Define and initialize continue_identifier_node.
10336         * parse.y (generate_labeled_block):  Remove - no longer needed.
10337         (build_loop_body):  Use continue_identifier_node for continue block.
10338         (finish_labeled_statement):  Also do pop_labeled_block actions.
10339         (java_complete_lhs):  POP_LOOP even if error.
10340         (build_labeled_block):  Special handling for continue_identifier_node.
10341         (patch_loop_statement):  Re-organize.
10342         (patch_bc_statement):  Re-write.
10343
10344 1999-03-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10345
10346         * parse.h (EXPR_WFL_GET_LINECOL): Set a line and column count
10347         using a WFL compound value.
10348         * parse.y (xref.h): Include.
10349         (maybe_create_class_interface_decl): Set DECL_SOURCE_LINE to the
10350         WFL compound value.
10351         (register_fields): Set WFL compound value to lineno if doing
10352         xrefs.
10353         (java_complete_expand_method): Call expand_xref if flag_emit_xref
10354         is set.
10355         * xref.c (system.h, jcf.h, parse.h, obstack.h): Include.
10356         * xref.h (expand_xref): Prototype renamed from xref_generate.
10357
10358 1999-03-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10359
10360         * parse.h (BLOCK_CHAIN_DECL): New use GET_CURRENT_BLOCK.
10361         (GET_CURRENT_BLOCK): New macro.
10362         * parse.y (current_static_block): New global variable.
10363         (method_body:): Define action.
10364         (complete_method_declaration): Set current_function_decl to NULL
10365         when work on the current method is done.
10366         (declare_local_variables): Use GET_CURRENT_BLOCK.
10367         (java_method_add_stmt): Likewise.
10368         (java_complete_expand_method): Disable the use of `this' when
10369         expanding <clinit>.
10370         (enter_a_block): If no current method exist, use
10371         current_static_block to link static initializer blocks.
10372         (exit_block): Rewritten to use current_static_block when no current
10373         method decl exists.
10374         (lookup_name_in_blocks): Use GET_CURRENT_BLOCK.
10375         (patch_return): Forbid the use of `return' in static initializers.
10376         (patch_throw_statement): Fixed indentation. Issue specific error
10377         for uncaught thrown checked exception in static initializer
10378         blocks. Removed FIXME.
10379
10380 1999-03-25  Zack Weinberg  <zack@rabi.columbia.edu>
10381
10382         * java/Make-lang.in: Remove all references to gcj.o/gcj.c.
10383         Link gcj from gcc.o.
10384
10385 1999-03-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10386
10387         * parse.y (find_applicable_accessible_methods_list): When dealing
10388         with interface: ensure that a given interface or java.lang.Object
10389         are searched only once.
10390
10391 1999-03-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10392
10393         * gjavah.c (print_c_decl): Remove unused argument `flags'.
10394
10395         * jcf-dump.c (print_access_flags): Add braces around if-else.
10396
10397         * jvspec.c (lang_specific_driver): Wrap variable `len' in macro
10398         COMBINE_INPUTS.
10399
10400         * lex.c (build_wfl_node): Add static prototype.
10401
10402         * lex.h (build_wfl_node): Remove static prototype.
10403
10404         * parse.y: Include lex.c early enough to declare everything needed.
10405         Ensure calls to `build_wfl_node' pass the proper arguments.
10406         (create_class): Remove unused variable `super_decl'.
10407         (get_printable_method_name): Initialize variable `name'.
10408
10409 1999-03-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10410
10411         * Changelog: Fixed 1999-03-22 typos.
10412         * lang.c (lang_decode_option): Fixed typo in error string in the
10413         XARG section.
10414
10415 1999-03-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10416
10417         * Makefile.in (JAVA_OBJS): Added entry xref.o.
10418         (xref.o): New rule.
10419         * java-tree.h (flag_emit_xref): Declared extern.
10420         * lang.c (xref.h): Included.
10421         (flag_emit_xref): New global variable.
10422         (lang_decode_option): Added support for -fxref.
10423         * xref.c: Created.
10424         * xref.h: Likewise.
10425
10426 1999-03-21  Manfred Hollstein  <manfred@s-direktnet.de>
10427
10428         * Make-lang.in ($(GCJ)$(exeext)): Add intl.o to list of files to be
10429         linked with.
10430
10431 1999-03-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10432
10433         * Makefile.in (jcf-dump.o): Depend on $(CONFIG_H)
10434         $(srcdir)/../system.h and $(JAVA_TREE_H).
10435         (jcf-io.o): Depend on $(JAVA_TREE_H).
10436         (mangle.o): Likewise.
10437
10438         * check-init.c (check_cond_init): Add static prototype.
10439
10440         * class.c (build_java_method_type, hashUtf8String,
10441         make_field_value, get_dispatch_vector, get_dispatch_table,
10442         append_gpp_mangled_type, mangle_static_field): Likewise.
10443         (strLengthUtf8): Hide unused definition.
10444         (hashUtf8String): Const-ify.
10445         (make_field_value): Un-ANSI-fy.
10446
10447         * constants.c: Move inclusion of jcf.h above java-tree.h.
10448         (set_constant_entry, find_class_or_string_constant,
10449         find_name_and_type_constant, get_tag_node,
10450         build_constant_data_ref): Add static prototype.
10451
10452         * decl.c (push_jvm_slot, builtin_function,
10453         lookup_name_current_level): Likewise.
10454         (builtin_function): Const-ify.
10455
10456         * except.c (expand_start_java_handler, expand_end_java_handler):
10457         Add static prototype.
10458
10459         * expr.c (flush_quick_stack, push_value, pop_value,
10460         java_stack_swap, java_stack_dup, build_java_athrow,
10461         build_java_jsr, build_java_ret, expand_java_multianewarray,
10462         expand_java_arraystore, expand_java_arrayload,
10463         expand_java_array_length, build_java_monitor, expand_java_pushc,
10464         expand_java_return, expand_java_NEW, expand_java_INSTANCEOF,
10465         expand_java_CHECKCAST, expand_iinc, expand_java_binop, note_label,
10466         expand_compare, expand_test, expand_cond, expand_java_goto,
10467         expand_java_call, expand_java_ret, pop_arguments, expand_invoke,
10468         expand_java_field_op, java_push_constant_from_pool): Likewise.
10469
10470         (decode_newarray_type, expand_iinc): Un-ANSI-fy.
10471         (build_java_arraynull_check): Mark parameters `node' and `type'
10472         with ATTRIBUTE_UNUSED.
10473         (note_label): Likewise for parameter `current_pc'.
10474         (expand_java_call, expand_java_ret): Hide unused definition.
10475
10476         * java-tree.h (make_class, build_constants_constructor,
10477         java_set_exception_lang_code, pop_labeled_block, emit_handlers,
10478         init_outgoing_cpool, register_class, emit_register_classes,
10479         java_layout_seen_class_methods): Prototype.
10480         (unicode_mangling_length): Const-ify.
10481         (append_gpp_mangled_name, append_gpp_mangled_classtype,
10482         emit_unicode_mangled_name, format_int, format_uint,
10483         jcf_trim_old_input, jcf_print_utf8, jcf_print_char,
10484         jcf_print_utf8_replace, open_class): Prototype.
10485
10486         * jcf-dump.c: Include "config.h", not <config.h>.  Don't include
10487         <stdio.h>.  Include tree.h/java-tree.h.
10488         (utf8_equal_string usage, process_class): Add static prototype.
10489         (open_class): Don't prototype this here.
10490         (utf8_equal_string): Match arguments to format specifiers.
10491         (HANDLE_CODE_ATTRIBUTE, BRANCH, JSR, RET, LOOKUP_SWITCH,
10492         TABLE_SWITCH, disassemble_method): Likewise.
10493
10494         * jcf-io.c: Include tree.h/java-tree.h.
10495         (open_class, find_classfile, jcf_print_utf8,
10496         jcf_print_utf8_replace): Const-ify.
10497
10498         * jcf-parse.c (parse_zip_file_entries, process_zip_dir,
10499         parse_class_file): Add static prototype.
10500         (find_in_current_zip): Match definition to existing static
10501         prototype.
10502
10503         * jcf-write.c: Include jcf.h before tree.h/java-tree.h.
10504         (alloc_chunk, append_chunk, append_chunk_copy, gen_jcf_label,
10505         finish_jcf_block, define_jcf_label, get_jcf_label_here,
10506         put_linenumber, localvar_alloc, localvar_free, get_access_flags,
10507         write_chunks, adjust_typed_op, generate_bytecode_conditional,
10508         generate_bytecode_return, perform_relocations, init_jcf_state,
10509         init_jcf_method, release_jcf_state, generate_classfile):
10510         Add static prototype.
10511         (emit_unop): Mark parameter `type' with ATTRIBUTE_UNUSED.
10512         (make_class_file_name): Const-ify.
10513
10514         * jcf.h (find_classfile): Const-ify.
10515
10516         * jv-scan.c (reset_report): Remove prototype.
10517
10518         * jvgenmain.c: Include jcf.h/tree.h/java-tree.h.
10519         (error): Rewrite to allow varargs.
10520
10521         * lang.c (lang_f_options): Const-ify.
10522
10523         * lex.c (java_parse_escape_sequence): Add static prototype.
10524         (java_allocate_new_line): Match definition to existing static
10525         prototype.
10526
10527         * mangle.c Include tree.h/java-tree.h.
10528         (unicode_mangling_length, emit_unicode_mangled_name,
10529         append_gpp_mangled_name, append_gpp_mangled_classtype): Const-ify.
10530
10531         * parse.h (jdep_code): Remove trailing comma in enumeration.
10532         (java_get_line_col): Move prototype outside of !JC1_LITE test.
10533         (reset_report): Add prototype.
10534
10535         * verify.c (push_pending_label, merge_types): Add static
10536         prototypes.
10537
10538         * zipfile.h (opendir_in_zip, open_in_zip): Prototype.
10539
10540 1999-03-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10541
10542         * parse.y (find_applicable_accessible_methods_list): Extend the
10543         search to superinterfaces when relevant.
10544         (search_applicable_methods_list): New function.
10545
10546 1999-03-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10547
10548         * class.c (unmangle_classname): Implemented stricter testing
10549         before setting the QUALIFIED_P flag on an identifier.
10550
10551 1999-03-16  Per Bothner  <bothner@cygnus.com>
10552
10553         * parse.y (java_complete_lhs):  Call force_evaluation_order
10554         after patch_newarray.
10555         (patch_binop):  Don't call fold if there are side effects.
10556
10557 1999-03-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10558
10559         * parse.y (java_stabilize_reference): Use save_expr instead of
10560         building a SAVE_EXPR node.
10561         (java_complete_lhs): Patch the resulting string of the `+='
10562         operator (if necessary) and complete the RHS after having built
10563         the cast.
10564
10565 1999-03-15  Per Bothner  <bothner@cygnus.com>
10566
10567         * class.c (make_class):  Don't set CLASS_P here (because
10568         this function is also called by build_java_array_type).
10569         (push_class):  Set CLASS_P here instead.
10570         * parse.h (TYPE_CLASS_P):  Check for TYPE_ARRAY_P is redundant.
10571
10572         * jcf-dump.c (print_access_flags):  Take extra parameter to indicate
10573         context.  If the context is class, perfer "super" over "synchronized".
10574         * jcf-write.c (generate_classfile):  Don't add ACC_SUPER if interface.
10575
10576         * parse.y (create_class):  Don't call parser_check_super here;
10577         it is not robust.  Always wait until later.
10578
10579         * parse.y (method_header):  For interfaces, set ACC_ABSTRACT (to
10580         match what JDK 1.2 does), but don't set ACC_PUBLIC.
10581
10582 1999-03-13  Per Bothner  <bothner@cygnus.com>
10583
10584         * lex.c (java_read_char):  UNGET invalid non-initial utf8 character.
10585         * lex.h (UNGETC):  Change misleading macro.
10586
10587 1999-03-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10588
10589         * parse.y (java_stabilize_reference): Return NODE when patching a
10590         COMPOUND_EXPR.
10591         (java_complete_lhs): Put parenthesis around truth values.
10592
10593 1999-03-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10594
10595         * class.c (layout_class_method): Don't make rtl for interface
10596         methods.
10597         * parse.h (GET_TYPE_NAME): New macro.
10598         * parse.y (if_then_statement:): Fixed indentation.
10599         (if_then_else_statement:): Likewise.
10600         (for_statement:): Fixed spacing.
10601         (try_statement:): Fixed indentation.
10602         (create_interface): Don't force interfaces to be abstract.
10603         (method_header): Abstract methods are OK in interfaces.
10604         (declare_local_variables): Fixed typo in comment.
10605         (java_complete_expand_method): Fixed indentation.
10606         (resolve_qualified_expression_name): Use GET_TYPE_NAME to report
10607         non accessible fields.
10608         (java_stabilize_reference): New function.
10609         (java_complete_lhs): Fixed indentation. Use
10610         java_stabilize_reference in compound assignment. Insert the
10611         cast. If not processing `+' fix string constants before processing
10612         binop.
10613
10614 1999-03-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10615
10616         * constants.c (find_class_or_string_constant): Cast variable `j'
10617         to a `jword' when comparing against one.
10618
10619         * expr.c (java_lang_expand_expr): Remove unused variables
10620         `has_finally_p' and `op0'.
10621
10622         * gjavah.c (print_field_info): Cast a value to jint when comparing
10623         against one.  Likewise for a jlong.
10624         (add_namelet): Likewise cast a `sizeof' to an int when comparing
10625         against a signed quantity.
10626
10627         * jcf-dump.c (print_signature_type): Remove unused variable `digit'.
10628         (print_signature): Don't needlessly dereference variable `str'
10629
10630         * jcf-reader.c (get_attribute): Mark variables `max_stack' and
10631         `max_locals' with ATTRIBUTE_UNUSED.
10632         (jcf_parse_class): Likewise for variable `index'.
10633
10634         * parse.h (reverse_jdep_list): Remove static prototype.
10635
10636         * parse.y (build_jump_to_finally): Remove prototype and definition.
10637         (reverse_jdep_list): Add static prototype.
10638
10639         * typeck.c (convert_ieee_real_to_integer): Remove unused variables
10640         `assignment' and `expr_decl'.
10641
10642         * verify.c (verify_jvm_instructions): Remove unused label `bad_ldc'.
10643
10644 1999-03-12  Andrew Haley  <aph@cygnus.com>
10645
10646         * jcf-path.c (add_entry): alloca len+2 rather than len+1 bytes;
10647         we'll need a directory separator and a null character.
10648
10649 1999-03-10  Per Bothner  <bothner@cygnus.com>
10650
10651         * jcf-write.c (generate_bytecode_insns):  Handle __builtin_fmod, for %.
10652
10653   Tue Mar  9 11:52:08 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10654
10655         * parse.y (method_header): Don't set ACC_ABSTRACT flags on
10656         interfaces.
10657
10658 1999-03-05  Per Bothner  <bothner@cygnus.com>
10659
10660         * lex.c (java_parse_end_comment):  Take extra parameter (next char).
10661
10662         * class.c (build_utf8_ref):  Fix possible name class/ambiguity.
10663
10664         * class.c (layout_class_method):  A static method in a base class
10665         is never overridden, so treat it like it doesn't exist.
10666         However, do complain about private non-static method overriding
10667         public static method.
10668
10669         * parse.y:  Don't set unused INITIALIZED_P flag.
10670         * java-tree.h (INITIALIZED_P):  Removed no-longer needed flag.
10671
10672         * parse.y (find_expr_with_wfl):  Optimize tail-calls.
10673         (build_array_from_name):  Re-order &index[string] to &string[index].
10674
10675         * parse.y (java_complete_lhs):  Don't call patch_assignment if rhs is
10676         error_mark (it might catch more errors, but it is more likely to lose).
10677
10678 1999-03-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10679
10680         * Makefile.in (jcf-parse.o): Depend on $(PARSE_H).
10681         (parse-scan.o): Depend on toplev.h.
10682
10683         * class.c (make_method_value): Add prototype.  Make it static.
10684         Remove unused second argument, caller changed.
10685
10686         * expr.c (java_lang_expand_expr): Remove unused variable
10687         `return_label'.
10688
10689         * java-tree.h: Don't prototype find_in_current_zip.
10690         Add prototypes for verify_constant_pool, start_java_method,
10691         end_java_method, give_name_to_locals, expand_byte_code,
10692         open_in_zip, set_constant_value, find_constant1, find_constant2,
10693         find_utf8_constant, find_string_constant, find_class_constant,
10694         find_fieldref_index, find_methodref_index, write_constant_pool,
10695         count_constant_pool_bytes and encode_newarray_type.
10696
10697         * jcf-dump.c: Remove unused variable `LONG_temp'.
10698
10699         * jcf-parse.c: Include parse.h.
10700         (jcf_parse_source): Remove unused parameter, all callers changed.
10701         (jcf_figure_file_type): Add static prototype.
10702         (find_in_current_zip): Likewise.  Also remove unused parameter,
10703         all callers changed.
10704         (read_class): Initialize variable `saved_pos'.
10705
10706         * jcf-reader.c (jcf_parse_preamble): Mark variables
10707         `minor_version' and `major_version' with ATTRIBUTE_UNUSED.
10708
10709         * lex.c (java_is_eol): Wrap prototype and definition in !JC1_LITE.
10710         (java_init_lex): Wrap variable `java_lang_imported' in !JC1_LITE.
10711         (java_parse_doc_section): Initialize variable `seen_star'.
10712         (java_lex): Wrap variable `number_beginning' in !JC1_LITE.
10713         (java_lex_error): Mark parameters `msg' and `forward' with
10714         ATTRIBUTE_UNUSED.
10715         (java_get_line_col): Mark parameters `filename' and `line' with
10716         ATTRIBUTE_UNUSED.
10717
10718         * parse-scan.y: Include toplev.h.
10719         (yyerror): Mark parameter `msg' with ATTRIBUTE_UNUSED.
10720
10721         * parse.h: use `struct JCF', not plain `JCF'.
10722         (java_parser_context_save_global, java_expand_classes
10723         java_parser_context_restore_global, java_parse): Add prototypes.
10724
10725         * typeck.c (convert_ieee_real_to_integer): Remove unused variable
10726         `node'.
10727
10728 1999-02-24  Per Bothner  <bothner@deneb.cygnus.com>
10729
10730         *  check-init.c (check_init):  COPYN takes word count, not bit count.
10731
10732 1999-02-26  Per Bothner  <bothner@cygnus.com>
10733
10734         * typeck.c (convert_ieee_real_to_integer):  Use save_expr instead of
10735         explicit build_decl.  (Avoids crash in reload when optimizing.)
10736
10737 1999-02-25  Per Bothner  <bothner@cygnus.com>
10738
10739         * decl.c (complete_start_java_method):  Handle synchronized method
10740         even when compiling from bytecode.
10741
10742 1999-02-26  Tom Tromey  <tromey@cygnus.com>
10743
10744         * gjavah.c (add_class_decl): Only generate `#include' if outer
10745         class is not the name of the class we are processing.  Correctly
10746         append `.h' in #include.
10747         (process_file): Clean up newlines around generated `#include's.
10748         (decode_signature_piece): Correctly handle inner classes.
10749         (struct include): New structure.
10750         (all_includes): New global.
10751         (print_include): New function.
10752         (add_class_decl): Use it.
10753         (process_file): Likewise.
10754         (add_class_decl): Generate include for java-array.h if array
10755         seen.
10756         (process_file): Don't generate java-array.h include.
10757
10758         * gjavah.c (add_namelet): Check for standard package names here.
10759         (add_class_decl): Don't check for standard package names here.
10760
10761 1999-02-25  Tom Tromey  <tromey@cygnus.com>
10762
10763         * parse.y (read_import_dir): Use `|=', not `+=', to set `found'.
10764         When reading a zip file, only use strncmp if both strings are
10765         bigger than the buffer length.  Initialize `k' when looping
10766         through zip file.
10767
10768 1999-02-24  Tom Tromey  <tromey@cygnus.com>
10769
10770         * gjavah.c (struct namelet): New structure.
10771         (add_namelet): New function.
10772         (print_namelet): New function.
10773         (print_class_decls): Use add_namelet and print_namelet to generate
10774         namespaces and not classes.
10775         (method_printed): New global.
10776         (HANDLE_END_METHOD): Examine method_printed.
10777         (print_method_info): Set method_printed when required.  Print
10778         error if function to be ignored is marked virtual.  Handle $finit$
10779         method.
10780         (METHOD_IS_FINAL): New macro.
10781         (print_field_info): Use it.
10782         (HANDLE_METHOD): Clear method_printed.
10783         (method_pass): New global.
10784         (HANDLE_END_FIELD): Call add_class_decl on the first pass.
10785         (process_file): Do two passes over both fields and methods.
10786         (HANDLE_METHOD): Examine method_pass.
10787         (root): New global.
10788         (add_class_decl): New function.
10789         (print_class_decls): Don't scan over entire constant pool.
10790
10791 1999-02-23  Tom Tromey  <tromey@cygnus.com>
10792
10793         * jvspec.c (lang_specific_driver): Recognize -fsyntax-only and
10794         disable linking in that case.
10795
10796 1999-02-20  Tom Tromey  <tromey@cygnus.com>
10797
10798         * jcf.h (UTF8_GET): Mask first byte of 3-byte encoding with 0x0f,
10799         not 0x1f.
10800
10801 1999-02-21  Per Bothner  <bothner@cygnus.com>
10802
10803         * decl.c (build_result_decl), java-tree.h:  New method.
10804         (complete_start_java_method):  Handle synchronized methods.
10805         Don't build DECL_RESULT here.  (Ordering dependency problem.)
10806         (start_java_method):  Call build_result_decl here instead  ...
10807         * parse.y (java_complete_expand_method):  ... and here.
10808         (expand_start_java_method): Don't call complete_start_java_method here.
10809         (java_complete_expand_method):  Call it here instead.
10810         * parse.h (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT):  Moved to ..
10811         * java-tree.h:  ... here.
10812
10813         * expr.c (force_evaluation_order):  Fix typo, don't handle ARRAY_REF.
10814         * parse.y (java_complete_lhs):  Don't call force_evaluation_order
10815         for ARRAY_REF - it doesn't work when array bounds are checked.
10816         (patch_array_ref):  Handle it here instead.
10817
10818         * jcf-write.c (generate_classfile):  Emit "Exceptions" attribute.
10819
10820 1999-02-19  Per Bothner  <bothner@cygnus.com>
10821
10822         Force left-to-right evaluation of binary operations etc.
10823         * expr.c (force_evaluation_order), java-tree.h:  New function.
10824         * parse.y (java_complete_lhs):  Pass binary operations, procedure
10825         calls, and ARRAY_REFs to force_evaluation_order.
10826         (various):  Set TREE_SIDE_EFFECTS more carefully.
10827
10828         Tolerate random (non-UTF8) encoding in comments without complaining.
10829         * lex.c (java_read_char):  Return 0xFFFE if bad UTF8 encoding.
10830         (java_is_eol):  Handle '\r' followed by '\n' instead of vice versa.
10831
10832         * parse.y (resolve_qualified_expression_name):  Handle error_mark.
10833         (java_complete_node case EXPR_WITH_FILE_LOCATION):  Likewise.
10834
10835         * parse.y (java_complete_lhs):  Ignore an empty statement in a
10836         COMPOUND_EXPR.  Don't complain about empty statement after return.
10837
10838 1999-02-19  Per Bothner  <bothner@cygnus.com>
10839
10840         * parse.y (obtain_incomplete_type):  Don't wrap unknown types
10841         in TREE_LIST - just chain the POINTER_TYPEs together.
10842         (resolve_class):  If type already resolved, return decl.
10843         After resolving, update TREE_TYPE(class_type), and name (if array).
10844         * parse.h (do_resolve_class), parse.y:  Make non-static.
10845         * class.c (maybe_layout_super_class):  Take this_class argument.
10846         Do do_resolve_class if necessary.
10847         (layout_class, layout_class_methods): Adjust calls appropriately.
10848         * parse.h (JDEP_TO_RESOLVE, JDEP_RESOLVED_DECL, JDEP_RESOLVED,
10849         JDEP_RESOLVED_P):  Redefined for new TREE_LIST-less convention.
10850         * typeck.c (build_java_array_type):  Don't call layout_class.
10851
10852 1999-02-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10853
10854         * parse.y (check_pkg_class_access): Allow private class access
10855         within the same package.
10856         (strip_out_static_field_access_decl): New function.
10857         (patch_unaryop): Call strip_out_static_field_access_decl on ++/--
10858         operator argument before testing its nature.
10859
10860 1999-02-03  Per Bothner  <bothner@cygnus.com>
10861
10862         * java-tree.def (FINALLY_EXPR):  Removed.  (Now uses TRY_FINALLY_EXPR.)
10863         (TRY_EXPR):  Simplify - it no longer has a finally clause.
10864         * check-init.c (check_init):  Handle TRY_FINALLY_EXPR.
10865         Simpler handling of TRY_EXPR, which no longer has a finally clause.
10866         * expr.c (java_lang_expand_expr):  Likewise.
10867         * java-tree.h (CATCH_EXPR_GET_EXPR):  Removed - no longer needed.
10868         * parse.h (java_get_catch_block), parse.y:  Removed - no longer needed.
10869         * parse.y (java_complete_lhs):  Add support for TRY_FIANLLY_EXPR.
10870         (build_try_statement):  Remove finally parameter and handling.
10871         (build_try_finally_statement):  New function.
10872         (patch_try_statement):   No longer need to support finally clause.
10873         (try_statement):  Update grammar action rules.
10874         * jcf-write.c (generate_bytecode_insns):  Handle TRY_FINALLY_EXPR.
10875         Simpler handling of TRY_EXPR, which no longer has a finally clause.
10876
10877 1998-11-26  Andrew Haley  <aph@viagra.cygnus.co.uk>
10878
10879         * jcf-parse.c (get_constant): Add braces around computation of 'd'
10880         when REAL_ARITHMETIC is not defined.  [Oct 26 fix got overwritten -PB]
10881
10882 1999-02-17  Andrew Haley  <aph@cygnus.com>
10883
10884         * class.c (build_utf8_ref): Back out broken patch which was
10885         intended to to output signatures using '.' as a separator.
10886
10887         * class.c (make_class_data): Output signatures using '.' as a
10888         separator, rather than '/'.
10889         (mangled_classname): Likewise.
10890         (make_field_value): Likewise.
10891         (make_method_value): Likewise.
10892         * constants.c (alloc_class_constant): Likewise.
10893         * expr.c (build_invokeinterface): Likewise.
10894
10895 1999-02-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10896
10897         * parse.y (valid_builtin_assignconv_identity_widening_p): Got rid
10898         of an ancient workaround.
10899
10900 1999-02-10  Jeffrey A Law  (law@cygnus.com)
10901
10902         * jvspec.c (xmalloc): Kill the prototype.  It does not belong
10903         here anymore.
10904
10905 1999-02-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10906
10907         * lex.c (yylex): Encode \0 as UTF8.
10908
10909 1999-02-10  Tom Tromey  <tromey@cygnus.com>
10910
10911         * jvspec.c (lang_specific_driver): Use libgcj, not libjava.
10912         * Makefile.in (jcf-path.o): Define LIBGCJ_ZIP_FILE.
10913         (libgcj_zip): Renamed.
10914         * jcf-path.c (add_entry): Use LIBGCJ_ZIP_FILE, not
10915         LIBJAVA_ZIP_FILE.
10916         (jcf_path_init): Use LIBGCJ_ZIP_FILE.
10917
10918         * jvspec.c (THREAD_NAME): Renamed -lqthreads to -lgcjcoop.
10919         (GC_NAME): Renamed -lgc to -lgcjgc.
10920
10921 1999-02-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10922
10923         * lex.c (java_lang_cloneable): Initialize.
10924         * parse.y (java_lang_cloneable): New static variable.
10925         (qualify_ambiguous_name): Take CONVERT_EXPR into account when
10926         doing one more qualification round.
10927         (valid_ref_assignconv_cast_p): Reject null source or
10928         destination. Allow an array to be cast into java.lang.Cloneable.
10929         (patch_cast): Swapped two first arguments to first call to
10930         valid_ref_assignconv_cast_p.
10931
10932 1999-02-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10933
10934         * parse.h: DECL_P renamed JDECL_P.
10935         * parse.y: DECL_P replaced by JDECL_P.
10936         (build_array_from_name): Always use pointer's type.
10937         (patch_bc_statement): Extra code to search continue target in a
10938         for loop. Fixed comments. Continue target is current loop when
10939         unlabeled.
10940
10941 1999-02-05  Andrew Haley  <aph@cygnus.com>
10942
10943         * class.c (make_class_data): The superclass of an interface should
10944         be null, not class Object.
10945
10946         * lex.c (java_lex): Sign extend hex literals.
10947
10948 1999-02-04  Andrew Haley  <aph@cygnus.com>
10949
10950         * class.c (build_utf8_ref): Output signatures using '.' as a
10951         separator, rather than '/'.
10952         (make_class_data): Likewise.
10953
10954 1999-02-03  Marc Espie <Marc.Espie@liafa.jussieu.fr>
10955
10956         * Make-lang.in ($(GCJ)(exeext)): Remove choose-temp.o, pexecute.o and
10957         mkstemp.o.  Get them from libiberty now.
10958
10959 1999-02-02  Jeffrey A Law  (law@cygnus.com)
10960
10961         * jcf-io.c: Do not include sys/stat.h or sys/wait.h
10962
10963 1999-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10964
10965         * jvspec.c (xmalloc): Fix the prototype to match the one obtained
10966         from libiberty.h
10967
10968 1999-02-02  Per Bothner  <bothner@cygnus.com>
10969
10970         Optimize: `return (a ? b : c)' as: `if (a) return b; else return c;'.
10971         * jcf-write.c (generate_bytecode_return):  New function.
10972         (generate_bytecode_insns):  Use it, for RETURN_EXPR.
10973
10974         * jcf-write.c (generate_bytecode_insns):  For REAL_CST that is 0 or 1,
10975         generate special [fd]const_[01] instructions.
10976
10977         * jcf-parse.c (yyparse):  Don't emit_register_classes if -fsyntax-only.
10978
10979         * verify.c (verify_jvm_instructions):  Do INVALIDATE_PC after
10980         handling OPCODE_lookupswitch or OPCODE_tableswitch.
10981
10982 1999-02-01  Per Bothner  <bothner@cygnus.com>
10983
10984         * parse.y (patch_method_invocation):  Handle calling static methods,
10985         even in the form EXPR.METHOD(ARGS), not just TYPE.METHOD(ARGS).
10986
10987         * parse.y (java_complete_lhs):  Don't complain about unreachable
10988         exit condition in a do-while statement.
10989
10990 1999-01-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10991
10992         * lex.c (java_read_char): Fixed utf8 decoding.
10993         (java_unicode_2_utf8): Fixed utf8 encoding in the 0x800-0xffff
10994         range.
10995         * parse.y (valid_builtin_assignconv_identity_widening_p): Fixed
10996         comments. Local variable `all_primitive' is gone. Broadened
10997         acceptance of `0' to floating point targets. `long' can now be
10998         widened to `double' or `float'.
10999         (valid_method_invocation_conversion_p): Added leading
11000         comment. Fixed tabulation.
11001         (build_string_concatenation): Optimize out left or right empty
11002         string constants.
11003
11004 1999-01-28  Per Bothner  <bothner@cygnus.com>
11005
11006         * jcf-write.c (localvar_alloc):  Only emit entry for
11007         LocalVariableTable if debug_info_level > DINFO_LEVEL_TERSE.
11008         (generate_bytecode_insns):  Only call put_linenumber if
11009         debug_info_level > DINFO_LEVEL_NONE.
11010         * jvspec.c (lang_specific_driver):  If no -O* or -g* option
11011         is specified, add -g1 (for compatibility wih javac).
11012
11013 1999-01-28  Hans-Peter Nilsson  <hp@axis.se>
11014
11015         * java/Makefile.in: Add missing dependencies for jcf-dump.o,
11016         gjavah.o, check-init.o, jv-scan.o
11017
11018 1999-02-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11019
11020         * Makefile.in (gjavah.o): Depend on $(CONFIG_H) and system.h.
11021
11022         * gjavah.c: Include config.h and system.h.
11023
11024         * javaop.h (inline): Don't define, its handled by system.h.
11025         (WORD_TO_FLOAT, WORDS_TO_LONG, WORDS_TO_DOUBLE): Change these
11026         from `inline' to `static inline'.
11027
11028         * jcf.h (inline): Don't define, its handled by system.h.
11029
11030         * lex.c (inline): Likewise.
11031
11032 1999-01-31  Zack Weinberg  <zack@rabi.columbia.edu>
11033
11034         * lang-specs.h: Map -Qn to -fno-ident.
11035
11036 1999-01-29  Richard Henderson  <rth@cygnus.com>
11037
11038         * check-init.c (check_init): Fix CLEANUP_POINT_EXPR typo.
11039
11040 1999-01-29  Tom Tromey  <tromey@cygnus.com>
11041
11042         * parse.h (BUILD_APPEND): If ARG is a non-String object reference,
11043         then cast it to Object before calling `append' method.
11044
11045 1999-01-28  Per Bothner  <bothner@cygnus.com>
11046
11047         * check-init.c (check_bool2_init, check_bool_init, check_init):
11048         Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR, and TRUTH_XOR_EXPR.
11049         * jcf-write.c (generate_bytecode_insns):  Likewise.
11050
11051 1999-01-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11052
11053         * jcf-parse.c (jcf_parse): Don't parse the same class file twice.
11054         * parse.y (patch_cast): Allow a boolean to be cast into a
11055         boolean.
11056
11057 1999-01-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11058
11059         * parse.y: (class_declaration:): Fixed indentation.
11060         (class_member_declaration:): Extra `;' after field declaration now
11061         accepted.
11062         (interface_declaration:): Removed debug messages in error reports.
11063         (patch_binop): Nodes created and returned inherit the orignal
11064         node's COMPOUND_ASSIGN_P flag value.
11065         (patch_cast): Fix cast from char to floating point.
11066
11067 1999-01-25  Andrew Haley  <aph@cygnus.com>
11068
11069         * except.c, java-except.h (expand_resume_after_catch): new
11070         function.
11071         * expr.c (java_lang_expand_expr): call expand_resume_after_catch
11072         to branch back to main flow of control after a catch block.
11073
11074 1999-01-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11075
11076         * Makefile.in (parse.o): Depend on $(CONFIG_H) and
11077         $(srcdir)/../system.h.
11078         (class.o): Depend on $(PARSE_H) and $(srcdir)/../output.h.
11079         (jcf-parse.o): Depend on $(srcdir)/../toplev.h.
11080         (jcf-write.o): Likewise.
11081         (jv-scan.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h.
11082         (mangle.o): Depend on $(srcdir)/../toplev.h.
11083         (parse-scan.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h.
11084         (zextract.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h.
11085
11086         * class.c: Include output.h and parse.h.
11087         (mangled_classname): Add the `const' keyword to a char*.
11088         (find_named_method): Hide unused function definition.
11089         (build_utf8_ref): Change type of variable `c' to unsigned char.
11090         Use ISALPHA/ISDIGIT instead of isalpha/isdigit.
11091         (build_class_ref): Add the `const' keyword to a char*.
11092         (layout_class_method): Remove unused variable `buf'.
11093
11094         * decl.c (find_local_variable): Remove unused variable `rtl'.
11095         (pushdecl): Likewise for variables `different_binding_level' and
11096         `oldglobal'.
11097         (pushlevel): Mark parameter `unused' with ATTRIBUTE_UNUSED.
11098         (maybe_build_cleanup): Likewise for parameter `decl'.
11099
11100         * except.c (expand_start_java_handler): Mark parameter `range'
11101         with ATTRIBUTE_UNUSED.
11102
11103         * expr.c: Include except.h.
11104         (pop_type): Remove unused variable `i'.
11105         (pop_value): Likewise for variables `n_words' and `i'.
11106         (expand_java_arrayload): Likewise for variable `convert'.
11107         (java_lang_expand_expr): Likewise for variables `op0', `type',
11108         `mode', `unsignedp', `node' and `elements'.
11109         (expand_byte_code): Likewise for variables `prev_eh_ranges' and
11110         `eh_ranges'.
11111         (process_jvm_instruction): Add a `const' qualifier to a char*.
11112
11113         * gjavah.c (output_directory): Add the `const' keyword to a char*.
11114         (temp_directory): Likewise.
11115         (print_c_decl): Likewise.
11116         (print_method_info): Likewise.
11117         (decode_signature_piece): Likewise.
11118         (print_mangled_classname): Likewise.
11119
11120         * java-except.h: Provide prototypes for maybe_start_try,
11121         maybe_end_try and add_handler.
11122
11123         * java-tree.h (mangled_classname): Add the `const' keyword to a char*.
11124         (parse_error_context): Likewise.  Also add ATTRIBUTE_PRINTF_2.
11125         (pushdecl_top_level, alloc_class_constant, unicode_mangling_length,
11126         init_expr_processing, push_super_field, init_class_processing,
11127         can_widen_reference_to, class_depth, verify_jvm_instructions,
11128         maybe_pushlevels, maybe_poplevels, process_jvm_instruction,
11129         set_local_type, merge_type_state, push_type, load_type_state,
11130         add_interface, find_in_current_zip, append_gpp_mangled_classtype,
11131         emit_unicode_mangled_name): Add prototypes.
11132
11133         * jcf-dump.c (print_constant): Add the `const' keyword to a char*.
11134         (print_signature_type): Use ISDIGIT, not isdigit.
11135         (print_signature): Remove unused variable `j'.
11136
11137         * jcf-io.c (jcf_filbuf_from_stdio): Cast the result of `fread' to
11138         int when comparing against one.
11139
11140         * jcf-parse.c: Include toplev.h.
11141
11142         * jcf-write.c: Likewise.  Don't include <string.h> or <sys/stat.h>.
11143         (localvar_free): Remove unused variable `i'.
11144         (generate_bytecode_conditional): Likewise for variable `kind'.
11145
11146         * jv-scan.c: Include config.h and system.h.  Remove redundant
11147         OS header and gansidecl.h includes.
11148         (warning): Add the `const' keyword to a char*.  Also add
11149         ATTRIBUTE_PRINTF_1 to the prototype.  Check ANSI_PROTOTYPES, not
11150         __STDC__, when determining whether to use ANSI-isms.
11151         (fatal): Likewise.  Also add ATTRIBUTE_UNUSED.
11152         (xmalloc): Don't redundantly prototype here.
11153         (main): Remove unused parameter `envp'.  Also fix the arguments
11154         passed to function `fatal' to match the format specifier.
11155
11156         * lang.c (java_tree_code_name): Add the `const' keyword to a char*.
11157
11158         * mangle.c: Include toplev.h.
11159         (emit_unicode_mangled_name): Declare parameter `len'.
11160
11161         * parse.y (parse_warning_context): Add the `const' keyword to a
11162         char*.  Also add ATTRIBUTE_PRINTF_2 to the prototype.  Check
11163         `ANSI_PROTOTYPES' not `__STDC__' for whether to use ANSI-isms.
11164         (issue_warning_error_from_context): Add the `const' keyword to
11165         a char*.
11166         (parse_error_context): Likewise.  Also check `ANSI_PROTOTYPES'
11167         not `__STDC__' for whether to use ANSI-isms.
11168
11169         * typeck.c (incomplete_type_error): Mark parameters `value' and
11170         `type' with ATTRIBUTE_UNUSED.
11171         (parse_signature_type): Use ISDIGIT, not isdigit.
11172
11173         * verify.c (check_pending_block): Add the `const' keyword to a char*.
11174         (verify_jvm_instructions): Likewise.  Remove unused variables
11175         `field_name' and `default_val'.
11176
11177         * zextract.c: Include config.h and system.h.  Remove redundant
11178         OS header includes.
11179
11180         * zipfile.h: Prototype `read_zip_archive'.
11181
11182 1999-01-21  Andrew Haley  <aph@cygnus.com>
11183
11184         * typeck.c (convert): Allow conversions to void type: some
11185         optimizations in gcc do this.
11186
11187 1999-01-21  Andrew Haley  <aph@cygnus.com>
11188
11189         * typeck.c (convert_ieee_real_to_integer): New function.
11190         (convert): When not using fast-math and using hardware fp, convert
11191         an IEEE NaN to zero.
11192
11193 1999-01-18  Andrew Haley  <aph@cygnus.com>
11194
11195         * parse.y (patch_binop): Do a type conversion from signed to
11196         unsigned and then back to signed when a ">>>" is found.
11197
11198 1999-01-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11199
11200         * java-tree.h: (check_for_initialization): Added prototype.
11201         * lex.c (java_parse_doc_section): `\n' breaks the `*/' string.
11202         * parse.y (do_resolve_class): Removed unused locals.
11203         (read_import_dir): Likewise.
11204         (resolve_qualified_expression_name): Array creation
11205         expressions are valid primary expressions.
11206         (qualify_ambiguous_name): Likewise.
11207         (patch_synchronized_statement): Removed unused local.
11208
11209 1999-01-17  Jeffrey A Law  (law@cygnus.com)
11210
11211         * Makefile.in (zextract.o): Add dependencies.
11212
11213         * Makefile.in: Do not put ^Ls at the start of a line.
11214
11215 1999-01-15  Per Bothner  <bothner@cygnus.com>
11216
11217         * expr.c (process_jvm_instruction):  Coerce to correct Throwable
11218         sub-type the result of the call that gets the exception value.
11219
11220         * parse.y (java_complete_expand_methods):  If flags_syntax_only,
11221         don't call finish_class.
11222
11223         * parse.y (java_check_regular_methods):  If METHOD_PRIVATE,
11224         clear found before continuing.
11225
11226         * verify.c (verify_jvm_instructions):  On an array load, allow
11227         and handle top of stack to be TYPE_NULL.
11228
11229         * gjavah.c (generate_access):  Translate Java package private or
11230         protected access to C++ public, but with a comment.
11231
11232 1999-01-13  Andrew Haley  <aph@cygnus.com>
11233
11234         * expr.c (generate_name): Name prefix changed to avoid clashes
11235         with assembler temp labels.
11236
11237         * parse.y (patch_synchronized_statement): Set TREE_SIDE_EFFECTS on
11238         MODIFY_EXPR.  Without this, code for the assignment may not be
11239         generated at all and the synchronized statement will read an
11240         uninitialized variable.
11241
11242 1999-01-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11243
11244         * class.c (maybe_layout_super_class): Fixed returned value.
11245         * lex.c: Added 1999 to the copyright.
11246         (java_init_lex): Initialize java_lang_imported.
11247         * lex.h: Added 1999 to the copyright.
11248         * parse.h: Added 1999 to the copyright.
11249         (REGISTER_IMPORT): Fixed typo in trailing macro.
11250         (CURRENT_OSB): New macro.
11251         (struct parser_ctxt): New fields osb_depth, osb_limit.
11252         * parse.y (java_lang_id): New global variable.
11253         (type_import_on_demand_declaration): Don't import java.lang.* twice.
11254         (array_creation_expression:): Use CURRENT_OSB.
11255         (dims:): Uses a stack to keep track of array dimensions.
11256         (cast_expression:): Use CURRENT_OSB.
11257         (find_expr_with_wfl): Return NULL if node found doesn't meet the
11258         conditions.
11259         (register_fields): Fixed typos in comment.
11260         (check_method_redefinition): Fixed comment indentation.
11261         (java_check_regular_methods): Set saved found wfl to NULL after
11262         having reinstalled it in the previously found DECL_NAME.
11263
11264 1999-01-10  Richard Henderson  <rth@cygnus.com>
11265
11266         * gjavah.c (java_float_finite): Use a union to do type punning.
11267         (java_double_finite): Likewise.
11268
11269 1999-01-09  Per Bothner  <bothner@cygnus.com>
11270
11271         * parse.y (build_new_array_init):  Don't set EXPR_WFL_LINECOL
11272         on CONSTRUCTOR (since that trashes TREE_CST_RTL).
11273         (patch_new_array_init):  Clear TREE_CONSTANT also if INDIRECT_REF.
11274         (register_fields):  Set TREE_STATIC on NEW_ARRAY_INIT, not on
11275         CONSTRUCTOR (which causes expand_expr to call output_constant_def).
11276         * expr.c (java_lang_expand_expr):  Check TREE_STATIC of NEW_ARRAY_INIT.
11277
11278 1999-01-08  Per Bothner  <bothner@cygnus.com>
11279
11280         * check-init.c (check_init):  If compiling to native, we don't
11281         see THROW_EXPR.  Instead, look for a call to throw_node (_Jv_Throw).
11282
11283 1999-01-08  Tom Tromey  <tromey@cygnus.com>
11284
11285         * parse-scan.y (variable_declarator_id): Set or increment
11286         bracket_count.
11287         (bracket_count): New global.
11288         (formal_parameter): Handle case where bracket pairs trail variable
11289         declarator id.
11290
11291 1999-01-07  Andrew Haley  <aph@viagra.cygnus.co.uk>
11292
11293         * jcf-parse.c (yyparse): variable len changed from a char to an
11294         int to prevent overflow.
11295
11296 1999-01-06  Per Bothner  <bothner@cygnus.com>
11297
11298         * java-tree.h:  Declare read_class.
11299         * jcf-parse.c (read_class):  New function.
11300         (load_class):  Now just call read_class.
11301
11302         * java-tree.h (java_parse_abort_on_error):  Only return if new errors.
11303         * jcf-parse.c (parse_source_file):  Declare save_error_count,
11304         which is needed by java_parse_abort_on_error macro,
11305         * parse.y (java_layout_classes, java_expand_classes):  Likewise.
11306
11307         * parse.y (register_fields):  Set TREE_STATIC flag of NEW_ARRAY_INIT
11308         constructor, if initializing a static field.
11309         (patch_new_array_init):  Set TREE_CONSTANT if it is.
11310         * expr.c (java_lang_expand_expr):  For a static array constructor
11311         of primitive elements, allocate the array itself statically.
11312         Disabled until we can set the vtable field statically.
11313
11314         * check-init.c:  New file.  Checks for definite assignment.
11315         * Makefile.in (JAVA_OBJS):  Add check-init.o.
11316         * parse.y (java_complete_expand_method): Call check_for_initialization.
11317         * parse.h (BLOCK_EXPR_DECLS, BLOCK_EXPR_BODY):  Moved to java-tree.h.
11318
11319 1999-01-06  Graham <grahams@rcp.co.uk>
11320
11321         * parse.y : include system.h instead of including
11322         standard headers directly with the exception of <dirent.h>.
11323
11324 1999-01-06  Per Bothner  <bothner@cygnus.com>
11325
11326         * lex.h:  Moved static function declarations to lex.c,
11327         to shut up some -Wall warnings.
11328         * lex.c:  Static function declarations moved here.
11329         * jcf-dump.c:  Small fixes to shut up -Wall warnings.
11330
11331 1999-01-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11332
11333         * Make-lang.in ($(GCJ).o): Depend on prefix.h.
11334
11335 1998-12-22  Per Bothner  <bothner@cygnus.com>
11336
11337         * expr.c (process_jvm_instruction):  Do load_type_state after JSR.
11338         * verify.c (verify_jvm_instructions):  Fix off-by-one error.
11339
11340         * jcf-write.c (CHECK_PUT):  Add (void) cast to avoid -Wall warnings.
11341         (localvar_alloc):  Change return type to void,
11342         (emit_unop):  Remove unused variable size.
11343
11344         * jcf-write.c (struct jcf_block):  Add new union.
11345         (PENDING_CLEANUP_PC, PENDING_EXIT_PC, UNDEFINED_PC):  New macros.
11346         (call_cleanups):  New functions.
11347         (struct jcf_partial):  New fields num_finalizers and return_value_decl.
11348         (generate_bytecode_insns):  Support CLEANUP_POINT_EXPR and
11349         WITH_CLEANUP_EXPR.  Handle cleanups in RETURN_EXPR and EXIT_BLOCK_EXPR.
11350         * lang.c (lang_init):  Call using_eh_for_cleanups.
11351         * parse.y (java_complete_lhs):  For SYNCHRONIZED_EXPR, defer
11352         completing operands to patch_synchronized_statement.
11353         Support CLEANUP_POINT_EXPR, WITH_CLEANUP_EXPR.
11354         (patch_synchronized_statement): Re-write suing CLEANUP_POINT_EXPR and
11355         WITH_CLEANUP_EXPR instead of TRY_EXPR.
11356
11357 1998-12-20  John F. Carr  <jfc@mit.edu>
11358
11359         * Make-lang.in: Comment out control-Ls; they upset some makes.
11360
11361 1998-12-18  Tom Tromey  <tromey@cygnus.com>
11362
11363         * parse.y (check_class_interface_creation): Use DIR_SEPARATOR
11364         consistently.
11365
11366 1998-12-17  Tom Tromey  <tromey@cygnus.com>
11367
11368         * parse.y (DIR_SEPARATOR): New define.
11369         (check_class_interface_creation): Use it.
11370
11371         * parse-scan.y (report_main_declaration): Recognize
11372         `java.lang.String' in argument to main.
11373
11374 1998-12-16  Per Bothner  <bothner@cygnus.com>
11375
11376         * parse.y (create_interface):  Remove bogus test.
11377
11378 1998-12-16  Per Bothner  <bothner@cygnus.com>
11379
11380         * jcf-parse.c (get_constant):  Set TREE_TYPE for string constants.
11381         (HANDLE_CONSTANTVALUE):  If flag_emit_class_files, call get_constant.
11382
11383 1998-12-16  Tom Tromey  <tromey@cygnus.com>
11384
11385         * parse-scan.y (qualified_name): Use correct sprintf format.
11386
11387 1998-12-15  Tom Tromey  <tromey@cygnus.com>
11388
11389         * gjavah.c (print_field_info): Changed how most negative number is
11390         printed.
11391
11392 1998-12-14  Per Bothner  <bothner@cygnus.com>
11393
11394         * parse.y (fold_constant_for_init):  New function.
11395         (resolve_expression_name):  Don't replace static final
11396         constant-initialized fields by its value.
11397         (java_complete_lhs):  New.  Same as java_complete_tree, except does
11398         not replace static final constant-initialized fields by their values.
11399         (register_fields):  If there is an initializer, set DECL_INITIAL and
11400         MODIFY_EXPR_FROM_INITIALIZATION_P.
11401         (java_complete_tree):  For MODIFY_EXPR, use java_complete_lhs for lhs.
11402         Only call patch_initialized_static_field if
11403         MODIFY_EXPR_FROM_INITIALIZATION_P.
11404         (patch_initialized_static_field):  If not valid constant, clear
11405         DECL_INITIAL.
11406
11407         * parse.y (lookup_field_wrapper):  Fix thinko.
11408
11409         * parse.y (java_complete_tree):  In EXPR_WITH_FILE_LOCATION,
11410         set and restore global lineno.
11411
11412 1998-12-14  Tom Tromey  <tromey@cygnus.com>
11413
11414         * gjavah.c (print_field_info): If value to print is the smallest
11415         value of its size, then print as hex to avoid later warnings from
11416         C++ compiler.
11417
11418 1998-12-14  Tom Tromey  <tromey@cygnus.com>
11419
11420         * gjavah.c (decompile_method): Decompile `return null'.
11421         (process_file): Generate `#pragma interface'.
11422         (method_declared): New global.
11423         (print_method_info): Set it.
11424         (HANDLE_CODE_ATTRIBUTE): Only print it method_declared set.
11425         (print_method_info): Handle abstract methods.
11426
11427 1998-12-13  Per Bothner  <bothner@cygnus.com>
11428
11429         * parse.y (patch_method_invocation):  If class_decl is null
11430         (e.g. an array type), use original type.
11431
11432         * parse.y (check_thrown_exceptions):  Temporary hack to suppress
11433         errors about uncaught exception from clone (of array, specifically).
11434
11435 1998-12-13  Tom Tromey  <tromey@cygnus.com>
11436
11437         * gjavah.c (decompile_method): Handle all types of `return'
11438         opcode.  Decompile `return this' and `return'.
11439         (method_access): New global.
11440         (print_method_info): Set it.
11441         (decompile_method): Don't decompile a synchronized method.
11442
11443 1998-12-13  Tom Tromey  <tromey@cygnus.com>
11444
11445         * jcf-reader.c (jcf_parse_one_method): Recognize
11446         HANDLE_END_METHOD.
11447         * gjavah.c (HANDLE_END_METHOD): New macro.
11448         (HANDLE_CODE_ATTRIBUTE): New macro.
11449         (decompile_method): New function.
11450         (print_method_info): Don't print `;\n' at end of function decl.
11451         Include java-opcodes.h.
11452         (decompiled): New global.
11453
11454 1998-12-12  Per Bothner  <bothner@cygnus.com>
11455
11456         * class.c (build_class_ref):  Handle PRIMTYPE.class if
11457         flag_emit_class_files.
11458         * expr.c (expand_java_field_op):  Don't optimize java.lang.XXX.TYPE
11459         if flag_emit_class_files.
11460         * parse.y (java_complete_tree):  Pre-liminary support for
11461         COMPONENT_REF - only to handle PRIMCLASS.TYPE.
11462
11463         * parse.y (patch_synchronized_statement):   Don't call monitorexit
11464         unless block CAN_COMPLETE_NORMALLY.  Propagate that flag properly.
11465
11466         * java-tree.h (DECL_LOCAL_STATIC_VALUE):  Removed - no longer used.
11467
11468         * zipfile.h (opendir_in_zip):  New declaration.
11469         * jcf-io.c (saw_java_source):  Moved to jcf-parse.c.
11470         (opendir_in_zip):  New function, using code from open_in_zip.
11471         (open_in_zip):  Call opendir_in_zip.
11472         (find_class):  Remove no-longer-used do_class_file parameter,
11473         but add source_ok parameter.  Change logic so if we find a .java file,
11474         we don't look for .class in later classpath emtries.
11475         * jcf-parse.c (load_class):  Pass saw_java_source to find_class.
11476         (jcf_figure_file_type):  Only call open_in_zip if correct magic number.
11477         * gjavah.c: Update call to find_class.
11478         * jcf-dump.c:  Likewise.
11479
11480         * jcf-write.c (put_linenumber):  Handle duplicate line numbers.
11481         (generate_bytecode_insns):  For EXPR_WITH_FILE_LOCATION, do
11482         nothing if body is empty_stmt_node.
11483         Various little fixes so SP gets correctly adjusted.
11484         For NEW_ARRAY_INIT, handle IGNORE_TARGET.
11485         For CALL_EXPR, test if static first.
11486         (generate_classfile):  Ignore fields that are DECL_ARTIFICIAL,
11487         such as the ones we create for Object and Class.
11488         Set and restore current_function_decl.
11489         * parse.y:  Check/set IS_AN_IMPORT_ON_DEMAND_P in read_import_dir.
11490         (note_possible_classname):  New function.
11491         (read_import_entry):  Removed.  Merged with read_import_dir.
11492         (read_import_dir):  Don't call find_class - that only gives us
11493         the first classpath entry having the needed package.
11494         Use the struct buffer data structure from buffer.h.
11495         (read_import_dir, find_in_imports_on_demand):  The remembered
11496         class names now use '.' (not '/') as package separator.
11497
11498         * parse.y (java_complete_expand_methods):  Call write_classfile
11499         here, and not in java_expand_classes (which only gets first class).
11500
11501 1998-12-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11502
11503         * parse.y (<type_declaration>):  Do maybe_generate_clinit last.
11504         (register_fields):  If a static fields has an initializer, just
11505         chain it on ctxp->static_initialized, and handle later.
11506         (java_complete_expand_methods):  Force <clinit> first.
11507         (resolve_expression_name, resolve_field_access):  Just get DECL_INITIAL
11508         - it's already been completed.
11509         (patch_initialized_static_field):  New function.
11510         (java_complete_field):  Call it.
11511
11512 1998-12-12  Per Bothner  <bothner@cygnus.com>
11513
11514         * expr.c (encode_newarray_type, build_new_array):  New functions.
11515         * java-tree.h:  Declare build_new_array.
11516         * jcf-write.c (patch_newarray):  Use build_new_array.
11517
11518         * expr.c (java_lang_expand_exp):  Support NEW_ARRAY_INIT.
11519         * jcf-write.c (generate_bytecode_insns):  Support NEW_ARRAY_INIT.
11520
11521         * parse.y (patch_new_array_init):  Re-organize.
11522         Now is passed the actual array (pointer) type of the value.
11523         Set the type of the CONSTRUCTOR to be an ARRAY_TYPE.
11524         (patch_array_constructor):  Removed - merged into patch_new_array_init.
11525         (java_complete_tree):  Update patch_new_array_init.
11526
11527         * jcf-write.c (find_constant_index):  New function.
11528         (generate_bytecode_insns):  Use find_constant_index.
11529         (generate_classfile):  Use find_constant_index for ConstantValue.
11530
11531 1998-12-11  Tom Tromey  <tromey@cygnus.com>
11532
11533         * expr.c (invoke_build_dtable): Renamed dtable -> vtable.
11534         * decl.c (init_decl_processing): Renamed dtable -> vtable.
11535         * class.c (make_class_data): Renamed dtable -> vtable, and
11536         dtable_method_count -> vtable_method_count.
11537
11538 1998-12-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11539
11540         * decl.c (long_zero_node, float_zero_node, double_zero_node): New
11541         global variables, initialized.
11542         * java-tree.h (long_zero_node, float_zero_node, double_zero_node):
11543         Declared new global variables.
11544         * lex.c (java_lex): Return long_zero_node, float_zero_node,
11545         double_zero_node, integer_zero_node upon direct matching.
11546         * parse.y (purify_type_name): Added function prototype.
11547         (duplicate_declaration_error_p): Consider new_type as potentially
11548         being a incomplete type. Use purify_type_name on type string.
11549         (method_header): saved_type: unused variable removed. Don't figure
11550         return type if method name is invalid.
11551         (java_complete_tree): Set CAN_COMPLETE_NORMALLY after `node' was
11552         processed by patch_unaryop.
11553         (patch_unaryop): Fixed typo in comment. Re-convert pre/post
11554         increment/decrement node into its original type after binary
11555         numeric promotion on its operands.
11556
11557 1998-12-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11558
11559         * parse.y (array_initializer:): Array init operand is NULL_TREE
11560         instead of a TREE_LIST of NULL_TREEs when parsing `{}'. `{,}' is
11561         now an error. Fixed indentation problems.
11562         (patch_string): Handle error_mark_node as an argument.
11563         (patch_new_array_init): Fixed indentation problems.
11564         (array_constructor_check_entry): Removed check on null wfl_value.
11565         Return an error if wfl_value's walk returns an error.
11566
11567 1998-12-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11568
11569         * java-tree.def (NEW_ARRAY_INIT): New Java tree code.
11570         * lex.c (java_lex): Remember column position before advancing one
11571         token. Retain location information on OCB_TK.
11572         * lex.h (typedef struct java_lc): Added new field.
11573         * parse.h (GET_SKIP_TYPE): New macro.
11574         (QUAL_DECL_TYPE): Redefined using GET_SKIP_TYPE.
11575         * parse.y (build_new_array_init, patch_new_array_init,
11576         patch_array_constructor, maybe_build_array_element_wfl,
11577         array_constructor_check_entry): New function prototypes.
11578         (switch_block:): Tagged <node>.
11579         (OCB_TK): Tagged <operator>.
11580         (array_initializer:): Installed actions.
11581         (variable_initializer): Build location information on element if
11582         necessary.
11583         (switch_statement:): Fixed indentation typo.
11584         (switch_block:): Redefined default action.
11585         (java_complete_tree): Handle NEW_ARRAY_INIT in MODIFY_EXPR:.
11586         (patch_assignment): Removed duplicate code.
11587         (maybe_build_array_element_wfl, build_new_array_init,
11588         patch_new_array_init, patch_array_constructor,
11589         array_constructor_check_entry): New functions.
11590
11591 1998-12-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11592
11593         * parse.y (array_initializer): Tagged <node>.
11594         (variable_initializer:): Use default rule.
11595         (array_initializer:): Defined actions.
11596         (variable_initializers:): Likewise.
11597         (resolve_qualified_expression_name): Use DECL_CONTEXT to build
11598         non-static field accesses.
11599         (patch_invoke): Fixed indentation typo.
11600         (java_complete_tree): Likewise.
11601         (build_labeled_block): Changed leading comment. Generate an error
11602         in case of duplicate loop labels.
11603         (patch_conditional_expr): Patch results of string concatenation
11604         operations.
11605
11606 1998-12-06  Per Bothner  <bothner@cygnus.com>
11607
11608         * constants.c (find_methodref_index):  When the class is an interface,
11609         generate CONSTANT_InterfaceMethodref instead of a CONSTANT_MethodRef.
11610
11611         * decl.c (finit_identifier_node):  Use "$finit$", rather than
11612         "<finit>" (which Sun's verifier rejects).
11613         * parse.y (maybe_generate_finit):  Leave out meaningless final flag.
11614         (generate_field_initialization_code):  Removed.
11615         (fix_constructors)  Don't add call to $finit$ here (wrong order).
11616         (patch_method_invocation):  Add $finit$ call here.
11617
11618         * java-tree.h (CALL_USING_SUPER):  New macro.
11619         * parse.y (patch_invoke):  Remove im local variable.
11620         (patch_method_invocation, patch_invoke):  Don't pass super parameter.
11621         (patch_invoke):  Use CALL_USING_SUPER instead of from_super parameter.
11622         (resolve_qualified_expression_name):  Maybe set CALL_USING_SUPER.
11623
11624         * jcf-write.c (get_access_flags):  Fix typo ACC_PUBLIC -> ACC_FINAL.
11625
11626         * parse.y (java_complete_tree):  Don't complain about unreachable
11627         statement if it is empty_stmt_node.
11628
11629         * jcf-write.c (find_constant_wide):  New function.
11630         (push_long_const):  Use find_constant_wide.
11631
11632         * jcf-write.c (generate_bytecode_insn):  Fix bug in switch handling.
11633         (generate_bytecode_insn):  Use correct dup variant for MODIFY_EXPR.
11634         Add "redundant" NOTE_PUSH/NOTE_POP uses so code_SP_max gets set.
11635         Emit invokeinterface when calling an interface method.
11636         Emit invokespecial also when calling super or private methods.
11637
11638         * jcf-write.c (generate_classfile):  Emit ConstantValue attributes.
11639
11640 1998-12-06  Per Bothner  <bothner@cygnus.com>
11641
11642         * jcf-dump.c (INVOKE):  If invokeinterface, print number of args.
11643
11644 1998-12-03  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11645
11646         * java-tree.h (java_layout_seen_class_methods): New function
11647         prototype.
11648         (LAYOUT_SEEN_CLASS_METHODS): Macro removed.
11649         * jcf-parse.c (parse_class_file): Call java_layout_seen_class_methods.
11650         * parse.h (PROMOTE_RECORD_IF_COMPLETE): New macro.
11651         * parse.y (method_declarator:): Defined action.
11652         (issue_warning_error_from_context): input_filename saved, set to
11653         the appropriate value and restored after java_error is called.
11654         (build_unresolved_array_type): Fixed comment.
11655         (register_fields): Use PROMOTE_RECORD_IF_COMPLETE.
11656         (method_header): Deal with return type the same way type are
11657         handled for fields and method's parameters and local variables
11658         types are handled.
11659         (check_method_redefinition): Removed extra CR.
11660         (declare_local_variables): Use PROMOTE_RECORD_IF_COMPLETE.
11661         (java_layout_seen_class_methods): New function.
11662         (java_layout_classes): Call java_layout_seen_class_methods.
11663
11664 1998-12-03  Per Bothner  <bothner@cygnus.com>
11665
11666         * parse,y (patch_synchronized_statement):  Set CAN_COMPLETE_NORMALLY.
11667
11668 1998-12-03  Per Bothner  <bothner@cygnus.com>
11669
11670         * jcf-dump.c (main):  Fix error message.
11671         * jcf-path.c (add_entry):  Style fix.
11672
11673 1998-12-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11674
11675         * class.c (layout_class_method): Call build_java_argument_signature
11676         on constructors too.
11677         * parse.y (check_method_redefinition): Use TYPE_ARGUMENT_SIGNATURE.
11678         (patch_method_invocation): Define a primary when resolving an
11679         expression name. Augmented comment on code checking illegal `this'
11680         usage. Loosened it test by accepting NEW_CLASS_EXPR.
11681
11682 1998-12-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11683
11684         * class.c (layout_class_method): Don't report error on non-static
11685         overriding static if the method is private.
11686         * java-tree.h (finish_class): Prototype added.
11687         * lex.c (java_get_line_col): Handle col argument -2 value.
11688         * parse.h: All static method declarations moved to parse.y.
11689         * parse.y: Now contains all static method declarations previously
11690         found in parse.h.
11691         (find_expr_with_wfl, missing_return_error,
11692         unreachable_stmt_error): New functions.
11693         (java_get_real_method_name): Identify constructors bearing class
11694         names in source code compiled classes only.
11695         (java_complete_expand_methods): Call missing_return_error.
11696         (invocation_mode): Private methods invoked as static methods.
11697         (java_complete_tree): Call unreachable_stmt_error.
11698
11699 1998-12-01  Tom Tromey  <tromey@cygnus.com>
11700
11701         * Makefile.in (+target): Removed.
11702         (+xmake_file): Likewise.
11703         (+tmake_file): Likewise.
11704         (.NOEXPORT): Removed duplicate.
11705
11706 1998-11-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11707
11708         * Makefile.in (jc1, jv-scan): Link with $(SUBDIR_OBSTACK).
11709
11710         * jv-scan.c: Fix xmalloc prototype.  Provide an xmalloc definition.
11711
11712         * jvgenmain.c: Remove the xmalloc prototype, we get it from
11713         libiberty.h.  Provide an xmalloc definition.
11714
11715         * jvspec.c: Remove the xmalloc prototype.
11716
11717         * parse-scan.y: Include config.h and system.h.  Don't include
11718         OS headers or gansidecl.h.  Don't prototype xmalloc/xstrdup.
11719         Provide an xstrdup definition.
11720
11721 1998-11-26  Alexandre Oliva  <oliva@dcc.unicamp.br>
11722
11723         * jcf-path.c (add_entry): Recognize ".jar" too.
11724         * lang-specs.h: Likewise.
11725
11726 1998-11-26  Per Bothner  <bothner@cygnus.com>
11727
11728         * jcf-write.c (generate_bytecode_insns):  In Call_EXPR, handle
11729         soft_monitorenter_node, soft_monitorexit_node, throw_node.
11730
11731         * jcf-write.c (generate_bytecode_insns):
11732         Handle pre/post-increment/decrement of long.
11733
11734         * jcf-write.c (generate_bytecode_insns):
11735         Handle missing exception handler (finally for synchronized).
11736
11737 1998-11-25  Per Bothner  <bothner@cygnus.com>
11738
11739         * java-tree.h (end_params_node):  Declare global.
11740         * decl.c (end_params_node):  New global.
11741         (init_decl_processing, start_java_method):  Use end_params_node for
11742         end of list of parameter types.  Follows correct gcc conventions.
11743         * expr.c (pop_argument_types, pop_arguments):  Likewise.
11744         * lang.c (put_decl_node):  Likewise.
11745         * typeck.c (various places):  Likewise.
11746         * class.y (various places):  Likewise.
11747         * parse.y (various places):  Likewise.
11748
11749         * parse.y (java_complete_tree):  Move CAN_COMPLETE_NORMALLY.
11750         (build_jump_to_finally):  Add missing CAN_COMPLETE_NORMALLY.
11751
11752         * class.c:  Add #include flags.h, remove no-longer needed declaration.
11753
11754         * class.c (layout_class_method):  Remove commented-out code, re-format.
11755         Don't add vtable entry (or index) for private methods.
11756         * expr.c (expand_invoke):  A private method is implicitly final.
11757         * class.c (make_class_data):  If inlining or optimizing,
11758         skip private methods.
11759
11760         * class.c (finish_class):  New function.  Calls existing methods,
11761         but alls emits deferred inline functions.
11762         * jcf-parse.c (parse_class_file):  Call finish_class.
11763         * parse.y (java_complete_expand_methods):  Likewise.
11764
11765         * expr.c (build_java_binop):  Explicit default, to silence -Wall.
11766
11767         * expr.c (CHECK_PC_IN_RANGE):  Add void cast to kill warnings.
11768
11769 1998-11-25  Marc Espie <espie@quatramaran.ens.fr>
11770
11771         * jcf-write.c (generate_bytecode_conditional): Fix typo.
11772
11773 1998-11-24  Per Bothner  <bothner@cygnus.com>
11774
11775         * (generate_classfile): Always write class access flag with
11776         ACC_SUPER set.
11777
11778 1998-11-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11779
11780         * class.c (maybe_layout_super_class): New function.
11781         (layout_class): Reorganized. Loop on class methods dispatched into
11782         a new function. Call maybe_layout_super_class.
11783         (layout_class_methods, layout_class_method): New functions.
11784         * expr.c (expand_java_NEW): Call layout_class_methods on loaded
11785         class.
11786         (expand_invoke): Likewise.
11787         * java-tree.h (all_class_list): New global variable declared.
11788         (layout_class_methods, layout_class_method): New function
11789         prototypes.
11790         (LAYOUT_SEEN_CLASS_METHODS): New macro.
11791         * jcf-parse.c (all_class_list): New global variable.
11792         (load_class): Extended what class_or_name can be. Use parser
11793         context mechanism to save globals before calling jcf_parse.
11794         (jcf_parse_source): Don't parse twice if HAS_BEEN_ALREADY_PARSED_P
11795         is set on the file name.
11796         (jcf_parse): Layout class methods when Object is loaded, otherwise
11797         record class in all_class_list for delayed method layout.
11798         (parse_class_file): Use LAYOUT_SEEN_CLASS_METHODS.
11799         * lang.c (put_decl_node): Decode <init> into the decl context
11800         class name.
11801         * lex.c (java_allocate_new_line): Use xmalloc.
11802         * parse.h (INCOMPLETE_TYPE_P): Redefined to work with incomplete
11803         pointers, not TREE_LIST elements.
11804         (struct parser_ctxt): Fixed comment indentations, added comments
11805         and reordered some fields.
11806         (java_check_methods): Function prototype removed.
11807         * parse.y (java_push_parser_context): Use xmalloc.
11808         (java_parser_context_restore_global): Pop extra pushed ctxp only
11809         when there's nothing next.
11810         (maybe_create_class_interface_decl): Fixed comment, add new
11811         created class decl to all_class_list.
11812         (method_header): Use GET_REAL_TYPE on argument's types.
11813         (method_declarator): Use GET_REAL_TYPE, change type to the real
11814         type in TREE_LIST dependency node. Build argument list with the
11815         real type.
11816         (create_jdep_list): Use xmalloc. Removed allocation error message.
11817         (obtain_incomplete_type): Fixed leading comment. Broadened
11818         incoming argument meaning.
11819         (register_incomplete_type): Use xmalloc. Removed allocation error
11820         message.
11821         (safe_layout_class): Fixed leading comment.
11822         (jdep_resolve_class): Reversed if statement condition and switch
11823         if and else bodies.
11824         (resolve_and_layout): Fixed leading comment. Broadened incoming
11825         argument meaning.
11826         (complete_class_report_errors): New local variable name, for
11827         clarity. purify_type_name used for all error cases.
11828         (java_get_real_method_name): Stricter check on constructors.
11829         (java_check_regular_methods): Reverse methods list only if not
11830         already laid out. Layout artificial constructor.
11831         (java_check_methods): Deleted.
11832         (source_start_java_method): Obtain incomplete type for patchable
11833         method arguments.
11834         (java_layout_classes): Fixed leading comment. Use
11835         LAYOUT_SEEN_CLASS_METHODS, use a loop to check methods. Added else
11836         statement to layout operation, reuse LAYOUT_SEEN_CLASS_METHODS
11837         before returning. Fixed comments.
11838         (java_expand_classes): Check for errors up front.
11839         (patch_method_invocation): Class to search is resolved and laid
11840         out.
11841
11842 1998-11-24  Per Bothner  <bothner@cygnus.com>
11843
11844         * expr.c (java_lang_expand_expr):  Add missing emit_queue.
11845
11846         * javaop.h (int8):  Removed - not used.
11847         (jbyte):  Redefine portably with correct signedness.
11848
11849         * jcf-write.c (generate_bytecode_insns):  Don't free sw_state.cases.
11850
11851         * jcf-write.c (generate_bytecode_insns):  Fix typo
11852         OPCODE_getstatic to OPCODE_getfield.
11853
11854         * java-tree.def (CASE_EXPR, DEFAULT_EXPR):  Kind is 'x', not '1'.
11855         * parse.y (java_complete_tree):  For CASE_EXPR and DEFAULT_EXPR,
11856         set TREE_SIDE_EFFECTS (otherwise expand_expr may skip them).
11857
11858 1998-11-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11859
11860         * jcf-parse.c (jcf_parse_source): Function returned type is
11861         void. Added prototype.
11862         (jcf_parse): Function returned type is void.
11863         (yyparse): Remove call to fclose on the last parsed file.
11864
11865         * java-tree.h (jcf_parse): Changed jcf_parse prototype.
11866
11867 1998-11-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11868
11869         * class.c (unmangle_classname): Set QUALIFIED_P when appropriate.
11870         (layout_class): Cope with methods featuring WFL in decl names.
11871         * decl.c (unqualified_object_id_node): New global variable,
11872         initialized.
11873         (build_decl_no_layout): Removed.
11874         * expr.c (build_primtype_type_ref): Handle Double.
11875         (java_lang_expand_expr): Fixed indentations.
11876         * java-tree.h (CLASS_METHOD_CHECKED_P): Flag deleted.
11877         (flag_wall, flag_redundant, flag_not_overriding,
11878         flag_static_local_jdk1_1, unqualified_object_id_node): Global
11879         variable declarations.
11880         (build_decl_no_layout): Removed prototype.
11881         (java_get_real_method_name): Added prototype.
11882         (IS_UNCHECKED_EXPRESSION_P): Renamed IS_UNCHECKED_EXCEPTION_P.
11883         (java_parse_abort_on_error): Macro now just returns.
11884         * jcf-parse.c (jcf_parse_source): Check fclose returned
11885         value. Call emit_register_classes if java_report_errors returns
11886         zero.
11887         * lanc.c (flag_wall, flag_redundant, flag_not_overriding,
11888         flag_static_local_jdk1_1): New integer flags.
11889         (lang_decode_option): New flags set here.
11890         * parse.h (GET_REAL_TYPE, GET_METHOD_NAME): New macros.
11891         (OBSOLETE_MODIFIER_WARNING): Issue error message conditionally to
11892         the flag_redundant variable.
11893         (SET_TYPE_FOR_RESOLUTION): Consider Object being java.lang.Object
11894         when parsing java.lang.Object class.
11895         (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT): Added terminal
11896         NULL_TREE to build.
11897         (resolve_qualified_expression_name): Fixed indentation.
11898         (patch_array_ref): Changed prototype.
11899         (not_initialized_as_it_should_p): Prototype removed.
11900         (java_report_errors): Added function prototype.
11901         * parse.y (formal_parameter:): Changed error message for not yet
11902         supported final parameters.
11903         (class_type_list:): Set both PURPOSE and VALUE of created
11904         TREE_LIST to be class_type.
11905         (primary_no_new_array:): Handle class literals on primitive types.
11906         (parse_warning_context): Reinstalled correct force_error and
11907         do_warning flags setups.
11908         (java_report_errors): Changed prototype. Return java_error_count
11909         value.
11910         (variable_redefinition_error): Consider treating variable type as
11911         a fake pointer.
11912         (create_interface): Warn about redundant abstract modifier if
11913         flag_redundant is set. Changed error message.
11914         (lookup_field_wrapper): Save/restore globals before/after looking
11915         up field.
11916         (duplicate_declaration_error_p): Consider treating declaration
11917         type as a fake pointer.
11918         (register_fields): Extract real type from dependency node. Check
11919         for duplicate field declaration after type adjustment. Use
11920         DECL_INITIAL to store static final initialized values.
11921         (method_header): Extract real function type from dependency node.
11922         (check_abstract_method_header): Use GET_METHOD_NAME.
11923         (obtain_incomplete_type): Layout fake pointer type.
11924         (safe_layout_class): Don't try to check for methods before layout.
11925         (java_complete_class): Don't check for correct throws clause
11926         elements inheritance here.
11927         (resolve_and_layout): Broadened name parameter meaning.
11928         (reset_method_name): Use GET_METHOD_NAME.
11929         (java_get_real_method_name): New function.
11930         (java_check_regular_methods): Don't check methods in
11931         java.lang.Object.  Verify lineage of throws clause elements. Use
11932         flag_no_overriding in warning report.
11933         (check_throws_clauses): Don't check if class was from
11934         bytecode. Use IS_UNCHECKED_EXCEPTION_P macro.
11935         (java_check_methods): Don't set CLASS_METHOD_CHECKED_P flag.
11936         (declare_local_variables): Use flag_static_local_jdk1_1 to report
11937         warning on unsupported final local variables. Use build_decl
11938         instead of build_decl_no_layout. Get real local variable type from
11939         dependency node.
11940         (source_start_java_method): Get real parameter type from
11941         dependency node. Call build_decl instead of build_decl_no_layout.
11942         (java_layout_classes): Reverse tree and layout type and class as
11943         required. Mark class as loaded when done.
11944         (resolve_field_access): Fixed indentation. Restricted condition
11945         leading to static field access code generation. Set field_type
11946         decl's TREE_TYPE if QUAL_DECL_TYPE not available.
11947         (resolve_qualified_expression_name): Initialize type_found to
11948         null. Handle static field resolved during qualification. Fixed
11949         layout on non primitive field decl types.
11950         (not_accessible_p): Fixed typo in comment.
11951         (patch_method_invocation): Resolve and layout class to search from
11952         type.
11953         (lookup_method_invoke): Keep integer constant 0 as is. Resolve and
11954         layout non primitive type, if necessary. Make method node only to
11955         report errors.
11956         (find_applicable_accessible_methods_list): Consider WFL'ed method
11957         decl names. Fixed indentation.
11958         (argument_types_convertible): Resolve and layout target type if
11959         necessary.
11960         (java_complete_tree): Fixed indentation problems. Rewrote
11961         CALL_EXPR thrown exceptions check. Re-installed further processing
11962         of the assignment in certain cases.
11963         (patch_assignment): Call maybe_build_primttype_type_ref to perform
11964         inlining on class literals.
11965         (valid_builtin_assignconv_identity_widening_p): Cope with constant
11966         0 literal.
11967         (valid_method_invocation_conversion_p): Likewise.
11968         (patch_string): Temporary disable forbidden use of `this' in
11969         explicit constructor invocations when doing string concatenation
11970         within their scope.
11971         (patch_unaryop): Added comment. Reinstalled code to disable
11972         further check on assignment operation with cast expression RHS.
11973         (patch_switch_statement): Fixed indentation.
11974         (build_try_statement): Call build_decl instead of
11975         build_decl_no_layout.
11976         (patch_synchronized_statement): Likewise.
11977         (patch_throw_statement): Use IS_UNCHECKED_EXCEPTION_P instead of
11978         IS_UNCHECKED_EXPRESSION_P.
11979         (check_thrown_exceptions_do): Changed leading comment. Resolve and
11980         layout argument exception type.
11981         (purge_unchecked_exceptions): Use IS_UNCHECKED_EXCEPTION_P instead
11982         of IS_UNCHECKED_EXPRESSION_P.
11983
11984 1998-11-18  Anthony Green  <green@cygnus.com>
11985
11986         * jcf-parse.c (yyparse): Open class file in binary mode.
11987
11988 1998-11-15  Per Bothner  <bothner@cygnus.com>
11989
11990         * jvgenmain.c:  Need to #include "gansidecl.h" (to get PROTO).
11991
11992         * jcf-write.c (perform_relocations):  Move check out one loop.
11993
11994 1998-11-15  Anthony Green  <green@hoser.cygnus.com>
11995
11996         * Make-lang.in: Fix reference to srcdir.
11997         * jv-scan.c: Add missing xmalloc prototype.
11998         * jvgenmain.c: Ditto.
11999
12000 1998-11-15  Per Bothner  <bothner@cygnus.com>
12001
12002         * decl.c (error_mark_node), java-tree.h:  New global.
12003         * parse.y:  Use empty_stmt_node instead of size_zero_node.
12004         (build_if_else_statement):  If missing else, use empty_stmt_node.
12005
12006         * parse.y (not_initialized_as_it_should_p):  Removed, with its callers.
12007         (java_complete_expand_method):  Complain if return is missing.
12008         (java_check_regular_methods):  Comment out incorrect error check.
12009         (not_accessible_p):  Fix incorrect handling of protected methods.
12010         (patch_method_invocation):  Pass correct context to not_accessible_p.
12011         (find_applicable_accessible_methods_list):  Likewise.
12012         (qualify_ambiguous_name):  If ARRAY_REF, it's an expression name.
12013         (java_complete_tree):  For CASE_EXPR and DEFAULT_EXPR, set
12014         TREE_TYPE (to void_type_node);  otherwise expand_expr crashes.
12015         (patch_if_else_statement):  Fix setting of CAN_COMPLETE_NORMALLY.
12016
12017         * jcf-write.c (CHECK_OP, CHECK_PUT):  Add some error checking.
12018         (push_int_const):  Remove reundant NOTE_PUSH.
12019         (generate_bytecode_insns - case STRING_CST):  Do NOTE_PUSH.
12020         (- case SWITCH_EXPR):  Fix code generation bug.
12021         (- case PREDECREMENT_EXPR etc):  Remove redundant NOTE_PUSH.
12022         (generate_classfile):  More robust for abstract methods.
12023
12024 1998-11-15  Anthony Green  <green@cygnus.com>
12025
12026         * Makefile.in: jv-scan and jvgenmain all require libiberty.
12027         * Make-lang.in: Ditto.
12028
12029         * jv-scan.c: Remove xmalloc and xstrdup definitions.
12030         * jvgenmain: Ditto.
12031
12032 1998-11-15  Per Bothner  <bothner@cygnus.com>
12033
12034         * jcf-parse.c (HANDLE_EXCEPTIONS_ATTRIBUTE):  New macro.
12035
12036         * jcf-io.c (find_class):  Simpler/cleaner structure fixes a bug.
12037
12038 1998-11-14  Per Bothner  <bothner@cygnus.com>
12039
12040         Allow uses of interface types to verify.  This is not really
12041         type-safe, but it matches what Sun does, and is OK as long as
12042         there are appropriate run-time checks.
12043         * verify.c (merge_types):  If merging two interface types,
12044         just set the result to java.lang.Object.
12045         * expr.c (pop_type):  Any interface is matches by java.lang.Object.
12046
12047 1998-11-13  Tom Tromey  <tromey@cygnus.com>
12048
12049         * gjavah.c (main): Handle --output-class-directory argument.
12050         * jvspec.c (lang_specific_driver): Translate `-d' into
12051         -foutput-class-dir.
12052         * jcf.h (jcf_write_base_directory): Declare.
12053         * lang.c (lang_decode_option): Recognize -foutput-class-dir.
12054         * lang-options.h: Mention -foutput-class-dir.
12055         * jcf-write.c (jcf_write_base_directory): New global.
12056         (make_class_file_name): Put generated .class file into `-d'
12057         directory, or into source directory if -d not given.  Function now
12058         static.
12059         (write_classfile): Free class file name.  Handle case where class
12060         file name is NULL.
12061         (DIR_SEPARATOR): New macro.
12062         Include <sys/stat.h>
12063
12064         * Makefile.in (prefix): New macro.
12065
12066 1998-11-12  Per Bothner  <bothner@cygnus.com>
12067
12068         * parse.y (patch_invoke):  Do less if flag_emit_class_files.
12069         * expr.c (build_known_method_ref):  Don't check flag_emit_class_files
12070         here (done in patch_invoke instead).
12071         (case_identity):  Moved here from parse.y.
12072
12073         * java-tree.h (CAN_COMPLETE_NORMALLY):  New macro.
12074         * parse.y (java_complete_tree etc):  Maybe set CAN_COMPLETE_NORMALLY.
12075         * parse.y (java_complete_tree):  Re-order COMPOUND_EXPR in BLOCK
12076         so they can be efficiently scanned without recursion.
12077         Error it ! CAN_COMPLETE_NORMALLY first part of COMPOUND_EXPR.
12078         * expr.c (java_lang_expand_expr):  Expand statements of COMPOUND_EXPR
12079         in BLOCK iteratively, rather than recursively.
12080
12081         * parse.y (do_unary_numeric_promotion):  New function.
12082         (patch_unaryop, patch_binop, patch_array_ref):  Use it.
12083
12084         * parse.y (patch_newarray):  Various fixes.
12085
12086         Re-do handling of switch statements (for proper block scoping).
12087         * parse.y:  Add just a single block for the enture switch block,
12088         but don't create any "case blocks".
12089         (group_of_labels):  Rmeoved unneeded non-terminal.
12090         CASE_EXPR and DEFAULT_EXPR are added to current block.
12091         * expr.c (java_lang_expand_expr):  Inline SWITCH_EXPR here.
12092         Now also need to handle CASE_EXPR and DEFAULT_EXPR.
12093         * java-tree.h (SWITCH_HAS_DEFAULT):  New macro.
12094         * parse.y (wfl_operator, print_int_node): Make non-static.
12095         (java_complete_tree):  CASE_EXPR and DEFAULT_EXPR are now processed
12096         as part of recursive scan of block.
12097         (java_expand_switch ):  Removed - inlined into java_lang_expand_expr.
12098         (patch_switch_statement):  Most tests move dinto java_complete_tree.
12099
12100         * parse.y:  Make various production be non-typed (void).
12101         * parse.y (parse_error):  Merged into issue_warning_error_from_context.
12102         * parse.y (add_stmt_to_compound):  Don't create/change extra node.
12103         (patch_method_invocation_stmt):  Renamed to patch_method_invocation.
12104
12105         * jcf-write.c (struct jcf_handler):  New type.
12106         (struct jcf_switch_state):  New type.
12107         (SWITCH_ALIGN_RELOC, BLOCK_START_RELOC):  New relocation kinds.
12108         (alloc_handler, emit_unop, emit_reloc):  New functions.
12109         (adjust_typed_op):  Add extra parameter ("max type" offset).
12110         (emit_switch_reloc, emit_case-reloc):  New function.
12111         (generate_bytecode_conditional):  Handle REAL_TYPE comparisons.
12112         (generate_bytecode_insns):  Support REAL_CST, switch statements,
12113         exception handling, method calls, object/array creation, and more.
12114
12115         * class.c:  Remove some unused variables.
12116         * constants.c (find_string_constant):  New function.
12117         (count_constant_pool_bytes):  Fix to correctly handle wide constants.
12118         * decl.c (complete_start_java_method):  Don't _Jv_InitClass
12119         if flag_emit_class_files.
12120
12121 1998-11-12  Tom Tromey  <tromey@cygnus.com>
12122
12123         * jcf-io.c (find_class): Added explanatory comment.
12124
12125         * jcf-path.c (add_entry): Look for `.zip' at end of filename.  Add
12126         trailing slash to `.zip' entries.
12127
12128         * jvspec.c (lang_specific_driver): Correctly handle case where
12129         GC_NAME not defined.
12130
12131 1998-11-11  Tom Tromey  <tromey@cygnus.com>
12132
12133         * jvspec.c (GC_NAME): New define.
12134         (lang_specific_driver): Use GC_NAME.  Add GC_NAME to command line
12135         if required.
12136         * Make-lang.in (jvspec.o): Define WITH_GC_<name>.
12137
12138 1998-11-11  Per Bothner  <bothner@cygnus.com>
12139
12140         * jcf-dump.c (TABLE_SWITCH):  Fix typos.
12141
12142 1998-11-11  Tom Tromey  <tromey@cygnus.com>
12143
12144         * jcf-dump.c (main): Correctly recognize `--'-style long options.
12145
12146 1998-11-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12147
12148         * class.c (is_compiled_class): Call safe_layout_class for class
12149         compiled from source.
12150         * conver.h (convert_to_integer, convert_to_real,
12151         convert_to_pointer): Added prototypes.
12152         * decl.c (init_decl_processing): Non longer push the decls of
12153         `methodtable', `constants', `Class', `Field', `dispatchTable'
12154         `jexception' and `Method'.
12155         * expr.c (build_invokeinterface): New function.
12156         (expand_invoke): static variable CLASS_IDENT now in
12157         build_invokeinterface. Use build_invokeinterface.
12158         (expand_java_field_op): Moved code to inline
12159         java.lang.PRIMTYPE.TYPE into a function.
12160         (build_primtype_type_ref): New function.
12161         * java-tree.def (INSTANCEOF_EXPR): New tree code.
12162         * java-tree.h (CLASS_METHOD_CHECKED_P, METHOD_DEPRECATED,
12163         FIELD_DEPRECATED, CLASS_DEPRECATED): New flag macros.
12164         (DECL_CONSTRUCTOR_P): Fixed typo in comment.
12165         (DECL_LOCAL_STATIC_VALUE): New macro.
12166         (build_invokeinterface, build_primtype_type_ref): New function
12167         prototypes.
12168         (java_parse_abort_on_error): Macro rewritten.
12169         * jcf-parse.c (current_method): Add comment to declaration.
12170         (parse_zip_file_entries, process_zip_dir, void parse_source_file):
12171         Function prototypes fixed.
12172         (jcf_parse_source): push/pop parser context. save/restore global.
12173         (parse_source_file): Fixed leading comment. Now take a
12174         IDENTIFIER_NODE as an argument. Doesn't check methods, layout
12175         classes and pop the parser context anymore.
12176         (yyparse): Push parser context, save globals, parse the source
12177         file, restore globals and pop the parser context when processing a
12178         source file.
12179         * jcf.h (VERBOSE_SKELETON): Replaces SOURCE_FRONTEND_DEBUG define.
12180         * lex.c (java_parse_doc_section): New function.
12181         (java_lex): Call java_parse_doc_section when appropriate. Build an
12182         operator around INSTANCEOF_TK.
12183         * lex.h (java_lineterminator, java_sprint_unicode,
12184         java_unicode_2_utf8, java_lex_error, java_store_unicode):
12185         Prototypes rewritten.
12186         (java_parse_escape_sequence, java_letter_or_digit_p,
12187         java_parse_doc_section, java_parse_end_comment, java_get_unicode,
12188         java_read_unicode, java_store_unicode, java_read_char,
12189         java_allocate_new_line, java_unget_unicode, java_sneak_unicode):
12190         Added function prototypes.
12191         * parse.h (VERBOSE_SKELETON): Replaces SOURCE_FRONTEND_DEBUG
12192         define.
12193         (JNULLP_TYPE_P, CHECK_METHODS, CHECK_DEPRECATED, REGISTER_IMPORT):
12194         New macros
12195         (struct parser_ctxt): New fields: deprecated,
12196         current_parsed_class_un, gclass_list.
12197         (fix_method_argument_names, issue_warning_error_from_context,
12198         resolve_package, lookup_package_type): New function prototypes.
12199         (resolve_expression_name): Fixed function prototype.
12200         (find_applicable_accessible_methods_list): Fixed indentation, added
12201         extra argument in prototype.
12202         (check_final_assignment, build_null_of_type, check_deprecation,
12203         check_method_redefinition, reset_method_name,
12204         java_check_regular_methods, java_check_abstract_methods,
12205         maybe_build_primttype_type_ref): New function prototype.
12206         * parse.y (conver.h): Include.
12207         (INSTANCEOF_TK): Tagged <operator>.
12208         (single_type_import_declaration): Use REGISTER_IMPORT macro.
12209         (relational_expression:): Build binop for instanceof.
12210         (java_push_parser_context): Remember ctxp->gclass_list across
12211         contexts.
12212         (java_pop_parser_context): Simply return if no context
12213         exists. Remember gclass_list across contexts.
12214         (issue_warning_error_from_context): New function.
12215         (parse_error_context): Don't setup ctxp->elc here. Call
12216         issue_warning_error_from_context instead.
12217         (parse_warning_context): Likewise.
12218         (maybe_create_class_interface_decl): Removed DECL_ARTIFICIAL
12219         setup. Link new class/interface to ctxp->gclass_list.
12220         (add_superinterfaces): Register interface as incomplete if not
12221         loaded.
12222         (create_class): Remember class unqualified name in
12223         ctxp->current_parsed_class_un. Check class deprecation.
12224         (register_fields): Check field deprecation. Remember static final
12225         field value in DECL_LOCAL_STATIC_VALUE. Changed comment in part
12226         processing INIT.
12227         (method_header): New local variable ORIG_ARG. Use unqualified
12228         current class name for check on constructor errors. Promote return
12229         type if of record type. Argument list fix moved in
12230         fix_method_argument_names, called here. Check method deprecation.
12231         (fix_method_argument_names): New function.
12232         (method_declarator): Promote record typed arguments.
12233         (safe_layout_class): Check class methods before layout.
12234         (java_complete_class): Compute field layout when patched.
12235         (do_resolve_class): Try to load class after having it renamed
12236         after the package name.
12237         (get_printable_method_name): Use DECL_CONTEXT.
12238         (reset_method_name): New function.
12239         (check_method_redefinition): Use reset_method_name.
12240         (java_check_regular_methods): New local variable
12241         SAVED_FOUND_WFL. Temporarily reinstall overriding/hiding method
12242         names for error report. Check for compile-time error when method
12243         found has default (package) access.
12244         (java_check_abstract_methods): Now takes an interface DECL node as
12245         an argument. Also reinstall real name on unchecked
12246         overriding/hiding methods for error report.
12247         (java_check_methods): Fixed leading comment. Get classes to verify
12248         from ctxp->gclass_list. Use CHECK_METHODS macro and set
12249         CLASS_METHOD_CHECKED_P on class verification.
12250         (lookup_java_method2): Get real method name if necessary.
12251         (find_in_imports): Don't check package class access here.
12252         (resolve_package, lookup_package_type): New functions.
12253         (java_layout_classes): Fixed leading comment. Take classes to be
12254         laid out from ctxp->gclass_list.
12255         (java_complete_expand_methods): Don't expand native and abstract
12256         methods.
12257         (java_expand_classes): New function.
12258         (resolve_expression_name): Use additional argument ORIG.  Retrieve
12259         values of static final field of primitive types.
12260         (resolve_field_access): Handles static final field of promotive
12261         type.
12262         (resolve_qualified_expression_name): Handle STRING_CST as
12263         primaries and package name resolution. Check deprecation on found
12264         decls. Set where_found and type_found on non static field resolved
12265         during qualification. Layout non primitive field decl types.
12266         (check_deprecation): New function.
12267         (maybe_access_field): Simplified.
12268         (patch_method_invocation_stmt): Local variable CLASS_TYPE
12269         removed. Reverse method's argument when primary is a type. Don't
12270         use CLASS_TYPE to report problems, use IDENTIFIER_WFL
12271         instead. Include abstract class in the list of class searchable
12272         for constructors. Use DECL_CONTEXT of found method for access
12273         checks. Check method deprecation.
12274         (patch_invoke): Pay extra care to NEW_CLASS_EXPR type call when
12275         converting arguments. Handle INVOKE_INTERFACE.
12276         (lookup_method_invoke): Search constructor using existing
12277         infrastructure (don't rely on lookup_java_constructor anymore).
12278         (find_applicable_accessible_methods_list): Extra argument flag
12279         LC. Now include constructor in the search.
12280         (qualify_ambiguous_name): Conditional expression are primaries.
12281         (not_initialized_as_it_should_p): static final are always
12282         initialized.
12283         (java_complete_tree): Pass extra NULL argument to
12284         resolve_expression_name. Stricter test to carry on patching
12285         assignments. New case for INSTANCEOF_EXPR.
12286         (complete_function_arguments): Inline PRIMTYPE.TYPE read access.
12287         (check_final_assignment, maybe_build_primttype_type_ref): New
12288         functions.
12289         (patch_assignment): Detect resolved static finals and carry normal
12290         assignment error check on them. Inline PRIMTYPE.TYPE read access.
12291         (try_builtin_assignconv): Access constant 0 on all primitive
12292         types.
12293         (valid_builtin_assignconv_identity_widening_p): Accept identical
12294         types. Accept all promoted type on int type.
12295         (valid_ref_assignconv_cast_p): Accept a null pointer to be
12296         assigned to a reference.
12297         (valid_method_invocation_conversion_p): Accept to check null
12298         pointers.
12299         (build_binop): Merge declaration and initialization of local
12300         variable BINOP.
12301         (patch_binop): New case for INSTANCEOF_EXPR. NE_EXPR to accept all
12302         numeric types. Improved validity test for qualify operators on
12303         references.
12304         (patch_unaryop): Broadened rejection test for PREDECREMENT_EXPR
12305         and PREINCREMENT_EXPR. Also detect resolved static finals of a
12306         primitive type and issue the appropriate error message.
12307         (resolve_type_during_patch): Mark class loaded when resolved.
12308         (patch_cast): Allow null to be cased to reference types.
12309         (build_null_of_type): New function.
12310         (patch_array_ref): Handle array on references correctly.
12311         (patch_return): Removed unused local variable MODIFY. Force
12312         boolean to be returned as integers. Allows null to be returned by
12313         a function returning a reference.
12314         * typeck.c (convert_to_integer, convert_to_real,
12315         convert_to_pointer): Prototypes moved to convert.h
12316         (lookup_argument_method): Use method real name, if necessary.
12317
12318 1998-10-30  Tom Tromey  <tromey@cygnus.com>
12319
12320         * class.c (build_class_ref): Changed name of primitive classes to
12321         start with `_Jv_'.
12322
12323         * class.c (make_class_data): Renamed fields: nmethods to
12324         method_count, method_count to dtable_method_count.  Always set
12325         `state' field to 0.
12326         * decl.c (init_decl_processing): Likewise.
12327
12328 1998-10-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12329
12330         * class.c (layout_class): Don't mangle <finit>, produce
12331         __finit<class> instead. Don't verify artificial methods.
12332         * decl.c (finit_identifier_node): New declared global.
12333         (init_decl_processing): finit_identifier_node initialized.
12334         * java-tree.def (CONDITIONAL_EXPR): New Java tree code.
12335         * java-tree.h (finit_identifier_node): Declared as extern.
12336         (struct lang_decl): New field called_constructor.
12337         (DECL_CONSTRUCTOR_CALLS): Access macro to called_constructor.
12338         (CLASS_HAS_FINIT_P): New macro.
12339         (CALL_CONSTRUCTOR_P): Leading comment changed. Macro now checks
12340         explicit constructor invocation.
12341         (CALL_EXPLICIT_CONSTRUCTOR_P, CALL_THIS_CONSTRUCTOR_P,
12342         CALL_SUPER_CONSTRUCTOR_P): New macros.
12343         (write_classfile): Added prototype.
12344         * jcf-parse.c (jcf_parse_source): Parse and remember for
12345         generation if the file was seen on the command line.
12346         (parse_source_file): Don't write the class file here.
12347         (yyparse): Loop on files rewritten. Set current_jcf.
12348         (parse_zip_file_entries): Parse class file only if it was found.
12349         * lang.c (init_parse): Don't open command line provided filename
12350         here.
12351         (lang_parse): Don't set main_jcf anymore.
12352         * parse.h (ABSTRAC_CHECK): Capitalized arguments.
12353         (JCONSTRUCTOR_CHECK): New macro.
12354         (JBSC_TYPE_P): New macro.
12355         (IN_TRY_BLOCK_P, EXCEPTIONS_P): Fixed leading comment.
12356         (COMPLETE_CHECK_OP_2): New macro.
12357         (struct parse_ctxt): New field explicit_constructor_p.
12358         (check_class_interface_creation): Fixed prototype indentation.
12359         (patch_method_invocation_stmt): Prototype reflects added argument.
12360         (patch_invoke): Likewise.
12361         (complete_method_declaration, build_super_invocation,
12362         verify_constructor_circularity,
12363         build_this_super_qualified_invocation, get_printable_method_name,
12364         patch_conditional_expr, maybe_generate_finit, fix_constructors,
12365         verify_constructor_super, create_artificial_method,
12366         start_artificial_method_body, end_artificial_method_body,
12367         generate_field_initialization_code): New function prototypes.
12368         * parse.y: Fixed leading comment
12369         (constructor_header:, constructor_body:, block_end:): Rules tagged
12370         <node>.
12371         (type_declaration:): Call maybe_generate_finit.
12372         (method_declaration:): Action for method_body: placed in new
12373         function complete_method_declaration, called here.
12374         (constructor_declaration:): Defined actions. Removed leading
12375         FIXME.
12376         (constructor_header:): New rule with action.
12377         (constructor_body:): Rule rewritten using block_begin: and
12378         block_end:. Defined actions.
12379         (constructor_declarator:, explicit_constructor_invocation:):
12380         Defined actions.
12381         (block:): Use new rules block_begin: block_end:.
12382         (block_begin:, block_end:): New rules and actions.
12383         (block_statements:): Fixed error message for explicit
12384         constructors.
12385         (method_invocation:): Call build_this_super_qualified_invocation
12386         if primary is `this' or `super' was seen.
12387         (conditional_expression:): Action defined.
12388         (extra_ctxp_pushed_p): New static global flag.
12389         (java_parser_context_save_global): Create parser context if
12390         necessary. Use extra_ctxp_pushed_p to remember it.
12391         (java_parser_context_restore_global): Pop extra parser context if
12392         one exists.
12393         (build_array_from_name): Array on primitive types are marked
12394         loaded.
12395         (register_fields): Restore new name in field initializer
12396         expression if type was altered. Non static fields initialized upon
12397         declaration marked initialized.
12398         (maybe_generate_finit): New function.
12399         (maybe_generate_clinit): Use create_artificial_method,
12400         start_artificial_method_body, end_artificial_method_body. Generate
12401         debug info for enclosed initialization statements.
12402         (method_header): Fixed leading comment. Check constructor
12403         flags. Detect constructor declarations and set DECL_CONSTRUCTOR_P
12404         accordingly.
12405         (complete_method_declaration, constructor_circularity_msg,
12406         verify_constructor_circularity): New functions.
12407         (get_printable_method_name): New function.
12408         (check_method_redefinition): Don't rename <finit> methods. Fix
12409         declared constructor names. Error message for
12410         constructors modified.
12411         (java_check_regular_methods): Local variable seen_constructor
12412         renamed saw_constructor. Skip verification on constructors. Create
12413         default constructor with create_artificial_method.
12414         (java_check_methods): Removed unnecessary empty line.
12415         (create_artificial_method, start_artificial_method_body,
12416         end_artificial_method_body): New functions.
12417         (java_layout_classes): Changed leading comment. Reverse fields
12418         list if necessary. Always layout java.lang.Object if being
12419         defined.
12420         (java_complete_expand_methods): Verify constructor circularity.
12421         (java_complete_expand_method): Call fix_constructor on
12422         constructors.  Local variable no_ac_found removed. Restore
12423         bindings if method body expansion failed.
12424         (fix_constructors, verify_constructor_super,
12425         generate_field_initialization_code): New function.
12426         (java_expand_classes): Fixed leading comment. Write class file
12427         here.
12428         (resolve_expression_name): Check for illegal instance variable
12429         usage within the argument scope of an explicit constructor
12430         invocation.
12431         (resolve_qualified_expression_name): Pass extra from_super flag
12432         when invoking patch_method_invocation_stmt. New case for
12433         conditional expression when used as a primary. Check for error
12434         when acquiring super.
12435         (patch_method_invocation_stmt): Added extra argument super. New
12436         local variable is_static_flag. Set class_to_search according to
12437         the nature of the constructor invocation. Don't add `this'
12438         argument when expanding NEW_CLASS_EXPR. Check for illegal method
12439         invocation within the argument scope of explicit constructor
12440         invocation. Set is_static according to is_static_flag. Provide
12441         extra `super' argument to patch_invoke invocation.
12442         (patch_invoke): New argument from_super. Loop on arguments
12443         indentation fixed. Pass from_super to invocation_mode. New switch
12444         case INVOKE_SUPER. Fixed error message in switch default case.
12445         Don't use CALL_CONSTRUCTOR_P but rather a test on the tree node
12446         value.
12447         (invocation_mode): Return INVOKE_SUPER mode when appropriate.
12448         (lookup_method_invoke): Fixed prototypes in candidates list. Error
12449         message takes constructors into account.
12450         (find_applicable_accessible_methods_list): Fixed indentation.
12451         (qualify_ambiguous_name): Take explicit constructor invocation
12452         into account. Deal with a conditional expression as a primary to
12453         a method call.
12454         (java_complete_tree): Added local wfl_op3. New CONDITIONAL_EXPR
12455         case. Added extra argument to patch_method_invocation_stmt.
12456         Register calls made to explicit constructor `this'. Don't call
12457         save_expr in ARRAY_REF case when emitting class files. Check for
12458         illegal use of this when expanding explicit constructor invocation
12459         arguments.
12460         (complete_function_arguments): Set and reset parser context
12461         explicit_constructor_p field value when appropriate.
12462         (build_super_invocation, build_this_super_qualified_invocation):
12463         New functions.
12464         (patch_assignment): Fixed typo.
12465         (patch_unaryop): Check on final fields occurs only when a decl
12466         exits.
12467         (patch_return): Take constructors into account.
12468         (patch_conditional_expr): New function.
12469         * typeck.c (build_java_signature): Removed unnecessary empty line.
12470
12471 1998-10-28  Jeffrey A Law  (law@cygnus.com)
12472
12473         * Makefile.in (jcf-dump, gcjh): Link in $(LIBS) too.
12474
12475 1998-10-28  Tom Tromey  <tromey@cygnus.com>
12476
12477         * decl.c (init_decl_processing): Renamed fields.
12478         * class.c (make_class_data): Renamed bfsize, nfields, nsfields,
12479         interface_len, msize fields.
12480
12481         * class.c (make_class_data): Removed subclass_head and
12482         subclass_next fields.
12483         * decl.c (init_decl_processing): Removed subclass_head and
12484         subclass_next fields.
12485
12486 1998-10-28  Jeffrey A Law  (law@cygnus.com)
12487
12488         * jcf-write.c (emit_load_or_store): Avoid implicit int arguments.
12489         * mangle.c (emit_unicode_mangled_name): Similarly.
12490
12491 1998-10-26  Nick Clifton  <nickc@cygnus.com>
12492
12493         * jcf-parse.c (get_constant): Place braces around code to compute
12494         'd' when REAL_ARITHMETIC is not defined.
12495
12496 1998-10-25  H.J. Lu  (hjl@gnu.org)
12497
12498         * Make-lang.in (jv-scan$(exeext)): Add stamp-objlist to
12499         dependency.
12500
12501 1998-10-23  Tom Tromey  <tromey@cygnus.com>
12502
12503         * lang-specs.h: `.zip' files are input to jc1.
12504
12505 1998-10-22  Per Bothner  <bothner@cygnus.com>
12506
12507         * jvspecs.c:  Add (but don't enable) support for combining multiple
12508         .class and .java input filenames to a single jc1 invocation.
12509         Add support for -C flag (copile to .class files).
12510         Translate -classpath and -CLASSPATH arguments.
12511         * lang-specs.h:  Don't set %2 spec.
12512
12513 1998-10-22  Tom Tromey  <tromey@cygnus.com>
12514
12515         * jcf-path.c (add_entry): Don't add trailing separator if entry is
12516         a .zip file.
12517         (add_path): Don't add trailing separator to non-empty path
12518         elements.
12519
12520         * lang.c (lang_decode_option): Check for -fclasspath and
12521         -fCLASSPATH before examining other `-f' options.
12522
12523         * java-tree.h (finalize_identifier_node): Don't declare.
12524         * class.c (make_class_data): Don't push "final" field.
12525         * decl.c (init_decl_processing): Don't push "final" field.
12526         (finalize_identifier_node): Removed.
12527         (init_decl_processing): Don't set finalize_identifier_node.
12528
12529         * config-lang.in (stagestuff): Added jcf-dump and jv-scan.
12530
12531 1998-10-11  Anthony Green  <green@cygnus.com>
12532
12533         * Make-lang.in (java): Depend on jcf-dump and jv-scan.
12534         (JV_SCAN_SOURCES): New macro.
12535         (JCF_DUMP_SOURCES): Likewise.
12536         (jcf-dump$(exeext)): New target.
12537         (jv-scan$(exeext)): New target.
12538
12539 1998-10-22  Tom Tromey  <tromey@cygnus.com>
12540
12541         * Makefile.in (LEX): Removed.
12542         (LEXFLAGS): Likewise.
12543         (SET_BISON): New macro.
12544         (BISON): Removed.
12545         ($(PARSE_C)): Use SET_BISON.  Run bison from srcdir to avoid
12546         spurious diffs in parse.c.
12547         ($(PARSE_SCAN_C)): Likewise.
12548         (PARSE_DIR): New macro.
12549         (PARSE_C): Use it.
12550         (PARSE_SCAN_C): Likewise.
12551         (PARSE_RELDIR): New macro.
12552
12553         * jcf-io.c (saw_java_source): Define here, not in jcf-parse.c.
12554
12555         * jcf-io.c (find_class): Use saw_java_source to determine when to
12556         look for `.java' file.
12557         * jcf-parse.c (saw_java_source): New global.
12558         (yyparse): Set it if `.java' file seen.
12559
12560         * Make-lang.in (JAVA_SRCS): Added jcf-path.c.
12561         (GCJH_SOURCES): Likewise.
12562         * Makefile.in (datadir): New macro.
12563         (libjava_zip): Likewise.
12564         (JAVA_OBJS): Added jcf-path.o.
12565         (../jcf-dump$(exeext)): Depend on and link with jcf-depend.o.
12566         (../gcjh$(exeext)): Likewise.
12567         (jcf-path.o): New target.
12568         * java-tree.h (fix_classpath): Removed decl.
12569         * jcf-parse.c (fix_classpath): Removed.
12570         (load_class): Don't call fix_classpath.
12571         * parse.y (read_import_dir): Don't call fix_classpath.
12572         * lex.h: Don't mention classpath.
12573         * lex.c (java_init_lex): Don't initialize classpath.
12574         * jcf-io.c (classpath): Removed global.
12575         (find_class): Use jcf_path iteration functions.  Correctly search
12576         class path for .java file.
12577         (open_in_zip): New argument `is_system'.
12578         * jcf-dump.c (main): Call jcf_path_init.  Recognize all new
12579         classpath-related options.
12580         * lang.c (lang_decode_option): Handle -fclasspath, -fCLASSPATH,
12581         and -I.
12582         (lang_init): Call jcf_path_init.
12583         * lang-options.h: Mention -I, -fclasspath, and -fCLASSPATH.
12584         * lang-specs.h: Handle -I.  Minor cleanup to -M options.
12585         Correctly put braces around second string in each entry.
12586         * gjavah.c (main): Call jcf_path_init.  Recognize all the new
12587         classpath-related options.
12588         (help): Updated for new options.
12589         * jcf.h: Declare functions from jcf-path.c.  Don't mention
12590         `classpath' global.
12591         * jcf-path.c: New file.
12592
12593         * jcf-depend.c: Include jcf.h.
12594
12595         * jcf-write.c (localvar_alloc): Returns `void'.
12596         (localvar_free): Removed unused variable.
12597
12598         * lang.c (OBJECT_SUFFIX): Define if not already defined.
12599         (init_parse): Use OBJECT_SUFFIX, not ".o".
12600
12601 1998-10-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12602
12603         * class.c (emit_register_classes): Renamed from
12604         emit_register_class.
12605         * java-tree.h (emit_register_classes): Prototype renamed from
12606         emit_register_class.
12607         * jcf-parse.c (yyparse): Call emit_register_classes once before
12608         returning.
12609         * parse.y (java_expand_classes): No longer register classes.
12610
12611 1998-10-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12612
12613         * class.c (is_compiled_class): New local variable
12614         seen_in_zip. Identify classes found in currently compiled source
12615         file(s).
12616         * decl.c (complete_start_java_method): Fixed typo.
12617         * java-tree.h (CLASS_FROM_CURRENTLY_COMPILED_SOURCE_P,
12618         HAS_BEEN_ALREADY_PARSED_P, IS_A_COMMAND_LINE_FILENAME_P): New macros.
12619         (CLASS_P): Moved around.
12620         (java_parse_abort_on_error): Macro moved from jcf-parse.c
12621         * jcf-parse.c (java_parse_abort_on_error): Macro moved to
12622         java-parse.h
12623         (jcf_parse_source): Changed leading comment. Removed unnecessary
12624         fclose and CLASS_FROM_SOURCE_P marking.
12625         (parse_source_file): New local variables remember_for_generation
12626         and filename. Mark parsed file name identifier node. Removed block
12627         executed when parse_only was null. Set remember_for_generation.
12628         Use it as an argument to java_pop_parser_context.
12629         (yyparse): New local variables several_files, list, next node and
12630         current_file_list. Split ampersand separated file names into
12631         current_file_list. Iterate through the list and parse accordingly.
12632         * parse.h (java_pop_parser_context): New function prototype.
12633         * parse.y (ctxp_for_generation): New static global variable.
12634         (java_pop_parser_context): New argument generate. Link popped ctxp
12635         to ctxp_for_generation list accordingly.
12636         (java_complete_expand_methods): Fixed indentation.
12637         (java_expand_classes): New function.
12638
12639 1998-10-17  Per Bothner  <bothner@cygnus.com>
12640
12641         * Makefile.in:  Link with libiberty.a instead of memmove.o.
12642
12643 1998-10-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12644
12645         * lex.c (setjmp.h): No longer included.
12646         * lex.h (setjmp.h): Included.
12647         * parse.h (SET_TYPE_FOR_RESOLUTION): New macro.
12648         (duplicate_declaration_error_p): Renamed from
12649         duplicate_declaration_error.
12650         (build_array_from_name): New function prototype.
12651         * parse.y (setjmp.h): No longer included.
12652         (variable_declarator_id): Define action.
12653         (build_array_from_name): New function.
12654         (duplicate_declaration_error_p): Renamed from
12655         duplicate_declaration_error.  Fixed leading comment.
12656         (register_fields): Main `for' loop reorganized. Uses
12657         SET_TYPE_FOR_RESOLUTION and build_array_from_name.
12658         (method_declarator): Uses SET_TYPE_FOR_RESOLUTION and call
12659         build_array_from_name.
12660         (resolve_class): Set CLASS_LOADED_P on newly build array dimension
12661         types.
12662         (read_import_dir): Don't try to skip `.' and `..'.
12663         (declare_local_variables): Uses SET_TYPE_FOR_RESOLUTION and
12664         build_array_from_name. Main `for' loop reorganized.
12665         (resolve_qualified_expression_name): When building access to a
12666         field, use the type where the field was found, not its own type.
12667         (maybe_access_field): Use field DECL_CONTEXT if the type where the
12668         field was found is null.
12669         (qualify_ambiguous_name): Sweep through all successive array
12670         dimensions.
12671
12672 1998-10-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12673
12674         * java-tree.h (pop_labeled_block, lang_printable_name,
12675         maybe_add_interface, set_super_info, get_access_flags_from_decl,
12676         interface_of_p, inherits_from_p, fix_classpath,
12677         complete_start_java_method, emit_handlers, init_outgoing_cpool,
12678         make_class_data, register_class, alloc_name_constant): New
12679         function prototypes.
12680         * lang.c (lang_decode_option): Set argc argument unused. Fixed
12681         indentation. Added cast to remove warning.
12682         (lang_printable_name): Set v argument unused.
12683         (lang_print_error): Added argument to lang_printable_name call.
12684         (java_dummy_print, print_lang_decl, print_lang_type,
12685         print_lang_identifier, lang_print_xnode): All argument marked
12686         unused.
12687         * lex.c (java_unget_unicode): Removed unnecessary argument.
12688         (java_allocate_new_line): Unused local variable is gone.
12689         (java_read_char): Added parenthesis in expressions to remove
12690         warnings.  Added final return statement.
12691         (java_read_unicode): Added parenthesis in expression to remove
12692         warning.
12693         (java_parse_end_comment): Fixed java_unget_unicode invocation.
12694         (java_parse_escape_sequence): Likewise.
12695         (java_lex): Unused local variables are gone. Fixed
12696         java_unget_unicode invocation.
12697         * lex.h (set_float_handler): Prototype added when JC1_LITE not
12698         defined.
12699         * parse.h (ERROR_CANT_CONVERT_TO_BOOLEAN): Fixed
12700         lang_printable_name invocation in macro.
12701         (ERROR_CANT_CONVERT_TO_NUMERIC, ERROR_CAST_NEEDED_TO_INTEGRAL):
12702         Likewise.
12703         (duplicate_declaration_error): Suppressed unused argument in
12704         prototype.
12705         (identical_subpath_p): Function declaration is gone.
12706         (patch_invoke): Suppressed unused argument in prototype.
12707         (patch_cast, build_labeled_block, check_thrown_exceptions):
12708         Likewise.
12709         * parse.y (setjmp.h): Included
12710         (toplev.h): Likewise.
12711         (field_declaration:): Suppressed unused local
12712         (label_decl:): Fixed build_labeled_block invocation.
12713         (java_pop_parser_context): Put extra parenthesis around assignment
12714         in if.
12715         (yyerror): Suppressed unused local variables.
12716         (variable_redefinition_error): Fixed lang_printable_name
12717         invocation.
12718         (create_interface): Suppressed unused local variables.
12719         (create_class): Likewise.
12720         (duplicate_declaration_error): Suppressed unused argument. Fixed
12721         lang_printable_name invocation.
12722         (register_fields): Suppressed unused local variable. Fixed
12723         duplicate_declaration_error invocation.
12724         (method_header): Suppressed unused local variable.
12725         (method_declarator, parser_check_super): Likewise.
12726         (java_complete_class): Suppressed unused local variable. Fixed
12727         fatal error message.
12728         (complete_class_report_errors): Added default: in switch.
12729         (java_check_regular_methods): Fixed lang_printable_name
12730         invocations.
12731         (check_throws_clauses): Likewise.
12732         (java_check_abstract_methods): Suppressed unused local
12733         variable. Fixed lang_printable_name invocation.
12734         (read_import_entry): Added supplemental return statement.
12735         (read_import_dir): Suppressed unused local variables.
12736         (check_pkg_class_access, declare_local_variables): Likewise.
12737         (source_start_java_method): Suppressed unused extern variable
12738         declarations
12739         (expand_start_java_method): Suppressed unused extern and local
12740         variable declarations.
12741         (java_complete_expand_methods): Likewise.
12742         (java_complete_expand_method): Suppressed unused local variables.
12743         (make_qualified_name): Likewise.
12744         (resolve_qualified_expression_name): Added default: in
12745         switch. Fixed lang_printable_name invocation.
12746         (class_instance_creation_expression): Added parenthesis around
12747         expressions.
12748         (patch_method_invocation_stmt): Fixed lang_printable_name and
12749         patch_invoke invocations.
12750         (check_for_static_method_reference): Fixed lang_printable_name
12751         invocation.
12752         (patch_invoke): Suppressed unused arguments and local variables.
12753         (lookup_method_invoke): Suppressed unused local variables.
12754         (qualify_ambiguous_name): Added default: in switch.
12755         (identical_subpath_p): Function removed.
12756         (patch_assignment): Suppressed unused local variables. Suppressed
12757         unnecessary if statement. Fixed lang_printable_name invocations.
12758         (try_builtin_assignconv): Fixed lang_printable_name invocations.
12759         (valid_ref_assignconv_cast_p): Parenthesis around
12760         expression. Suppressed unused local variables.
12761         (build_binop): Suppressed unused local variables. fixed
12762         lang_printable_name invocations.
12763         (string_constant_concatenation): Suppressed unused local
12764         variables.
12765         (patch_unaryop): Fixed lang_printable_name invocation.
12766         (patch_cast): Suppressed unnecessary argument. Fixed
12767         lang_printable_name invocation.
12768         (patch_array_ref): Fixed lang_printable_name invocation.
12769         (patch_newarray, patch_return, patch_if_else_statement): Likewise.
12770         (build_labeled_block): Suppressed unused argument.
12771         (generate_labeled_block): Fixed build_labeled_block invocation.
12772         (build_loop_body): Suppressed unused local variables.
12773         (patch_loop_statement): Likewise.
12774         (patch_exit): Fixed lang_printable_name invocation.
12775         (patch_switch_statement): Likewise.
12776         (case_identity): First argument marked unused.
12777         (patch_try_statement): Fixed lang_printable_name invocations.
12778         (patch_synchronized_statement, patch_throw_statement): Likewise.
12779         (check_thrown_exceptions): Fixed check_thrown_exceptions and
12780         lang_printable_name invocations.
12781         (check_thrown_exceptions_do): Suppressed unused argument.
12782
12783 1998-10-14  Tom Tromey  <tromey@cygnus.com>
12784
12785         * jcf-write.c (write_classfile): Add output class file as target.
12786         * lang-options.h: Added -MD, -MMD, -M, and -MM.
12787         * jcf.h: Added declarations for dependency-tracking functions.
12788         * lang-specs.h: Handle -M, -MM, MD, and -MMD.
12789         * lang.c (lang_decode_option): Recognize -MD and -MMD.
12790         (finish_parse): Call jcf_dependency_write.
12791         (dependency_tracking): New global.
12792         (DEPEND_SET_FILE): New define.
12793         (DEPEND_ENABLE): New define.
12794         (init_parse): Enable dependency tracking if required.
12795         Include "flags.h".
12796         * Makefile.in (JAVA_OBJS): Added jcf-depend.o.
12797         (../jcf-dump$(exeext)): Depend on and link with jcf-depend.o.
12798         (../gcjh$(exeext)): Likewise.
12799         (jcf-depend.o): New target.
12800         * Make-lang.in (JAVA_SRCS): Added jcf-depend.c.
12801         (GCJH_SOURCES): Likewise.
12802         * jcf-io.c (open_class): Call jcf_dependency_add_file.  Added
12803         dep_name argument.
12804         (find_classfile): Added dep_name argument.
12805         (find_class): Compute name of dependency.
12806         (open_in_zip): Call jcf_dependency_add_file.
12807         * gjavah.c (output_file): No longer global.
12808         (usage): Don't mention "gjavah".
12809         (help): Likewise.
12810         (java_no_argument): Likewise.
12811         (version): Likewise.
12812         (main): Recognize and handle -M family of options.
12813         (print_mangled_classname): Return is void.
12814         (process_file): Handle case where output is suppressed.
12815         (HANDLE_END_FIELD): Likewise.
12816         (HANDLE_METHOD): Likewise.
12817         * jcf-depend.c: New file.
12818
12819 1998-10-13  Jeffrey A Law  (law@cygnus.com)
12820
12821         * java-tree.def: Add missing newline at EOF.
12822
12823 1998-10-13  Tom Tromey  <tromey@cygnus.com>
12824
12825         * jcf-dump.c (process_class): Use FATAL_EXIT_CODE, not -1.
12826         (main): Likewise.  Exit with SUCCESS_EXIT_CODE at end of
12827         function.
12828         Include <config.h> and "system.h".
12829         (disassemble_method): Undefine RET to avoid clash with
12830         config/i386/i386.h.
12831
12832 1998-10-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12833
12834         * decl.c (runtime_exception_type_node, error_exception_type_node):
12835         New global variables.
12836         (init_decl_processing): Initialized.
12837         * expr.c (java_lang_expand_expr): Set caught exception type to
12838         null if catch handler argument doesn't exit.
12839         * java-tree.def (SYNCHRONIZED_EXPR, THROW_EXPR): New Java specific
12840         tree codes.
12841         * java-tree.h (runtime_exception_type_node,
12842         error_exception_type_node): Global variables declared.
12843         (DECL_FUNCTION_THROWS): New macro.
12844         (DECL_FUNCTION_BODY): Modified comment.
12845         (DECL_SPECIFIC_COUNT): Likewise.
12846         (struct lang_decl): New field throws_list.
12847         (IS_UNCHECKED_EXPRESSION_P): New macro.
12848         * lex.c (java_lex): Generate location information for THROW_TK.
12849         * parse.h (PUSH_EXCEPTIONS, POP_EXCEPTIONS, IN_TRY_BLOCK_P,
12850         EXCEPTIONS_P): New macros.
12851         (enum jdep_code): New value JDEP_EXCEPTION.
12852         (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT,
12853         BUILD_ASSIGN_EXCEPTION_INFO, BUILD_THROW, SET_WFL_OPERATOR,
12854         PATCH_METHOD_RETURN_ERROR): New macros.
12855         (patch_method_invocation_stmt): Added new argument to prototype.
12856         (patch_synchronized_statement, patch_throw_statement,
12857         check_thrown_exceptions, check_thrown_exceptions_do,
12858         purge_unchecked_exceptions, check_throws_clauses): New function
12859         prototypes.
12860         * parse.y Fixed typo in keyword section.
12861         (throw:): Rule tagged <node>.
12862         (THROW_TK): Keyword tagged <operator>.
12863         (method_header:): Last argument to call to method_header passed
12864         from throws: rule.
12865         (throws:, class_type_list:, throw_statement:,
12866         synchronized_statement:, synchronized:): Defined actions.
12867         (method_header): New local variable current. Register exceptions
12868         from throws clause.
12869         (java_complete_tree): Complete and verify exceptions from throws
12870         clause.
12871         (complete_class_report_errors): Error message on exceptions not
12872         found
12873         (java_check_regular_methods): Fixed typo. Shortcut on private
12874         overriding methods. Changed error message on method
12875         redefinition. Check for throws clause compatibility.
12876         (check_throws_clauses): New function.
12877         (java_check_abstract_methods): Use DECL_NAME for wfl or current
12878         method. Changed error message on method redefinition.
12879         (currently_caught_type_list): New static variable.
12880         (java_complete_expand_methods): Purge unchecked exceptions from
12881         throws clause list. Call PUSH_EXCEPTIONS before walk and
12882         POP_EXCEPTIONS after.
12883         (resolve_qualified_expression_name): Pass new argument as NULL to
12884         patch_method_invocation_stmt.
12885         (patch_method_invocation_stmt): New argument ref_decl. Invoke
12886         PATCH_METHOD_RETURN_ERROR when returning with error. Reverse
12887         argument list when appropriate. Use new argument if non null to
12888         store selected method decl.
12889         (patch_invoke): Convert if necessary args of builtin types before
12890         forming CALL_EXPR. Argument list no longer reversed here.
12891         (invocation_mode): Treat final methods as static methods.
12892         (java_complete_tree): New cases for THROW_EXPR: and
12893         SYNCHRONIZED_EXPR:. Check thrown exceptions when completing
12894         function call.
12895         (complete_function_arguments): No more RECORD_TYPE
12896         conversion. Function parameter nodes no longer saved.
12897         (valid_ref_assignconv_cast_p): Avoid handling null type.
12898         (patch_binop): Fixed null constant reference handling.
12899         (build_try_statement): Use BUILD_ASSIGN_EXCEPTION_INFO and
12900         BUILD_THROW macros.
12901         (patch_try_statement): Fixed comments. Record caught types in
12902         list, push the list, expand try block and pop the list.
12903         (patch_synchronized_statement, patch_throw_statement,
12904         check_thrown_exceptions, check_thrown_exceptions_do,
12905         purge_unchecked_exceptions): New functions.
12906         * typeck.c (lookup_argument_method): Allow WFL in place of method
12907         DECL_NAME during method definition check
12908
12909 1998-10-09  Tom Tromey  <tromey@cygnus.com>
12910
12911         * gjavah.c (decode_signature_piece): New function.
12912         (print_c_decl): Use it.  Added `name_override' argument.
12913         (print_method_info): Use name_override argument to print_c_decl.
12914         (seen_fields): Removed.
12915         (print_field_info): Don't update seen_fields.
12916         (struct method_name): New structure.
12917         (method_name_list): New global.
12918         (print_method_info): Add new method to list of methods.
12919         (name_is_method_p): New function.
12920         (print_field_info): If field name has same name as method, then
12921         change field name.
12922         (process_file): Parse methods before fields.
12923         (field_pass): New global.
12924         (HANDLE_END_FIELD): Take field_pass into account.
12925
12926 1998-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12927
12928         * Makefile.in (keyword.h): Add -L KR-C -F ', 0' flags to gperf.
12929         (keyword.h): Regenerate using gperf 2.7.1 (19981006 egcs).
12930
12931 1998-10-03  Anthony Green  <green@cygnus.com>
12932
12933         * jvspec.c: Fix bug in jvgenmain_spec patch.
12934
12935 1998-10-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12936
12937         * Makefile.in (lang.o:): Install dependency on java-tree.def.
12938         * decl.c (soft_exceptioninfo_call_node): New global variable.
12939         (init_decl_processing): Fixed indentation. soft_badarrayindex_node
12940         takes extra integer argument. soft_exceptioninfo_call_node
12941         initialized.
12942         * except.c (java_set_exception_lang_code): New function
12943         (method_init_exceptions): Called here.
12944         (prepare_eh_table_type): New function.
12945         (expand_end_java_handler): Called here.
12946         * expr.c (build_java_throw_out_of_bounds_exception): Now features
12947         one argument. Modified generation of call to
12948         soft_badarrayindex_node to use new argument.
12949         (build_java_arrayaccess): Pass faulty index value to
12950         build_java_throw_out_of_bounds_exception.
12951         (generate_name): New function.
12952         (java_lang_expand_expr): New local variables node, current,
12953         has_finally_p. Expand TRY_EXPR node.
12954         (process_jvm_instruction): Replace top of the stack with thrown
12955         object reference when entering exception handler.
12956         * java-tree.def (TRY_EXPR, CATCH_EXPR, FINALLY_EXPR): New Java
12957         specific tree codes.
12958         * java-tree.h (soft_exceptioninfo_call_node): Declaration of new
12959         global.
12960         (DECL_SPECIFIC_COUNT): New macro.
12961         (prepare_eh_table_type, java_set_exception_lang_code,
12962         generate_name): New function declarations.
12963         (match_java_method): Declaration deleted.
12964         (FINALLY_EXPR_LABEL, FINALLY_EXPR_BLOCK, CATCH_EXPR_GET_EXPR): New
12965         macros.
12966         * lex.c (TRY_TK, CATCH_TK): Generate location information.
12967         * parse.h (redefinition_error, refine_accessible_methods_list,
12968         can_cast_to_p): Function declaration removed.
12969         (classitf_redefinition_error, variable_redefinition_error,
12970         parse_jdk1_1_error, find_applicable_accessible_methods_list,
12971         find_most_specific_methods_list, argument_types_convertible,
12972         enter_a_block, valid_builtin_assignconv_identity_widening_p,
12973         valid_cast_to_p, valid_method_invocation_conversion_p,
12974         try_reference_assignconv, add_stmt_to_compound,
12975         build_jump_to_finally, build_tree_list, patch_try_statement,
12976         java_get_catch_block): New function declarations.
12977         * parse.y (string_buffer_type): Global variable deleted.
12978         (group_of_labels, catches, catch_clause, catch_clause_parameter,
12979         finally): Rules tagged <node>.
12980         (TRY_TK, CATCH_TK): Token tagged <operator>.
12981         (class_body_declaration:, class_member_declaration:,
12982         formal_parameter:, explicit_constructor_invocation:,
12983         interface_member_declaration:, constant_declaration:,
12984         primary_no_new_array:, class_instance_creation_expression:,
12985         array_creation_expression:): Issue error on unsuported JDK1.1
12986         features.
12987         (try_statement:, catches:, finally:): Define actions.
12988         (catch_clause_parameter): New rule.
12989         (catch_clause:): Use new rule catch_clause_parameter.
12990         (parse_jdk1_1_error): New function.
12991         (redefinition_error): Renamed classitf_redefinition_error.
12992         (variable_redefinition_error): New function.
12993         (check_class_interface_creation): Call
12994         classitf_redefinition_error.
12995         (java_complete_tree): Added error message on JDEP_TYPE: case.
12996         (complete_class_report_errors): Fixed indentation.
12997         (declare_local_variables): Call variable_redefinition_error.
12998         (source_end_java_method): Call java_set_exception_lang_code and
12999         emit_handlers where appropriate.
13000         (java_method_add_stmt): Call add_stmt_to_block.
13001         (add_stmt_to_block): New function.
13002         (lookup_method_invoke): Fixed outside comment. new local variable
13003         candicates.  Call find_applicable_accessible_methods_list and
13004         find_most_specific_methods_list when searching for a
13005         method. Modified error report to list possible candidates when
13006         applicable.
13007         (find_applicable_accessible_methods_list,
13008         find_most_specific_methods_list, argument_types_convertible): New
13009         function.
13010         (refine_accessible_methods_list): Function deleted.
13011         (java_complete_tree): Handle TRY_EXPR. ARRAY_REF handling: save
13012         expr (if applicable) before calling patch_array_ref.
13013         (build_expr_block): Fixed BLOCK_EXPR_BODY assignment.
13014         (enter_block): Fixed comment.
13015         (enter_a_block): New function.
13016         (patch_assignment): Reorganized. Call try_reference_assignconv for
13017         references. Call valid_cast_to_p instead of can_cast_to_p.
13018         (try_reference_assignconv,
13019         valid_builtin_assignconv_identity_widening_p): New functions.
13020         (valid_ref_assignconv_cast_p): Fixed inverted test on CLASS_FINAL.
13021         (valid_cast_to_p, valid_method_invocation_conversion_p): New
13022         functions.
13023         (build_string_concatenation): Don't resolve StringBuffer.
13024         (patch_cast): Fixed inverted arguments.
13025         (patch_array_ref): Code to save array expr deleted. Call
13026         valid_cast_to_p instead of can_cast_to_p.
13027         (generate_labeled_block): Call generate_name.
13028         (build_jump_to_finally, build_try_statement, java_get_catch_block,
13029         patch_try_statement): New functions.
13030         * typeck.c (match_java_method): Function deleted.
13031
13032 1998-10-02  Anthony Green  <green@cygnus.com>
13033
13034         * jvspec.c: jvgenmain_spec uses different temporary file names.
13035
13036 1998-10-02  Anthony Green  <green@cygnus.com>
13037
13038         * jvspec.c (lang_specific_driver): Fail if user specifies
13039         --main= when not linking.
13040
13041 1998-09-28  Tom Tromey  <tromey@cygnus.com>
13042
13043         * class.c (make_class_data): Push value for `thread' field.
13044         * decl.c (init_decl_processing): Added `thread' field to class.
13045
13046         * class.c (add_field): Always make static fields externally
13047         visible.
13048
13049 1998-09-26  Anthony Green  <green@cygnus.com>
13050
13051         * expr.c (build_java_athrow,
13052         build_java_throw_out_of_bounds_exception, expand_invoke,
13053         build_newarray, expand_java_multianewarray, build_java_monitor):
13054         Update comments to reflect _Jv_* function names.
13055
13056 1998-09-25  Per Bothner  <bothner@cygnus.com>
13057
13058         * decl.c (complete_start_java_method):  DECL_RESULT is always promoted.
13059         * decl.c (start_java_method):  Handle PROMOTE_PROTOTYPES target macro.
13060         * parse.y (expand_start_java_method):  Likewise.
13061
13062 1998-09-24  Per Bothner  <bothner@cygnus.com>
13063
13064         * expr.c (pop_arguments):  Handle PROMOTE_PROTOTYPES target macro.
13065
13066         * class.c (push_class):  IDENTIFIER_SIGNATURE_TYPE is now POINTER_TYPE.
13067         (add_field):  No longer need to convert from RECORD_TYPE to pointer,
13068         * expr.c:  Remove no-longer-needed calls to promote_type.
13069         * decl.c (give_name_to_locals):  Liekwise.
13070         * jcf-parse.c (get_class_constant):  Compensate for new signatures.
13071         * parse.y:  Add/remove promote_type calls as appropriate.
13072         * typeck.c (parse_signature_type):  Returns POINTER_TYPE for objects.
13073         (parse_signature_string):  Likewise.
13074         (build_java_array_type):  Fix for now signature convenions.
13075
13076         * lex.c (java_lex):  Fix (from Alex) for JC1_LITE problem.
13077
13078 1998-09-23  Tom Tromey  <tromey@cygnus.com>
13079
13080         * class.c (init_class_processing): libjava function renamed to
13081         _Jv_RegisterClass.
13082
13083 1998-09-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13084
13085         * expr.c (java_lang_expand_expr): New case for SWITCH_EXPR.
13086         * java-tree.def: Fixed DEFTREECODE third argument.
13087         (UNARY_PLUS_EXPR, NEW_ARRAY_EXPR, NEW_CLASS_EXPR, THIS_EXPR,
13088         CASE_EXPR, DEFAULT_EXPR): New tree codes for Java.
13089         * java-tree.h: (IS_CRAFTED_STRING_BUFFER_P): New macro.
13090         (JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR,
13091         JAVA_THIS_EXPR): Now replaced by tree code definitions.
13092         (CALL_CONSTRUCTOR_P): Now uses NEW_CLASS_EXPR.
13093         * lang.c (java_tree_code_type, java_tree_code_length,
13094         java_tree_code_name): New arrays.
13095         (lang_init): Append Java tree node definitions to Gcc ones.
13096         * lex.c (expression_obstack): Declared as extern when JC1_LITE
13097         defined.
13098         (java_init_lex): Initialize wfl_append, wfl_string_buffer,
13099         wfl_to_string.
13100         (java_lex): Allow declaration of empty string constants. Retain
13101         location information on CASE_TK and DEFAULT_TK.
13102         * parse.h (JFLOAT_TYPE_P, JINTEGRAL_TYPE_P, JNUMERIC_TYPE_P,
13103         JPRIMITIVE_TYPE_P, JSTRING_TYPE_P, JSTRING_P, JREFERENCE_TYPE_P):
13104         Modified to be more robust.
13105         (BUILD_APPEND, BUILD_STRING_BUFFER): New macros.
13106         (build_new_invocation, try_builtin_assignconv,
13107         patch_switch_statement, string_constant_concatenation,
13108         build_string_concatenation, patch_string_cst, patch_string,
13109         java_expand_switch): New function declarations.
13110         * parse.y: Rules related to switch and EH tagged <node>.
13111         (label_id): Set to NULL_TREE
13112         (wfl_string_buffer, wfl_append, wfl_to_string): New static global
13113         tree nodes.
13114         (this_or_super:): Fixed indentation.
13115         (statement:, statement_nsi:, statement_without_trailing_substatement:,
13116         statement_expression:): Removed call to RULE on all sub-rules.
13117         (switch_expression:, switch_labels:): New rules.
13118         (switch_statement:, switch_block:, switch_block_statement_groups:,
13119         switch_block_statement_group:, switch_labels:, switch_label:):
13120         Defined actions.
13121         (throw_statement:, synchronized_statement:, try_statement:):
13122         Defined temporary actions.
13123         (class_instance_creation_expression:): Call
13124         build_new_invocation. Fixed indentation.
13125         (field_access): Fixed indentation.
13126         (method_invocation): Likewise.
13127         (make_qualified_primary): Use THIS_EXPR.
13128         (resolve_qualified_expression_name): Use NEW_CLASS_EXPR. When
13129         resolving from SUPER, set *type_found.
13130         (qualify_ambiguous_name): Use NEW_CLASS_EXPR.
13131         (java_complete_tree): Removed unused local variable `location'. Case
13132         for SWITCH_EXPR, sharing code with LOOP_EXPR. Use NEW_ARRAY_EXPR,
13133         NEW_CLASS_EXPR, UNARY_PLUS_EXPR and THIS_EXPR. New string handling
13134         on MODIFY_EXPR: and all binary operator tree code cases. Removed
13135         STRING_CST: case. default: checks for patchable strings.
13136         (complete_function_arguments): Transform string constant or
13137         crafted StringBuffer if necessary.
13138         (build_method_invocation): Fixed comments.
13139         (build_new_invocation): New function.
13140         (patch_assignment): Call try_builtin_assignconv to figure a valid
13141         assignment conversion between builtin types.
13142         (try_builtin_assignconv): New function.
13143         (build_binop): Use URSHIFT_EXPR directly to call build.
13144         (operator_string): Use UNARY_PLUS_EXPR.
13145         (patch_binop): Use UNARY_PLUS_EXPR. Handle string concatenation
13146         operator.
13147         (do_merge_string_cste, merge_string_cste,
13148         string_constant_concatenation, build_string_concatenation,
13149         patch_string, patch_string_cst): New function.
13150         (build_unary_op): Use UNARY_PLUS_EXPR and CONVERT_EXPR.
13151         (patch_unaryop): Likewise. New test of valid ++/-- operands.
13152         (build_newarray_node): Use NEW_ARRAY_EXPR.
13153         (build_this): Use THIS_EXPR.
13154         (build_return): Enable debug information on return statement.
13155         (build_if_else_statement): Likewise.
13156         (complete_labeled_statement): Fixed related comment.
13157         (build_loop_body): Fixed comment.
13158         (build_bc_statement): Enable debug information on break/continue
13159         statements.
13160         (patch_bc_statement): Fixed typos. Handle SWITCH statement
13161         context.
13162         (patch_switch_statement, case_identity, java_expand_switch): New
13163         functions.
13164
13165 1998-09-21  Per Bothner  <bothner@cygnus.com>
13166
13167         * buffer.h (BUFFER_INIT):  New macro.
13168         * jcf-write.c (struct jcf_partial):  New type.  Put global stuff here.
13169         Pass (struct jcf_partial *state) to most functions.
13170         (jcf_block, jcf_relocation):  New types.
13171         Support labels, branches, conditionals, loops.
13172
13173 1998-09-21  Tom Tromey  <tromey@cygnus.com>
13174
13175         * decl.c (INT_TYPE_SIZE): Define as BITS_PER_WORD if not defined.
13176
13177 1998-09-21  Per Bothner  <bothner@cygnus.com>
13178
13179         * decl.c (integer_type_node):  Make it have INT_TYPE_SIZE.
13180         * verify.c (verify_jvm_instructions):  Use int_type_not (32 bits),
13181         not integer_type_node (INT_TYPE_SIZ bits).
13182
13183         * parse.y (patch_if_else_statement):  Accept promoted_boolean_type_node.
13184
13185         * jcf-reader.c (get_attribute):  New HANDLE_EXCEPTION_TABLE hook.
13186         * jcf-dump.c (print_exception_table):  New function.
13187         (disassemble_method):  Better handling of wide instructions.
13188         Make more robust for bad input.
13189
13190 1998-09-30  Jeffrey A Law  (law@cygnus.com)
13191
13192         * jcf-write.c (OP2, OP4): Use "_i", not "_I" to avoid problems on
13193         FreeBSD.
13194
13195 1998-09-17  Jeffrey A Law  (law@cygnus.com)
13196
13197         * Makefile.in (jcf-dump, jvgenmain): Link in memmove.o too.
13198
13199 1998-09-17  Tom Tromey  <tromey@cygnus.com>
13200
13201         * Makefile.in ($(PARSE_H)): Removed target.
13202
13203 1998-09-17  Jeffrey A Law  (law@cygnus.com)
13204
13205         * Makefile.in (JAVA_OBJS): Add memmove.o
13206         (memmove.o): New target & rules.
13207
13208 1998-09-15  Tom Tromey  <tromey@cygnus.com>
13209
13210         * expr.c (expand_invoke): Don't generate a call to the class init
13211         code.
13212
13213 1998-09-14  Jeffrey A Law  (law@cygnus.com)
13214
13215         * Makefile.in: Add many missing dependencies.
13216         * buffer.c, class.c, constants.c, decl.c: Use system.h and toplev.h
13217         as appropriate.
13218         * except.c, expr.c, jcf-io.c jcf-parse.c, jcf-write.c: Likewise.
13219         * jvgenmain.c lang.c mangle.c typeck.c verify.c: Likewise.
13220
13221 1998-09-11  Per Bothner  <bothner@cygnus.com>
13222
13223         * decl.c (complete_start_java_method):  If method is static (and
13224         not private) call _Jv_InitClass.
13225         * expr.c (expand_invoke):  Don't call build_class_init.
13226
13227         * jvspec.c (jvgenmain_spec):  Fix spec for generated .o file.
13228
13229 1998-09-10  Jeffrey A Law  (law@cygnus.com)
13230
13231         * Make-lang.in (GCJ): Define before using.
13232
13233 1998-09-09  Jeffrey A Law  (law@cygnus.com)
13234
13235         * gjavah.c (java_no_argument): Renamed from no_argument to avoid
13236         losing due to namespace pollution in GNU getopt.h
13237
13238 1998-09-09  Tom Tromey  <tromey@cygnus.com>
13239
13240         * Make-lang.in (java.all.build): Don't mention jvgenmain or gcjh.
13241         (java.all.cross): Likewise.
13242         (java.rest.encap): Likewise.
13243
13244 1998-09-08  Jeffrey A Law  (law@cygnus.com)
13245
13246         * gjavah.c (print_class_decls): Fix thinko in arglist
13247         * jcv-io.c (find_classfile): Similarly.
13248
13249 1998-09-07  Jeffrey A Law  (law@cygnus.com)
13250
13251         * Makefile.in (INCLUDES): Update for recent toplevel gcc changes.
13252
13253 1998-09-05  Tom Tromey  <tromey@cygnus.com>
13254
13255         * Make-lang.in (java.maintainer-clean): Don't remove parse.h.
13256         (java.mostlyclean): Remove parse.c and parse-scan.c, not parse.h.
13257         * Makefile.in (PARSE_C): New macro.
13258         (PARSE_H): Likewise.
13259         (PARSE_SCAN_C): Likewise.
13260         ($(PARSE_C)): Target renamed from parse.c.
13261         ($(PARSE_SCAN_C)): Target renamed from parse-scan.c.
13262         (clean): Remove parse-scan.c as well.
13263         (parse.o): Depend on $(PARSE_C).
13264
13265 1998-09-05  Anthony Green  <green@cygnus.com>
13266
13267         * README, license.terms: Removed.
13268
13269         * Make-lang.in, Makefile.in, class.c, config-lang.in, constants.c,
13270         decl.c, except.c, expr.c, gjavah.c, java-except.h, java-tree.h,
13271         javaop.def, javaop.h, jcf-dump.c, jcf-io.c, jcf-parse.c,
13272         jcf-reader.c, jcf-write.c, jcf.h, jvgenmain.c, jvspec.c,
13273         keyword.gperf, keyword.h, lang-options.h, lang-specs.h, lang.c,
13274         lex.c, lex.h, mangle.c, parse-scan.y, parse.h, parse.y, typeck.c,
13275         verify.c, zextract.c, zipfile.h: Fixed copyright assignment,
13276         and Java trademark attribution.
13277
13278 1998-09-04  Tom Tromey  <tromey@cygnus.com>
13279
13280         * Makefile.in: Use gcjh, not gjavah.
13281         * config-lang.in (stagestuff): Use gcjh, not gjavah.
13282         * Make-lang.in: Changed gjavah to gcjh everywhere.
13283
13284 1998-09-03  Per Bothner  <bothner@cygnus.com>
13285
13286         * gjavah.c:  Support new -prepend -add -append flags.
13287         (print_method_info):  Method is not virtual if class is final.
13288
13289 1998-09-03  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13290
13291         * jv-scan.c: Fixed copyright assignment.
13292         * keyword.gperf: Likewise.
13293         * keyword.h: Likewise.
13294         * lex.c: Fixed copyright assignment.
13295         (java_lex): Push unicode back when parsing '<'.
13296         * lex.h: Fixed copyright assignment.
13297         * parse-scan.y: Likewise.
13298         * parse.h: Fixed copyright assignment.
13299         (build_debugable_stmt, complete_for_loop): New function prototypes.
13300         * parse.y: Fixed copyright assignment.
13301         (for_statement:): Call complete_for_loop. Set EXIT_EXPR to be
13302         size_zero_node when completing a loop with no exit condition.
13303         (for_statement_nsi:): Define action.
13304         (for_init:, for_update:): Return size_zero_node when empty.
13305         (declare_local_variables): Call build_debugable_stmt.
13306         (build_debugable_stmt): New function.
13307         (build_loop_body): Build debugable statement around loop
13308         condition part.
13309         (complete_loop_body): Take into account the debugable statement
13310         around the EXIT_EXPR.
13311         (complete_loop_body): New function.
13312         (patch_exit_expr): Fixed condition inversion.
13313
13314 1998-09-02  Tom Tromey  <tromey@cygnus.com>
13315
13316         * Make-lang.in (jvspec.o): Use GCC_THREAD_FILE to compute correct
13317         name of thread define.
13318         * jvspec.c (THREAD_NAME): New macro.
13319         (GCLIB): Likewise.
13320         (THREADLIB): Likewise.
13321         (lang_specific_driver): Recognize attempt to link with thread
13322         library or gc library.  Recognize -ljava on command line so it
13323         isn't linked against more than once.
13324
13325 1998-09-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13326
13327         * parse-scan.y (report_main_declaration): Name of the class
13328         containing `main' can be a qualified name.
13329
13330 1998-08-31  Tom Tromey  <tromey@cygnus.com>
13331
13332         * config-lang.in: Changed gjavac to gjc everywhere.
13333         * Make-lang.in: Changed gjavac to gjc everywhere.
13334
13335 1998-08-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13336
13337         * Make-lang.in (JAVA_TARGET_INDEPENDENT_BIN_TOOLS): New variable.
13338         (java.install-common:): Loop over JAVA_TARGET_INDEPENDENT_BIN_TOOLS
13339         and install the files.
13340         * Makefile.in (JAVA_OBJS_LITE): New variable.
13341         (compiler:): Now include jv-scan as a dependency.
13342         (../jv-scan$(exeext), parse-scan.c): New targets.
13343         (../jcf-dump$(exeext)): Was jcf-dump$(exeext) before.
13344         * config-lang.in (compilers): Removed gcj, gjavah from the list.
13345         * jcf-parse.c (parse_source_file): Call java_layout_classes and
13346         check for errors even if parse_only.
13347         * lex.c (java_init_lex): Reorganized and skip parts if JC1_LITE is
13348         defined.
13349         (yylex): New function. Uses java_lex body.
13350         (java_lex): Removed commented out statement. Remove local variable
13351         literal. Use SET_LVAL_NODE_TYPE and SET_LVAL_NODE where
13352         appropriate.  Use macros FLOAT_TYPE_NODE, DOUBLE_TYPE_NODE,
13353         DCONST0, SET_FLOAT_HANDLER, SET_REAL_VALUE_ATOF,
13354         SET_LVAL_NODE_TYPE and GET_TYPE_PRECISION. Don't create STRING_CST
13355         if JC1_LITE is defined. Use BUILD_ID_WFL to build identifiers. Use
13356         SET_MODIFIER_CTX, SET_LVAL_NODE, BUILD_ID_WFL and GET_IDENTIFIER
13357         where appropriate.
13358         (java_lex_error): Empty if JC1_LITE is defined.
13359         (java_get_line_col): Return 0 if JC1_LITE is defined.
13360         * lex.h (JAVA_FLOAT_RANGE_ERROR, JAVA_INTEGRAL_RANGE_ERROR,
13361         SET_MODIFIER_CTX): Moved into the section containing the macros
13362         conditionally defined by JC1_LITE.
13363         (BUILD_OPERATOR,BUILD_OPERATOR2): Just return the TOKEN
13364         argument if JC1_LITE is defined.
13365         (HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT, REAL_VALUE_ATOF,
13366         REAL_VALUE_ISINF, REAL_VALUE_ISNAN): Preset to values if JC1_LITE
13367         is defined.
13368         (DCONST0, SET_FLOAT_HANDLER, GET_IDENTIFIER, SET_REAL_VALUE_ATOF,
13369         FLOAT_TYPE, DOUBLE_TYPE, SET_MODIFIER_CTX, GET_TYPE_PRECISION,
13370         SET_LVAL_NODE, SET_LVAL_NODE_TYPE, BUILD_ID_WFL): New macros, set
13371         to different values according to JC1_LITE.
13372         * parse.h (int_fits_type_p, stabilize_reference): Prototype not
13373         declared if JC1_LITE set.
13374         (jdep_code, typedef struct _jdep, typedef struct _jdeplist): Not
13375         defined if JC1_LITE not set.
13376         (struct parser_ctx): Reorganized and skip the jc1 front end part
13377         if JC1_LITE set.
13378         (java_layout_classes): New function definition.
13379         (java_push_parser_context, java_init_lex, yyparse, yylex,
13380         yyerror): Prototype always declared. All other static function
13381         prototypes declared only if JC1_LITE is not set.
13382         * parse.y (yyparse, yylex, yyerror): No longer declared here. Now
13383         declared in parse.h.
13384         (java_layout_classes): New function.
13385         (java_complete_expand_methods): No longer layout the class here.
13386         * parse-scan.y: New file.
13387         * jv-scan.c: New file.
13388
13389 1998-08-25  Tom Tromey  <tromey@cygnus.com>
13390
13391         * gjavah.c (main): Handle -friend option.
13392         (friend_specs): New global.
13393         (generate_access): Handle friend_specs.
13394         (process_file): Likewise.
13395         (MAX_FRIENDS): New macro.
13396         (friend_count): New global.
13397         (print_cxx_classname): Added `prefix' argument.  Ignore arrays.
13398         Changed all callers.
13399
13400 1998-08-24  Per Bothner  <bothner@cygnus.com>
13401
13402         * jcf-dump.c (process_class):  Move JCF_FINISH use to main,
13403         (main):  Handle processing all the entries of a named .zip archive.
13404         * jcf-io.c (jcf_trim_old_input):  New function.
13405         * jcf.h (GET_u2_le,GET_u4_le,JCF_readu2_le,JCF_readu4_le):  New macros.
13406
13407 1998-08-24  Per Bothner  <bothner@cygnus.com>
13408
13409         * lang.c (flag_assume_compiled):  Make default be on.
13410
13411 1998-08-21  Per Bothner  <bothner@cygnus.com>
13412
13413         * jcf-dump.c:  Add bunches of flags to control output more.
13414         (process_class):  New function;  support printing more than one class.
13415         (main): Support new --print-main and --javap flags.
13416         * jcf-reader.c (IGNORE_ATTRIBUTE):  New hook.
13417         * jcf.h (CPOOL_INDEX_IN_RANGE):  New macro.
13418
13419 1998-08-20  Per Bothner  <bothner@cygnus.com>
13420
13421         Change mangling of dispatch table to match C++ vtable (w/thunks).
13422         * class.c (build_dtable_decl), java-tree.h:  New function.
13423         (make_class_data):  Call it.
13424         * decl.c (init_decl_processing):  Likewise.
13425
13426 1998-08-19  Warren Levy  <warrenl@cygnus.com>
13427
13428         * decl.c (init_decl_processing): Use _Jv_NewObjectArray, not
13429         soft_anewarray; adjust args passed.
13430         * expr.c (build_anewarray): Adjust args for soft_anewarray_node to
13431         match _Jv_NewObjectArray.
13432
13433 1998-08-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13434
13435         * decl.c (push_labeled_block, pop_labeled_block): New functions.
13436         * expr.c (loopup_label): Call create_label_decl.
13437         (create_label_decl): New function.
13438         (java_lang_expand_expr): Call expand_start_bindings with argument
13439         set to zero.
13440         * java-tree.h Added space after PROTO in function declarations
13441         when necessary.
13442         (IS_FOR_LOOP_P, IS_BREAK_STMT_P): New macros.
13443         (create_label_decl, push_labeled_block): New function
13444         declarations.
13445         * lex.c (label_id): Initialize.
13446         (SUPER_TK, THIS_TK, RETURN_TK): Merged common actions in final
13447         switch.
13448         * parse.h Added space after PROTO in function declarations when
13449         necessary.
13450         (LOOP_EXPR_BODY_MAIN_BLOCK, LOOP_EXPR_BODY_UPDATE_BLOCK,
13451         LOOP_EXPR_BODY_CONDITION_EXPR, LOOP_EXPR_BODY_LABELED_BODY,
13452         LOOP_EXPR_BODY_BODY_EXPR, LOOP_HAS_LABEL_P, LOOP_HAS_LABEL_SKIP_P,
13453         PUSH_LABELED_BLOCK, POP_LABELED_BLOCK, PUSH_LOOP, POP_LOOP): New
13454         macros.
13455         (struct parser_ctxt): New fields current_loop,
13456         current_labeled_block.
13457         (build_if_else_statement, patch_if_else_statement,
13458         add_stmt_to_compound, patch_exit_expr, build_labeled_block,
13459         generate_labeled_block, complete_labeled_statement,
13460         build_bc_statement, patch_bc_statement, patch_loop_statement,
13461         build_new_loop, build_loop_body, complete_loop_body): New function
13462         declarations.
13463         * parse.y (java_warning_count): New global variable.
13464         (label_id): New static variable.
13465         (BREAK_TK, CONTINUE_TK): Token tagged <operator>.
13466         (block:): Return size_zero_node when block is empty.
13467         (empty_statement:): Return size_zero_node.
13468         (statement:): Implement supplemental action when for_statement: is
13469         reduced.
13470         (label_decl:): New rule.
13471         (labeled_statement:): Rewritten using label_decl. Actions
13472         implemented.
13473         (labeled_statement_nsi:): Likewise.
13474         (if_then_statement): Actions implemented.
13475         (while_expression): New rule.
13476         (while_statement:): Rewritten using while_expression. Actions
13477         implemented.
13478         (while_statement_nsi:): Likewise.
13479         (do_statement_begin:): New rule.
13480         (do_statement:): Rewritten using do_statement_begin. Actions
13481         implemented.
13482         (for_statement:): Rewritten using for_begin. Actions implemented.
13483         (for_statement_nsi:): Likewise.
13484         (for_header:, for_begin:): New rules.
13485         (for_init:): Actions implemented.
13486         (statement_expression_list:, break_statement:,
13487         continue_statement:): Likewise.
13488         (yyerror): Count number of issued warning(s).
13489         (java_report_errors): Report error(s) and/or warning(s).
13490         (java_complete_class): Use build_java_argument_signature to
13491         recompute completed method signature.
13492         (java_check_regular_methods): New locals method_wfl and aflags.
13493         Use method_wfl instead of lookup_cl during error reports. Fixed
13494         indentation and modified some error messages. Use
13495         lang_printable_name in method instead of the DECL_NAME. New code
13496         to issue warnings on methods not overriding corresponding methods
13497         private to a different package.
13498         (java_method_add_stmt): Call add_stmt_to_compound.
13499         (add_stmt_to_compound): New function.
13500         (java_complete_tree): Handle LABELED_BLOCK_EXPR, EXIT_BLOCK_EXPR,
13501         LOOP_EXPR, EXIT_EXPR and COND_EXPR.
13502         (build_if_else_statement, patch_if_else_statement,
13503         build_labeled_block, generate_labeled_block,
13504         complete_labeled_statement, build_new_loop, build_loop_body,
13505         complete_loop_body, patch_loop_statement, build_bc_statement,
13506         patch_bc_statement, patch_exit_expr): New functions.
13507         * typeck.c (build_java_signature): Build argument signature before
13508         enclosing it in between parenthesis.
13509
13510 1998-08-17  Warren Levy  <warrenl@cygnus.com>
13511
13512         * Make-lang.in (JAVA_SRCS): Created for dependencies * Makefile.in
13513         (JAVA_OBJS): Added reminder comment
13514
13515 1998-08-13  Nick Clifton  <nickc@cygnus.com>
13516
13517         * gjavah.c (D_NAN_MASK): Append LL to the constant to force it to
13518         be interpreted as a long long.
13519
13520 1998-08-13  Warren Levy  <warrenl@cygnus.com>
13521
13522         * decl.c (init_decl_processing): Use _Jv_InitClass, not
13523         soft_initialise_class.  Use _Jv_NewMultiArray, not
13524         soft_multianewarray.  Use _Jv_ThrowBadArrayIndex, not
13525         soft_badarrayindex.  Use _Jv_CheckCast, not soft_checkcast.  Use
13526         _Jv_CheckArrayStore, not soft_checkarraystore.  Use
13527         _Jv_LookupInterfaceMethod, not soft_lookupinterfacemethod.
13528
13529 1998-08-12  Per Bothner  <bothner@cygnus.com>
13530
13531         * decl.c, java-tree.h (this_identifier_node, super_identifier_node,
13532         length_identifier_node):  New global tree node constants.
13533         * parse.y (kw_super, kw_this, kw_length):  Removed globals.
13534         Replace uses by super_identifier_node etc.
13535         * lex.c (kw_super, kw_this, kw_length):  Don't initialize.
13536
13537         * parse.y (resolve_field_access):  Don't special-case ".length" if
13538         flag_emit_class_files.
13539         (patch_array_ref):  Leave as ARRAY_REF if flag_emit_class_files.
13540         * jcf-write.c (generate_bytecode_insns):  Handle ARRAY_REF opcode
13541         and ARRAY.length.
13542
13543 1998-08-11  Per Bothner  <bothner@cygnus.com>
13544
13545         * decl.c (init_decl_processing): Remove unused method_type_node fields.
13546         * class.c (make_method_value):  Remove init for removed fields.
13547
13548         * class.c (layout_class):  Use build_java_argument_signature.
13549         * java-tree.h (TYPE_ARGUMENT_SIGNATURE):  New macro.
13550
13551         * typeck.c (push_java_argument_signature):  Removed.  Merged into ...
13552         (build_java_argument_signature):  Use TYPE_ARGUMENT_SIGNATURE cache.
13553         (build_java_signature):  Don't use push_java_argument_signature.
13554
13555         * typeck.c (lookup_argument_method):  New function.
13556         * parse.y (java_check_regular_methods):  Use lookup_argument_method
13557         instead of lookup_java_method2 followed by lookup_java_method.
13558
13559         * parse.y (check_method_redefinition):  Minor optimization.
13560
13561         * jcf-write.c (generate_bytecode_insns):  Handle RETURN_EXPR,
13562         MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, and RDIV_EXPR.
13563
13564 1998-08-10  Tom Tromey  <tromey@cygnus.com>
13565
13566         * Make-lang.in (jc1$(exeext)): Don't depend on c-common.o or
13567         c-pragma.o.
13568
13569         * gjavah.c (java_float_finite): Use K&R-style definition.
13570         (java_double_finite): Likewise.
13571         (generate_access): Now returns void.  Changed all callers.
13572         (last_access_generated): Removed.
13573         (process_file): Only make a single pass over the .class file.
13574
13575 1998-07-29  Per Bothner  <bothner@cygnus.com>
13576
13577         * class.c (get_dispatch_table):  Add extra dummy vtable entry,
13578         for compatibility for G++ (with -fvtable-thunks).
13579         * expr.c (build_invokevirtual):  Add one for extra dummy vtable entry.
13580
13581         * gjavah.c (process_file):  Use public inheritance for super-class.
13582
13583 1998-07-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13584
13585         * lex.c (java_init_lex): Initialize ctxp->package.
13586         * parse.h (struct parser_ctxt): package and package_len replaced
13587         by tree package, an identifier node. Field method_decl_list is
13588         gone. Fixed comments.
13589         (lookup_field_wrapper, merge_qualified_name, not_accessible,
13590         class_in_current_package): New function prototypes.
13591         * parse.y (array_type:): Set class loaded flag on primitive type
13592         arrays.
13593         (package_declaration:): Assign ctxp->package to the
13594         identifier node.
13595         (method_invocation:): Handle invocation of method qualified by
13596         `super'.
13597         (single_type_import_declaration:): Removed ambiguity check.
13598         (java_pop_parser_context): New local variable `next'. Reset and
13599         set IMPORT_CLASSFILE_NAME flags on current and previous import
13600         list.
13601         (java_accstring_lookup): Use new local macro COPY_RETURN.
13602         (lookup_field_wrapper): New function.
13603         (parser_qualified_classname): Use merge_qualified_name.
13604         (parser_check_super_interface): Broaden error message.
13605         (do_resolve_class): Check for qualified class name in the current
13606         compilation unit if appropriate.
13607         (process_imports): Check for already defined classes.
13608         (check_pkg_class_access): Got rid of call to
13609         get_access_flags_from_decl.
13610         (java_complete_expand_methods): Call safe_layout_class based on
13611         the current class size.
13612         (make_qualified_primary): Build a WFL qualification on primary if
13613         none exists.
13614         (merge_qualified_name): New function.
13615         (make_qualified_name): Use merge_qualified_name.
13616         (resolve_expression_name): Use safe_lookup_field.
13617         (resolve_field_access): Got rid of call to get_access_flags_from_decl.
13618         (resolve_qualified_expression_name): Likewise. Check on resolved
13619         element accessibility.
13620         (not_accessible_p, class_in_current_package): New functions.
13621         (maybe_access_field): Got rid of call to get_access_flags_from_decl.
13622         (patch_method_invocation_stmt): Merged common pieces. Check
13623         accessibility of invoked method.
13624         (check_for_static_method_reference): Add returned type in error
13625         message.
13626         (invocation_mode): Get rid of bogus check on PRIVATE methods.
13627         (refine_accessible_methods_list): Merged two conditions in test.
13628         (java_complete_class): Sanity check on stabilize_ref gone.
13629         * zextract.c (read_zip_archive): Cast lseek second argument to long.
13630
13631 1998-07-28  Per Bothner  <bothner@cygnus.com>
13632
13633         * class.c (hashUtf8String):  Fix - use new JavaSoft specification.
13634
13635 1998-07-24  Tom Tromey  <tromey@cygnus.com>
13636
13637         * gjavah.c (F_NAN): Removed.
13638         (F_NAN_MASK): New macro.
13639         (F_POSITIVE_INFINITY): Removed.
13640         (F_NEGATIVE_INFINITY): Likewise.
13641         (java_float_finite): Rewrote.
13642         (D_NAN_MASK): Renamed.
13643         (java_double_finite): Rewrote.
13644         (D_POSITIVE_INFINITY): Removed.
13645         (D_NEGATIVE_INFINITY): Likewise.
13646
13647         * jcf-dump.c (print_constant): [CONSTANT_Double, CONSTANT_Float]
13648         If verbose, print underlying representation of value in hex.
13649
13650 1998-07-24  Per Bothner  <bothner@cygnus.com>
13651
13652         * buffer.h, buffer.c:  New files.
13653         * Makefile.in (JAVA_OBJS):  Add buffer.o.
13654
13655         Support locals variables and writing their debug entries to .class.
13656         * jcf-write.c:  Simplify some by user new buffer type.
13657         (vode_buffer_grow):  Removed.
13658         (struct localvar_info):  New type.
13659         (localsvars, localvartable):  New buffers.
13660         (localvar_alloc, localvar_free):  New functions.
13661         (generate_bytecode_insns):  Handle local variables.
13662         (generate_classfile):  Write LocalVariableTable attribute.
13663
13664 1998-07-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13665
13666         * jcf-io.c (open_in_zip): Check the zipfile magic number.
13667         * zipfile.h (ZIPMAGIC): New macro.
13668
13669 1998-07-24  Tom Tromey  <tromey@cygnus.com>
13670
13671         * Makefile.in (gjavah.o): Updated dependencies.
13672         (jcf-dump.o): Likewise.
13673         (all.indirect): Use ../gjavah.
13674         (../gjavah$(exeext)): Likewise.
13675         (clean): Don't remove gjavah.
13676         (clean): Remove parse.c, not java/parse.c.
13677         * Make-lang.in (java): Added gjavah.
13678         (gjavah$(exeext)): New target.
13679         (GJAVAH_SOURCES): New macro.
13680         (java.all.build): Added gjavah.
13681         (java.all.cross): Likewise.
13682         (java.rest.encap): Likewise.
13683         * config-lang.in (compilers, stagestuff): Added gjavah.
13684
13685 1998-07-23  Tom Tromey  <tromey@cygnus.com>
13686
13687         * gjavah.c (java_float_finite): New function.
13688         (java_double_finite): Likewise.
13689         (F_POSITIVE_INFINITY): New macro.
13690         (F_NEGATIVE_INFINITY): Likewise.
13691         (F_NAN): Likewise.
13692         (D_POSITIVE_INFINITY): Likewise.
13693         (D_NEGATIVE_INFINITY): Likewise.
13694         (D_NAN): Likewise.
13695         (print_field_info): Use java_float_finite and java_double_finite.
13696
13697 1998-07-23  Per Bothner  <bothner@cygnus.com>
13698
13699         * parse.y (method_header):  Name "this" implicit argument.
13700
13701 1998-07-22  Per Bothner  <bothner@cygnus.com>
13702
13703         * jcf-write.c:  Write out LineNumberTable attribute in .class file.
13704         (linenumber_buffer, linenumber_ptr, linenumber_limit):  New statics.
13705         (put_linenumber):  New function.
13706         (generate_bytecode_insns, generate_classfile):  Write line numbers.
13707
13708 1998-07-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13709
13710         * java-tree.h (CALL_EXPR_FROM_PRIMARY_P): Changed in PRIMARY_P.
13711         (lookup_name, build_known_method_ref, build_class_init,
13712         build_invokevirtual, invoke_build_dtable, match_java_method,
13713         build_field_ref, pushdecl_force_head, build_java_binop,
13714         binary_numeric_promotion, build_decl_no_layout,
13715         build_java_arrayaccess, build_newarray, build_anewarray,
13716         build_java_array_length_access, build_java_arraynull_check): New
13717         extern function prototypes.
13718         (JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR,
13719         JAVA_THIS_EXPR, CALL_CONSTRUCTOR_P): Macro definition moved in
13720         java-tree.h.
13721         * jcf-parse.c (init_outgoing_cpool): Set current_constant_pool_data_ref
13722         to NULL
13723         * jcf.h (jcf_out_of_synch): New extern function prototype.
13724         * parse.h: Static/global function implemented in parse.y
13725         prototyped and declarations moved at the end of the file.
13726         (DECL_P): Check that the argument isn't null.
13727         (JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR,
13728         JAVA_THIS_EXPR): No longer defined here. See java-tree.h
13729         (QUAL_DECL_TYPE): New macro.
13730         (PARAMS): Macro definition removed.
13731         * parse.y: (yyparse, yyerror): Use PROTO instead of PARAMS.
13732         (return_statement:): Call build_return.
13733         (field_access:): Call make_qualified_primary in sub rule.
13734         (method_invocation:): Build method invocation and call
13735         make_qualified_primary when processing primaries.
13736         (java_complete_class): Set IDENTIFIER_SIGNATURE_TYPE by calling
13737         get_type_from_signature.
13738         (java_check_regular_method): Extra integer 0 argument when calling
13739         lookup_java_method2.
13740         (lookup_java_interface_method2): Extra method DECL argument when
13741         calling lookup_java_interface_method2.
13742         (java_method_add_stmt): Set TREE_SIDE_EFFECTS on newly created
13743         COMPOUND_EXPR node.
13744         (java_complete_expand_method): Layout current class iff not
13745         already done. Don't process interface's methods.
13746         (java_complete_expand_method): Use super class only if it
13747         exists. Use current class otherwise.
13748         (make_qualified_primary): New function.
13749         (resolve_expression_name): Process qualified expression or
13750         expression from primary the same way.
13751         (resolve_expression_name): Two last arguments to
13752         resolve_field_access are now NULL_TREEs.
13753         (resolve_field_access): New variable is_static. Local field must
13754         be DECLs. is_static computed on field DECLs only. Append code in
13755         where_found to the field access if necessary. Use QUAL_DECL_TYPE
13756         to initialize field_type.
13757         (resolve_qualified_expression_name): New local variable,
13758         previous_call_static and is_static. Handle primaries with function
13759         calls, casts, array references and `this'. `super' now handled as
13760         `(super_class)this'. Use is_static to clarify boolean expressions.
13761         Added code to handle case where a proper handle is required to
13762         access a field. Use QUAL_DECL_TYPE where applicable.
13763         (maybe_access_field): New function.
13764         (patch_method_invocation_stmt): New arguments primary, where,
13765         is_static. Branch of the test on CALL_EXPR_FROM_PRIMARY_P
13766         deleted. Use `where' as a type to search from if specified. Check
13767         for static method reference where forbidden. Append primary or
13768         current_this to the argument list if not calling constructor nor
13769         static methods.
13770         (check_for_static_method_reference): New function.
13771         (patch_invoke): Layout the class on which new is done if
13772         necessary.
13773         (lookup_method_invoke): Changed format to report errors on
13774         methods.
13775         (qualify_ambiguous_name): New local variable this_found. Now
13776         handle things from primaries. Method call are considered
13777         expression names.
13778         (identical_subpath_p): NULL_TREE arguments to breakdown_qualified
13779         changed into NULLs.
13780         (not_initialized_as_it_should_p): Comply with the new DECL_P.
13781         (java_complete_tree): New case fo RETURN_EXPR. Process function
13782         call arguments in separate function.
13783         (complete_function_arguments): New function.
13784         (build_method_invocation): Don't use CALL_EXPR_FROM_PRIMARY_P
13785         anymore.
13786         (patch_assignment): Take the return function slot into account as
13787         a RHS. Distinguish assignment from a return.
13788         (valid_ref_assignconv_cast_p): Use build_java_argument_signature
13789         when checking methods in interfaces.
13790         (resolve_type_during_patch): NULL argument to unresolve_type_p
13791         instead of NULL_TREE.
13792         (patch_newarray): Fixed typo in comment.
13793         (buid_this): Build a WFL with `kw_this' instead of a FIELD_DECL.
13794         (build_return, patch_return): New functions.
13795         * typeck.c (lookup_java_constructor): Fixed typo in comment.
13796
13797 1998-07-21  Per Bothner  <bothner@cygnus.com>
13798
13799         * constants.c (find_name_and_type_constant, find_fieldref_index,
13800         find_methodref_index):  New methods.
13801         * expr.c (build_invoke_non_interface):  If flag_emit_class_files,
13802         just return given method.  Also, rename to build_known_method_ref.
13803         (expand_invoke):  Rename call to build_invoke_non_interface.
13804         * java-tree.h, parse.h:  Update prototype.
13805         * parse.y, decl.c, jcf-parse.c:  Suppress calls to back-end functions
13806         (such as expand_expr_stmt) if flag_emit_class_files.
13807         * jcf-write.c (RESERVE, OP1, OP2, OP4, NOTE_PUSH, NOTE_POP,
13808         STACK_TARGET, IGNORE_TARGET):  New macros.
13809         (code_buffer, code_ptr, code_limit, code_S, code_SP_max):  New globals.
13810         (generate_bytecode_insn):  New function to generate method's bytecode.
13811         (generate_classfile):  Node generate Code attribute for a method.
13812         (code_buffer_grow, push_constant1, push_constant2, push_int_const,
13813         push_long_const, field_op, adjust_typed_op, maybe_wide):
13814         New functions used by generate_bytecode_insn.
13815
13816         * typeck.c (signature_include_return):  Remove variable.
13817         (push_java_argument_signature, build_java_argument_signature):  New.
13818         (build_java_signature):  Use push_java_argument_signature.
13819         * parse.y:  Use build_java_argument_signature instead of fiddling
13820         with signature_include_return.
13821
13822 1998-07-17  Tom Tromey  <tromey@cygnus.com>
13823
13824         * gjavah.c (print_c_decl): Always generate JArray<>* for array
13825         types.
13826
13827         * Makefile.in (all.indirect): Added gjavah$(exeext).
13828         (gjavah$(exeext)): Added $(exeext).
13829         (clean): Likewise.
13830
13831 1998-07-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>
13832
13833         * class.c (layout_class): Call to java_layout_parsed_class replace
13834         by safe_layout_class.
13835         * expr.c (build_java_array_length_access): Removed static storage
13836         class in the function definition.
13837         (build_java_arraynull_check): Likewise.
13838         Also fixed typos in two comments.
13839         * lex.c (java_init_lex): Initialize static global kw_length.
13840         (java_lex): Use BUILD_OPERATOR on RETURN_TK.
13841         * lex.h (JAVA_FLOAT_RANGE_ERROR): Add extra argument to
13842         java_lex_error.
13843         (JAVA_INTEGRAL_RANGE_ERROR): Likewise.
13844         * parse.h (resolve_no_layout): New static function declaration.
13845         (get_identifier_in_static): Declaration removed.
13846         (java_layout_parsed_class): Function name declaration changed to
13847         safe_layout_class.
13848         (build_newarray_node, patch_newarray, resolve_type_during_patch,
13849         not_initialized_as_it_should_p, build_this): New static function
13850         declarations.
13851         (pushdecl_force_head, build_java_binop, int_fits_type_p,
13852         binary_numeric_promotion, stabilize_reference,
13853         build_decl_no_layout, build_java_arrayaccess): Extern function
13854         declarations moved into their own section.
13855         (build_newarray, build_anewarray, build_java_array_length_access,
13856         build_java_arraynull_check): New extern function declarations.
13857         (UNARY_PLUS_EXPR): Macro renamed into JAVA_UNARY_PLUS_EXPR.
13858         (JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR, JAVA_THIS_EXPR): New
13859         fake tree codes.
13860         (CALL_CONSTRUCTOR_P): New macro.
13861         * parse.y (kw_length): New static global tree node.
13862         (return_statement): Tagged <node>.
13863         (RETURN_TK): Tagged <operator>.
13864         (variable_declarator_id:): Build variable declaration with an
13865         empty initialization value if a syntax error was found in the
13866         initialization part of the variable declaration.
13867         (statement_without_trailing_substatement:): return_statement: now
13868         uses the default rule.
13869         (return_statement:): Temporarily fixed to return NULL_TREE.
13870         (primary_no_new_array:): Call build_this when THIS_TK was parsed.
13871         (class_instance_creation_expression:): Class creation rules now
13872         call build_method_invocation upon reduction.
13873         (array_creation_expression:): Rules call build_newarray_node upon
13874         reduction.
13875         (dim_exprs:): Build a list of dimension expressions.
13876         (dim_expr:): Store location of the OSB_TK in the dimension
13877         expression node.
13878         (method_invocation:): Added a new error rule.
13879         (build_unresolved_array_type): WFL argument may also be an array
13880         on a primitive type. Name of the argument changed to reflect this.
13881         (method_declarator): Insert argument type at the beginning of the
13882         argument type list and later reverse the list.
13883         (unresolved_type_p): Argument 'returned' may be optionally
13884         NULL_TREE.
13885         (java_layout_class_from_source): Function renamed
13886         safe_layout_class.
13887         (resolve_and_layout): Now call resolve_no_layout and
13888         safe_layout_class.
13889         (resolve_no_layout): New function.
13890         (purify_type_name): New function.
13891         (complete_class_report_errors): Call purify_type_name during error
13892         report on a type not found.
13893         (process_imports): error_found local variable doesn't need to be
13894         initialized to zero.
13895         (declare_local_variables): New local type_wfl. Fixed typo in error
13896         message. type_wfl assigned to unresolved type and used to register
13897         incomplete type. Build a WFL around the variable initialization
13898         statement so that debug info can be generated on it.
13899         (source_start_java_method): Reverse argument list after they've
13900         been processed.
13901         (current_this): New static global variable.
13902         (java_complete_expand_methods): Set current_this when appropriate.
13903         (resolve_expression_name): Build correct static and non static
13904         field access bearing a simple name.
13905         (resolve_field_access): Resolve the length field of arrays. Handle
13906         f.m() cases.
13907         (patch_method_invocation_stmt): Set the type of the method
13908         invocation to error_mark_node. This value is later overridden by a
13909         valid type, if any. Don't handle qualified constructor invocation
13910         as qualified method invocation. Call lookup_method_invoke with its
13911         new flag. It's no longer necessary to access the selected method
13912         as the value of a tree list. Handle constructor invocation.
13913         (patch_invoke): Reverse argument list when invoking non interface
13914         methods. Insert call to new as the first argument of the
13915         constructor.
13916         (invocation_mode): Return a INVOKE_STATIC is the invoked method is
13917         defined within a final class. Return INVOKE_STATIC if the invoked
13918         method is a constructor.
13919         (lookup_method_invoke): New lc argument is a flag to indicate a
13920         constructor lookup. Now handle constructor lookup. Choose the most
13921         specific method in case several were matching the invocation
13922         requirements. Return a method decl instead of a tree list featuring
13923         one single method decl element.
13924         (refine_accessible_methods_list): New lc flag argument to
13925         indicate that a constructor is being looked up.
13926         (not_initialized_as_it_should_p): New function.
13927         (java_complete_tree): Now process fake tree codes
13928         JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR and JAVA_THIS_EXPR. Call
13929         save_expr on resolved function call arguments. Case on
13930         UNARY_PLUS_EXPR changed into a case on JAVA_UNARY_PLUS_EXPR.
13931         (patch_assignment): LHS can be a field access expression. When
13932         dealing with reference, lhs_type is the promoted type of the
13933         rhs_type, not the RHS. Use not_initialized_as_it_should_p where
13934         applicable.
13935         (operator_string): JAVA_UNARY_PLUS_EXPR replaces UNARY_PLUS_EXPR.
13936         (patch_binop): Use not_initialized_as_it_should_p where
13937         applicable.
13938         (build_unaryop): JAVA_UNARY_PLUS_EXPR replaces UNARY_PLUS_EXPR.
13939         (patch_unaryop): Likewise. And use not_initialized_as_it_should_p
13940         where applicable.
13941         (resolve_type_during_patch): New function.
13942         (patch_cast): Call resolve_type_during_patch to resolve type and
13943         report error accordingly.
13944         (patch_array_ref): Use not_initialized_as_it_should_p where
13945         applicable. Array base expression is saved before being
13946         used. Promote the type of an array elements if it contains non
13947         builtin types.
13948         (build_newarray_node, patch_newarray, build_this): New functions.
13949
13950 1998-07-16  Tom Tromey  <tromey@cygnus.com>
13951
13952         * gjavah.c (print_c_decl): UTF8_GET increments pointer; don't
13953         increment it in `for' statement.
13954         (print_field_info): If number is inf or nan, don't print it.
13955         (print_method_info): If method name is `delete', just ignore it.
13956         (print_c_decl): Special-case jstringArray.
13957
13958         * gjavah.c (help): New function.
13959         (no_argument): New function.
13960         (usage): Changed text.
13961         (main): Rewrote argument handling.  Now handles -v, --help,
13962         --version.
13963         (version): New function.
13964         (found_error): New global.
13965         (main): Return found_error.
13966         (generate_access): Set found_error.
13967         (print_c_decl): Likewise.
13968
13969 1998-07-15  Tom Tromey  <tromey@cygnus.com>
13970
13971         * gjavah.c (print_c_decl): Don't print "," when examining field.
13972         Skip type name when looking at "[L" types.
13973         (process_file): Now static.
13974         (generate_access): Now returns int.
13975         (last_access_generated): New global.
13976         (process_file): Clear last_access_generated; make multiple passes
13977         over the class.
13978         (print_field_info): Just return if generate_access returns true.
13979         (print_method_info): Likewise.  Also, allow <init> functions to
13980         pass through.
13981         (print_c_decl): Added is_init argument.  Print constructors
13982         properly.
13983         (print_cxx_classname): Use UTF8_GET to extract characters from
13984         string.
13985         (print_base_classname): New function.
13986         (print_class_decls): New function.
13987         (process_file): Use it.
13988         (utf8_cmp): New function.
13989
13990 1998-07-13  Nick Clifton  <nickc@cygnus.com>
13991
13992         * lang-options.h: Format changed to match changes in gcc/toplev.c
13993         to implement a --help option.
13994
13995 1998-07-10  Brendan Kehoe  <brendan@cygnus.com>
13996
13997         * decl.c (init_decl_processing): Revert change to dtable_type.
13998
13999 1998-07-09  Per Bothner  <bothner@cygnus.com>
14000
14001         * java-tree.h (CLASS_P):  Changed DECL_LANG_FLAG_7 -> TYPE_LANG_FLAG_4.
14002
14003 1998-07-08  Brendan Kehoe  <brendan@cygnus.com>
14004
14005         * decl.c (init_decl_processing): Set CLASS_LOADED_P on dtable_type.
14006
14007         * lang.c (lang_init): Default flag_exceptions to 1, without
14008         checking to see if it's 2 first.
14009
14010 1998-07-08  Jeffrey A Law  (law@cygnus.com)
14011
14012         * constants.c: Include "system.h".
14013         * decl.c: Likewise.
14014         * lang.c (flag_new_exceptions): Get via extern now.
14015         (lang_init_options): New functions.  Turn on flag_new_exceptions.
14016
14017 1998-07-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14018
14019         * lex.c (java_lex): Return 0 when we see an invalid character in
14020         the input.
14021
14022         * lex.c (java_read_char): Specify extra argument when calling
14023         java_lex_error.
14024         (java_read_unicode, java_parse_end_comment,
14025         java_parse_escape_sequence): Likewise,
14026         (java_lex): Specify extra argument when calling
14027         java_lex_error. Test that IDs are beginning with a legal character
14028         for IDs. Handle invalid characters with an error message and a
14029         call to java_lex_error.
14030         (java_lex_error): Adjust column position by new argument
14031         `forward'. Issue an error even if in the middle of reporting an
14032         other error.
14033
14034 1998-07-07  Brendan Kehoe  <brendan@cygnus.com>
14035
14036         * jcf-io.c (find_class): Zero out BUFFER before we use it, since
14037         we don't explicitly put a null pointer when we're copying it.
14038
14039 1998-07-07  Tom Tromey  <tromey@cygnus.com>
14040
14041         * gjavah.c (print_cxx_classname): New function.
14042         (super_class_name): Likewise.
14043         (print_super_fields): Removed.
14044         (in_super): Removed.
14045         (print_field_info): Never generate #defines.
14046         (print_c_decl): Changed generated types to match JNI.  No longer
14047         print class name before method name.
14048         (print_method_info): Print "static" before static methods.
14049         Print "virtual" before non-final methods.
14050         (usage): Use exit(1), not exit(-1).
14051         (main): Likewise.
14052         (print_field_info): Use %.17g to print a double.
14053         (last_access): New globals.
14054         (process_file): Initialize last_access.
14055         (usage): Now static.
14056         (ACC_VISIBILITY): New define.
14057         (generate_access): New function.
14058         (print_field_info): Call it.
14059         (print_method_info): Likewise.  Also, generate information for all
14060         methods, not just native methods.  Return void.
14061         (print_c_decl): Return void.
14062         (print_field_info): Return void.
14063
14064 1998-07-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14065
14066         * Makefile.in (JAVABISONFLAGS): Specific flag for bison when
14067         processing the jc1 grammar file. Prefix bison functions and
14068         variables with java_.
14069         (parse.c): Dependencies on parse.h and lex.h
14070         * expr.c (build_java_arrayaccess): Function now global.
14071         * java-tree.h: Comment reorganized to carry on previous
14072         classification effort.
14073         (RESOLVE_EXPRESSION_NAME_P, RESOLVE_PACKAGE_NAME_P,
14074         RESOLVE_TYPE_NAME_P): New flags on WFLs.
14075         * jcf-parse.c (parse_source_file): java_parse_source_file renamed
14076         java_parse (new prefix java_ generated by bison).
14077         (java_layout_parsed_class, java_register_parsed_class): Function
14078         call removed.
14079         (yyparse): Removed unnecessary call to init_outgoing_cpool.
14080         * lex.c (static tree wfl_op): Variable deleted.
14081         (java_init_lex): Initialize kw_super and kw_this. Initialize more
14082         ctxp fields to NULL_TREE.
14083         (java_lex): No longer create WFL for operators. Filename caching
14084         mechanism deleted. Call BUILD_OPERATOR for `.', '(', '['. Strings
14085         created as STRING_CST and later expanded. Removed extra argument
14086         to BUILD_OPERATOR and BUILD_OPERATOR2. Build operators for THIS
14087         and SUPER.
14088         (build_wfl_node): Removed code in comments.
14089         * lex.h (BUILD_OPERATOR, BUILD_OPERATOR2): No longer build a WFL but
14090         store token and location data in the current bison token.
14091         * parse.h: Removed pre-processor based symbol prefixes hack. Moved
14092         static/extern function declaration at the beginning of the file.
14093         (struct qualification): Data structure definition deleted.
14094         (RESOLVE_CHAIN_REMAINDER): Macro definition deleted.
14095         (qualify_ambiguous_name): Function declaration modified. Function
14096         now returns nothing.
14097         (build_array_ref, patch_array_ref, make_qualified_name,
14098         resolve_qualified_expression_name, maybe_generate_clinit,
14099         resolve_field_access): New static function declarations.
14100         (build_java_arrayaccess): New extern function declaration.
14101         (enum { RESOLVE_EXPRESION_NAME...}): Enum deleted.
14102         (CALL_EXPR_PRIMARY): Macro deleted.
14103         (EXPR_WFL_QUALIFICATION, QUAL_WFL, QUAL_RESOLUTION): New macros.
14104         (struct parser_ctxt): Field initialized_final
14105         removed. non_static_initialized, static_initialized: New fields.
14106         * parse.y (static tree kw_super, static tree kw_this): New global
14107         static.
14108         (%union): tree wfl field of operator member replaced by int
14109         location. WFLs are non longer created for operators.
14110         (OSB_TK, DOT_TK, THIS_TK, SUPER_TK): Tagged <operator>.
14111         (qualified_name:): Now calls make_qualified_name to build the
14112         identifier.
14113         (type_declaration:): Consider generating <clinit> when class
14114         parsing completed.
14115         (variable_declarator:): Directly build an assignment node when the
14116         variable is initialized when declared.
14117         (this_or_super:): Build a WFL and set current location when THIS
14118         or SUPER are parsed.
14119         (expression_statement:): Wrap statement around a WFL.
14120         (primary_no_new_array:): Fixed typo. Changed value returned by
14121         THIS_TK because of its new type (temporary).
14122         (dim_exprs:): Temporary fix because of OSB_TK's new type.
14123         (field_access:): Build qualified name with SUPER.
14124         (method_invocation:): Fixed returned value because of SUPER's new
14125         type.
14126         (array_access:): Use OSB_TK location information.
14127         (post_increment_expression:, post_decrement_expression:,
14128         unary_expression:, pre_increment_expression:,
14129         pre_decrement_expression:, unary_expression_not_plus_minus:,
14130         cast_expression:, multiplicative_expression:,
14131         additive_expression:, shift_expression:, relational_expression:,
14132         equality_expression:, and_expression:, exclusive_or_expression:,
14133         inclusive_or_expression:, conditional_and_expression:,
14134         conditional_or_expression:, assignment:): Use new location/token
14135         information available on operators.
14136         (create_class): Set super_decl_type to NULL_TREE when processing
14137         java.lang.Object.
14138         (register_fields): Field initialization is now a MODIFY_EXPR
14139         node. Chain initialization code to the matching lists (according
14140         the the field declaration modifiers).
14141         (maybe_generate_clinit): New function.
14142         (method_header): Don't set method's DECL_NAME to a WFL when adding
14143         methods to java.lang.Object.
14144         (resolve_and_layout): Now can return NULL_TREE if the type
14145         resolution fails. Otherwise, return the class DECL instead of its
14146         TYPE.
14147         (check_method_redefinition): Don't patch method DECL_NAME if it
14148         belongs to java.lang.Object.
14149         (process_imports): Simply assign error_found to the value returned
14150         by check_pkg_class_access.
14151         (declare_local_variables): Don't use their init statements (if
14152         any) when parsing error were previously found. Reuse MODIFY_EXPR
14153         build during parsing as an init statement.
14154         (java_method_add_stmt): Now return the current method body.
14155         (java_layout_parsed_class, java_register_parsed_class): Functions
14156         removed.
14157         (java_complete_expand_methods): Initialize the constant pool on a
14158         per class basis. Layout the classes before expanding their method
14159         bodies. Don't try expand artificial constructor code if error were
14160         found. Make the classes data and register them if no error were
14161         found.
14162         (java_complete_expand_method): Retrieve an artificial constructor
14163         argument list before entering its body. Assign the top block to
14164         the artificial constructor function body and set types of declared
14165         blocks and compound statements to void. Walk method body if not an
14166         artificial constructor.
14167         (make_qualified_name, cut_identifier_in_qualified): New functions.
14168         (resolve_expression_name): Fixed comments. Save/restore the
14169         current class CLASS_LOADED_P flag value. Build non qualified
14170         static field access and handle qualified expression names.
14171         (resolve_field_access, resolve_qualified_expression_name): New
14172         functions.
14173         (patch_method_invocation_stmt): Use the new expression resolution
14174         scheme, calling resolve_field_access when the function call is
14175         resolved as an expression.
14176         (qualify_ambiguous_name): Function rewritten to work on qualified
14177         expression produced by make_qualified_name.
14178         (java_complete_tree): Promote type when function's argument are
14179         RECORD_TYPEs. While processing the MODIFY_EXPR case: don't patch
14180         the assignment to discover further errors if RHS is a expression
14181         name that fails to evaluate. Declare LHS initialized even though
14182         the assignment failed. Don't use the location variable and removed
14183         extra argument in patch function calls. Now handle the ARRAY_REF
14184         case and build internal string representation when STRING_CSTs are
14185         walked.
14186         (build_method_invocation): Don't wrap function call around a WFL.
14187         (build_assignment): Likewise. Use the operator location
14188         information.
14189         (patch_assignment): Handle array access LHSs. Handle error
14190         provenance, resulting in a better error report.
14191         (build_binop): Use op_location from operator as binop location
14192         information.
14193         (build_unaryop, build_incdec, build_cast): Likewise.
14194         (patch_binop): Extract location information from the node. Fixed
14195         typo in error message.
14196         (patch_unary_op): Extract location information from the node.
14197         (build_array_ref, patch_array_ref): New functions.
14198
14199 1998-07-01  Tom Tromey  <tromey@cygnus.com>
14200
14201         * expr.c (expand_java_INSTANCEOF): Changed calling convention to
14202         match _Jv_IsInstanceOf.
14203         * decl.c (init_decl_processing): Use _Jv_NewArray, not
14204         soft_newarray.  Use _Jv_IsInstanceOf, not soft_instanceof.
14205
14206 1998-06-30  Tom Tromey  <tromey@cygnus.com>
14207
14208         * decl.c (init_decl_processing): Functions are now named
14209         _Jv_MonitorEnter and _Jv_MonitorExit, and return jint.
14210
14211 1998-06-29  Per Bothner  <bothner@cygnus.com>
14212
14213         * java-tree.h (load_class):  Add prototype.
14214         * class.c (is_compiled_class):  Add missing arg to load_class.
14215         * expr.c (expand_java_NEW):  Call load_class.
14216         * parse.y (process_import):  Removed bogus use of void return value.
14217
14218 1998-06-25  Per Bothner  <bothner@cygnus.com>
14219
14220         * decl.c, java-tree.h (soft_athrow_node):  Renamed to soft_node.
14221         Function name is "_Jv_Throw" instead of "soft_athrow".
14222         * decl.c, java-tree.h (soft_new_node):  Renamed to alloc_object_node.
14223         Function name is "_Jv_AllocObject" instead of "soft_new".
14224         Takes an extra parameter (object size).
14225         * expr.c:  Update calls.
14226
14227 1998-06-24  Per Bothner  <bothner@cygnus.com>
14228
14229         * lex.c (java_get_line_col):  Handle end-of-file.
14230         * except.c (expand_end_java_handler):  Handle null type (i.e. finally).
14231
14232 1998-06-24  Andrew MacLeod  <amacleod@cygnus.com>
14233
14234         * lang.c (lang_init): Make -fexceptions the default.
14235         * except.c (maybe_start_try, maybe_end_try): Don't do anything if
14236         exception handling is not turned on.
14237
14238 1998-06-23  Andrew MacLeod  <amacleod@cygnus.com>
14239
14240         * lang.c (flag_new_exceptions): Make this this default.
14241         * decl.c (end_java_method): Call emit_handlers.
14242         * except.c (method_init_exceptions): Set language code and version.
14243         (expand_start_java_handler): Enable exception, and call
14244         expand_eh_region_start.
14245         (expand_end_java_handler): Enable exception, and set up catch blocks.
14246         (emit_handlers): New routine to generate the saved handlers.
14247         * java-except.h (emit_handlers): Add prototype.
14248
14249 1998-06-12  Per Bothner  <bothner@cygnus.com>
14250
14251         We used to have three different representations of the constant pool:
14252         the CPool structure, the tree_constant_pool, and the constructures
14253         used to build the Class object (which may need class and string
14254         constants) in compiled code.  None were appropriate for compiling
14255         to .class files, so I did a major overhaul.
14256
14257         First, the tree_constant_pool array was removed.  Things were
14258         modified to the CPool structure in the JCF could be used.
14259         Second, a "capacity" field was added to the CPool, and functions
14260         written to search for a matching constant, adding one if not found.
14261         The code that generated the Class object was changed to use a CPool.
14262         The actual TREE_LISTs used to build the CONSTRUCTORs used for
14263         the static Class object are now only in build_constants_constructor.
14264         Finally, I wrote code which can generate a .class file (including its
14265         constant pool) from the RECORD_TYPE of a class.  This is a big step
14266         on the way to compiling Java source into .class files.
14267
14268         * jcf-write.c:  New file. Writes out a RECORD_TYPE as a .class file.
14269         * Makefile.in (JAVA_OBJS):  Added jcf-write.o.
14270
14271         * java-tree.h (CPOOL_UTF, CONSTANT_ResolvedFlag,
14272         CONSTANT_ResolvedString, CONSTANT_ResolvedClass):  New macros.
14273         (NAME_AND_TYPE_NAME, NAME_AND_TYPE_SIGNATURE, COMPONENT_REF_NAME,
14274         COMPONENT_REF_NAME_AND_TYPE, COMPONENT_REF_SIGNATURE): Redefined.
14275         (COMPONENT_REF_CLASS):  Replaced by COMPONENT_REF_CLASS_INDEX.
14276         (lang_type):  Removed constant_pool field.
14277         * jcf.h (CPool):  Renamed size to count.  Added field capacity.
14278         (CPOO_COUNT, CPOOL_UINT, CPOOL_USHORT1, CPOOL_USHORT2,
14279         CPOOL_FINISH, CPOOL_INIT, CPOOL_REINIT):  New macros.
14280         Rewrite some of the old JCF_XXX in terms of CPOOL_XXX macros.
14281
14282         * constants.c (current_constant_pool_tags, current_constant_pool_data,
14283         current_constant_pool_length), java-tree.h: Replaced by outgoing_cpool.
14284         * constants.c (build_constants_constructor):  Use new outgoing_cpool.
14285         (set_constant_entry, find_constant1, find_constant2,
14286         find_class_constant, count_constant_pool_bytes, write_constant_pool,
14287         find_utf8_constant, find_class_or_string_constant):  New functions.
14288
14289         * jcf-parse.c (load_class):  Don't save/restore tree-constant_pool.
14290         (get_constant):  Use current_jcf.cpool instead of tree_constant_pool.
14291         (give_name_to_class, get_class_constant):  Likewise.
14292         * jcf-parse.c, java-tree.h (tree_constant_pool):  Removed.
14293         (get_name_and_type_constant, get_ref_constant):  Removed.
14294         * parse.h (parser_ctxt):  Remove field tree_constant_pool.
14295         * parse.y:  Don't save/restore tree_constant_pool.
14296         * verify.c (verify_jvm_instructions):  Update for new approach.
14297         * expr.c (expand_invoke, expand_java_field_op): Likewise.
14298
14299         * lang-options.h:  Added -femit-class-file, -femit-class-files.
14300         * lang.c (flag_emit_class_files), java-tree.h:  New flag.
14301         (lang_f_options):  Added "emit-class-file(s)".
14302
14303         * expr.c (build_java_arrayaccess):  Generate more efficient array
14304         bounds checking, by using unsigned compare.
14305
14306         * expr.c (expand_invoke):  Re-arrange error checks to make more robust.
14307
14308 1998-06-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14309
14310         * parse.h: New comment on the handling of unresolved type
14311         identifiers. JDEPs are now part of the jdep_code enum.
14312         (typedef struct jdep): Now use enum jdep_code or int, depending on
14313         availability. Both are narrowed down to an 8 bits bitfield.
14314         (CALL_EXPR_PRIMARY): Fixed comment.
14315
14316 1998-06-10  Tom Tromey  <tromey@cygnus.com>
14317
14318         * Make-lang.in (java): Added gjavac and jvgenmain.
14319         (java.start.encap): Depend on gjavac.
14320         (java.rest.encap): Depend on jvgenmain.
14321
14322         * Make-lang.in (JAVA_INSTALL_NAME): Name is gjavac, not c++.
14323         (JAVA_CROSS_NAME): Likewise.
14324         (java.all.build): Depend on jvgenmain and gjavac.
14325         (java.all.cross): Depend on jvgenmain and gjavac-cross.
14326         (jvgenmain$(exeext)): New target.
14327         (java.install-common): Wrote.
14328         * config-lang.in (compilers, stagestuff): Added gjavac and
14329         jvgenmain.
14330
14331 1998-06-10  Dave Brolley  <brolley@cygnus.com>
14332
14333         * lang.c (lang_decode_option): New argc/argv interface.
14334
14335 1998-06-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14336
14337         * ChangeLog: Fixed entries not compliant with the Gnu Coding Standard.
14338         * decl.c (build_decl_no_layout): New function.
14339         * expr.c (java_lang_expand_expr): Layout declarations found in
14340         blocks before they're pushed.
14341         * jcf-parse.c (load_class): Save current line when parsing class
14342         file.
14343         (parse_source_file): Register class before expanding their
14344         methods.
14345         * lang.c (put_decl_node): Produce `null' when `void *' is
14346         processed.
14347         * lex.c (static tree wfl_op): New static global, for error report
14348         on casts.
14349         (java_init_lex): wfl_operator and wfl_op initialized
14350         here. Filename caching added for wfl_op. Return wfl_op when `(' is
14351         parsed.
14352         * parse.h (build_unaryop, build_incdec, patch_unaryop, build_cast,
14353         patch_cast, valid_ref_assignconv_cast_p, can_cast_to_p,
14354         build_unresolved_array_type): New static function definitions.
14355         (build_decl_no_layout): New extern function declared.
14356         (OBSOLETE_MODIFIER_WARNING): Report error only if the WFL of the
14357         faulty modifier exists.
14358         (TYPE_INTERFACE_P, TYPE_CLASS_P): New macros.
14359         (ERROR_CAST_NEEDED_TO_INTEGRAL): Error message tuned.
14360         (UNARY_PLUS_EXPR): New fake operator.
14361         (struct parser_ctxt): New field osb_number.
14362         * parse.y (static tree wfl_operator): New static WFL for operator
14363         bound error messages.
14364         (DECR_TK, INCR_TK): Moved.
14365         (OP_TK): Tagged <operator>.
14366         (array_type:): Now call build_unresolved_array_type.
14367         (dim_expr:): Count the number of '[' seen.
14368         (post_increment_expression, post_decrement_expression,
14369         pre_increment_expression, pre_decrement_expression,
14370         unary_expression_not_plus_minus, unary_expression:): Actions are
14371         now building the corresponding unary expressions.
14372         (cast_expression:): Actions are now building cast expressions.
14373         (build_unresolved_array_type): New function.
14374         (create_interface): Reset the number of declared interfaces.
14375         (create_class): Likewise.
14376         (method_header): Methods declared within the scope of an interface
14377         are now implicitly set public and abstract.
14378         (java_complete_class): Variable's and parameter's type are patched
14379         with a promoted type.
14380         (declare_local_variables): Resolved non builtin types are promoted
14381         before being used to build a variable decl. Removed type patch
14382         posted on variable initialization statement.
14383         (source_start_java_method): Use build_decl_no_layout to build the
14384         decl of a parameter of incomplete type.
14385         (java_register_parsed_class): Process interfaces too. Call
14386         rest_of_decl_compilation on each processed class declarations.
14387         (java_complete_expand_methods): Don't attempt to expand things in
14388         interfaces.
14389         (java_complete_tree): Process CONVERT_EXPR, even though it always
14390         has a type. Propagate error_mark_node to node's type too. Promote
14391         method's call argument type and return error_mark_node if
14392         argument's completion didn't work. MODIFY_EXPR can have a WFL as a
14393         RHS. Fixed bug in the handling of bogus RHS of a fixed type. Now
14394         handle unary operator nodes.
14395         (build_assignment): Added comment.
14396         (print_int_node): New function.
14397         (patch_assignment): New second argument. New error handling. Use
14398         print_int_node. Handle references. Use can_cast_to_p to issue
14399         different error message according to the context and check upon
14400         the initialization of the RHS.
14401         (can_cast_to_p, valid_ref_assignconv_cast_p): New functions.
14402         (operator_string): Handle more operators.
14403         (patch_binop): No longer use a function static
14404         wfl_operator. Improved error message on shift distance.
14405         (build_unaryop, build_incdec, build_cast, patch_unaryop,
14406         patch_cast): New functions.
14407
14408 1998-06-05  Per Bothner  <bothner@cygnus.com>
14409
14410         * jvspec.c:  New file.
14411         * Make-lang.in:  New rules to build gjavac from jvspec.c and ../gcc.c.
14412
14413         * java-tree.h (identifier_subst):  Add declaration.
14414
14415 1998-06-04  Tom Tromey  <tromey@cygnus.com>
14416
14417         * jvgenmain.c (main): Generate call to JvRunMain.
14418
14419         * class.c (make_class_data): Push value for "sync_info" field.
14420         * decl.c (init_decl_processing): Push "sync_info" field.
14421
14422 1998-06-03  Per Bothner  <bothner@cygnus.com>
14423
14424         * typeck.c (build_java_array_type):  Set TYPE_NAME to actual
14425         Java (source) name, not signature.
14426         Set TYPE_ALIGN to (at least) that of element_type.
14427
14428 1998-06-02  Per Bothner  <bothner@cygnus.com>
14429
14430         * class.c:  Moved classname-mangling-rekated code to ...
14431         * mangle.c:  ... this new file.
14432         * jvgenmain.c:  New program (needs mangle.c) to generate main program.
14433         * Makefile.in:  Update for above changes.
14434
14435 1998-06-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14436
14437         * expr.c (truthvalue_conversion): Convert integer and floating
14438         point value to their truth value.
14439         * lex.c (java_lex): Handle the `null' literal.
14440         * parse.h (JREFERENCE_TYPE_P, DECL_P): New macros.
14441         (ERROR_CANT_CONVERT_TO_BOOLEAN, ERROR_CANT_CONVERT_TO_NUMERIC,
14442         ERROR_CAST_NEEDED_TO_INTEGRAL, ERROR_VARIABLE_NOT_INITIALIZED):
14443         New macros.
14444
14445         * parse.y: Reorganization/documentation on token declaration.
14446         (binop_lookup[]): New added new tree codes.
14447         (relational_expression): Build corresponding binary operators.
14448         (equality_expression, conditional_and_expression,
14449         conditional_or_expression): Likewise.
14450         (java_complete_class): Fix crash in debug message.
14451         (java_complete_tree): Check initialization of method call
14452         arguments. Further bogus node evaluation to detect more error
14453         during assignments. Handles more binary operators.
14454         (patch_assignment): Use DECL_P.
14455         (build_binop): Fix crash when using URSHIFT_EXPR, a Java only tree
14456         code.
14457         (operator_string): Handle more case. Compacted source.
14458         (patch_binop): Changed function comment. Checking for
14459         uninitialized first operand takes the compound assignment into
14460         account and uses DECL_P. Checking for uninitialized second operand
14461         delayed to routine's end. Use macros to issue type bound error
14462         messages and issue messages on both operands if their types are
14463         different. Force fixed type into node. Handle all binary
14464         operators.
14465
14466 1998-05-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14467
14468         * java-tree.h (COMPOUND_ASSIGN_P, INITIALIZED_P): New macros.
14469         * lex.c (java_lex): Use BUILD_OPERATOR and BUILD_OPERATOR2 to
14470         build operator node and return tokens.
14471         * lex.h (BUILD_OPERATOR, BUILD_OPERATOR2): New macros.
14472         * parse.h (java_complete_tree): Changed returned type in prototype.
14473         (build_method_invocation, build_assignment, patch_assignment,
14474         patch_binop): New static function declarations.
14475         (JFLOAT_TYPE_P, JNUMERIC_TYPE_P, JPRIMITIVE_TYPE_P, JSTRING_P,
14476         BUILD_EXPR_WFL): New macros.
14477         * parse.y (enum tree_code binop_lookup[]): New static for token to
14478         TREE_CODE lookup.
14479         (%union): Parser union has new sub-structure `operator'.
14480         (ASSIGN_TK, MULT_ASSIGN_TK, DIV_ASSIGN_TK, REM_ASSIGN_TK,
14481         PLUS_ASSIGN_TK, MINUS_ASSIGN_TK, LS_ASSIGN_TK, SRS_ASSIGN_TK,
14482         ZRS_ASSIGN_TK, AND_ASSIGN_TK, XOR_ASSIGN_TK, OR_ASSIGN_TK,
14483         ASSIGN_ANY_TK): Tokens tagged `operator'.
14484         (EQ_TK, GTE_TK, ZRS_TK, SRS_TK, GT_TK, LTE_TK, LS_TK, BOOL_AND_TK,
14485         AND_TK, BOOL_OR_TK, OR_TK, INCR_TK, PLUS_TK, DECR_TK, MINUS_TK,
14486         MULT_TK, DIV_TK, XOR_TK, REM_TK, NEQ_TK, NEG_TK, REL_QM_TK,
14487         REL_CL_TK, NOT_TK, LT_TK): Tokens tagged `operator'.
14488         (assignment_operator:): Rule tagged `operator'.
14489         (expression_statement:): Re-installed default rule.
14490         (method_invocation:): Sub rules call build_method_invocation.
14491         (postfix_expression:): Don't attempt to resolve name here. Just
14492         return an ID.
14493         (multiplicative_expression:): Sub-rules build corresponding binop
14494         expression node.
14495         (additive_expression:, shift_expression:, and_expression:,
14496         exclusive_or_expression:, inclusive_or_expression:): Likewise.
14497         (assignment:): Sub rule invoke build_assignment.
14498         (assignment_operator:): Default rules on sub rules.
14499         (force_error): Added documentation on this variable.
14500         (declare_local_variables): Build initialization calling
14501         build_assignment.
14502         (expand_start_java_method): Removed unused rtx declaration. Mark
14503         arguments as already initialized.
14504         (java_method_add_stmt): Type of built COMPOUND_EXPR set to NULL.
14505         (java_complete_expand_methods): Don't process next method if
14506         completion of the previous one triggered errors.
14507         (java_complete_expand_method): Call source_end_java_method if no
14508         error were found during completion.
14509         (resolve_expression_name): Use IDENTIFIER_LOCAL_VALUE to retrieve
14510         locals declaratilon. Handle names found within a class. Return
14511         error_mark_node when things aren't found.
14512         (patch_method_invocation_stmt): Return error_mark_node on failures.
14513         (patch_invoke): Removed unused local. Return the correct node.
14514         (java_complete_tree): Now returns a value. The BLOCK section binds
14515         local identifiers and the type of a BLOCK is now void. Assign the
14516         result of operand completion on COMPOUND_EXPR. Assign the
14517         encapsulated node of a WFL to the result of its completion, except
14518         when the node is an identifier. Now handle MODIFY_EXPR and several
14519         binary operators. Return error_mark_node on errors.
14520         (build_method_invocation, build_assignment, patch_assignment,
14521         build_binop, operator_string, patch_binop): New functions.
14522         * typeck.c (binary_numeric_promotion): New function.
14523
14524 1998-05-21  Per Bothner  <bothner@cygnus.com>
14525
14526         * class.c (identifier_subst):  New convenience wrapper for ident_subst.
14527         Replace most uses of ident_subst by identifier_subst.
14528
14529         * class.c (push_class_static_dummy_field):  Removed function.
14530         (build_class_ref):  Find Class object decl by looking up "CNAME.class",
14531         instead of looking got "class" static field.  Create that decl here.
14532         (class_identifier_node):  Removed;  no longer needed.
14533         (init_class_processing):  Don't init class_identifier_node.
14534         * jcf-parse.c (jcf_parse):  Don't call push_class_static_dummy_field.
14535         Do nreverse 0 times (instead of twice) for Object and Class.
14536         * parse.y (java_layout_parsed_class): No push_class_static_dummy_field.
14537
14538 1998-05-20  Per Bothner  <bothner@cygnus.com>
14539
14540         * jcf-parse.c (parse_class-file):  Set lino to smallest line number,
14541         while initializing linenumber_count and linenumber_table.
14542         Do it before init_function_start (which calls emit_line_note).
14543         * expr.c (expand_byte_code):  Don't need to clear lineno here.
14544
14545 1998-05-18  Tom Tromey  <tromey@cygnus.com>
14546
14547         * class.c (append_gpp_mangled_type): If `qualifications' is >=9,
14548         then mangle number as _N_.
14549
14550         * class.c (mangle_class_field): New function.
14551         (build_class_ref): Set assembler name of class reference using
14552         mangle_class_field.
14553         (push_class_static_dummy_field): Likewise.
14554
14555 1998-05-17  Michael Tiemann <tiemann@cygnus.com>
14556
14557         * parse.y (source_start_java_method): Use TREE_SET_CODE instead
14558         of assigning to TREE_CODE.  The latter method exploits a feature
14559         of GCC that is not ANSI compliant.
14560
14561 1998-05-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14562
14563         * decl.c (pushdecl_force_head): New function.
14564         (pushlevel): Removed conditional printf.
14565         (complete_start_java_method): Don't enter local variable scope if
14566         function is compiled from source code.
14567         * expr.c: parse.h now included
14568         (java_lang_expand_expr): New function.
14569         * jcf-io.c (find_class): Use SOURCE_FRONTEND_DEBUG instead of
14570         printf. Terminate buffer when doing directories.
14571         * jcf-parse.c (parse_source_file): Call lang_init_source before
14572         parsing and before code generation.
14573         * jcf.h (SOURCE_FRONTEND_DEBUG): Macro redefined to conditionally
14574         use printf if the macro is defined.
14575         * lang.c (lang_init): Install lang_expand_expr hook on
14576         java_lang_expand_expr.
14577         (java_dummy_print): New function.
14578         (lang_init_source): New function.
14579         * lex.c (java_lex): Remember location of an opening brace at the
14580         second nesting level.
14581         (java_is_eol): Unget character seen after a CR if it is EOF.
14582         * parse.h: Now includes lex.h
14583         (SOURCE_FRONTEND_DEBUG): Macro redefined to conditionally use
14584         printf if the macro is defined.
14585         (expand_start_java_method, build_expr_block, enter_block,
14586         exit_block, lookup_name_in_blocks, maybe_absorb_scoping_blocks):
14587         New static function declarations.
14588         (pushdecl_force_head): New extern function declaration.
14589         (INCOMPLETE_TYPE_P): New macro.
14590         (JDEP_PARM, JDEP_TYPE): New entries in JDEPs enum.
14591         (BLOCK_CHAIN_DECL, BLOCK_EXPR_DECLS, BLOCK_EXPR_BODY,
14592         BLOCK_EXPR_ORIGIN): New macros.
14593         (DECL_SOURCE_LINE_MERGE, DECL_SOURCE_LINE_FIRST,
14594         DECL_SOURCE_LINE_LAST): New macros.
14595         (struct parser_ctxt): Removed field current_method_decl, redundant
14596         with the field current_function_decl. Added fields
14597         first_ccb_indent1 and pending_block.
14598         * parse.y (method_body, literal, INT_LIT_TK, FP_LIT_TK,
14599         BOOL_LIT_TK, CHAR_LIT_TK, STRING_LIT_TK, NULL_TK, VOID_TK): Rules
14600         tagged <node>
14601         (SOURCE_FRONTEND_DEBUG): Used as macro accepting varargs.
14602         (compilation_unit:): Cosmetic on sub rule.
14603         (type_declaration:): Cosmetic on sub rules. Added an error rule.
14604         (variable_initializer:): Installed default rule on expression:.
14605         (method_declaration:): method_header: starts a new
14606         method. method_body: installs the function body, absorbs blocks
14607         emitted for temporary variable scopings, pops function's body block
14608         and merges function's last statement lineno in DECL_SOURCE_LINE.
14609         (method_body:): Installed default rules.
14610         (block:): Call enter_block when an opening brace is seen.  Absorb
14611         scoping blocks and call exit_block when a closing brace is seen.
14612         (block_statement:): Cosmetic changes.
14613         (method_invocation:): Create WFL around CALL_EXPR node.
14614         (patch_stage): Added comment around definition.
14615         (method_header): Try to use first_ccb_indent1 as the first line of
14616         the method, so BP debug info are emitted at the first opening
14617         brace of the function. If the function has no body, use the
14618         location of the function's name. Override currently defined method
14619         name with the matching WFL so we can point redefinition errors
14620         using the location where the function's name was declared.
14621         (check_abstract_method_header): Interprets DECL_NAME as an
14622         identifier or as a WFL, accordingly.
14623         (java_complete_class): New cases for JDEP_TYPE and JDEP_PARM.
14624         (check_method_redefinition): Use DECL_NAME as a WFL. Extract
14625         location and name information out of it and reinstall DECL_NAME to
14626         its original identifier node value.
14627         (lookup_cl): Use DECL_SOURCE_LINE_FIRST (first line of the
14628         function's source code).
14629         (read_import_dir): Test the value returned by find_class and issue
14630         a fatal accordingly.
14631         (declare_local_variables): Push a new block for the scope of the
14632         new variable(s) if code has been already generated at that nesting
14633         level. Pinpoint redefinition errors using the variable id
14634         WFLs. Generate initialization code if necessary. If the variable
14635         type is incomplete, register a patch on its decl.
14636         (source_start_java_method): Rewritten. Define a new block for the
14637         function's parameters. Build parameter decl out of function's
14638         arguments and register them for a patch if their types are
14639         incomplete.
14640         (expand_start_java_method): Includes the part of
14641         source_start_java_method that was pushing the parameter decls and
14642         completing the method start code.
14643         (source_end_java_method): Removed call the expand_end_bindings and
14644         poplevel (already taken care of). Reinstall function's arguments
14645         and get function's last line of code before calling
14646         expand_function_end.
14647         (java_method_add_stmt): New comment before the function's
14648         code. Complement the second operand of the current COMPOUND_EXPR
14649         if necessary.
14650         (java_complete_expand_methods): Don't generate debug info on line
14651         zero when expanding a generated constructor.
14652         (java_complete_expand_method): Set start and end line numbers for
14653         a artificially generated constructor to one and manually call
14654         enter_block and exit_block when defining it. For all methods:
14655         expand function's start calling the new expand_start_java_method
14656         and invoke java_complete_tree on the effective method's body, if
14657         any.
14658         (resolve_expression_name): Now use lookup_name_in_blocks to search
14659         local variable decls and print out an error when variables are
14660         undefined.
14661         (patch_method_invocation_stmt): Inserted comment before the
14662         function's code.
14663         (lookup_method_invoke): Chain method's arguments using chainon
14664         with the current arg list as a second argument. Inserted missing
14665         IDENTIFIER_POINTER when reporting an error on methods not found.
14666         (refine_accessible_methods_list): Don't retain constructors.
14667         (patch_arguments): Function removed.
14668         (java_complete_tree): Inserted comment before the function's
14669         code. New case for BLOCKs. Moved the WFL case a bit
14670         further. Complete function's arguments.
14671         (build_expr_block, enter_block, exit_block, lookup_name_in_blocks,
14672         maybe_absorb_scoping_blocks): New functions.
14673
14674 1998-04-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14675
14676         * jcf-io.c (find_class): Reset jcf->java_source after JCF_ZERO, if
14677         previously set.
14678         * jcf-parse.c (parse_source_file, java_error_count): New forward
14679         and extern declarations.
14680         (java_parse_abort_on_error): Macro moved.
14681         (jcf_parse_source): fatal called if fopen fails. Now calls
14682         parse_source_file.
14683         (parse_source_file): New parse_only parameter. Reflects the
14684         elimination of the second pass.
14685         (yyparse): parse_source_file called with argument set to 0.
14686         * jcf.h (JCF_ZERO): Sets java_source to zero.
14687         * lex.c (java_init_lex): pass argument is gone. Function modified
14688         to be called once during the analysis of a file.
14689         (java_unget_unicode): Fixed typo in fatal message.
14690         (java_get_line_col): Likewise.
14691         (java_lval): Likewise. String literals no longer built during
14692         second pass.
14693         * lex.h (JAVA_COLUMN_DELTA): Take the tabulation character into
14694         account.
14695         * parse.h (MODIFIER_WFL): New macro.
14696         (parse_check_super, parser_check_super_interface): Now return int.
14697         (parser_chain_incomplete_item, not_builtin_p,
14698         complete_method_decl): Declarations removed.
14699         (build_method_invocation_stmt, build_invoke): Renamed using the
14700         `patch' instead of `build'
14701         (register-incomplete_type, obtain_incomplete_type,
14702         java_complete_tree, java_complete_expand_method,
14703         unresolved_type_p, create_jdep_list): New function declarations.
14704         (IC_TYPE, IC_DEPEND, DEPEND_DECL, DEPEND_WFL, BEGIN_ONLY_PASS,
14705         END_ONLY_PASS, ELSE_ONLY_PASS): Macro deleted.
14706         (jdep): New typedef on new struct _jdep.
14707         (JDEP_DECL, JDEP_DECL_WFL, JDEP_KIND, JDEP_SOLV, JDEP_WFL,
14708         JDEP_MISC, JDEP_APPLY_PATCH, JDEP_GET_PATCH, JDEP_CHAIN,
14709         JDEP_TO_REVOLVE, JDEP_RESOLVED_DECL, JDEP_RESOLVED,
14710         JDEP_RESOLVED_P): New macros.
14711         (JDEP_NO_PATCH, JDEP_SUPER, JDEP_FIELD, JDEP_METHOD,
14712         JDEP_METHOD_RETURN, JDEP_METHOD_END, JDEP_INTERFACE,
14713         JDEP_VARIABLE): New enum values and jdep kinds.
14714         (jdeplist): New typedef on struct _jdeplist.
14715         (CLASSD_FIRST, CLASSD_LAST, CLASSD_CHAIN, JDEP_INSERT): New
14716         macros.
14717         (CALL_EXPR_PRIMARY): New macro.
14718         (struct parser_ctxt): Fields java_pass, current_method_decl,
14719         method_decl_list deleted. New field jdeplist.
14720         (INCOMPLETE_P): Macro deleted.
14721         * parse.y (single_type_import_declaration:): Removed pass switch.
14722         (type_import_on_demand_declaration): Likewise.
14723         (field_declaration:): Removed pass switch on all sub rules.
14724         (class_declaration:): Call the complete_class_decl removed on
14725         class_body rules.
14726         (method_declaration:): Removed second pass switch. No longer chain
14727         methods decl when method_header reduced.
14728         (method_header:): Sub rules no longer depend on pass switch.
14729         (method_declarator:): Likewise.
14730         (method_body:): Likewise.
14731         (abstract_method_declaration:): Likewise.
14732         (block_statement:): Likewise.
14733         (local_variable_declaration:): Likewise.
14734         (argument_list:): Likewise.
14735         (method_invocation:): Likewise. Call to build_method_invocation_stmt
14736         removed. Partial CLASS_EXPR tree node built instead.
14737         (postfix_expression:): Removed pass switch on all sub rules.
14738         (java_pop_parser_context): Free classd_list content.
14739         (yyerror): Call obstrack_grow0 to finalize error message.
14740         (check_class_interface_creation): Comment modified to reflect new
14741         returned value meaning. Removed second pass switch. Return 1 if an
14742         error was found, 0 otherwise. Adjust pointer on filename if a
14743         leading path separator was found.
14744         (maybe_create_class_interface_decl): Removed first pass switch
14745         when linking the class decl to the class_list. Install a new
14746         jdep_list for the class.
14747         (add_superinterfaces): List of unresolved interfaces is
14748         gone. Unresolved interfaces are directly added to the current
14749         dependencies list.
14750         (create_interface): Second pass shortcut removed.
14751         ctpx->modifier_ctx access through MODIFIER_WFL.
14752         (create_class): Second pass shortcut removed. Call to
14753         register_incomplete_type replaces the call to
14754         parser_chain_incomplete_item.
14755         (complete_class_decl): Function removed.
14756         (duplicate_declaration_error): New way of retrieving redeclared
14757         item type.
14758         (register_fields): Call to lookup_modifier_cl replaced by
14759         MODIFIER_WFL. New way of handling unresolved type, using
14760         unresolved_type_p and obtain_incomplete_type.
14761         register_incomplete_type replaces call to parser_chain_incomplete_item.
14762         (patch_stage): New static global variable.
14763         (method_header): New way of handling unresolved type, using
14764         unresolved_type_p and obtain_incomplete_type. patch_stage used to
14765         indicates that the method decl needs to be patched.
14766         (check_abstract_method_header): Call to lookup_modifier_cl
14767         replaced by MODIFIER_WFL.
14768         (method_declarator): Incomplete argument type are registered
14769         calling register_incomplete_type. Patch on the declared method is
14770         issued in that case.
14771         (unresolved_type_p): New function.
14772         (parser_check_super_interface): New comment to reflect function's
14773         modified returned type (int). Function and has a new argument
14774         this_wfl. Call to parse_error_context uses this_wfl instead of
14775         relying on lookup_cl.
14776         (parser_check_super): Comment reflects function's new returned
14777         type (int). Function returns nonzero value on error.
14778         (create_jdep_list, reverse_jdep_list, obtain_incomplete_type,
14779         register_incomplete_type, jdep_resolve_class): New functions to
14780         handle incomplete types in declarations.
14781         (java_complete_class): Rewritten to work with the new incomplete
14782         type handling scheme.
14783         (complete_class_report_errors): Likewise.
14784         (complete_method_decl): Removed: it jobs is now handled by
14785         java_complete_class.
14786         (do_resolve_class): Class loaded in not already loaded and not
14787         found in Java source code.
14788         (java_check_regular_methods, java_check_abstract_methods): Don't
14789         call complete_method_decl anymore.
14790         (lookup_modifier_cl, not_builtin_p): Functions deleted.
14791         (read_import_dir): Got rid of the pass number dependency.
14792         (declare_local_variables): New handling of unresolved types (patch
14793         issued).
14794         (source_start_java_method): New parameter level. Function called
14795         with level set to 1 when argument types are potentially
14796         unresolved.  Called to complete the job with level set to 2 once
14797         types are complete.
14798         (source_end_java_method): Call to permanent_allocation
14799         removed. Waiting to be replaced by a more suitable obstack
14800         management.
14801         (java_complete_expand_methods, java_complete_expand_method,
14802         java_expand_finals): New functions.
14803         (build_method_invocation_stmt): Renamed
14804         patch_method_invocation_stmt. Extracts function call expression
14805         (wfl) and arguments (args) from CALL_EXPR tree operands.
14806         (build_invoke): Renamed patch_invoke. Fixed typo in fatal
14807         call. Patch the function and argument operand of the CALL_EXPR
14808         tree argument.
14809         (patch_argument, java_complete_tree): New functions.
14810
14811 1998-04-20  Per Bothner  <bothner@cygnus.com>
14812
14813         Recover from missing fields and methods (i.e. error instead of fatal).
14814         * decl.c, java-tree.h (TYPE_identifier_node):  New global constant.
14815         * expr.c (expand_invoke):  Recover from missing method.
14816         (expand_java_field_op):  Recover from missing field.
14817         Inline references to java.lang.{Integer,Char,...}.TYPE.
14818         * typeck.c (get_type_from_signature), java-tree.h:  New function.
14819         * class.c (add_method):  Use get_type_from_signature.
14820         (build_class_ref):  Handle a class that was not found.
14821         * typeck.c (convert):  Handle conversion to pointers (for convenience).
14822         * verify.c (verify_jvm_instructions):  Use get_type_from_signature
14823         instead of lookup_field to handle missing fields.
14824
14825         * jcf-parse.c (process_zip_dir):  Set java_source.
14826
14827 1998-04-20  Brendan Kehoe  <brendan@cygnus.com>
14828
14829         * jcf-parse.c (set_source_filename): Use TYPE_NAME, not DECL_NAME.
14830
14831 1998-04-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14832
14833         * jcf-parse.c (load_class): Don't change input_filename before
14834         calling jcf_parse_source (but still do it before calling
14835         jcf_parse).
14836         (jcf_parse_source): Assign input_filename after having saved the
14837         parser context.
14838         * lex.c (java_init_lex): Chain a WFL node to the import on demand
14839         list. ctxp->modifier_ctx zeroed according to its new
14840         definition. ctxp->filename initialized. Removed
14841         JAVA_MODIFIER_CTX_UNMARK.
14842         (java_unget_unicode): Update the character based column position.
14843         (java_allocate_new_line): ref_count not used anymore. Always free
14844         ctxp->p_line. Initialize c_line->char_col to 0.
14845         (java_get_unicode): Update the character based column position.
14846         (java_lex): Use ctxp->elc to store current position in source
14847         file, at the beginning of the parsed token. Set modifier_ctx entry
14848         corresponding to the parse modifier to a WFL node. Return a WFL
14849         node when an identifier is parsed.
14850         (java_lex_error): Now uses ctxp->elc to store current position in
14851         source.
14852         (build_wfl_node, java_is_eol, java_get_line_col): New functions.
14853         * lex.h (build_wfl_node): New function definitions.
14854         (struct java_line): ref_count and next fields are gone. New field
14855         char_col.
14856         (JAVA_LINE_CHECK, JAVA_LINE_MARK, JAVA_LINE_CHAIN,
14857         JAVA_LINE_UNMARK, ID_NAME, ID_CL): Macro definitions deleted.
14858         (JAVA_COLUMN_DELTA): New macro.
14859         (java_lc): New typedef on new struct _java_lc.
14860         * parse.h (lookup_cl, lookup_modifier_cl): Changed returned types.
14861         (parse_error_context, parse_warning_context): Changed prototypes.
14862         (java_get_line_col): Added as an available global function.
14863         (JAVA_MODIFIER_CTX_UNMARK): Macro removed.
14864         (IC_DECL): Replaced by macro IC_TYPE
14865         (DEPEND_WFL): New macro.
14866         (THIS_MODIFIER_ONLY): Now works with WFL and only remembers the first
14867         wrong modifier.
14868         (exit_java_complete_class): Removed a commented out statement.
14869         (struct parser_ctxt): Added comments on fields. modifier_ctx is
14870         now an array of tree nodes. Deleted fields line_list and
14871         e_line. New field elc, to replace e_line.
14872         * parse.y (array_type:): Build WFL node.
14873         (qualified_name:): Build a single WFL node out of two. Retain
14874         the location information of the first node in the resulting node.
14875         (package_declaration:): Use package name as a WFL node
14876         (single_type_import_declaration:): Use imported name as a WFL node.
14877         (type_import_on_demand_declaration:): Use root of the imported
14878         packages as a WFL node.
14879         (field_declaration:): Removed unused local variable cl.
14880         (method_declaration:): Don't call JAVA_MODIFIER_CTX_UNMARK.
14881         (yyerror): New static elc. Removed static error_line, error_pos.
14882         New local code_from_source. Save ctxp->elc into elc at the first
14883         pass. Call java_get_line_col to get a string of the line where
14884         the error occurred.
14885         (debug_line): Removed static function.
14886         (parse_error_context, parse_warning_context): Parameter cl is now
14887         a WFL node. Use its value to initialize ctxp->elc.
14888         (redefinition_error): Parameter cl is now a WFL node.
14889         (parse_add_interface): New parameter wfl. No longer call
14890         lookup_cl, use wfl instead.
14891         (check_class_interface_creation): Parameter cl is now a WFL node.
14892         (maybe_create_class_interface_decl): Likewise.
14893         (add_superinterfaces): New function.
14894         (create_interface): Removed local cl, node, super_decl,
14895         super_decl_type.  Function now uses id as a WFL node. Better
14896         warning/error report on obsolete or forbidden mix of
14897         modifiers. Now calls add_superinterfaces to register interfaces.
14898         (create_class): Removed local cl, node. Local variable id is used
14899         as a WFL node. Better error report on forbidden modifier
14900         mix. Uses add_superinterfaces to register interfaces.
14901         (find_field): Argument cl is now a WFL node. Now store the WFL
14902         node of a fields that needs to be checked for their
14903         initialization.
14904         (method_header): Local variable node non longer used. Local
14905         variable id replaces cl.
14906         (check_modifiers_consistency): Local variable cl is now a WFL
14907         node.
14908         (method_declarator): Local variable cl replaced by parameter id.
14909         (parser_qualified_name): Now uses parameter name as a WFL node.
14910         (parser_check_super_interface): New parameter wfl, for achieve
14911         greater accuracy during error reports.
14912         (parser_chain_incomplete_item): New parameter named location. Used,
14913         along the decl, to construct the incomplete item node.
14914         (java_complete_class): resolve_class now uses WFL node extracted
14915         from the incomplete item node. Macro IC_TYPE replaces TREE_PURPOSE
14916         where appropriate.
14917         (complete_method_decl): Unresolved function's argument types are WFL.
14918         (resolve_class): Parameter cl is now a WFL node.
14919         (resolve_and_layout): Likewise.
14920         (do_resolve_class): Likewise. Try first to use cl and then do the
14921         lookup on the decl when calling check_pkg_class_access.
14922         (complete_class_report_errors): Use IC_TYPE in place of
14923         TREE_PURPOSE where appropriate. Use DEPEND_WFL on dependency
14924         instead of doing a lookup over the decl.
14925         (java_check_final): Use WFL info from field tree list.
14926         (lookup_cl): Rewritten and returns a statically defined WFL node.
14927         (lookup_modifier_cl): Now uses information from WFL nodes.
14928         (process_imports): Likewise.
14929         (read_import_dir): name and cl arguments replaced by a single WFL
14930         node. Function modified accordingly.
14931         (find_in_imports_on_demand): Now uses WFL node.
14932         (check_pkg_class_access): cl argument is now a WFL node.
14933         (declare_local_variables): Fixed to use WFL nodes.
14934         (resolve_expression_name): Likewise.
14935         (build_method_invocation_stmt): name_combo argument renamed
14936         wfl. Function modified to use WFL nodes.
14937         (build_invoke): cl used as a WFL node when calling build_expr_wfl.
14938         (lookup_method_invoke): cl is now a WFL node. Added missing
14939         IDENTIFIER_POINTER to class type decl name.
14940
14941 1998-04-14  Dave Brolley  <brolley@cygnus.com>
14942
14943         * lang.c (init_parse): Now returns char* containing the filename.
14944
14945 1998-04-10  Per Bothner  <bothner@cygnus.com>
14946
14947         * class.c (layout_class):  Mangle repeated arg types to match cc1plus.
14948
14949         * decl.c, java-tree.h (integer_four_node):  New INTEGER_CST node.
14950         * class.c (make_class_data):  If flag_assume_compiled, initial class
14951         state is CSTATE_PREPARED; make superclass and interfaces direct
14952         references, rather than constant pool indexes.
14953
14954 1998-04-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
14955
14956         * parser.y: Include flags.h. Removed debug variable pl.
14957         (method_declaration:): Uses ctxp->parser_ccb_indent instead of pl.
14958         (block:): Likewise.
14959         (labeled_statement_nsi:): Generate debug info when reducing
14960         expression_statement:.
14961         (check_pkg_class_access): get_access_flags_from_decl invocation
14962         fixed for new CLASS_* flags location.
14963         (source_end_java_method): Save/restore parser context when
14964         entering/leaving this routine. Restore lineno to its right value
14965         before calling expand_end_bindings.
14966         (build_method_invocation_stmt): build_invoke called with the
14967         current line information.
14968         (build_invoke): New argument cl. Wrap the function call around a
14969         wfl node.
14970         (refine_accessible_methods_list): Changed comment, removed
14971         unnecessary code.
14972         * parse.h: Fixed typo in comments.
14973         (CLASS_OR_INTERFACE): Handle the new CLASS_* flags location.
14974         (JAVA_MAYBE_GENERATE_DEBUG_INFO): New macro.
14975         (struct parser_ctxt): New fields ccb_indent, last_ccb_indent1,
14976         parser_ccb_indent.
14977         * lex.c (java_lex): Record the last closing curly bracket of a
14978         function.
14979         * jcf-parse.c (jcf_parse_source): Now calls
14980         java_check_methods. Clarified comment, fixed typo.
14981
14982 1998-04-09  Dave Brolley  <brolley@cygnus.com>
14983
14984         * lang.c (init_parse): Expose for non USE_CPPLIB builds.
14985         (finish_parse): Expose for non USE_CPPLIB builds.
14986
14987 1998-04-08  Jeffrey A Law  (law@cygnus.com)
14988
14989         * lang.c (lang_print_xnode): New function.
14990
14991 1998-04-03  Per Bothner  <bothner@cygnus.com>
14992
14993         * decl.c (class_dtable_decl), java-tree.h:  New tree node.
14994         * class.c (get_dispatch_vector, get_dispatch_table):  New functions
14995         used to build a class's dispatch table.
14996         (make_class_data):  Generate dispatch table if flag_assume_compiled.
14997         Set dtable of class object to address of class_dtable_decl.
14998
14999         * decl.c (int_decl_processing):  Make soft_badarrayindex_node
15000         be volatile and have side effects - generates better code.
15001
15002         * class.c, expr.c, parse.y:  CLASS_INTERFACE, CLASS_FINAL, etc:
15003         These flags were defined for TYPE_DECLs, but used on RECORD_TYPEs.
15004
15005         * expr.c (expand_invoke):  If class is final, method is
15006         effectively final, so can call it directly.
15007
15008         * java-tree.h (TYPE_NVIRTUALS, TYPE_VTABLE):  New macros.
15009
15010         * Makefile.in, Make-lang.in:  Add missing $(exeext)s.
15011
15012 1998-03-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15013
15014         * parse.y (build_method_invocation_stmt): Removed extra argument
15015         to build_invoke.
15016
15017 1998-03-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15018
15019         * expr.c (dtable_indent): Now static global.
15020         (expand_invoke): Now call invoke_build_dtable and
15021         build_invokevirtual.
15022         (invoke_build_dtable, build_invokevirtual): New functions.
15023         * jcf-io.c (find_class): Defer issuing a warning by setting
15024         jcf->outofsynch to 1.
15025         * jcf-parse.c (jcf_out_of_synch): New function.
15026         (load_class): Test this_jcf.outofsynch flag and call
15027         jcf_out_of_synch accordingly.
15028         * jcf.h: (typedef struct JCF): New flag outofsynch. Fixed typo in
15029         comment indentation.
15030         * lex.c (java_get_unicode): Fixed code indentation.
15031         (java_lex): Create string literal. Fixed typo. Removed several
15032         premature obstack_free.
15033         * parse.h: New enums for name resolution and invocation mode.
15034         (struct qualification): New data structure.
15035         (RESOLVE_CHAIN_REMAINDER, BUILD_PTR_FROM_NAME): New macros.
15036         (do_resolve_class, build_method_invocation_stmt,
15037         breakdown_qualified, qualify_ambiguous_name, resolve_and_layout,
15038         debug_line, identical_subpath_p, invocation_mode,
15039         refine_accessible_methods_list, build_invoke,
15040         lookup_method_invoke): New functions declared.
15041         (build_invokevirtual, invoke_build_dtable, match_java_method,
15042         build_field_ref, jcf_out_of_synch): New references to external
15043         functions.
15044         (struct parse_ctxt): Removed artificial_constructor field.
15045         * parse.y: (array_type:): Type defined for this rule.
15046         (class_type:): Installed default rule for interface_type:.
15047         (array_type:): Now build Java array type.
15048         (qualified_name:): Now use obstack_grow0.
15049         (method_declaration:): Skip the artificial constructor added to
15050         the list, if any.
15051         (abstract_method_declaration:): Execute the code only during pass 1.
15052         (block:): Installed default rule in block_statements:.
15053         (block_statement:): Add the statement to the method during pass 2.
15054         (statement_expression): Installed default rule for
15055         method_invocation:.
15056         (argument_list:): Added code to build the argument list.
15057         (method_invocation:): Added call to create the method invocation
15058         node.
15059         (yyerror): Now use obstack_grow0. Removed bogus obstack_free.
15060         (debug_line): New function for debug.
15061         (complete_class_decl): No longer do something during pass 1.
15062         (method_header): Use BUILD_PTR_FROM_NAME.
15063         (parser_qualified_classname): Use obstack_grow0. Removed bogus
15064         obstack_free.
15065         (parser_chain_incomplete_item): Use BUILD_PTR_FROM_NAME. Modified
15066         function's main comment.
15067         (java_complete_class): Set CLASS_LOADED_P on all fixed incomplete
15068         classes.
15069         (complete_method_decl): Use BUILD_PTR_FROM_NAME and promote types.
15070         (resolve_class): Now works with arrays.
15071         (do_resolve_class, resolve_and_layout): New functions.
15072         (java_check_regular_methods): Reverse method list before and after
15073         having processed it. No longer set ctxp->artificial_constructor.
15074         (read_import_dir): Test jcf->outofsynch and call jcf_out_of_synch
15075         accordingly. Fixed typo in issued error message. Now use
15076         obstack_grow0.
15077         (find_in_imports_on_demand): Now use obstack_grow0.
15078         (declare_local_variables): Use BUILD_PTR_FROM_NAME.
15079         (source_end_java_method): Call expand_expr_stmt instead of
15080         expand_expr. Calls it before calling expand_function_end.
15081         (java_method_add_stmt): Do nothing if errors were found during
15082         parsing.
15083         (java_layout_parsed_class): Set CLASS_LOADED_P and fixed typo.
15084         (build_method_invocation_stmt, build_invoke, invocation_mode,
15085         lookup_method_invoke, refine_accessible_methods_list,
15086         qualify_ambiguous_name, breakdown_qualified, identical_subpath_p):
15087         New functions.
15088         * typeck.c (build_java_signature): Properly end method signature
15089         if return type skipped.
15090         (match_java_method): New function.
15091
15092 1998-03-16  Per Bothner  <bothner@cygnus.com>
15093
15094         * jcf-io.c (find_classfile):  If USE_JCF_STDIO, fopen in binary mode.
15095
15096 1998-02-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15097
15098         * expr.c (build_invoke_non_interface): New function.
15099         (methods_ident, ncode_ident): Now static globals.
15100         (expand_invoke): Use build_invoke_non_interface.
15101         * java-tree.h (struct lang_decl): New field function_decl_body.
15102         (DECL_FUNCTION_BODY): New macro.
15103         * jcf-parse.c (jcf_parse_source): Deeper check before setting
15104         CLASS_FROM_SOURCE_P.
15105         (parse_source_file): Fixed typos. Call java_layout_parsed_class
15106         before starting pass 2. Call to java_generate_parsed_class replaced
15107         by java_register_parsed_class.
15108         * lex.c: Fixed typo in header. Some line width related formating.
15109         * lex.h: Some line width related formating.
15110         * parse.h (source_end_java_method, resolve_expression_name,
15111         complete_class_decl, maybe_create_class_interface_decl,
15112         check_class_interface_creation): New static function declarations.
15113         (java_layout_parsed_class, java_method_add_stmt): New function
15114         declarations.
15115         (struct parser_ctxt): Field mark_class_generate removed. New
15116         fields class_list and artificial_constructor.
15117         * parse.y: Fixed typo in header.
15118         (class_declaration:): Call complete_class_decl when class body
15119         parsed.
15120         (method_declaration:): Call source_end_java_method in pass 2 when
15121         the method body is defined.
15122         (postfix_expression:): Do expression name resolution on sub-rule
15123         name during pass 2.
15124         (create_class, create_interface): Merged common pieces.
15125         (check_class_interface_creation, maybe_create_class_interface_decl):
15126         New functions.
15127         (complete_class_decl): New function.
15128         (register_fields): Fixed line width related typo.
15129         (method_header): Correctly skip first argument when fixing
15130         argument line. Changed the loop.
15131         (java_check_circular_reference): Now use ctxp->class_list.
15132         (java_complete_class): Removed start/stop marking.
15133         (java_check_regular_methods): Now takes a class decl as an
15134         argument.  Add default constructor if none were encountered.
15135         (java_check_methods): Now use ctxp->class_list. Changed call to
15136         java_check_regular_methods.
15137         (source_start_java_method): Set DECL_ARG_TYPE for each function
15138         arguments.
15139         (source_end_java_method, java_method_add_stmt): New functions.
15140         (java_generate_parsed_class): No longer exists.
15141         (java_layout_parsed_class, java_register_parsed_class): New functions.
15142         (resolve_expression_name): New function.
15143
15144 1998-02-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15145
15146         * jcf-parse.c: (parse_source_file): Check on errors after init lex.
15147         * lex.c: (java_init_lex): Defer ctxp->java_pass initialization
15148         until pass initializations are done. Call read_import_dir with
15149         pass set to 0.
15150         * parse.h: (lookup_modifier_cl): New function declared.
15151         (INTERFACE_FIELD_MODIFIERS): New macro.
15152         (OBSOLETE_MODIFIER_WARNING): New macro.
15153         * parse.y: (register_fields): Class type and current field name in
15154         local variables. Check modifier(s) if adding field(s) to an interface.
15155         (check_abstract_method_header): Now use OBSOLETE_MODIFIER_WARNING
15156         and report errors using the faulty modifier line context.
15157         (lookup_modifier_cl): New function.
15158         (read_import_dir): Detect and report default import processing
15159         failure.
15160
15161 1998-02-11  Brendan Kehoe  <brendan@cygnus.com>
15162
15163         Add a pair of -fassume-compiled/-fno-assume-compiled options.
15164         * class.c (is_compiled_class): Return 1 after making sure it
15165         qualifies as loaded, if FLAG_ASSUME_COMPILED is set.
15166         * lang-options.h: Add -fassume-compiled/-fno-assume-compiled.
15167         * java-tree.h (flag_assume_compiled): Add decl.
15168         * lang.c (lang_f_options): Add the flag.
15169         (flag_assume_compiled): Add decl, default to 0.
15170
15171 1998-02-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15172
15173         * class.c (class_depth): Call to load_class uses extra VERBOSE arg.
15174         (is_compiled_class): Likewise.
15175         (layout_class): Likewise.
15176         (layout_class): Detect and lay out classes defined in source code.
15177         (interface_of_p, add_interface_do, may_add_interface): New
15178         function.
15179         (add_interface): Now use add_interface_do.
15180         (add_method_1): New function.
15181         (add_method): Now use add_method_1.
15182         (pushlevel): Debug message conditional to SOURCE_FRONTEND_DEBUG.
15183         (complete_start_java_method): New function.
15184         (start_java_mehod): Now call complete_start_java_method.
15185         * expr.c (lookup_field): Call to load_class uses extra VERBOSE arg.
15186         (expand_invoke): Likewise and fixed typo.
15187         *gjava.c: (print_super_field): Use new argument to find_class
15188         DO_CLASS_FILE.
15189         (main): Likewise.
15190         *java-tree.h: (CLASS_FROM_SOURCE_P): New flag on RECORD_TYPE.
15191         (IS_A_SINGLE_IMPORT_CLASSFILE_NAME_P, IS_A_CLASSFILE_NAME,
15192         QUALIFIED_P, IS_AN_IMPORT_ON_DEMAND_P): New flags on
15193         IDENTIFIER_NODE.
15194         (CLASS_COMPLETE_P): New flag on TYPE_DECL.
15195         (add_method_1, push_class): New prototypes.
15196         *jcf-dump.c: find_class now uses new DO_CLASS_FILE argument.
15197         *jcf-io.c: (open_in_zip): jcf now stores a pointer to the Zip
15198         directory where the class was found.
15199         (find_class): New argument DO_CLASS_FILE. Function find_class
15200         modified accordingly.
15201         *jcf-parse.c: (fix_class_path): New function.
15202         (load_class): Use new VERBOSE argument. load_class now finds and
15203         loads/parses .class/.java files. Save read_state of current_jcf
15204         if necessary.
15205         (java_parser_abort_on_error): New macro.
15206         (jcf_parse_source, parse_source_file): New function.
15207         (jcf_parse): Fixed typo.
15208         (yyparse): Call parse_source_file () only.
15209         (process_zip_dir): Fixed typo, fix zdir->filename_length when
15210         writing the real class name back in the zip directory entry.
15211         (find_in_current_zip): IDENTIFIER_CLASS_VALUE may be null.
15212         (jcf_figure_file_type): Fixed bogus alloc and bcopy.
15213         *jcf.h: (typedef struct JCF): New fields java_source and zipd.
15214         (find_class): Prototype fixed.
15215         *lex.c: Added 1998 time stamp.
15216         Removed all static global variables, moved into the parser
15217         context data structure.. Now include unistd.h if SEEK_SET not
15218         defined.
15219         (java_init_lex): Rewritten.
15220         (java_sneak_unicode): Modified current unicode access in current line.
15221         (java_unget_unicode): Likewise.
15222         (java_allocate_new_line): New allocation management.
15223         (java_read_char): Modified access and storage of unget_utf8_value.
15224         New way of processing current unicode.
15225         (java_store_unicode, java_read_unicode): Fixed typo in declaration.
15226         (java_get_unicode): Now use the parser context.
15227         (java_lineterminator): Likewise.
15228         (java_lex): Now used java_lval argument (pointer to YYSTYPE), part
15229         of the reentrant parser implementation. Function now use the
15230         parser context data structure and java_lval. Fixed production of
15231         the float and double constant "out of range" error message. Fixed
15232         obstack use. Return integer value when hitting a modifier. Now
15233         return type for TRUE, FALSE and other predefined types. Return
15234         identifier as a TREE_LIST list containing the current line context
15235         as the TREE_VALUE sub-node.
15236         (java_unicode_2_utf8): Fixed typo in declaration.
15237         (java_lex_error): Now use the parser context data structure.
15238         *lex.h: Added 1998 time stamp.
15239         (struct java_line): New fields ref_count and next.
15240         (JAVA_LINE_CHECK, JAVA_LINE_MARK, JAVA_LINE_CHAIN,
15241         JAVA_LINE_UNMARK, ID_NAME, ID_CL): New macros.
15242         (JAVA_FLOAT_RANGE_ERROR, JAVA_INTEGRAL_RANGE_ERROR, UNGETC): Fixed.
15243         *parse.h: Added 1998 time stamp.
15244         (java_parse_source_file): Renamed from parse_source_file.
15245         (YYERROR_NOW, YYNOT_TWICE): Fixed.
15246         (CLASS_MODIFIERS, FIELD_MODIFIERS, METHOD_MODIFIERS,
15247         INTERFACE_MODIFIER, INTERFACE_METHOD_MODIFIERS,
15248         JAVA_MODIFIER_CTX_UNMARK, IC_DECL, IC_DEPEND, DEPEND_DECL,
15249         THIS_MODIFIER_ONLY, ABSTRACT_CHECK, BEGIN_ONLY_PASS,
15250         END_ONLY_PASS, ELSE_ONLY_PASS, exit_java_complete_class,
15251         CLASS_OR_INTERFACE, INCOMPLETE_P): New macros.
15252         (struct parser_ctxt): New data structure to keep the parser context.
15253         *parse.y: Added 1998 time stamp, got rid of static global variables.
15254         (java_error_count, ctxp): New global variables.
15255         (%union): New value field.
15256         (numeric_type, integral_type): Rules removed.
15257         (primitive_type): Rule defined to handle integral, float, double and
15258         boolean types.
15259         (qualified_name, package_declaration,
15260         single_type_import_declaration, type_import_on_demand_declaration,
15261         modifiers, class_declaration, super, interfaces,
15262         interface_type_list, class_body, field_declaration,
15263         field_declaration, variable_declarators, variable_declarator,
15264         variable_declarator_id, method_declaration, method_header,
15265         formal_parameter_list, formal_parameter, method_body, block,
15266         static, interface_declaration, extends_interfaces,
15267         abstract_method_declaration, local_variable_declarators): Rules now
15268         define actions.
15269         (force_error, do_warning): New global statics.
15270         (push_parser_context, parser_context_save_global,
15271         parser_context_restore_global, pop_parser_context): New functions.
15272         (yyerror): Now uses the global parser context. Fixed use of obstack.
15273         (parse_error, parse_error_context, parse_warning_context,
15274         java_accstring_lookup, redefinition_error, check_modifiers,
15275         parser_add_interface, create_interface, create_class, find_field,
15276         duplicate_declaration_error, register_fields, method_header,
15277         check_modifiers_consistency, check_abstract_method_header,
15278         method_declarator, parser_qualified_classname,
15279         parser_check_super_interface, parser_check_super,
15280         parser_chain_incomplete_item, java_check_circular_reference,
15281         layout_class_from_source, java_complete_class,
15282         complete_method_decl, resolve_class, complete_class_report_errors,
15283         java_check_final, check_method_redefinition,
15284         java_check_regular_methods, java_check_abstract_methods,
15285         java_check_methods, lookup_java_interface_method2,
15286         lookup_java_method2, lookup_cl, find_name_in_single_imports,
15287         process_imports, find_in_imports, read_import_entry,
15288         read_import_dir, find_in_imports_on_demand,
15289         check_pkg_class_access, not_builtin_p, declare_local_variables,
15290         source_start_java_method, java_generate_parsed_class): New
15291         functions.
15292         *typeck.c: (signature_include_return): New global variable.
15293         (build_java_signature): Use SIGNATURE_INCLUDE_RETURN figure whether
15294         to add the function returned type in the signature.
15295
15296 1998-02-09  Brendan Kehoe  <brendan@cygnus.com>
15297
15298         * jcf-io.c (open_in_zip): Use strncmp and LEN.
15299
15300 1998-01-29  Dave Brolley  <brolley@cygnus.com>
15301
15302         * Make-lang.in (java.info): Added.
15303         (java.install-info): Added
15304
15305 1998-01-27  Brendan Kehoe  <brendan@cygnus.com>
15306
15307         * Makefile.in (clean): Also remove java/parse.c.
15308
15309 1998-01-26  Brendan Kehoe  <brendan@cygnus.com>
15310
15311         Add a pair of -fbounds-check/-fno-bounds-check options.
15312         * lang.c (lang_decode_option): Add code to grok arguments.
15313         (flag_bounds_check): Add decl.
15314         (lang_f_options): New array w/ the option in it.
15315         * java-tree.h (flag_bounds_check): Add decl.
15316         * lang-options.h: New file.
15317         * expr.c (build_java_arrayaccess): Use flag_bounds_check instead
15318         of a static macro value.
15319         (JAVA_ARRAY_EXCEPTION): Delete macro.
15320
15321 1998-01-23  Per Bothner  <bothner@cygnus.com>
15322
15323         * typeck.c (build_java_array_type):  Fix two bugs in previous change.
15324         * expr.c (build_anewarray):  Add missing promote_type.
15325
15326 1998-01-22  Per Bothner  <bothner@cygnus.com>
15327
15328         Add array types with known length to optimize bounds checking.
15329         * typeck.c (build_java_array_type):  Take length parameter.
15330         (java_array_type_length, build_prim_array_type):  New functions.
15331         * java-tree.h:  Update for new functions.
15332         * expr.c, typeck.c, verify.c: Update build_java_array_type calls.
15333         * class.c:  Use build_prim_array_type.
15334         * expr.c (can_widen_reference_to):  Handle known-length array types.
15335         (verify_jvm_instructions):  Keep track of integer push instructions
15336         followed by newarray/anewarray, so we can build known-length arrays.
15337         (JAVA_ARRAY_DATA_OFFSET):  Replace by ...
15338         (java_array_data_offset):  New function.
15339         (build_java_array_length_access):  New function.  Optimize if constant.
15340         (build_java_arrayaccess):  Constant fold bounds check.
15341         (expand_java_newarray, expand_java_anewarray):  Replaced by ...
15342         (build_newarray, build_anewarray):  New functions.
15343         (ARRAY_NEW_NUM, ARRAY_NEW_PTR):  Use build_{a,}newarray.
15344         * verify.c (merge_types):  Handle known-lengh array types.
15345
15346 1998-01-19  Per Bothner  <bothner@cygnus.com>
15347
15348         * expr.c (expand_byte_code):  Fix performace bug, which caused
15349         searching linenumber_table to be linear rather than constant.
15350
15351 1997-12-12  Per Bothner  <bothner@cygnus.com>
15352
15353         * Makefile.in (BISON, BISONFLAGS):  Add missing macros.
15354
15355         * decl.c, java-tree.h (soft_fmod_node):  New global.
15356         * decl.c (init_decl_processing):  Define __builtin_fmod.
15357         * expr.c (build_java_binop):  Implement TRUNC_MOD_EXPR for REAL_TYPE
15358         using __builtin_fmod.
15359
15360 1997-12-04  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15361
15362         * keyword.h: New file, output of keyword.gperf as processed by
15363         gperf.
15364         * lex.c (java_lex_init): Initialize java_error_flag.
15365         * parse.c (YYERROR_NOW): Uses java_error_flag.
15366         * parse.y: New static java_error_flag. Useless definition of
15367         buffer_error gone.
15368         * parse.y (java_error): Portable error recovery using
15369         java_error_flag (not yet completely tuned).
15370
15371 1997-12-04  Brendan Kehoe  <brendan@lisa.cygnus.com>
15372
15373         * Makefile.in (parse.c): Use $(srcdir) for parse.y.
15374
15375 1997-12-03  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15376
15377         * Makefile.in: (JAVA_OBJS): New object jcf-parse.o.
15378         (parse.c, lex.c, keyword.h): New rules for Java source code
15379         front-end.
15380         * parse.c: Renamed into jcf-parse.c.
15381         * jcf-parse.c (yyparse): Invoke the parser to process Java source code.
15382         * keyword.gperf: New file, Java keywords.
15383         * parse.y: New file, Java language grammar.
15384         * parse.h: New file, Java language grammar definitions.
15385         * lex.c: New file, Java language lexer.
15386         * lex.h: New file, Java language lexer definitions.
15387
15388 1997-12-03  Per Bothner  <bothner@cygnus.com>
15389
15390         * decl.c (clinit_identifier_node), java-tree.h:  New global.
15391         * java-tree.h (IS_METHOD_INIT_P, IS_METHOD_CLINIT_P):  Removed.
15392         * verify.c (verify_jvm_instructions):  Inline use of removed macros.
15393         * expr.c (expand_java_field_op):  Check for invalid assignment
15394         to final field.
15395
15396         * jcf-reader.c (get_attribute):  Test for wrong attribute length.
15397
15398 1997-10-27  Per Bothner  <bothner@cygnus.com>
15399
15400         * verify.c (verify_jvm_instructions):  When processing a handler,
15401         attempt to set the current_subr to the right value.
15402         (More complicated code combines Sep 17 and Oct 22 versions.)
15403
15404 1997-10-24  Per Bothner  <bothner@cygnus.com>
15405
15406         * class.c (push_class):  Figure out (guess) name of source file.
15407         * parse.c  (set_source_filename):  Set DECL_SOURCE_FILE of class decl.
15408         (give_name_to_class):  Don't guess source name;  use DECL_SOURCE_FILE.
15409         (parse_class_file):  Change return type from int to void.
15410         Call debug_start_source_file/debug_end_source_file.
15411
15412         * expr.c (build_java_binop):  Fix masking 2nd operand.
15413         * decl.c (init_decl_processing):  Set sizetype first.
15414
15415 1997-10-22  Per Bothner  <bothner@cygnus.com>
15416
15417         * verify.c (verify_jvm_instructions):  Don't set current_subr to NULL.
15418         (Revert Sep 17 change.)
15419
15420 1997-10-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15421
15422         * parse.c (process_zip_dir): Skip ZIP entries not bearing the
15423         .class extension in their name and fix thing so we don't process
15424         them parse_zip_file_entries().
15425         (parse_zip_file_entries): Cleaned unused local variables.
15426
15427 1997-10-20  Per Bothner  <bothner@cygnus.com>
15428
15429         * expr.c (can_widen_reference_to):  Allows equal array element types.
15430         (expand_byte_code):  PRE_RET must expand OPERAND_VALUE (to get index).
15431         * jcf-dump.c (RET):  Get (and print) index.
15432
15433         * verify.c (verify_jvm_instructions case OPCODE_anewarray):
15434         Promote element type to POINTER_TYPE.
15435
15436 1997-10-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15437
15438         * jcf-reader.c, parse.c: (parse_zip_file, process_zip_dir,
15439         find_in_current_zip, jcf_figure_file_type): Moved from
15440         jcf-reader.c to parse.c.
15441         * zextract.c: (read_zip_archive): takes file_comment_length possible
15442         field into account.
15443
15444 1997-10-20  Per Bothner  <bothner@cygnus.com>
15445
15446         * verify.c (verify_jvm_instructions):  Var can also be promoted to int.
15447
15448         * verify.c (merge_types):  Handle array types even better ...
15449
15450 1997-10-17  Per Bothner  <bothner@cygnus.com>
15451
15452         * expr.c (java_stack_pop):  Fix use of NULL_TREE for TYPE_SECOND.
15453
15454         * java-tree.h (PUSH_FIELD):  Set DECL_ARTIFICIAL.
15455         * class.c (make_class_data):  Don't build fields_decl if no fields.
15456         When building fields_decl, skip if DECL_ARTIFICIAL.
15457
15458         * expr.c (java_stack_swap):  Update stack_type_map.
15459         * verify.c (merge_types):  Handle array types better.
15460
15461 1997-10-15  Per Bothner  <bothner@cygnus.com>
15462
15463         * class.c (add_field):  Don't promote short integral fields to
15464         int any more (unless JAVA_PROMOTE_TO_INT), since Kaffe doesn't.
15465         * expr.c (push_value):  Promote and convert short integral values.
15466
15467         * decl.c, java-tree.h (integer_two_node):  New constant node.
15468         * verify.c (merge_types):  Check for TYPE_RETURN_ADDR.
15469
15470 1997-10-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15471
15472         * class.c (append_gpp_mangled_type): Use function argument
15473         unpromoted type to generate mangled name.
15474
15475 1997-10-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15476
15477         * constants.c (build_constant_data_ref): Now uses current_class
15478         instead of main_class.
15479         (build_constants_constructor): Now uses current_class instead of
15480         main_class.
15481         * zipfile.h: (struct ZipFileCache): Now defined here. Declaration
15482         of the global variable SeepZipFiles done here.
15483         * zextract.c (read_zip_archive): extra_field optional field taken
15484         into account while computing the position of the class file in the
15485         archive.
15486         * verify.c (verify_jvm_instructions): Use current_jcf to search
15487         the constant pool.
15488         * parse.c (load_class): First search for the class to load in the
15489         current zip file. Saves current_jcf (restored before returning
15490         from that function). Don't call JCF_FINISH in the class was found
15491         in the current ZIP file.
15492         (jcf_parse): If the class was found in the current ZIP file, save
15493         its tree_constant_pool (for later reuse).
15494         (parse_class_file): New function. Process each method defined in
15495         the current class and record the class as to be later registered.
15496         (yyparse): Rewritten. Figure the type of the current file and switch
15497         accordingly.
15498         * lang.c: New global variable current_jcf.
15499         (lang_init): Removed compiling_from_source test (done later, in
15500         yyparse). Removed call the jcf_parse ().
15501         * jcf.h (JCF_ZIP, JCF_CLASS, JCF_SOURCE): New defined values.
15502         (typedef struct JCF): New fields seen_in_zip (to mark a class found
15503         in the current ZIP file) and zip_offset (offset to the class data in
15504         the current zip file).
15505         * jcf-reader.c: zipfile.h included.
15506         localToFile: New ZipFileCache static global variable
15507         (parse_zip_file_entries): New function. Browse the current ZIP
15508         file directory and process each class found.
15509         (process_zip_dir): New function. Register each class found in the
15510         ZIP file directory. The class aren't parsed but a valid JCF is
15511         link to each of them.
15512         (find_in_current_zip): New function. Search for a class in the
15513         current ZIP file directory. If found, prepare the class so that it
15514         can be loaded.
15515         (jcf_figure_file_type): New function. Examine the file structure
15516         to figure a class file, a ZIP file. If none of these categories are
15517         matched, a source file is assumed.
15518         * jcf-io.c: Removed definition of ZipFileCache (moved in zipfile.h).
15519         SeenZipFile: New global variable.
15520         (open_in_zip): Use zipmember's length to accelerate the search for
15521         a member. If zipmember was NULL and zip file successfully read,
15522         return 0.
15523         * java-tree.h: New global variable current_jcf declared.  Added
15524         declaration for current_constant_pool_tags, current_constant_pool_data,
15525         current_constant_pool_length, current_constant_pool_data_ref.
15526         (struct lang_type): Augmented with two fields. struct JCF *jcf (to
15527         store the JCF of classes seen in a zip file) and tree *constant_pool
15528         (to save a loaded class constant pool). current_class declared here.
15529         * expr.c (expand_invoke): Use current_jcf instead of main_jcf to
15530         retrieve method_ref_constant.
15531         (PUSHC): java_push_constant_from_pool now uses current_jcf.
15532         (OBJECT): get_class_constant now uses current_jcf.
15533         (ARRAY_NEW_PTR): get_class_constant now uses current_jcf.
15534         (ARRAY_NEW_MULTI): get_class_constant now uses current_jcf.
15535         (expand_invoke): Now uses current_class instead of main_class
15536         (build_class_init): Now uses current_class instead of main_class
15537         * class.c: New static global variable registered_class.
15538         (register_class): New function.
15539         (emit_register_class): Modified to use registered_class instead of
15540         main_class
15541         (is_compiled_class): Now take into account class seen in the archive.
15542
15543 1997-10-06  Per Bothner  <bothner@cygnus.com>
15544
15545         * except.h:  Renamed to: java-except.h.
15546         * parse.c, except.c, expr.c, verify.c:  Update #include accordingly.
15547         * except.c:  Add semi-working (commented out) implementation.
15548
15549         * expr.c (expand_iinc):  Add needed flush_quick_stack.
15550         * parse.c (set_source_filename):  New function.
15551         (give_name_to_class):  Set input_filename from package.classname.java.
15552
15553         * jcf-io.c (find_class):  Don't look first in ".".
15554
15555 1997-10-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15556
15557         * zextract.c (read_zip_archive): Now takes into account the
15558         extra_field field.
15559         * expr.c (can_widen_reference_to): Modified to handle sub-interfaces.
15560
15561 1997-09-20  Per Bothner  <bothner@cygnus.com>
15562
15563         * constants.c, java-tree.h (build_internal_class_name):  New function.
15564         (alloc_class_constant):  Re-implement using build_internal_class_name.
15565         * class.c (make_class_data):  Likewise.
15566         * class.c (hashUtf8String):  Make hash algorithm match String.hashCode.
15567
15568 1997-09-17  Per Bothner  <bothner@cygnus.com>
15569
15570         * verify.c (verify_jvm_instructions):  Temporarily set current_subr
15571         to NULL before pushing an exception handler target.
15572
15573         * expr.c (flush_quick_stack):  Save from low stack indexes to high.
15574         (java_stack_swap, java_stack_dup):  Re-write to be safe from
15575         clobbering registers.
15576         (build_class_init):  New function.
15577
15578 1997-09-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15579
15580         * typeck.c (build_java_array_type): Temporary use
15581         permanent_obstack to create the array 'length' field.
15582         * expr.c (lookup_label): Temporay use permanent_obstack to create
15583         label if not found.
15584         * class.c (push_super_field): Tempory use permanent_obstack.
15585
15586 1997-09-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15587
15588         * typeck.c (type_for_mode): Now handles double_type_node and
15589         float_type_node.
15590         * verify.c (verify_jvm_instructions): The instruction following
15591         the wide bytecode is checked. OPCODE_ret added to the list of
15592         wide.
15593
15594 1997-09-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15595
15596         * class.c (make_class): Temporary use permanent_obstack. Set the
15597         class CLASS_P field to 1.
15598         (push_class): Temporary use permanent_obstack.
15599         (set_super_info): Temporary use permanent_obstack.
15600         (add_method): Temporary use permanent_obstack, set
15601         METHOD_TRANSIENT().
15602         (add_field): Temporary use permanent_obstack. Sets
15603         FIELD_VOLATILE() and FIELD_TRANSIENT().
15604         (build_class_ref): Temporary use permanent_obstack if the class
15605         isn't compiled.
15606         (build_static_field_ref): Temporary use permanent_obstack when
15607         creating field's rtl.
15608         (get_access_flags_from_decl): Handle ACC_VOLATILE, ACC_TRANSIENT,
15609         ACC_SYNCHRONIZED, ACC_NATIVE, ACC_ABSTRACT flags for methods
15610         and fields. Function finalized, as far as flag handling.
15611         (push_class_static_dummy_field): Temporary use permanent_obstack.
15612         (emit_register_class): Force generation of class registration at
15613         -O3 or deeper.
15614         * decl.c (end_java_method): Call permanent_allocation() before
15615         returning.
15616         * expr.c (can_widen_reference_to): Added comment to interface
15617         handling, fixed typo.
15618         (lookup_field): Now uses CLASS_P() to correct FIXME
15619         (expand_invoke): Verification on public && !static &&
15620         !abstract moved into soft_lookupinterfacemethod (kaffe).
15621         Use Object class dtable if objectref is an array when expanding
15622         invokeinterface.
15623         (java_push_constant_from_pool): Temporary use permanent_obstack
15624         for CONSTANT_string
15625         * parse.c (get_ref_constant): Temporary use permanent_obstack to
15626         create constant references.
15627         (get_constant): Temporary use permanent_obstack to create constant.
15628         (load_class): Temporary use permanent_obstack to load class.
15629         (jcf_parse): Temporary use permanent_obstack to perform class
15630         layout.
15631         * typeck.c: (parse_signature_string): Temporary use permanent_obstack.
15632         (build_java_signature): Temporary use permanent_obstack.
15633         * verify.c: (verify_jvm_instruction): removed unnecessary verification
15634         on ACC_SUPER flag.
15635         * java-tree.h (METHOD_NATIVE, METHOD_TRANSIENT): Defined.
15636         (FIELD_VOLATILE, FIELD_TRANSIENT): Defined.
15637         (CLASS_P): Defined
15638
15639 1997-09-11  Per Bothner  <bothner@cygnus.com>
15640
15641         * class.c (append_gpp_mangled_type):  Fix typo.
15642         (emit_register_class):  Use main_class to get class object, rather
15643         than looking for no-longer-existing static decl starting with _CL.
15644         * typeck.c (parse_signature_type):  Promote array element type
15645         if it is a RECORD_TYPE.
15646
15647 1997-09-10  Per Bothner  <bothner@cygnus.com>
15648
15649         * class.c (push_class_static_dummy_field):  New function.
15650         (mangle_static_field):  New. Do G++-style mangling of static fields.
15651         (layout_class):  Mandle static fields here, not in add_field.
15652         (build_class_ref):  The class object is now a dummy static field.
15653         * decl.c (find_local_variable):  Look for best, instead of first match.
15654         * expr.c (push_type):  Always promote_type, not just for RECORD_TYPE.
15655         (build_java_athrow):  Don't check here if exception is Throwable.
15656         * java-tree.h (TYPE_UNSET):  Renamed to TYPE_UNKNOWN.
15657         (TYPE_USED):  Removed.  No longer used ...
15658         * parse.c (jcf_parse):  Call push_class_static_dummy_field.
15659         * verify.c (push_pending_label):  New function.
15660         (push_pending_block):  Renamed to check_pending_block.
15661         (merge_types):  Remove unneeded suuport for TYPE_UNUSED.
15662         (verify_jvm_instructions):  Only reset prev_eh_ranges (to force
15663         re-checking possible handlers) after a store (less wasted work).
15664         Check for null handler (finally) before calling add_handler.
15665         Various changes to (finally?) correctly handle try/finally.
15666
15667 1997-09-09  Brendan Kehoe  <brendan@lisa.cygnus.com>
15668
15669         * class.c: Include stdio.h.
15670
15671 1997-09-04  Per Bothner  <bothner@cygnus.com>
15672
15673         * expr.c (expand_invoke):  Use COMPOUND_EXPR (and TREE_SIDE_EFFECTS)
15674         to make sure class is initialized before static/special invoke.
15675
15676         * verify.c (verify_jvm_instructions):  On a store instruction,
15677         call find_local_variable to force pre-allocation of decl and rtx.
15678         * decl.c (push_jvm_slot):  Set DECL_REGISTER on stack slots.
15679
15680 1997-09-03  Per Bothner  <bothner@cygnus.com>
15681
15682         * class.c (build_class_ref):   Strip off "promoted_" if need be.
15683         (make_field_value): Call build_java_signature when needed.
15684         (layout_class):  Don't make_function_rtl if METHOD_ABSTRACT.
15685         * expr.c (build_java_athrow):  Don't push_value of exception.
15686         (build_java_binop):  Implement COMPARE_L_EXPR and COMPARE_G_EXPR to
15687         match specification of [fd]cmp[lg] for NaNs.
15688         (expand_byte_code):  Add support for exception handler ranges.
15689         * except.c:  Add skeleton for EH code-generation.
15690         * verify.c (merge_types):  Treat all promoted integral types as equal.
15691         * constants.c (build_constants_constructor):  To force creation of
15692         current_constant_pool_data_ref, call build_constant_data_ref.
15693
15694         * javaop.def (lload):  Fix typo.
15695         * jcf-dump.c (main):  Clear filename to prevent possibly-bad free.
15696
15697 1997-09-02  Brendan Kehoe  <brendan@lisa.cygnus.com>
15698
15699         * parse.c: Don't include function.h.
15700
15701 1997-08-27  Per Bothner  <bothner@cygnus.com>
15702
15703         * except.[ch]:  New files.
15704         * Makefile.in (JAVA_OBJS):  Add except.o
15705         * expr.c:  Temporary warning about unimplemented exceptions.
15706         * verify.c:  Verify exception handlers.
15707
15708         * jcf-dump.c (disassemble_method):  Print exception table.
15709
15710 1997-08-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15711
15712         * expr.c (verify_jvm_instructions): Started a thorough
15713         verification of invoke* bytecodes.
15714         (expand_byte_code): flush quick stack if PC is the target of a
15715         branch.  and undef RET (conflicting with config/i386/i386.h).
15716         (expand_java_arrayload): Fixed bogus cast, when Boolean type is
15717         used.
15718         (expand_invoke): Now handles invokeinterface and do more
15719         verification according to the bytecode.
15720         (lookup_field): Don't try to load the class if processing
15721         dtable_type.
15722         (can_widen_reference_to): Now handles interfaces.
15723         * decl.c (init_decl_processing): New global variable
15724         soft_lookupinterfacemethod_node, declared in java-tree.h.
15725         Call set_super_info on string_type_node.
15726         * java-tree.h (CLASS_INTERFACE, CLASS_ABSTRACT, CLASS_SUPER): Now
15727         defined.
15728         * class.c (set_super_info): Fills the CLASS_* flags according to
15729         access_flags.
15730         (get_access_flags_from_decl): Handles all class flags.
15731
15732 1997-08-26  Per Bothner  <bothner@cygnus.com>
15733
15734         * class.c (add_method):  Zero out newly-allocated DECL_LANG_SPECIFIC.
15735         * parse.c (yyparse):  Check for abstract method, and missing code.
15736         * expr.c (expand_byte_code):  Change interface.
15737         * lang.c (put_decl_node):  Print promoted types prettier.
15738         * verify.c (verify_jvm_instruction):  Change interface.
15739         Partial support for scanning exception table.
15740         For load instructions, handle promoted integral types.
15741
15742 1997-08-21  Per Bothner  <bothner@cygnus.com>
15743
15744         * verify.c:  New file, with contents moved from expr.c.
15745         * expr.c:  Bunch of stuff (mostly verification) moved to verify.c.
15746         * typeck.c (is_array_type_p):  Moved here from expr.c.
15747         * java-tree.h:  Add some now-needed function declarations.
15748         * Makefile.in (JAVA_OBJS): Added verify.o.
15749
15750 1997-08-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15751
15752         * class.c (add_method): Sets the METHOD_SYNCHRONIZED flag, sets the
15753         METHOD_ABSTRACT flag.
15754
15755         * java-tree.h (METHOD_SYNCHRONIZED): Set to DECL_LANG_FLAG_4.
15756         (IS_METHOD_CLINIT_P, IS_METHOD_INIT_P): New macros.
15757         (METHOD_ABSTRACT): Set to DECL_LANG_FLAG_5
15758
15759         * decl.c (soft_monitorenter_node, soft_monitorexit_node): New global
15760         variables.
15761         (start_java_method): Hook for SYNCHRONIZED methods.
15762
15763         * expr.c (build_java_jsr, build_java_ret): New functions
15764         (JSR,PRE): New macros
15765         (PRE_TABLE_SWITCH, PRE_LOOKUP_SWITCH): Fixed and secured.
15766         (verify_jvm_instructions): tableswitch, lookupswitch,
15767         monitorenter, monitorexit, goto_w: verified.
15768         (LOOKUP_SWITCH, TABLE_SWITCH): Fixed generation of default: label
15769         (build_java_monitor): New function.
15770         (MONITOR_OPERATION): Modified to call build_java_monitor()
15771         (verify_jvm_instructions): Started a thorough verification of
15772         invoke* bytecodes.
15773
15774 1997-08-19  Per Bothner  <bothner@cygnus.com>
15775
15776         Support verification of jsr/ret subroutines (used for try/finally).
15777         * decl.c (return_address_type_node):  New type node.
15778         * java-tree.h (LABEL_RETURN_LABEL, LABEL_RETURN_TYPE_STATE,
15779         RETURN_MAP_ADJUSTED, LABEL_RETURN_LABELS, LABEL_IN_SUBR,
15780         LABEL_SUBR_START, LABEL_SUBR_CONTEXT, BCODE_VERIFIED):  New macros.
15781         (TYPE_UNSET, TYPE_SECOND, TYPE_NULL, TYPE_RETURN_ADDR, TYPE_UNUSED,
15782         TYPE_USED):  New macros for special types in type_map.
15783
15784         * java-tree.h (BCODE_JUMP_TARGET):  Renamed to BCODE_TARGET.
15785         (BCODE_BACKWARDS_TARGET, CODE_FORWARDS_TARGET):  Replaced by
15786         BCODE_JUMP_TARGET.
15787         * expr.c (expand_byte_code):  Fix logic to warn of unused instructions.
15788
15789         * expr.c (can_widen_reference_to):  New function.
15790         (pop_type):  Use it.
15791         (merge_type_state):  Support handling start of subroutine.
15792         (push_pending_block):  Return char* error message, instead of calling
15793         fatal on an error.  Also handle subroutines.
15794         (verify_jvm_instructions):  Handle errors from push_poending_block.
15795         Support jsr and ret instructions.
15796
15797 1997-08-19  Per Bothner  <bothner@cygnus.com>
15798
15799         * jcf-io.c (find_classfile):  Fix thinko.
15800         * jcf-dump.c:  Add CONVERT2 (to match changed javaop.def).
15801
15802 1997-08-12  Jason Merrill  <jason@yorick.cygnus.com>
15803
15804         * Makefile.in (BISON): Remove.
15805
15806 1997-08-07  Per Bothner  <bothner@cygnus.com>
15807
15808         * Makefile.in:  Convert to autoconf.
15809         * config-lang.in (outputs):  Added java/Makefile.
15810
15811         * Make-lang.in, lang-specs.h, config-lang.in, Makefile.in:
15812         Rename cc1java to jc1.
15813
15814         * lang.c (init_parse, finihs_parse):  New functions #ifdef USE_CPPLIB.
15815         * Makefile.in (INTERNAL_CFLAGS):  Add @extra_c_flags.
15816
15817         * class.c (class_depth):  Do load_class if needed.
15818
15819         Mostly better verification.
15820         * decl.c (pushdecl):  Set TYPE_STUB_DECL for a type.
15821         (init_decl_processing):  Change return type of soft_checkcast.
15822         * expr.c (expand_java_CHECKCAST):  Do push_value of the "casted" value.
15823         * lang.c (put_decl_string, put_decl_node, lang_printable_name,
15824         lang_print_error):  New functions.
15825         (lang_init):  Set global hook print_error_function to lang_print_error.
15826         * expr.c:  In the type_map ptr_type_node is only used for null now.
15827         (pop_type, merge_types):  Hence ptr_type_node matches any reference.
15828         (merge_types):  Dererence pointer to record types before comparing.
15829         (decode_newarray_type, merge_types):  On error just return NULL.
15830         (build_java_binop):  Add preliminary implementation (with warning)
15831         for COMPARE_L_EXPR and COMPARE_G_EXPR (i.e. [fd]cmp[lg]).
15832         (lookup_label):  Set DECL_IGNORED_P (for dwarf2out).
15833         (expand_compare, expand_java_goto, expand_java_call):  Don't
15834         push_pending_block, since that only makes sense when verifying.
15835         (merge_type_state):  Different return codes.
15836         (push_pending_block):  A block may need to be verified more than once.
15837         (expand_byte_code):  Warn about unused code at code generation time.
15838         (verify_jvm_instruction):  Changed logic, since code may need to be
15839         re-verified if type-state has changed.  Also, better error handling.
15840         Implement acmpeq, acmpne, pop, pop2, swap, checkcast, instanceof.
15841         Improve newarray, anewarray, ?aload, athrow,
15842         * java-tree.h (LABEL_CHANGED):  New macro.
15843
15844 1997-08-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15845
15846         * decl.c (soft_athrow_node): New global variable initialized.
15847         * javaop.def (i2b, i2c, i2s): Invoke CONVERT2
15848         * typeck.c (convert): Added support for REAL_TYPE.
15849         (convert_to_char): New function.
15850         (convert): Handle CHAR_TYPE.
15851         * expr.c (expand_java_arraystore): Modified because CHAR/BYTE/BOOLEAN/
15852         SHORT now expect INT but store as CHAR/BYTE/BOOLEAN/SHORT.
15853         (expand_java_arrayload): CHAR/BYTE/BOOLEAN/SHORT now convert result to
15854         promoted type.
15855         (verify_jvm_instructions): Added break a the end of bogus unop: label.
15856         (OPCODE_<b|c|s>astore): Pop an int operand from the type stack
15857         (OPCODE_<b|c|s>astore): Push the promoted type onto the stack
15858         (process_jvm_instruction): New macro CONVERT2 for i2c, i2s and i2b.
15859         (JAVA_ARRAY_LENGTH_OFFSET, JAVA_ARRAY_DATA_OFFSET): Modified
15860         to Use The Right Things.
15861         (pop_type): Accept CHAR/BYTE/BOOLEAN/SHORT promoted type as
15862         compatible with INT. BOOLEAN is made equivalent to BYTE.
15863         (OPCODE_athrow, OPCODE_aconst_null, OPCODE_ifnull,
15864         OPCODE_ifnonnull): Now supported.
15865         (build_java_athrow): New function.
15866
15867 1997-08-04  Per Bothner  <bothner@cygnus.com>
15868
15869         Rename method name <init> to match G++ (and fix mangling).
15870         * class.c (layout_class):  Replace method name of <init> by class name.
15871         (make_method_value):  Do inverse renaming of constructor from <init>.
15872         * java-tree.h (DECL_CONSTRUCTOR_P):  New macro.
15873         * typeck.c (lookup_java_constructor):  New function.
15874         * expr.c (expand_invoke):  If method_name is <init>, call
15875         lookup_java_constructor to find constructor.
15876
15877         * parse.c (get_constant):  Handle CONSTANT_Float and CONSTANT_Double.
15878
15879 1997-08-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
15880
15881         * parse.c (get_class_constant): Modified to handle array "classes"
15882         * typeck.c (set_local_type): Bug fixed when filling type_map[] with
15883         wide type.
15884         (convert): Modified to handle real type.
15885         * java-tree.h (soft_badarrayindex_node, soft_anewarray_node,
15886         soft_multianewarray, soft_newarray_node, soft_throw_node): New global
15887         variables declared.
15888         * decl.c (soft_badarrayindex_node, soft_anewarray_node,
15889         soft_multianewarray, soft_newarray_node, soft_throw_node): New
15890         global variables initialized.
15891         (find_local_variable): Handles the case of a pointer
15892         (end_java_method): Restore the use of one more scope
15893         * expr.c (build_java_arraynull_check, build_java_arrayaccess,
15894         build_java_array_length_access, expand_java_arrayload,
15895         expand_java_arraystore, expand_java_array_length,
15896         expand_java_multianewarray, expand_java_anewarray,
15897         build_java_check_indexed_type, is_array_type_p,
15898         build_java_throw_out_of_bound_exception): New functions.
15899         (STORE_INTERNAL): Now forces type of the decl to be type of the value.
15900         (OPCODE_arraylength, OPCODE_newarray, OPCODE_<t>astore,
15901         OPCODE_<t>aload): Implemented code for verification.
15902         (ARRAY_STORE, ARRAY_LOAD, ARRAY_LENGTH, ARRAY_NEW_PTR, ARRAY_NEW_NUM
15903         ARRAY_NEW_MULTI): Macro defined.
15904         (CONVERT): Modified to invoke convert().
15905         (case OPCODE_aload2): Fixed index typo from 2 to 1.
15906
15907 1997-07-31  Per Bothner  <bothner@cygnus.com>
15908
15909         * class.c (push_class):  Set DECL_ARTIFICIAL (for dbxout.c).
15910         (build_class_ref, is_compiled_class):  Handle pointer-to-record types.
15911         (make_class_data):  Field name needs '/' as package prefix.
15912         * expr.c (type_stack_dup, java_stack_dup):  Fix fencepost errors.
15913
15914 1997-07-25  Per Bothner  <bothner@cygnus.com>
15915
15916         Implement debug information for local variables.
15917         * java-tree.h (DECL_CODE_LENGTH, DECL_ARG_SLOT_COUNT,
15918         DECL_LOCAL_SLOT_NUMBER, DECL_LOCAL_START_PC, DECL_LOCAL_END_PC,
15919         DECL_LOCAL_SLOT_CHAIN):  New macros.
15920         (struct lang_decl_var):  New type.
15921         * parse.c (give_name_to_locals):  Move to decl.c.
15922         * decl.c (give_name_to_locals):  Re-written to Do The Right Thing.
15923         (start_java_method):  Re-write parameter handling.
15924         (pending_local_decls):  New global variable.
15925         (push_jvm_slot, maybe_pushlevels, maybe_poplevels):  New functions.
15926         (find_local_variable):  Accept pc so we can skips decls not in range.
15927         (struct binding_level):  Add end_pc field.
15928         * expr.c (expand_byte_code): Call maybe_pushlevels and maybe_poplevels.
15929         (various):  Change so current pc gets passed to find_local_variable.
15930
15931         * decl.c (init_decl_processing):  Re-arrange fields in
15932         class_type_node and and method_type_node to match kaffe 0.9.1.
15933         * class.c (make_method_value, make_class_data):  Update
15934         initializations to match.
15935
15936 1997-07-16  Per Bothner  <bothner@cygnus.com>
15937
15938         * class.c (unicode_mangling_length, emit_unicode_mangled_name,
15939         append_gpp_mangled_name, append_gpp_mangled_type):  New functions.
15940         (push_super_field):  New function.
15941         (make_class_data):  Handle inheritance of class static initializer.
15942         (layout_class):  New name mangling.
15943         * constants.c (build_constant_data_ref):  Init type of data array
15944         to a one-element array.
15945         (build_constants_constructor):  Set DECL_SIZE from complete array type.
15946         * decl.c:  Rename class_type, object_type etc to class_type_node,
15947         object_type_node etc.  Make former inherit from latter.
15948         * expr.c (expand_invoke):  Add cast of function address.
15949         * java-tree.h (TYPE_ARRAY_ELEMENT, PUSH_SUPER_VALUE):  New.
15950         * parse.c (yyparse):  Don't call layout_class here.
15951         * typeck.c (build_java_array_type):  Set TYPE_ARRAY_ELEMENT.
15952
15953 1997-06-14  Per Bothner  <bothner@cygnus.com>
15954
15955         * decl.c, class.c:  Update method type to match latest Kaffe snapshot.
15956         * constants.c (lookup_name_constant):  Renamed to alloc_name_constant.
15957         (alloc_class_constant):  New.
15958         * expr.c (expand_invoke):  Make sure method's class is initialized.
15959         * class.c (interits_from_p, emit_register_class):  New functions.
15960         * parse.c (yyparse):  Call emit_register_class.
15961
15962 1997-06-09  Per Bothner  <bothner@cygnus.com>
15963
15964         * constants.c:  New file, to handle constant pool.
15965         * Makefile.in (JAVA_OBJS):  Add constants.o.
15966         * decl.c (init_decl_processing):  Update, fix, finish various structs.
15967         (pushdecl_top_level):  New.
15968         * parse.c (layout_class):  Moved to class.c.
15969         * expr.c (java_push_constant_from_pool):  New function.
15970         * class.c (build_class_ref):  Make work fully
15971         (make_class_data):  Emit super-class, constant pool, interface vector.
15972
15973 1997-06-03  Per Bothner  <bothner@cygnus.com>
15974
15975         java-tree.h (DECL_SIGNATURE, BCODE_EMITTED):  Remove.
15976         (LABEL_VERIFIED, BCODE_EXCEPTION_TARGET, TYPE_ARRAY_P):  New.
15977         * class.c (class_depth):  New function.
15978         (lookup_named_class):  Replaced by new function lookup_class.
15979         * decl.c (object_type_node, string_type_node):  New.
15980         Remove various types that we no longer need.
15981         * expr.c (verify_jvm_instructions):  New separate verifier pass.
15982         (push_type, pop_type):  New functions for verifier.
15983         (type_stack_dup, pop_argument_types, merge_types):  Likewise.
15984         (expand_byte_code):  Simplify, since we assume already verified.
15985         (expand_invoke):  Now mostly works.
15986         * javaop.def:  Rename ldc1->ldc, ldc2->ldc_w, ldc2w->ldc2_w.
15987         * lang.c (main_class):  Move to parse.c.  Don't make_class yet.
15988         * parse.c:  Wait to allocate class object until we know its name.
15989         (layout_class):  Calculate DECL_VINDEX for each virtual method.
15990         * typeck.c (get_array_type):  Rename to ...
15991         (build_java_array_type):  ... and provide working implementation.
15992         (build_java_signature):  New function - build Java signature of type.
15993         (set_java_signature):  New function - cache signature with type.
15994         (lookup_java_method):  New function.
15995
15996 1997-05-06  Per Bothner  <bothner@deneb.cygnus.com>
15997
15998         * class.c (ident_subst):  Take extra SUFFIX parameter.
15999         (add_field):  Set DECL_ASSEMBLER_NAME of static fields;  more.
16000         (set_constant_value, build_static_field_ref, is_compiled_class):  New.
16001         (build_class_ref):  Actually implement.
16002         * decl.c, java-tree.h:  Renamed some xx_type to xx_type_node.
16003         * decl.c (builtin_function):  New.
16004         (init_decl_processing):  Update for current Kaffe.  Declare some
16005         builtin Kaffe functions.
16006         * expr.c (build_address_of):  New.
16007         (expand_java_NEW, expand_java_INSTANCEOF, expand_java_CHECKCAST):
16008         Renamed (from expand_java_new etc), and added working implementations.
16009         (build_field_ref):  Now also handle static fields.
16010         (expand_invoke):  Implement invokestatic, and start implement rest.
16011         * java-opcodes.h:  Use javaop.def to avoid duplicated list.
16012         * javaop.def:  Rename invokevirt -> invokevirtual.
16013         * lang.c (use_handles):  Removed.
16014         * parse.c:  Add support for ConstantValue attribute.
16015         Handle nested loading of a class.  (JPOOL_UTF):  New.
16016
16017 1997-03-11  Per Bothner  <bothner@deneb.cygnus.com>
16018
16019         * expr.c (expand_java_pushc):  Support #ifndef REAL_ARITHMETIC case.
16020
16021 1997-02-27  Per Bothner  <bothner@deneb.cygnus.com>
16022
16023         * Make-lang.in (java.install-man):  New empty rule.
16024         * typeck.c (set_local_type):  New function.
16025         * expr.c (STORE_INTERNAL):  Call find_local_variable,
16026         not find_stack_slot.  Call set_local_type.
16027
16028 1997-02-12  Per Bothner  <bothner@kalessin.cygnus.com>
16029
16030         * java-tree.h:  Various new macros for constructing RECORD_TYPEs,
16031         and building RECORD_TYPE CONSTRUCTORs.
16032         Also support for creating Utf8Const objects from an INDETIFIER_NODE.
16033
16034         * lang.c (use_handles):  Change the default to 0.
16035         * decl.c:  Define and build class_type, field_type, utf8const_type.
16036         * class.c (make_class_data, make_field_value,
16037         get_access_flags_from_decl, build_class_ref, build_utf8_ref,
16038         hashUtf8String, strLengthUtf8, mangled_classname:
16039         Functions to build reflective data structures.
16040         * parse.c (yyparse):  Call make_class_data.
16041
16042         * jcf-io.c (open_class, find_classfile):  New functions.
16043         * jcf-dump.c:  Support reading classfile from explicitly-named
16044         class file (without CLASSPATH searching).
16045
16046 1996-10-24  Per Bothner  <bothner@deneb.cygnus.com>
16047
16048         * jcf-reader.c:  Add parameter list to HANDLE_CONSTANT_Utf8.
16049         * parse.c (JPOOL_UTF_LENGTH, JPOOL_UTF_DATA, HANDLE_CONSTANT_Utf8):
16050         Override jcf-reader macros so CONSTANT_Utf8 becomes tree node here.
16051         (get_constant):  Now trivial for CONSTANT_Utf8.
16052
16053         * jcf.h:  Make NEW_CPOOL the default.
16054         * jcf.h, jcf-reader.c, parse.c:  Remove support for !NEW_CPOOL.
16055
16056 1996-10-24  Per Bothner  <bothner@deneb.cygnus.com>
16057
16058         New directory.