OSDN Git Service

* mangle.c (mangle_member_name): Don't special-case for
[pf3gnuchains/gcc-fork.git] / gcc / java / ChangeLog
1 2001-12-20  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
2
3         * mangle.c (mangle_member_name): Don't special-case for 
4         NO_DOLLAR_IN_LABEL.
5         * mangle_name.c (unicode_mangling_length): Likewise.
6         (append_unicode_mangled_name): Likewise.
7         * parse.y (make_nested_class_name): Remove dead NO_DOLLAR_IN_LABEL
8         code.
9
10 2001-12-20  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
11
12         * expr.c (build_java_array_length_access): Don't force null pointer
13         check unless flag_check_references is set.
14
15 2001-12-20  Tom Tromey  <tromey@redhat.com>
16
17         Fix for PR java/3417:
18         * parse.y (patch_assignment): Added special processing for
19         `return'.
20         (patch_return): Don't convert booleans to integers, and don't
21         special-case `null'.
22
23 2001-12-20  Joseph S. Myers  <jsm28@cam.ac.uk>
24
25         * config-lang.in (diff_excludes): Remove.
26
27 2001-12-17  Joseph S. Myers  <jsm28@cam.ac.uk>
28
29         * gcj.texi: Update link to GCC manual.
30
31 2001-12-17  Tom Tromey  <tromey@redhat.com>
32
33         * parse.y (link_nested_class_to_enclosing): Removed useless
34         statement.
35
36 2001-12-16  Tom Tromey  <tromey@redhat.com>
37
38         * mangle.c (mangle_method_decl): Never emit `C2' constructor.
39         Fixes PR java/5088.
40
41 2001-12-16  Joseph S. Myers  <jsm28@cam.ac.uk>
42
43         * ChangeLog, Make-lang.in, class.c, expr.c, gcj.texi, java-tree.h,
44         jcf-parse.c, jcf-write.c, lex.c, parse.h, parse.y, verify.c: Fix
45         spelling errors.
46
47 2001-12-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
48
49         * lex.c (java_read_unicode, java_lex): Use hex_p/hex_value.
50
51 2001-12-16  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
52
53         * decl.c (java_init_decl_processing): Build otable_type correctly.
54         otable_decl is an otable_type.
55
56 2001-12-15  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
57
58         * java-tree.h (otable_methods, otable_decl, otable_syms_decl,
59         otable_type, otable_ptr_type, method_symbol_type, 
60         method_symbols_array_type, method_symbols_array_ptr_type): New
61         field/global tree definitions.
62         (flag_indirect_dispatch): New flag.
63         * decl.c (java_init_decl_processing): Initialize new otable and 
64         otable_syms type nodes and decls. Add new field "index" to
65         method_type_node.
66         * class.c (build_method_symbols_entry): New function.
67         (make_method_value): Set "index" to to method's vtable index for
68         virtual methods when indirect-dispatch is not used.
69         (make_class_data): For indirect-dispatch, don't emit the dtable_decl,
70         and set vtable_method_count to -1. Set otable and otable_syms field
71         if indirect-dispatch is used and there was something to put in them.
72         (build_method_symbols_entry): New function.
73         (emit_offset_symbol_table): New function.
74         * expr.c (get_offset_table_index): New function.
75         (build_invokevirtual): Build array reference to otable at the index 
76         returned by get_offset_table_index, and use the result as the vtable
77         offset.
78         (build_invokeinterface): Similar.
79         * jcf-parse.c (yyparse): If indirect-dispatch, call 
80         emit_offset_symbol_table at the end of compilation, after all classes 
81         have been generated.
82         * jvspec.c: Don't pass findirect-dispatch to jvgenmain.
83         * lang.c (flag_indirect_dispatch): Define.
84         (lang_f_options): Add indirect-dispatch flag.
85
86 2001-12-14  Matthias Klose  <doko@debian.org>
87
88         * gcj.texi: Markup for man page generation. Document missing
89         options printed by <tool> --help.
90         Terminate description of gij's -ms option with a dot.
91         * Make-lang.in ($(srcdir)/java/*.1): New targets.
92         (java.generated-manpages java.install-man, java.uninstall,
93         java-maintainer-clean) Updated.
94
95 2001-12-14  Hans Boehm  <Hans_Boehm@hp.com>
96
97         * class.c (get_dispatch_table): Fix java vtable layout
98         for TARGET_VTABLE_USES_DESCRIPTORS.
99         * decl.c (java_init_decl_processing): Initialize
100         alloc_no_finalizer_node, finalize_identifier_node.
101         * expr.c (class_has_finalize_method): New function.
102         (expand_java_NEW): Generate calls for finalizer-free allocation.
103         (build_invokevirtual): Fix java vtable layout for
104         TARGET_VTABLE_USES_DESCRIPTORS.
105         * java-tree.h (enum java_tree_index): New entries: 
106         JTI_ALLOC_NO_FINALIZER_NODE, JTI_FINALIZE_IDENTIFIER_NODE.
107         (alloc_no_finalizer_node, finalize_deintifier_node): New macros.
108         (class_has_finalize_method): declare.
109         (HAS_FINALIZER_P): New macro.
110         * parse.y (patch_invoke): Generate calls for finalizer-free
111         allocation.
112
113 2001-12-12  Matthias Klose  <doko@debian.org>
114
115         * Make-lang.in: JAVA_INSTALL_NAME, JAVA_CROSS_NAME: Remove
116         whitespace at end of line.
117
118 2001-12-11  Tom Tromey  <tromey@redhat.com>
119
120         * lex.c (java_init_lex): Define wfl_to_string as
121         gnu.gcj.runtime.StringBuffer unless generating bytecode.
122
123 2001-12-11  Jeff Sturm  <jsturm@one-point.com>
124
125         * class.c (make_method_value): Use null_pointer_node to
126         represent empty exception table.
127
128 2001-12-10  Tom Tromey  <tromey@redhat.com>
129
130         * check-init.c (check_init) [SWITCH_EXPR]: Use SWITCH_HAS_DEFAULT.
131
132 Mon Dec 10 06:09:57 2001  Douglas B. Rupp  <rupp@gnat.com>
133
134         * Make-lang.in (jvspec.o): Add $(OUTPUT_OPTION).
135
136 2001-12-09  Per Bothner  <per@bothner.com>
137
138         * check-init.c (current_switch_has_default):  New static field.
139         (check_init):  Case DEFAULT_EXPR: Set current_switch_has_default.
140         Case SWITCH_EXPR:  Save/restore current_switch_has_default.  If no
141         DEFAULT_EXPR seen, simulate a default alternative that copies state.
142
143 2001-12-09  Tom Tromey  <tromey@redhat.com>
144
145         * check-init.c (check_init): Don't allow pre- or post- increment
146         or decrement of final variable.
147         (final_assign_error): Minor error message rewording.
148
149 2001-12-08  Tom Tromey  <tromey@redhat.com>
150
151         * java-tree.h: Fixed typo.
152
153         * gjavah.c (decompile_method): Don't decompile to `return this'
154         for static methods.
155
156         * gjavah.c (cxx_keywords): Re-sorted.
157         * lex.c (cxx_keywords): Re-sorted.
158
159         * gjavah.c (HANDLE_METHOD): Set `decompiled' before doing anything
160         else.
161
162         * gjavah.c (print_namelet): Clear subnamelets.
163         (HANDLE_METHOD): Set `method_printed' earlier.
164
165 2001-12-07  Tom Tromey  <tromey@redhat.com>
166
167         * lang.c (lang_f_options): Added
168         optimize-static-class-initialization.
169         (java_decode_option): Removed special case.
170
171 2001-12-07  Per Bothner  <per@bothner.com>
172
173         * check-init.c (check_init):  Fix typo freeing memory twice.
174
175 2001-12-05  Per Bothner  <per@bothner.com>
176
177         Restore support for static class initialization optimization.
178         * java-tree.h (STATIC_CLASS_INIT_OPT_P): Re-enable.
179         * check-init.c (check_int):  At end of BLOCK handle initialization
180         blocks, which used to be done in java_complete_expand_method but did
181         not handle the case where check_for_initialization might allocate
182         more than a word of bits.
183         * decl.c (lang_make_tree):  The smic field is now a tree.
184         * expr.c (build_class_init):  Set DECL_FUNCTION_INIT_TEST_CLASS field.
185         * java-tree.h (DECL_FUNCTION_INIT_TEST_TABLE):  New macro.
186
187         * parse.y (emit_test_initialization):  Combine hash_lookup calls.
188
189         * java-tree.h (DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND):
190         Change from a hash table to a list.
191         (struct_lang_decl):  Change field 'smic' to match.
192         * class.c (add_method_1):  Initialize
193         DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND to null list.
194         * parse.y (adjust_init_test_initialization):  Removed - inlined into -
195         (java_expand_method_bodies): -here, since 'smic' is now a list.
196         (patch_invoke):  Add to 'smic' list, instead of hash_lookup.
197
198         * check-init.c (WORD_SIZE):  Use BITS_PER_UNIT.
199
200         * class.c (java_hash_compare_tree_node):  Fix casts.
201
202 2001-12-04  Per Bothner  <per@bothner.com>
203
204         * check-init.c:   Handle definite unassignment to finals in addition
205         to definite assignment.
206         (loop_current_locals):  New field.
207         (num_current_locals, int start_current_locals, num_current_words):
208         Make static.
209         (SET_P, CLEAR_P, SET_BIT):  Add needed but missing parentheses.
210         (ASSIGNED_P, UNASSIGNED_P, SET_ASSIGNED, SET_UNASSIGNED,
211         CLEAR_ASSIGNED, CLEAR_UNASSIGNED):  New macros.
212         (get_variable_decl, check_final_reassigned):  New functions.
213         (check_init, check_bool_init):  Modify as needed for checking finals.
214         (check_for_initialization):  Take extra parameter and return void.
215         Do extra start-up logic to check final fields for assignment.
216         * parse.y (check_static_final_variable_assignment_flag,
217         reset_static_final_variable_assignment_flag, check_final_assignment,
218         check_final_variable_local_assignment_flag,
219         reset_final_variable_indirect_assignment_flag,
220         reset_final_variable_global_assignment_flag):  Remove functions.
221         (java_complete_expand_methods, outer_field_access_fix,
222         patch_assignment): Remove no-longer used logic.
223         * java-tree.h (DECL_FIELD_FINAL_IUD):  Change usage and comments.
224         * parse.y (register_fields, java_complete_tree):  Update accordingly.
225
226         * check-init.c (ALLOC_WORDS/FREE_WORDS):  Use xmalloc/free, not alloca.
227         (DECLARE_BUFFERS, RELEASE_BUFFERS, ALLOC_BUFFER, FREE_BUFFER):  New.
228         (check_cond_init, check_bool2_init):  Use DECLARE_BUFFERS.
229
230         * java-tree.h (STATIC_CLASS_INIT_OPT_P):  Temporarily turn off.
231
232         * java-tree.h (DECL FINAL):  New bit-field.
233         (METHOD_FINAL, FIELD_FINAL, CLASS_FINAL):  Define as DECL_FINAL.
234         (LOCAL_FINAL_P):  Use DECL_FINAL rather than old LOCAL_FINAL.
235         (DECL_INIT_CALLS_THIS):  New macro.
236         (struct lang_decl):  New bit-field init_calls_this.
237         (DECL_FUNCTION_ALL_FINAL_INITIALIZED, DECL_FIELD_FINAL_LIIC,
238         DECL_FIELD_FINAL_IERR, LOCAL_FINAL, TYPE_HAS_FINAL_VARIABLE
239         (DECL_BIT_INDEX):  Change to use pointer_alias_set since we now
240         use it for both local variables and final fields.
241         (struct lang_decl_var):  Remove bit-fields final_liic, final_ierr,
242         and local_final.
243         (struct lang_type):  Remove hfv bit-field.
244         (check_for_initialization):  Change to return void.
245
246         * java-tree.h (IS_ARRAY_LENGTH_ACCESS):  New macros.
247         * expr.c (build_java_array_length_access):  Set IS_ARRAY_LENGTH_ACCESS.
248         * check-init.c (final_assign_error):  New helper function.
249         (check_final_reassigned, check_init):  Use it.
250         (check_init):  Also check IS_ARRAY_LENGTH_ACCESS for ARRAY.length.
251         
252         * java-tree.h (struct lang_decl, struct lang_decl_var):  Change all
253         bit-fields to unsigned.
254
255 2001-12-03  Per Bothner  <per@bothner.com>
256
257         * parse.y (patch_binop):  Minor constant folding.
258
259         * parse.y (build_current_thisn):  Shorter 'buffer'.
260
261 2001-12-03  Per Bothner  <per@bothner.com>
262
263         * decl.c (complete_start_java_method):  Now generate TRY_FINALLY_EXPR
264         instead of CLEANUP_POINT_EXPR and WITH_CLEANUP_EXPR.
265         * jcf-write.c (generate_bytecode_insns):  Remove support for
266         CLEANUP_POINT_EXPR and WITH_CLEANUP_EXPR as they are no longer used.
267         * check-init.c (check_init):  Likewise.
268
269 2001-12-03  Per Bothner  <per@bothner.com>
270
271         * verify.c (subroutine_nesting):  New function.
272         (verify_jvm_instructions):  Use it to fix logic for checking that
273         we're done with the current subroutine.
274
275         * verify.c (verify_jvm_instruction): For OPCODE_checkcast and
276         OPCODE_instanceof use POP_TYPE macro for better diagnostics.
277
278 2001-12-03  Per Bothner  <per@bothner.com>
279
280         * jcf.h:  Fix obvious typo in comment.
281         * typeck.c (build_null_signature):  Add comment.
282
283 2001-12-03  Neil Booth  <neil@daikokuya.demon.co.uk>
284
285         * expr.c: Remove leading capital from diagnostic messages, as
286         per GNU coding standards.
287         * jcf-io.c: Similarly.
288         * jcf-parse.c: Similarly.
289         * jv-scan.c: Similarly.
290         * jvspec.c: Similarly.
291         * mangle.c: Similarly.
292
293 2001-12-02  Tang Ching-Hui  <nicholas@cs.nthu.edu.tw>
294             Alexandre Petit-Bianco  <apbianco@redhat.com>
295
296         * expr.c (build_java_arrayaccess): Call save_expr on array for 
297         correct evaluation order, modified comment, fixed indentation.
298         * parse.y: (patch_assignment): Correctly extract the array base
299         from the tree generate by build_java_arrayaccess, added comments.
300         (patch_array_ref): Remove SAVE_EXPR on ARRAY_REF.
301         Fixes PR java/3096, PR java/3803, PR java/3965.
302
303 2001-12-01  Neil Booth  <neil@daikokuya.demon.co.uk>
304
305         * expr.c (expand_byte_code): Remove trailing periods from messages.
306         * jcf-parse.c (load_class, jcf_parse): Similarly.
307         * jcf-write.c (generate_classfile): Similarly.
308         * lex.c (java_lex): Similarly.
309
310 2001-11-30  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
311
312         * class.c (add_interface_do): Set BINFO_VPTR_FIELD.
313
314 2001-11-29  Joseph S. Myers  <jsm28@cam.ac.uk>
315
316         * Make-lang.in (java.generated-manpages): New dummy target.
317
318 2001-11-27  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
319
320         * jvspec.c (jvgenmain_spec): Cannot use %umain, breaks
321         ASM_FINAL_SPEC.
322         (lang_specific_pre_link): Use set_input to set input_filename.
323         Append `main' here.
324         * jvgenmain.c (usage): Append literal `main' to CLASSNAME.
325         (main): Fix definition.
326         Strip `main' from classname.
327         Fixes PR java/227.
328
329 2001-11-18  Roger Sayle <roger@eyesopen.com>
330
331         * parse.h (java_expand_switch): Remove old prototype.
332
333 2001-11-18  Tom Tromey  <tromey@redhat.com>
334
335         Fix for PR java/1401:
336         * jcf-write.c (generate_bytecode_insns) [binop]: Handle case where
337         arg0 is null.
338         (generate_bytecode_insns) [MODIFY_EXPR]: Handle `OP=' case
339         correctly.
340
341 2001-11-18  Neil Booth  <neil@daikokuya.demon.co.uk>
342
343         * lang.c (finish_parse): Rename to java_finish.
344         (LANG_HOOKS_FINISH, java_finish): New.
345
346 2001-11-15  Neil Booth  <neil@daikokuya.demon.co.uk>
347
348         * decl.c (init_decl_processing): Rename java_init_decl_processing.
349         * java-tree.h: New prototype.
350         * lang.c (java_init): Update prototype.  Combine with old init_parse.
351
352 2001-11-13  Tom Tromey  <tromey@redhat.com>
353
354         * gjavah.c (method_signature): New global.
355         (HANDLE_METHOD): Set it.
356         (decompile_return_statement): New function.
357         (decompile_method): Use it.
358         (print_method_info): Removed `synth' argument.
359
360 2001-11-09  Neil Booth  <neil@daikokuya.demon.co.uk>
361
362         * java-tree.h (java_set_yydebug): New.
363         * jcf-parse.c (set_yydebug): Rename java_set_yydebug.
364         * lang.c (LANG_HOOKS_SET_YYDEBUG): Override.
365         (print_lang_decl, print_lang_type, print_lang_identifier,
366         print_lang_statistics, lang_print_xnode): Remove.
367
368 2001-11-09  Neil Booth  <neil@daikokuya.demon.co.uk>
369
370         * jcf-parse.c (init_lex): Remove.
371         * lang.c (language_string, lang_identify): Remove.
372         (struct lang_hooks): Constify.
373         (LANG_HOOKS_NAME): Override.
374         (init_parse): Update.
375
376 2001-11-08  Andreas Franck  <afranck@gmx.de>
377
378         * Make-lang.in (JAVA_INSTALL_NAME, JAVA_CROSS_NAME): Handle 
379         program_transform_name the way suggested by autoconf.
380         (java.install-common): Also transform auxiliary program names with
381         program_transform_name.
382
383 2001-11-08  Tom Tromey  <tromey@cygnus.com>
384
385         * parse.y (trap_overflow_corner_case): New rule.
386         (unary_expression): Use it.
387         * lex.c (java_init_lex): Don't set minus_seen.
388         (yylex): Don't use minus_seen.  Communicate overflow to parser for
389         it to handle.
390         (error_if_numeric_overflow): New function.
391         * parse.h (minus_seen): Removed field.
392         (JAVA_RADIX10_FLAG): New define.
393
394 2001-11-07  Tom Tromey  <tromey@redhat.com>
395
396         Patch for PR java/1414:
397         * parse.y (case_label_list): New global.
398         (goal): Register case_label_list with GC.
399         (java_complete_lhs): Save new case on case_label_list.
400         (patch_switch_statement): Check for duplicate case labels.
401
402 2001-11-07  Alexandre Petit-Bianco  <apbianco@redhat.com>
403
404         * parse.y (patch_assignment): Removed unused third argument.
405         (java_complete_lhs): Removed unused third argument to patch_assignment.
406
407 2001-11-06  Neil Booth  <neil@cat.daikokuya.demon.co.uk>
408
409         * lang.c: Include langhooks-def.h.
410         * Make-lang.in: Update.
411
412 2001-10-31  Zack Weinberg  <zack@codesourcery.com>
413
414         * Make-lang.in: Replace $(INTL_TARGETS) with po-generated.
415
416 2001-10-29  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
417
418         * mangle.c (find_compression_record_match): Don't match compression
419         records for package name elements unless they occur at the start of
420         the name. Fix for PR java/4717.
421
422 2001-10-25  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
423
424         * expr.c (expand_java_field_op): Don't special-case references to
425         java.lang.PRIMTYPE.TYPE.
426         (build_primtype_type_ref): Removed.
427         * java-tree.h (build_primtype_type_ref): Remove prototype.
428         * parse.y (maybe_build_primttype_type_ref): Removed.
429         (complete_function_arguments): Don't special-case references to
430         java.lang.PRIMTYPE.TYPE.
431         (patch_assignment): Likewise.
432         (array_constructor_check_entry): Likewise.
433
434 2001-10-24  Alexandre Petit-Bianco  <apbianco@redhat.com>
435
436         * mangle.c (static tree compression_table): Fixed leading comment.
437         * parse.h (struct parser_ctxt): Fixed field comment.
438         * parse.y (check_pkg_class_access): New prototype, fixed leading
439         comment, new parameter used to emit error only if passed as true.
440         (parse_check_super): Pass extra argument to check_pkg_class_access.
441         (do_resolve_class): Likewise.
442         (process_imports): Likewise.
443         (read_import_dir): Fixed indentation.
444         (find_in_imports_on_demand): New local class_type_name. Local
445         node_to_use deleted. while loop changed into for loop. Report
446         multiple definition only for accessible classes. Improved error
447         message.
448         (start_complete_expand_method): Local `ptr' removed. DECL_ARGUMENTS
449         assigned to parameter list, fixed indentation. while loop changed
450         into for loop, restore TREE_CHAIN on local `tem' before the next
451         iteration.
452
453 Tue Oct 23 14:02:17 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
454
455         * lang.c (lang_get_alias_set): Deleted.
456
457 2001-10-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
458
459         * gjavah.c (jni_print_char): Fix thinko in last change.
460
461         * gjavah.c (jni_print_char, decode_signature_piece): Use
462         safe-ctype macros and/or fold extra calls into fewer ones.
463         * lex.c (java_read_unicode, java_lex): Likewise.
464         * lex.h (JAVA_START_CHAR_P, JAVA_PART_CHAR_P, JAVA_ASCII_DIGIT,
465         JAVA_ASCII_HEXDIGIT, JAVA_ASCII_LETTER): Likewise.
466         * mangle_name.c (append_unicode_mangled_name,
467         unicode_mangling_length): Likewise.
468
469 2001-10-17  Richard Henderson  <rth@redhat.com>
470
471         * Make-lang.in (java/lang.o): Depend on langhooks.h.
472
473 2001-10-15  Alexandre Petit-Bianco  <apbianco@redhat.com>
474
475         * lang.c (langhooks.h): Included.
476         (LANG_HOOKS_INIT): Redefined.
477         (LANG_HOOKS_INIT_OPTIONS): Likewise.
478         (LANG_HOOKS_DECODE_OPTION): Likewise.
479         (struct lang_hooks lang_hooks): New initialization.
480
481 2001-10-11  Per Bothner  <per@bothner.com>
482
483         * parse.y (patch_synchronized_statement):  Use a TRY_FINALLY_EXPR
484         rather than a CLEANUP_POINT_EXPR/WITH_CLEANUP_EXPR pair.
485         The former is simpler, and jcf-write.c handles it better.
486         (java_complete_lhs):  No longer need to handle CLEANUP_POINT_EXPR
487         or WITH_CLEANUP_EXPR.
488         * jcf-write.c:  Revert Alex's change from 2000-10-18.  It is no
489         longer needed, as we already handle empty TRY_FINALLY_EXPR bodies fine.
490
491         * parse.y (patch_if_else_statement):  If the condition is constant,
492         optimize away the test.
493
494 2001-10-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
495
496         * parse.y (patch_cast): Call patch_string on the first operand of
497         the incoming node, update it if necessary. Fixes PR java/4510.
498
499 2001-10-09  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
500
501         * parse.y (find_as_inner_class): Don't disregard the enclosing scope
502         when name qualifier matches a package name.
503
504 2001-10-08  Tom Tromey  <tromey@redhat.com>
505
506         Fix for PR java/4489:
507         * jcf-write.c (generate_bytecode_insns) [SWITCH_EXPR]: Always
508         force a new label when computing `body_block'.
509
510 2001-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
511
512         * jcf-io.c (format_uint): Const-ify.
513         * lang.c (java_tree_code_type, java_tree_code_length): Likewise.
514         * lex.c (java_get_line_col): Likewise.
515         * parse.y (build_incdec): Likewise.
516
517 2001-10-05  Alexandre Petit-Bianco  <apbianco@redhat.com>
518
519         * parse.y (register_incomplete_type): Set JDEP_SUPER to be given
520         a NULL enclosing context if appropriate. Fixes PR java/4466.
521
522 2001-10-03  Alexandre Petit-Bianco  <apbianco@redhat.com>
523
524         * parse.y (patch_assignment): Use lvalue's original TYPE when
525         building the final COMPOUND_EXPR.
526         (try_reference_assignconv): Fixed leading comment.
527
528 2001-09-26  Alexandre Petit-Bianco  <apbianco@redhat.com>
529
530         * parse.y (check_final_variable_indirect_assignment): For
531         COMPOUND_EXPR, return only if finals were found initialized
532         properly, if not, keep on checking.
533         (check_final_variable_global_assignment_flag): New local
534         error_found, set when appropriate and used to decide whether to
535         report uninitialized finals. Fixed typo in comment.
536
537 2001-09-22  Alexandre Petit-Bianco  <apbianco@redhat.com>
538
539         * decl.c (init_decl_processing): Fixed typo in predef_filenames
540         last three initializations. Fixes PR java/4360.
541
542 2001-09-21  Richard Henderson  <rth@redhat.com>
543
544         * class.c (get_dispatch_table): Handle function descriptors.
545         (build_dtable_decl): Likewise.
546         * expr.c (build_invokevirtual): Likewise.
547
548 2001-09-20  Alexandre Petit-Bianco  <apbianco@redhat.com>
549
550         * parse.y (patch_method_invocation): Build class initialization
551         when static finals are used to qualify method invocation.
552         Fixes PR java/4366.
553
554 2001-09-19  Alexandre Petit-Bianco  <apbianco@redhat.com>
555
556         * parse.h: (WFL_STRIP_BRACKET): Re-written using
557         build_type_name_from_array_name.
558         (STRING_STRIP_BRACKETS): New macro.
559         * parse.y (build_type_name_from_array_name): New function.
560         (array_creation_expression:): Accumulate []s instead of [s.
561         (cast_expression:): Accumulate []s instead of [s after cast type
562         name.
563         (build_array_from_name): Local string deleted, use
564         build_type_name_from_array_name.
565         (build_unresolved_array_type): Accumulate []s instead of [s after
566         type name.
567         (register_fields): Fixed comment.
568         (resolve_class): Local name, base deleted, new locals tname and
569         array_dims. Use build_type_name_from_array_name. Use array_dims to
570         build array type.
571         (purify_type_name): Use STRING_STRIP_BRACKETS.
572
573 2001-09-18  Andreas Jaeger  <aj@suse.de>
574
575         * parse.y: Use VA_OPEN/VA_CLOSE/VA_FIXEDARG throughout.
576         * jv-scan.c: Likewise.
577
578 2001-09-17  Alexandre Petit-Bianco  <apbianco@redhat.com>
579
580         * parse.y (patch_method_invocation): Inner class creation context
581         check not enforced within constructors. Fixes PR java/1873.
582
583 2001-09-16  Tom Tromey  <tromey@redhat.com>
584
585         * jcf-write.c (generate_bytecode_insns) [SWITCH_EXPR]: Call
586         NOTE_PUSH for single-case push.  Fixes PR java/4189.
587
588 2001-09-13  Alexandre Petit-Bianco  <apbianco@redhat.com>
589
590         * java-tree.h (TYPE_IMPORT_LIST): New macro.
591         (TYPE_IMPORT_DEMAND_LIST): Likewise.
592         (struct lang_type): New fields import_list and import_demand_list.
593         * parse.y (java_complete_class): Initialize TYPE_IMPORT_LIST and
594         TYPE_IMPORT_DEMAND_LIST with ctxp counterparts.
595         (do_resolve_class): New local saved_enclosing_type, initialized,
596         passed as parameter to find_in_imports and find_in_imports_on_demand.
597         (find_in_imports): Added paramater enclosing_type, use its
598         TYPE_IMPORT_LIST when applicable.
599         (find_in_imports_on_demand): Added parameter enclosing_type, use
600         its TYPE_IMPORT_DEMAND_LIST when applicable. Reorganized locals
601         declaration and initialization.
602         (fold_constant_for_init): Switch/restore current_class to the
603         appropriate context.
604
605 2001-09-13  Mark Mitchell  <mark@codesourcery.com>
606
607         * verify.c (verify_jvm_instructions): Fix typo.
608
609 2001-09-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
610
611         * expr.c (expand_invoke): Const-ification.
612         * parse.y (patch_method_invocation): Likewise.
613
614 2001-09-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
615
616         * gjavah.c (cxx_keywords): Const-ification.
617         * keyword.gperf (java_keyword): Likewise.
618         * lang.c (java_tree_code_name): Likewise.
619         * lex.c (cxx_keywords): Likewise.
620         * parse.y (java_parser_context_suspend, merge_string_cste): Likewise.
621
622 2001-09-11  Richard Henderson  <rth@redhat.com>
623
624         * parse.h (ctxp_for_generation): Mark extern.
625
626 2001-09-10  Richard Henderson  <rth@redhat.com>
627
628         * class.c (build_class_ref): Set DECL_EXTERNAL before make_decl_rtl.
629
630 2001-09-07  Matt Kraai  <kraai@alumni.carnegiemellon.edu>
631
632         * typeck.c (java_array_type_length, build_prim_array_type):
633         Represent empty arrays by NULL index.
634
635 2001-09-06  Alexandre Petit-Bianco  <apbianco@redhat.com>
636
637         * java-tree.h (compile_resource_file): Grouped with other prototypes.
638         * jvspec.c (lang_specific_driver): Removed unused local `ptr.'
639
640 2001-09-06  Anthony Green  <green@redhat.com>
641
642         * class.c (O_BINARY): Define if necessary.
643         (registerResource_libfunc): Declare.
644         (init_class_processing): Initilize registerResource_libfunc.
645         (compile_resource_file): New function.
646         * java-tree.h (resource_name): Declare.
647         (compile_resource_file): Declare.
648         * jcf-parse.c (yyparse): Handle compiling java resource files.
649         * lang.c (java_decode_option): Handle -fcompile-resource option.
650         * jvspec.c (lang_specific_driver): Handle -R flag for compiling
651         resource files.
652         * gcj.texi (Code Generation): Add documentation for -R flag.
653
654 2001-09-05 Alexandre Petit-Bianco  <apbianco@redhat.com>
655
656         * jcf-write.c (generate_classfile): Issue an error in case of
657         field/initial value mismatch.
658         * parse.y (analyze_clinit_body): Keep <clinit> if an array is
659         being initialized and we're generating bytecode.
660         (java_complete_lhs): In MODIFY_EXPR section: added comments,
661         set DECL_INITIAL properly when appropriate.
662         Fixes PR java/4230
663         Fixes PR java/4204
664
665 2001-09-01  Per Bothner  <per@bothner.com>
666
667         * parse.y (maybe_yank_clinit):  A field without an initializer is not
668         relevant.  All initializers except static final and constant require
669         <clinit>, regardless of flag_emit_class_files.
670
671 2001-08-31  Per Bothner  <per@bothner.com>
672
673         * class.c (set_constant_value):  When not emiting class files, then a
674         String ConstantValue is a utf8const_ptr_type.
675
676 2001-08-30  Per Bothner  <per@bothner.com>
677
678         * jcf-write.c (generate_classfile):  Check that field is primitive
679         or string before emitting ConstantValue attribute.
680
681 2001-08-30  Per Bothner  <per@bothner.com>
682
683         * parse.y (resolve_qualified_expression_name):  If creating a
684         COMPOUND_EXPR, set it's type correctly.
685
686 2001-08-30  Per Bothner  <per@bothner.com>
687
688         * jcf-io.c (open_class):  Set filename field.
689
690         * jcf-parse,c (parse_class_file):  Set current_function_decl
691         for better error message when Code attribute is missing.
692
693         * lang.c (put_decl_node, lang_print_error):  Re-arrange for
694         better diagnostics, especially for constructors.
695
696 2001-08-30  Per Bothner  <per@bothner.com>
697
698         * jcf-write.c (generate_classfile):  Don't write ConstantValue
699         attribute if field is not final, for compatibility with jdk.
700
701         * jcf-write.c (generate_classfile):  Convert ConstantValue values
702         to correct type.  Work-around for front-end bug.
703         * class.c (set_constant_value):  Error if constant has wrong type.
704
705 2001-08-30  Per Bothner  <per@bothner.com>
706
707         * jcf-dump.c (print_constant):  Fix fencepost error so "Float" and
708         "Double" are printed at verbosity 1.
709
710         * jcf-dump.c (main):  Disable flag_print_attributes if --javap.
711
712         * jcf-dump.c (SPECIAL_IINC):  Remove unneeded casts to long.
713
714 2001-08-30  Alexandre Petit-Bianco  <apbianco@redhat.com>
715
716         * parse.y (patch_assignment): Don't verify final re-assignment here.
717         (java_complete_lhs): Verify assignments to finals calling
718         patch_assignment. Verify re-assignments to finals before calling
719         patch_assignment.
720
721 2001-08-29  Alexandre Petit-Bianco  <apbianco@redhat.com>
722
723         * parse.y (java_complete_lhs): Allow final locals in CASE_EXPRs.
724         Fixes PR java/1413
725
726 2001-08-28  Alexandre Petit-Bianco  <apbianco@redhat.com>
727
728         * lex.c (java_lex): new local found_hex_digits. Set and then used
729         in test to reject invalid hexadecimal numbers.
730         * parse.y (java_complete_tree): Prevent unwanted cast with
731         initialized floating point finals.
732         (patch_binop): Emit a warning when detecting a division by zero,
733         mark result not constant, don't simplify non integer division.
734
735 2001-08-28  Per Bothner  <per@bothner.com>
736
737         * jcf-write.c  (generate_bytecode_insns):  For increments and
738         decrements just recurse to push constant.  Improvement on Mark's patch.
739
740 2001-08-28  Mark Mitchell  <mark@codesourcery.com>
741
742         * jcf-write.c (generate_bytecode_insns): Generate an integer to
743         real conversion for increments and decrements of reals.
744
745 2001-08-27  Alexandre Petit-Bianco  <apbianco@redhat.com>
746
747         * parse.y (resolve_qualified_expression_name): Handle unresolved
748         qualified expressions, prevent numerical qualifiers, fixed typo.
749         Fixes PR java/4141
750
751 2001-08-24  Alexandre Petit-Bianco  <apbianco@redhat.com>
752
753         * parse.y (check_deprecation): Handle TYPE_DECL in a special case,
754         don't report anything but deprecated class when marked so. Handle
755         VAR_DECL.
756         (patch_method_invocation): Check deprecation on methods and types.
757         (patch_binop): code becomes an enum tree_code, added default: to
758         switch to handle that. Detect division by zero, try to fold and
759         return before using a subroutine.
760
761 2001-08-23  Alexandre Petit-Bianco  <apbianco@redhat.com>
762
763         * jcf-parse.c (yyparse): Set magic to 0, don't issue error for a
764         file smaller than 4 bytes.
765         * parse.y (check_inner_circular_reference): New function.
766         (check_circular_reference): Likewise.
767         (array_initializer:): Accept {,}.
768         (java_check_circular_reference): Rewritten using
769         check_circular_reference and check_inner_circular_reference.
770         (java_complete_expand_method): Unconditionally save and restore
771         the unpurged exception list.
772         (build_dot_class_method_invocation): Unmangle signature parameter.
773
774 2001-08-21  Tom Tromey  <tromey@redhat.com>
775
776         * decl.c (init_decl_processing): Add `throws' field to method
777         descriptor.
778         * class.c (make_method_value): Compute `throws' field for method.
779
780 2001-08-22  Alexandre Petit-Bianco  <apbianco@redhat.com>
781
782         * parse.y (resolve_inner_class): Keep local_enclosing to NULL if
783         circularity is detected.
784         (ctors_unchecked_throws_clause_p): Fixed leading comment.
785
786 2001-08-17  Richard Henderson  <rth@redhat.com>
787
788         * class.c (emit_register_classes): Add align parameter to
789         call to assemble_integer.
790
791 2001-08-16  Alexandre Petit-Bianco  <apbianco@redhat.com>
792
793         * jcf-parse.c (load_class): New locals saved and class_loaded. If
794         loading a class_or_name fails, try considering an innerclass name
795         and load the enclosing context.
796         * parse.y (resolve_inner_class): New function.
797         (find_as_inner_class): Added leading comment.
798         (register_incomplete_type): Keep the current context as enclosing
799         context for JDEP_FIELD dependencies.
800         (do_resolve_class): Locals new_class_decl and super initialized to
801         NULL. Call resolve_inner_class, explore the enclosing context
802         superclass if necessary.
803         Fixes PR java/4007
804
805 2001-08-16  Tom Tromey  <tromey@redhat.com>
806
807         * jcf-dump.c (main): Updated for change to jcf_path_seal.
808         * gjavah.c (main): Updated for change to jcf_path_seal.
809         * lang.c (version_flag): New global.
810         (java_decode_option): Recognize `-version'.
811         (java_init): Update for change to jcf_path_seal.
812         * jcf.h (jcf_path_seal): Added `print' argument.
813         * jcf-path.c (jcf_path_seal): Added `print' argument.
814
815 2001-08-13  Zack Weinberg  <zackw@panix.com>
816
817         * Make-lang.in (java/decl.o): Update dependencies.
818         * decl.c: Include libfuncs.h, don't include toplev.h.
819
820 2001-08-12  Alexandre Petit-Bianco  <apbianco@redhat.com>
821
822         * decl.c (init_decl_processing): exception_type_node,
823         class_not_found_type_node, and no_class_def_found_type_node
824         initialized. predef_filenames augmented accordingly.
825         instinit_identifier_node initialized.
826         * java-tree.def (INSTANCE_INITIALIZERS_EXPR): Entry removed.
827         * java-tree.h (enum java_tree_index): New entries
828         JTI_EXCEPTION_TYPE_NODE, JTI_CLASS_NOT_FOUND_TYPE_NODE,
829         JTI_NO_CLASS_DEF_FOUND_TYPE_NODE, JTI_INSTINIT_IDENTIFIER_NODE.
830         (exception_type_node): New macro.
831         (class_not_found_type_node): Likewise.
832         (no_class_def_found_type_node): Likewise.
833         (instinit_identifier_node): Likewise.
834         (PREDEF_FILENAMES_SIZE): Adjusted.
835         (TYPE_HAS_FINAL_VARIABLE): Fixed typo.
836         (struct lang_type): Fixed typo in bitfield name.
837         (DECL_INSTINIT_P): New macro.
838         (ID_INSTINIT_P): Likewise.
839         * jcf-write.c (generate_classfile): instinit$ bears the Synthetic
840         attribute.
841         * parse.y (encapsulate_with_try_catch): New function.
842         (generate_instinit): Likewise.
843         (build_instinit_invocation): Likewise.
844         (ctors_unchecked_throws_clause_p): Likewise.
845         (add_instance_initializer): Deleted.
846         (build_instance_initializer): Likewise.
847         (in_instance_initializer): Likewise.
848         (check_method_redefinition): instinit$ not to be verified.
849         (java_complete_expand_methods): Generate instinit$, simplified code.
850         (build_dot_class_method): Eliminated unnecessary locals. Use
851         encapsulate_with_try_catch, removed unnecessary code.
852         (fix_constructors): New local iii. Use build_instinit_invocation.
853         (patch_method_invocation): Added comment.
854         (maybe_use_access_method): Don't consider instinit$.
855         (find_applicable_accessible_methods_list): Shorten the search for
856         instinit$ too.
857         (java_complete_lhs): case INSTANCE_INITIALIZERS_EXPR removed.
858         (patch_return): Use DECL_INSTINIT_P instead of in_instance_initializer.
859         (patch_throw_statement): Likewise. Fixed typo.
860
861 2001-08-12  David Edelsohn  <edelsohn@gnu.org>
862
863         Revert:
864         2001-08-02  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
865         * jvspec.c (jvgenmain_spec): Cannot use %umain, breaks
866         ASM_FINAL_SPEC.
867         (lang_specific_pre_link): Use set_input to set input_filename.
868         Append `main' here.
869         * jvgenmain.c (usage): Append literal `main' to CLASSNAME.
870         (main): Fix definition.
871         Strip `main' from classname.
872         Fixes PR java/227.
873
874 2001-08-11  Zack Weinberg  <zackw@panix.com>
875
876         * lex.h: Don't include setjmp.h.  Don't define
877         SET_FLOAT_HANDLER or prototype set_float_handler.
878
879 2001-08-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
880
881         * expr.c (java_lang_expand_expr): Call `expand_end_bindings' and
882         `poplevel' in the right order.
883
884 2001-08-09  Richard Henderson  <rth@redhat.com>
885
886         * Make-lang.in (class.o): Depend on TARGET_H.
887         * class.c (emit_register_classes): Use target hooks instead of
888         assemble_constructor and assemble_destructor.
889
890 2001-08-08  Alexandre Petit-Bianco  <apbianco@redhat.com>
891
892         * check-init.c (flags.h): Include
893         (check_init): Don't report uninitialized static class
894         initialization flags, don't free bit index when doing static class
895         initialization optimization.
896         (check_for_initialization): Return type changed to `unsigned int.'
897         (attach_initialized_static_class): New function.
898         * class.c (add_method_1): Create the initialized static class
899         table if necessary.
900         (finish_class): Always emit deferred inline methods.
901         * decl.c (emit_init_test_initialization): Moved to expr.c
902         (complete_start_java_method): Don't traverse
903         DECL_FUNCTION_INIT_TEST_TABLE.
904         (lang_mark_tree): Mark hash tables in function decls.
905         * expr.c (emit_init_test_initialization): Moved from decl.c.
906         (build_class_init): Create LAG_DECL_SPECIFIC for the static class
907         initialization flag, set DECL_CONTEXT and
908         LOCAL_CLASS_INITIALIZATION_FLAG.
909         (java_lang_expand_expr): Emit initialization code for static class
910         initialized flags when entering block, if necessary.
911         * gcj.texi (-fno-optimize-static-class-initialization): Documented.
912         * java-tree.h (flag_optimize_sci): New global variable declaration.
913         (DECL_FUNCTION_INITIALIZED_CLASS_TABLE): New macro.
914         (DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND): Likewise.
915         (LOCAL_FINAL_P): Fixed typo in comment.
916         (FINAL_VARIABLE_P): Likewise.
917         (LOCAL_CLASS_INITIALIZATIO_FLAG): New macro.
918         (LOCAL_CLASS_INITIALIZATIO_FLAG_P): Likewise.
919         (struct lang_decl): New fields `ict', `smic' and `cif.'
920         (check_for_initialization): New returned value for global.
921         (attach_initialized_static_class): New global function.
922         (STATIC_CLASS_INIT_OPT_P): New macro.
923         * lang-options.h (-fno-optimize-static-class-initialization): New flag.
924         * lang.c (java_decode_option): Handle
925         `-fno-optimize-static-class-initialization'
926         * parse.y (start_complete_expand_method): New function.
927         (java_expand_method_bodies): Likewise.
928         (attach_init_test_initialization_flags): Likewise.
929         (adjust_init_test_initialization): Likewise.
930         (emit_test_initialization): Likewise.
931         (java_complete_expand_methods): Nullify abstract and native method
932         bodies.
933         (java_complete_expand_method): New locals `fbody', `block_body'
934         and `exception_copy.' Reorganized: directly return on empty method
935         bodies, call `start_complete_expand_method', remember definitely
936         initialized static class in function, don't expand method bodies.
937         (java_expand_classes): Call `java_expand_method_bodies' before
938         `finish_class' when compiling to native.
939         (resolve_expression_name): Use `orig' after building outer class
940         field access.
941         (patch_invoke): Remember static method invokations.
942
943 2001-08-06  Richard Henderson  <rth@redhat.com>
944
945         * class.c (emit_register_classes): Pass a symbol_ref and priority
946         to assemble_constructor.
947
948 2001-08-02  Alexandre Petit-Bianco  <apbianco@redhat.com>
949
950         * java-tree.h (all_class_filename): New macro.
951         (enum java_tree_index): New enum `JTI_ALL_CLASS_FILENAME.'
952         (BUILD_FILENAME_IDENTIFIER_NODE): Fixed leading comment. Link
953         newly created IDENTIFIER_NODE to `all_class_filename.'
954
955 2001-08-01  Jeff Sturm  <jsturm@one-point.com>
956
957         * java-tree.h (BUILD_FILENAME_IDENTIFIER_NODE):
958         Use ggc_add_tree_root to register roots.
959
960 2001-07-31  Alexandre Petit-Bianco  <apbianco@redhat.com>
961
962         * check-init.c (check_init): WITH_CLEANUP_EXPR node to use its
963         second operand calling check_init.
964         * decl.c (complete_start_java_method): Swaped second and third
965         arguments while creating WITH_CLEANUP_EXPR node.
966         * jcf-write.c (generate_bytecode_insns): Use second operand
967         instead of third when handling WITH_CLEANUP_EXPR.
968         * parse.y (java_complete_lhs): Expand second operand of
969         WITH_CLEANUP_EXPR nodes.
970         (patch_synchronized_statement): Swaped second and third arguments
971         while creating WITH_CLEANUP_EXPR node.
972
973 2001-07-18  Alexandre Petit-Bianco  <apbianco@redhat.com>
974
975         * parse.y (create_interface): Avoid cyclic inheritance report when
976         syntax error encountered during class definition.
977         Fixes PR java/2956
978
979 2001-08-02  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
980
981         * jvspec.c (jvgenmain_spec): Cannot use %umain, breaks
982         ASM_FINAL_SPEC.
983         (lang_specific_pre_link): Use set_input to set input_filename.
984         Append `main' here.
985         * jvgenmain.c (usage): Append literal `main' to CLASSNAME.
986         (main): Fix definition.
987         Strip `main' from classname.
988         Fixes PR java/227.
989
990 2001-07-18  Tom Tromey  <tromey@redhat.com>
991
992         For PR java/2812:
993         * lex.h: Use HAVE_ICONV, not HAVE_ICONV_H.
994         * lex.c (java_new_lexer): Use ICONV_CONST.
995         (java_read_char): Likewise.
996         * Make-lang.in (jc1$(exeext)): Link against LIBICONV.
997         (jv-scan$(exeext)): Likewise.
998
999 2001-07-17  Alexandre Petit-Bianco  <apbianco@redhat.com>
1000
1001         * parse.h (INTERFACE_INNER_MODIFIERS): Disallow `private.'
1002         * parse.y (check_class_interface_creation): Allow `private' if the
1003         enclosing is not an interface.
1004         (create_interface): Interface tagged public if the enclosing
1005         context is an interface.
1006         (create_class): Class tagged public if the enclosing context
1007         is an interface.
1008         Fixes PR java/2959
1009
1010 2001-07-17  Alexandre Petit-Bianco  <apbianco@redhat.com>
1011
1012         * class.c (push_class): Set DECL_SIZE to `integer_zero_node.'
1013         Fixes PR java/2665
1014
1015 2001-07-14  Tim Josling  <tej@melbpc.org.au>
1016
1017         * check-init.c (check_init): Remove references to EXPON_EXPR.
1018
1019 2001-07-13  Alexandre Petit-Bianco  <apbianco@redhat.com>
1020
1021         * parse.y (java_complete_lsh): Set CAN_COMPLETE_NORMALLY and unset
1022         TREE_CONSTANT_OVERFLOW of CASE_EXPR value.
1023         Fixes PR java/3602
1024
1025 2001-07-13  Tom Tromey  <tromey@redhat.com>
1026
1027         * jvspec.c (jvgenmain_spec): Remove -ffilelist-file from cc1
1028         invocation.
1029
1030 2001-07-12  Alexandre Petit-Bianco  <apbianco@redhat.com>
1031
1032         * parse.y (patch_method_invocation): Don't override primary if one
1033         is already provided, but let this$<n> be built. Fixed comment.
1034
1035 2001-07-12  Alexandre Petit-Bianco  <apbianco@redhat.com>
1036
1037         * parse.y (empty_statement:): Report empty statement error only
1038         when found at class declaration level.
1039         Fixes PR java/3635
1040
1041 2001-07-12  Tom Tromey  <tromey@redhat.com>
1042
1043         * expr.c (expand_load_internal): New function.
1044         (LOAD_INTERNAL): Use it.
1045
1046 2001-07-11  Alexandre Petit-Bianco  <apbianco@redhat.com>
1047
1048         * parse.y (verify_constructor_super): Compare anonymous class ctor
1049         args with `valid_method_invocation_conversion_p.'
1050         Fixes PR java/3285
1051
1052 2001-07-10  Alexandre Petit-Bianco  <apbianco@redhat.com>
1053
1054         * lang-specs.h: Forbit the use if `-femit-class-file{s}' without
1055         `-fsyntax-only.' Fixes PR java/3248
1056
1057 2001-07-10  Alexandre Petit-Bianco  <apbianco@redhat.com>
1058
1059         * jcf-io.c (find_class): Clarified error message. Fixes PR java/2603
1060
1061 2001-07-10  Alexandre Petit-Bianco  <apbianco@redhat.com>
1062
1063         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): No `this' is fine if the
1064         current function is static. Fixes PR java/1970
1065
1066 2001-07-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
1067
1068         * parse.y (patch_method_invocation): Add enclosing context to ctor
1069         calls if necessary. Fixes PR java/2953
1070
1071 2001-07-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
1072
1073         * parse.y (resolve_package): Abort if qualified expression member
1074         isn't right.
1075         (qualify_ambiguous_name): Don't qualify as type if `this' in use.
1076         Fixes PR java/1391
1077
1078 2001-07-07  Zack Weinberg  <zackw@stanford.edu>
1079
1080         * verify.c: Don't use // comments.
1081
1082 2001-07-05  Tom Tromey  <tromey@redhat.com>
1083
1084         * lang.c (flag_assume_compiled): Removed.
1085         * java-tree.h (flag_assume_compiled): Removed.
1086         * lang-options.h: Removed -ffile-list-file, -fuse-boehm-gc,
1087         -fhash-synchronization, -fuse-divide-subroutine,
1088         -fcheck-references, -femit-class-file, -femit-class-files,
1089         -fassume-compiled.  Updated --encoding information.  Changed
1090         -foutput-class-dir to `-d'.
1091
1092 2001-07-04  Daniel Berlin  <dan@cgsoftware.com>
1093
1094         * jcf-parse.c (parse_class_file): Add lineno parameter to
1095         debug_start_source_file call.
1096
1097 2001-07-04  Joseph S. Myers  <jsm28@cam.ac.uk>
1098
1099         * gcj.texi: Use gpl.texi.
1100         * Make-lang.in ($(srcdir)/java/gcj.info, java/gcj.dvi): Update
1101         dependencies and use doc/include in search path.
1102
1103 2001-07-03  Jeff Sturm  <jsturm@one-point.com>
1104
1105         * parse.y (fix_constructors): Test if a CALL_EXPR invokes
1106         `this'.  If so, don't build instance initializers.
1107
1108 2001-07-03  Alexandre Petit-Bianco  <apbianco@redhat.com>
1109
1110         * parse.y (resolve_expression_name): Improved error message for
1111         inner class cases. Fixes PR java/1958
1112
1113 2001-06-28  Gabriel Dos Reis  <gdr@codesourcery.com>
1114
1115         * lang.c: #include diagnostic.h
1116         (lang_print_error): Add a `diagnostic_context *' parameter.
1117         (java_dummy_print): Likewise.
1118         * Make-lang.in (JAVA_LEX_C): Depend on diagnostic.h
1119
1120 2001-06-27  Alexandre Petit-Bianco  <apbianco@redhat.com>
1121
1122         * jcf-parse.c (gcc_mark_jcf): Test for a finished JCF.
1123         * jcf.h (typedef struct JCF): New bitfield `finished.'
1124         (JCF_FINISH): Set `finished.'
1125         (JCF_ZERO): Reset `finished.'
1126         Fixes PR java/2633
1127
1128 2001-06-27  Alexandre Petit-Bianco  <apbianco@redhat.com>
1129
1130         * parse.y (class_body_declaration:): Don't install empty instance
1131         initializers.
1132         Fixes PR java/1314
1133
1134 2001-06-27  Alexandre Petit-Bianco  <apbianco@redhat.com>
1135
1136         * class.c (set_super_info): Call `set_class_decl_access_flags.'
1137         (set_class_decl_access_flags): New function.
1138         * java-tree.h (set_class_decl_access_flags): New prototype.
1139         * jcf-parse.c (handle_innerclass_attribute): Read and set access flags.
1140         (parse_class_file): New local `decl_max_locals.' Take wide types
1141         into account to compute DECL_MAX_LOCALS.
1142         * parse.y (type_import_on_demand_declaration:): Ignore duplicate
1143         imports on demand.
1144
1145 2001-06-22  Jan van Male  <jan.vanmale@fenk.wau.nl>
1146
1147         * zipfile.h: Use GCC_JCF_H instead of JCF_H.
1148
1149 2001-06-20  Alexandre Petit-Bianco  <apbianco@redhat.com>
1150
1151         * class.c (java_hash_tree_node): Fixed indentation in leading comment.
1152         * parse.y (do_resolve_class): Moved comments out to leading comment
1153         section. Removed local `start', New local `_ht' and
1154         `circularity_hash.'  Record `enclosing' in hash table and search
1155         it to detect circularity.  Use `enclosing' as an argument to
1156         `lookup_cl.' Free the hash table when done.
1157
1158 2001-06-19  Tom Tromey  <tromey@redhat.com>
1159
1160         * lex.c (java_read_char): Disallow invalid and overlong
1161         sequences.  Fixes PR java/2319.
1162
1163 2001-06-05  Jeff Sturm  <jsturm@one-point.com>
1164
1165         * decl.c (create_primitive_vtable): Don't call make_decl_rtl.
1166
1167 2001-06-04  Alexandre Petit-Bianco  <apbianco@redhat.com>
1168
1169         * expr.c (force_evaluation_order): Match wrapped ctor calls, locate
1170         arguments accordingly.
1171
1172 2001-06-02  Joseph S. Myers  <jsm28@cam.ac.uk>
1173
1174         * gcj.texi: Move contents to just after title page.
1175
1176 2001-06-01  Alexandre Petit-Bianco  <apbianco@redhat.com>
1177
1178         * parse.y (type_literals:): Use `build_incomplete_class_ref' with
1179         builtin type.
1180         (patch_incomplete_class_ref): Build the class ref, build the class
1181         init if necessary, complete the tree.
1182         Fixes PR java/2605
1183
1184 2001-05-31  Alexandre Petit-Bianco  <apbianco@redhat.com>
1185
1186         * parse.y (lookup_field_wrapper): Test `name' code.
1187         (resolve_qualified_expression_name): Test `qual_wfl' code.
1188         (qualify_ambiguous_name): Handle `CONVERT_EXPR', fixe indentation,
1189         handle `qual_wfl' by code.
1190         (maybe_build_primttype_type_ref): Test `wfl' code.
1191
1192 2001-05-23  Theodore Papadopoulo  <Theodore.Papadopoulo@sophia.inria.fr>
1193
1194         * Make-lang.in ($(srcdir)/java/gcj.info): Added dependencies on
1195         fdl.texi.
1196         (java/gcj.dvi): Use TEXI2DVI instead of custom tex calls.  Create
1197         the dvi file in the java directory.
1198
1199 2001-05-25  Sam TH  <sam@uchicago.edu>
1200
1201         * gen-table.pl javaop.h jcf.h lex.h,
1202         parse.h: Fix header include guards.
1203
1204 2001-05-23  Joseph S. Myers  <jsm28@cam.ac.uk>
1205
1206         * jv-scan.c (version): Update copyright year.
1207
1208 2001-05-21  Per Bothner  <per@bothner.com>
1209
1210         * jcf-parse.c (read_class):  If class is from .class or .zip file
1211         and it's already been read, don't push/pop parser context.
1212
1213 2001-05-18  Per Bothner  <per@bothner.com>
1214
1215         * jvspec.c (lang_specific_pre_link):  Re-arrange the linker
1216         command line so the jvgenmain-generated main program comes first.
1217
1218 2001-05-15  Tom Tromey  <tromey@redhat.com>
1219
1220         * class.c (build_utf8_ref): Don't generate identifier based on
1221         utf8const contents.
1222
1223 2001-05-12  Richard Henderson  <rth@redhat.com>
1224
1225         * java-tree.def (JAVA_EXC_OBJ_EXPR): New.
1226         * expr.c (java_lang_expand_expr): Expand it.
1227         (process_jvm_instruction): Build JAVA_EXC_OBJ_EXPR instead of
1228         calling build_exception_object_ref.
1229         * parse.y (catch_clause_parameter): Likewise.
1230         (build_dot_class_method): Likewise.
1231         (try_reference_assignconv): Likewise.
1232         * check-init.c (check_init): Check JAVA_EXC_OBJ_EXPR not EXC_PTR_EXPR.
1233         * jcf-write.c (generate_bytecode_insns): Likewise.
1234
1235 2001-05-07  Alexandre Petit-Bianco  <apbianco@redhat.com>
1236
1237         * parse.y (build_unresolved_array_type): Set
1238         EXPR_WFL_QUALIFICATION on the newly created wfl.
1239         Fixes PR java/2538. Fixes PR java/2535.
1240
1241 2001-05-07  Alexandre Petit-Bianco  <apbianco@redhat.com>
1242
1243         * parse.y (fix_constructors): Removed unnecessary assignment to
1244         local. Moved assignment to `this$<n>', fixed comments and
1245         indentation.
1246         (build_wfl_wrap): Fixed indentation.
1247         Fixes PR java/2598, java/2579 and java/2658.
1248
1249 2001-05-03  Mo DeJong  <mdejong@redhat.com>
1250
1251         * lex.c (java_new_lexer): Call iconv_close on temp handle used to
1252         check for byte swap.
1253
1254 2000-05-02  Jeff Sturm  <jsturm@one-point.com>
1255
1256         * expr.c (build_class_init): Move MODIFY_EXPR
1257         outside of COND_EXPR.  Remove variable `call'.
1258
1259 2001-05-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1260
1261         * decl.c: NULL_PTR -> NULL.
1262         * jcf-write.c: Likewise.
1263
1264 2001-05-01  Tom Tromey  <tromey@redhat.com>
1265
1266         * Make-lang.in ($(srcdir)/java/gcj.info): Added `-I..'.
1267         (java/gcj.dvi): Added $(srcdir) to TEXINPUTS.
1268         * gcj.texi: Updated copyright text.  Include fdl.texi.
1269         (Top): Link to new node.
1270
1271 2001-05-01  Per Bothner  <per@bothner.com>
1272
1273         * parse.h (REGISTER_IMPORT):  Use tree_cons instead of chainon.
1274
1275 2001-05-01  Per Bothner  <per@bothner.com>
1276
1277         * parse.y (java_pop_parser_context):  The TREE_VALUE of a link in the
1278         import_list contains the name, not the TREE_PURPOSE.
1279
1280 2001-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1281
1282         * jcf-io.c (read_zip_member): Cast to long in comparison with
1283         signed value.
1284
1285         * jvspec.c (lang_specific_driver): Initialize variables.
1286
1287         * mangle.c (find_compression_record_match): Likewise.
1288
1289         * typeck.c (build_null_signature): Provide static prototype.  Mark
1290         parameter with ATTRIBUTE_UNUSED.
1291
1292         * verify.c (verify_jvm_instructions): Initialize variable.
1293
1294 2001-04-27  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
1295
1296         * parse.y (do_resolve_class): Check for cyclic inheritance during
1297         inner class resolution.
1298
1299 2001-04-27  Per Bothner  <per@bothner.com>
1300
1301         * parse.y (java_expand_classes):  Don't change ctxp_for_generation
1302         while iterating, since that could cause gc to lose stuff.
1303
1304 2001-04-26  Per Bothner  <per@bothner.com>
1305
1306         Fix method search wrt scope of inner classes to match JLS2.
1307         * typeck.c (build_null_signature):  New static function.
1308         (has_method):  New function.  Uses build_null_signature and lookup_do.
1309         * java-tree.h (has_method):  New declaration.
1310         * parse.y (find_applicable_accessible_methods_list):  Do not search
1311         context of inner classes here.
1312         (patch_method_invocation):  Search scope, ie. current and outer clases,
1313         for method matching simple name, to find class.
1314
1315 2001-04-26  Per Bothner  <per@bothner.com>
1316
1317         * jcf-write.c (generate_bytecode_insns case SWITCH_EXPR):
1318         Fix thinko:  If a single case, use if_icmpeq, not ifeq.
1319
1320         * constants.c (find_methodref_with_class_index):  New function.
1321         (find_methodref_index):  Use find_methodref_with_class_index.
1322         * java-tree.h (find_methodref_with_class_index):  New declaration.
1323         * jcf-write.c (generate_bytecode_insns case CALL_EXPR):  Don't change
1324         DECL_CONTEXT, instead use new find_methodref_with_class_index function.
1325         If context changed from interface to class, don't use invokeinterface.
1326
1327 2001-04-25  Per Bothner  <per@bothner.com>
1328
1329         * verify.c (verify_jvm_instructions):  For field instructions,
1330         check that field index is valid.  For invoke instructions, check that
1331         method index is valid.
1332
1333 2001-04-25  Alexandre Oliva  <aoliva@redhat.com>
1334
1335         * config-lang.in (target_libs): Copy from $libgcj_saved.
1336
1337 2001-04-25  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
1338
1339         * decl.c (init_decl_processing): Add new class "protectionDomain"
1340         field.
1341         * class.c (make_class_data): Set initial value for "protectionDomain".
1342
1343 2001-04-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1344
1345         * jvspec.c (lang_specific_driver): Fix memory allocation
1346         deficit, by using concat in lieu of xmalloc/sprintf.
1347
1348 2001-04-20  Per Bothner  <per@bothner.com>
1349
1350         Fixes to compile multiple .class files at once.
1351         * decl.c (init_decl_processing):  Don't set CLASS_LOADED_P.
1352         * java-tree.h (CLASS_PARSED_P):  New macro.
1353         (CLASS_LOADED_P):  Re-define to use TYPE_SIZE and CLASS_PARSED_P.
1354         * jcf-parse.c (jcf_parse_source):  Inline into read_class.
1355         (read_class):  Avoid some code duplication.
1356         Don't call JCF_FINISH for a .class file - might be needed later.
1357         (jcf_parse):  Don't call layout_class here.  Check/set CLASS_PARSED_P
1358         rather than CLASS_LOADED_P, since latter implies class laid out.
1359         (yyparse):  Do layout_class and JCF_FINISh here instead, in pass 2.
1360         * parse.y:  Don't need to set CLASS_LOADED_P for array types.
1361
1362 2001-04-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1363
1364         * Make-lang.in (java/boehm.o): Depend on toplev.h.
1365
1366         * boehm.c: Include toplev.h.
1367
1368 2001-04-06  Tom Tromey  <tromey@redhat.com>
1369             Alexandre Petit-Bianco  <apbianco@redhat.com>
1370
1371         Fix for PR gcj/1404 and PR gcj/2332:
1372         * parse.y (build_array_from_name): If we use the type_wfl then
1373         accumulate dimensions from the original type as well.
1374         (build_unresolved_array_type): Don't modify TYPE_OR_WFL in place.
1375
1376 2001-04-06  Tom Tromey  <tromey@redhat.com>
1377
1378         * parse.y (analyze_clinit_body): Return true if the second operand
1379         of a METHOD_EXPR is nonzero.
1380
1381 2001-04-06  Tom Tromey  <tromey@redhat.com>
1382
1383         * Make-lang.in ($(srcdir)/java/parse-scan.c): Run bison from build
1384         directory.
1385         ($(srcdir)/java/parse.c): Likewise.
1386
1387 2001-04-05  Alexandre Petit-Bianco  <apbianco@redhat.com>
1388
1389         * gcj.texi: Use `which-gcj' instead of `which-g77.'
1390         (version-gcc): Initialized.
1391         (which-gcj): Likewise.
1392
1393 2001-04-04  Alexandre Petit-Bianco  <apbianco@redhat.com>
1394
1395         * java-tree.h (struct lang_decl): New macro
1396         `DECL_FIXED_CONSTRUCTOR_P.' New field `fixed_ctor.'
1397         * parse.y (build_instance_initializer): New function.
1398         (add_instance_initializer): Use it.
1399         (java_fix_constructors): Set `current_class' before fix pass.
1400         (fix_constructors): Just return if already fixed. Move `super()'
1401         invokation ahead. Use `build_instance_initializer.'
1402         Fixes PR java/1315.
1403
1404 2001-04-04  Alexandre Petit-Bianco  <apbianco@redhat.com>
1405
1406         * parse.y (resolve_qualified_expression_name): Pass field's
1407         DECL_CONTEXT to `not_accessible_p.'
1408         (not_accessible_p): Changed parameters order in `inherits_from_p'
1409         invokation.
1410
1411 2001-03-27  Andrew Haley  <aph@cambridge.redhat.com>
1412
1413         * lang-options.h: Add flag_check_references.
1414
1415 2001-04-04  Per Bothner  <per@bothner.com>
1416
1417         * java-tree.h (CONSTANT_VALUE_P):  New macro.
1418         * jcf-write.c (generate_classfile):  Use CONSTANT_VALUE_P.
1419         * parse.y (maybe_build_class_init_for_field):  New static function.
1420         (resolve_expression_name, resolve_field_access):  Use
1421         maybe_build_class_init_for_field instead of build_class_init
1422         This does not do the init if the field is compile-time-constant.
1423         (resolve_field_access):  Simplify.
1424
1425         * parse.y (fold_constant_for_init):  Merge test into switch.
1426
1427 2001-04-03  Zack Weinberg  <zackw@stanford.edu>
1428
1429         * Make-lang.in (buffer.o, check-init.o, class.o): Don't depend
1430         on gansidecl.h.
1431         * buffer.c, jvgenmain.c: Don't include gansidecl.h.
1432
1433 2001-04-02  Zack Weinberg  <zackw@stanford.edu>
1434
1435         * expr.c (pop_type_0): Save the result of the first
1436         lang_printable_name call in a scratch buffer, so it
1437         won't be clobbered by the second call.
1438
1439 2001-03-30  Alexandre Petit-Bianco  <apbianco@redhat.com>
1440
1441         * parse-scan.y (array_type:): Rewritten.
1442         (type_declaration:): `empty_statement' replaces `SC_TK.'
1443         (class_member_declaration:): `empty statement' added.
1444         (method_body:): Simplified.
1445         (static_initializer:): Likewise.
1446         (primary_no_new_array:): Use `type_literals.'
1447         (type_literals:): New rule.
1448         (dims:): Set and update `bracket_count.'
1449         Fixes PR java/1074. Fixes PR java/2412.
1450
1451 2001-03-28  Hans Boehm  <boehm@acm.org>
1452
1453         * boehm.c (PROCEDURE_OBJECT_DESCRIPTOR): Set to use `build_int_2.'
1454         (get_boehm_type_descriptor): Set type on returned value to be a
1455         pointer length integer.
1456
1457 2001-03-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1458
1459         * expr.c (pop_type_0): Call `concat' rather than building the
1460         string manually.
1461         (pop_type): Add format specifier in call to `error'.
1462
1463         * parse.y (patch_method_invocation): Avoid casting away
1464         const-ness.
1465
1466 2001-03-28  Jeffrey Oldham  <oldham@codesourcery.com>
1467
1468         * jvgenmain.c (do_mangle_classname): End string constant with '\0'.
1469
1470 2001-03-28  Richard Henderson  <rth@redhat.com>
1471
1472         IA-64 ABI Exception Handling:
1473         * Make-lang.in (except.o): Don't depend on eh-common.h.
1474         * check-init.c (check_init): Handle EXC_PTR_EXPR.
1475         * decl.c (init_decl_processing) [throw_node]: No _Jv_Sjlj_Throw.
1476         [soft_exceptioninfo_call_node]: Remove.
1477         [eh_personality_libfunc, lang_eh_runtime_type]: New.
1478         (end_java_method): No emit_handlers.
1479         * except.c (java_set_exception_lang_code): Remove.
1480         (method_init_exceptions): Don't call it.
1481         (prepare_eh_table_type): No CATCH_ALL_TYPE.
1482         (build_exception_object_ref): New.
1483         (expand_end_java_handler): Update for except.h name changes.
1484         (emit_handlers, expand_resume_after_catch): Remove.
1485         * expr.c (java_lang_expand_expr): Update for except.h name changes.
1486         (process_jvm_instruction): Use build_exception_object_ref.
1487         * java-tree.h (JTI_SOFT_EXCEPTIONINFO_CALL_NODE): Remove.
1488         (soft_exceptioninfo_call_node): Remove.
1489         (build_exception_object_ref): Declare.
1490         * jcf-write.c (generate_bytecode_insns) [CALL_EXPR]: No
1491         soft_exceptioninfo_call_node.  Move processing ...
1492         [EXC_PTR_EXPR]: ... here.
1493         * parse.h (BUILD_ASSIGN_EXCEPTION_INFO): Remove dead code.
1494         * parse.y (catch_clause_parameter): Use build_exception_object_ref.
1495         (source_end_java_method): No java_set_exception_lang_code or
1496         emit_handlers.
1497         (build_dot_class_method): Use build_exception_object_ref.
1498         (try_reference_assignconv): Check EXC_PTR_EXPR not
1499         soft_exceptioninfo_call_node.
1500
1501 2001-03-28  Richard Henderson  <rth@redhat.com>
1502
1503         * java-tree.h (throw_node): Define as a single member of
1504         java_global_trees instead of a separate array.
1505         (JTI_THROW_NODE): New.
1506         * decl.c (throw_node): Don't declare.
1507         (init_decl_processing): Init a scalar throw_node.
1508         Don't register it for gc.
1509         * check-init.c (check_init): Reference scalar throw_node.
1510         * expr.c (build_java_athrow): Likewise.
1511         * jcf-write.c (generate_bytecode_insns): Likewise.
1512         * parse.h (BUILD_THROW): Likewise.
1513
1514 2001-03-28  Richard Henderson  <rth@redhat.com>
1515
1516         * decl.c (end_java_method): Do not save and restore
1517         flag_non_call_exceptions.
1518         * parse.y (source_end_java_method): Likewise.
1519         * lang.c (flag_exceptions): Don't declare.
1520         (java_init_options): Set flag_non_call_exceptions.  Set
1521         flag_exceptions here ...
1522         (java_init): ... not here.
1523
1524 2001-03-27  Richard Henderson  <rth@redhat.com>
1525
1526         * expr.c, parse.h: Use USING_SJLJ_EXCEPTIONS instead of
1527         exceptions_via_longjmp.
1528
1529         * lang.c (flag_new_exceptions): Don't declare it.
1530         (java_init_options): Or set it.
1531
1532 2001-03-27  Richard Henderson  <rth@redhat.com>
1533
1534         * decl.c (end_java_method): Rename asynchronous_exceptions to
1535         flag_non_call_exceptions.
1536         * parse.y (source_end_java_method): Likewise.
1537
1538 2001-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1539
1540         * Make-lang.in: Depend on $(SYSTEM_H), not system.h.
1541
1542 2001-03-26  Mark Mitchell  <mark@codesourcery.com>
1543
1544         * parse.h (DECL_END_SOURCE_LINE): Don't rely on DECL_FRAME_SIZE.
1545
1546 2001-03-26  Alexandre Petit-Bianco  <apbianco@redhat.com>
1547
1548         * parse.y (find_as_inner_class): Follow current package
1549         indications not to mistakingly load an unrelated class.
1550
1551 2001-03-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1552
1553         * constants.c (PUTN): Use memcpy, not bcopy.
1554
1555         * lex.c (java_read_char): Use memmove, not bcopy.
1556
1557         * parse.y (java_parser_context_resume): Use memcpy, not bcopy.
1558
1559 2001-03-23  Per Bothner  <per@bothner.com>
1560
1561         * verify.c (verify_jvm_instructions):  Replace 3 pop_type by POP_TYPE
1562         macro for better error pin-pointing.
1563         * java-tree.h:  Fix typo in comment.
1564
1565         * jcf-write.c (generate_bytecode_insns):  Changes to TRY_FINALLY_EXPR.
1566         Don't include jsr/goto in exception range.
1567         Check if start and end of exception range are the same (also TRY_EXPR).
1568         Don't emit jsr after try_block if CAN_COMPLETE_NORMALLY is false.
1569         However, do emit the following goto even if try_block is empty.
1570         Defer freeing exception_decl until after the finalizer, to make
1571         sure the local isn't reused in the finalizer.  Fixes PR java/1208.
1572
1573         * parse.y (java_complete_lhs):  If the try-clause is empty, just
1574         return the finally-clause and vice versa.
1575
1576 2001-03-23  Alexandre Petit-Bianco  <apbianco@redhat.com>
1577
1578         * gcj.texi (Input Options): documented the check for attribute
1579         `gnu.gcc.gccj-compiled' and the `-fforce-classes-archive-check' flag.
1580         * java-tree.h (flag_force_classes_archive_check): Declared extern.
1581         * jcf-parse.c (HANDLE_GCJCOMPILED_ATTRIBUTE): New macro.
1582         (jcf_parse): Check for the right classes archive if necessary.
1583         * jcf-reader.c (get_attribute): Define `MATCH_ATTRIBUTE' and use it.
1584         (jcf_parse_fields): Fixed indentation.
1585         * jcf-write.c (append_gcj_attribute): New function.
1586         (generate_classfile): Compute the attribute count, invoke
1587         `append_gcj_attribute'.
1588         * jcf.h (typedef struct JCF): `seen_in_zip' and `java_source'
1589         turned into bit fields. New bit field `right_zip.'
1590         (JCF_ZERO): Set `right_zip' to zero.
1591         * lang-options.h (-fforce-classes-archive-check): Added flag.
1592         * lang.c (flag_force_classes_archive_check): New flag.
1593         (lang_f_options): New entry `force-classes-archive-check.'
1594         Fixes PR java/1213.
1595
1596 2001-02-07  Andrew Haley  <aph@redhat.com>
1597
1598         * gcj.texi (Configure-time Options): Add -fcheck-references.
1599         * expr.c (build_java_indirect_ref): New function.
1600         (java_check_reference): New function.
1601         (build_java_array_length_access): Use build_java_indirect_ref to
1602         check for null references.
1603         (build_java_arrayaccess): Likewise.
1604         (build_get_class): Likewise.
1605         (build_field_ref): Likewise.
1606         (invoke_build_dtable): Likewise.
1607         (build_invokeinterface): Likewise.
1608         * lang.c (lang_f_options): Add flag_check_references.
1609         * jvspec.c (jvgenmain_spec): Add flag_check_references.
1610         * java-tree.h (flag_check_references): New variable.
1611         * lang.c (flag_check_references): Likewise.
1612         * parse.y (patch_invoke): Use java_check_reference.
1613         (patch_assignment): Allow for extra nesting in
1614         _Jv_CheckArrayStore.
1615
1616 2001-03-23  Bryce McKinlay  <bryce@albatross.co.nz>
1617
1618         * gjavah.c (cxx_keywords): Update from the definitive list in cp/lex.c.
1619         * lex.c (cxx_keywords): Likewise.
1620
1621 2001-03-21  Alexandre Petit-Bianco  <apbianco@redhat.com>
1622
1623         * parse.y (qualify_ambiguous_name): Broaden `length'
1624         recognition. Help MODIFY_EXPR be resolved as expression names.
1625         Fixes PR java/2066. Fixes PR java/2400.
1626
1627 2001-03-21  Bryce McKinlay  <bryce@albatross.co.nz>
1628
1629         * gjavah.c (process_file): Mark interface definitions with
1630         "__attribute__ ((java_interface))".
1631
1632 2001-03-21  Alexandre Petit-Bianco  <apbianco@redhat.com>
1633
1634         * class.c (layout_class): Fixed push_super_field's second
1635         argument. Fixes PR java/2333.
1636         (jdep_resolve_class): Reset TYPE_SIZE if `error_mark_node', it's
1637         too early to lay innerclasses out.
1638
1639 2001-03-20  Tom Tromey  <tromey@redhat.com>
1640             Alexandre Petit-Bianco <apbianco@redhat.com>
1641
1642         * parse.y (patch_assignment): Handle the case of a SAVE_EXPR
1643         inside an array reference. Insertion of the array store check
1644         rewritten. Fixes PR java/2299.
1645
1646 2001-03-20  Tom Tromey  <tromey@redhat.com>
1647
1648         * lex.c (java_read_unicode): Only accept leading `u's.
1649
1650 2001-03-20  Tom Tromey  <tromey@redhat.com>
1651
1652         * jcf-parse.c (read_class): Initialize `class'.
1653
1654 2001-03-20  Matt Kraai  <kraai@alumni.carnegiemellon.edu>
1655
1656         * jcf_parse.c (jcf_parse): Eliminate unused variable.
1657
1658 2001-03-19  Mark Mitchell  <mark@codesourcery.com>
1659
1660         * class.c (build_class_ref): Use SET_DECL_ASSEMBLER_NAME.
1661         (layout_class): Likewise.
1662         (layout_class_method): Likewise.
1663         (emit_register_classes): Likewise.
1664         * decl.c (builtin_function): Likewise.
1665         (give_name_to_locals): Likewise.
1666
1667 2001-03-19  Per Bothner  <per@bothner.com>
1668
1669         * jcf-parse.c (load_inner_classes):  Check CLASS_LOADED_P
1670         before trying to load an inner class.
1671
1672         Fixes to process to command-line .class files in two passes.
1673         * java-tree.h (JAVA_FILE_P, CLASS_FILE_P, ZIP_FILE_P):  New flags.
1674         (CLASS_FROM_CURRENTLY_COMPILED_SOURCE_P):  Rename to ..
1675         (CLASS_FROM_CURRENTLY_COMPILED_P):  ... because it is more general now.
1676         * class.c (is_compiled_class):  Fix for renamed flag.
1677         * parse.y (maybe_create_class_interface_decl):  Likewise.
1678         * jcf-parse.c (yyparse):  Also set if compiling .class files.
1679         * jcf-parse.c (read_class);  Read current_class.
1680         (jcf_parse):  Make static.
1681         (load_inner_classes):  New function, with code moved from jcf_parse,
1682         because we need to inner classes after the command-line files are read.
1683         (yyparse):  Set finput to NULL when it doesn't need to be closed.
1684         Reduce use of main_jcf (basically only for archive) and
1685         use finput instead of main_jcf->read_state.
1686         Inline jcf_figure_file_type into yyparse.
1687         Set JAVA_FILE_P, CLASS_FILE_P, or ZIP_FILE_P on filename list name.
1688         Defer load_inner_classes and parse_class_file to a second pass,
1689         after we've correctly mapped command-line .clas fiels to classes.
1690         (jcf_figure_file_type):  Removed.
1691         * jcf.h (JCF_ZIP, JCF_CLASS, JCF_SOURCE):  Removed flags.
1692         (JCF_ZERO):  Also clear zipd field.
1693         * zipfile.h:  Conditionalize on JCF_H insread of JCF_ZIP.
1694
1695 2001-03-18  Matt Kraai  <kraai@alumni.carnegiemellon.edu>
1696
1697         * jcf-parse.c (yyparse): Change ch from char * to char.
1698
1699 2001-03-19  Per Bothner  <per@bothner.com>
1700
1701         * jvspec.c (lang_specific_driver):  Check for .zip and .jar files.
1702         Add constructed filelist-file at end, following -xjava.  Thus any .o
1703         and library files are not affected by the -xjava.  Also wrap
1704         explicit @FILE with -xjava and -xnone.
1705
1706 2001-03-19  Andrew Haley  <aph@cambridge.redhat.com>
1707
1708         * class.c (build_static_field_ref): Call make_decl_rtl() after
1709         setting the DECL_EXTERNAL flag.
1710
1711 2001-03-17  Per Bothner  <per@bothner.com>
1712
1713         * decl.c (clear_binding_level):  Fix initializer (broke 03-15).
1714
1715         * jcf-write.c (generate_bytecode_insns):  Handle emitting iinc
1716         when result is is needed (target is STACK_TARGET).
1717
1718         * parse.h (JDEP_SOLV):  Removed.
1719         * parse.y (register_incomplete_type):  Use JDEP_TO_RESOLVE instead.
1720
1721         * parse.y (incomplete_class_list): Removed.
1722         (obtain_incomplete_type): Don't use or set incomplete_class_list.
1723         It doesn't work if resolve_class changes the name of an array type
1724         that is on the list and then someone else looks for the modified name.
1725         Also, seems liable to break when compiling multiple source files at
1726         once.  So the simplest is to just remove incomplete_class_list -
1727         it is only a minor space win and it is not even clear it saves time.
1728
1729         * parse.y (resolve_class):  Remove unneeded promote_type.
1730
1731 2001-03-15  Per Bothner  <per@bothner.com>
1732
1733         * java-tree.h (BLOCK_IS_IMPLICIT):  New flag.
1734         * parse.h (BLOCK_EXPR_ORIGIN):  Removed macro.
1735         * parse.y (declare_local_variables, maybe_absorb_scoping_blocks):
1736         Use BLOCK_IS_IMPLICIT rather than BLOCK_EXPR_ORIGIN.
1737
1738         * jcf-parse.c (yyparse):  Set/reset input_filename for source file.
1739         * parse.y (java_expand_classes):  Likewise.
1740
1741         * parse.y (expand_start_java_method):  Was only called once and had a
1742         misleading name, so inline in caller java_complete_expand_method.
1743         (enter_a_block):  Likewise inline in enter_block and remove.
1744
1745         Remove junk from when gcc/java was created (by copying from C/C++).
1746         * decl.c (keep_next_level_flag, keep_next_if_subblocks):  Remove.
1747         (struct binding_level):  Remove fields keep, keep_if_subblocks,
1748         more_cleanups_ok, have_cleanups (which have never been used).
1749         (pushlevel, poplevel):  Remove related useless code.
1750
1751         * class.c (make_class_data):  The class_dtable_decl (i.e. the
1752         vtable for Class) should be external, except when compiling Class.
1753
1754         * jvspec.c (lang_specific_driver):  Fix -C handling.
1755         Check -save-temps to see if temp @FILE should be deleted.
1756         Follow-up to/fix for February 16 patch.
1757
1758         * verify.c (verify_jvm_instructions):  Better error msgs for dup.
1759         (type_stack_dup):  Remove no-longer neded error check.
1760
1761 2001-03-15  Bryce McKinlay  <bryce@albatross.co.nz>
1762
1763         * mangle.c (mangle_record_type): Rename 'from_pointer' argument
1764         to 'for_pointer'. If this type is for a pointer (argument) mangling,
1765         don't surround the element with 'N..E' if the type name is
1766         unqualified.
1767
1768 2001-03-14  Mark Mitchell  <mark@codesourcery.com>
1769
1770         * class.c (build_static_field_ref): Use COPY_DECL_RTL,
1771         DECL_RTL_SET_P, etc.
1772         (make_method_value): Likewise.
1773         (get_dispatch_table): Likewise.
1774
1775         * decl.c (push_jvm_slot): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
1776
1777 2001-03-07  Tom Tromey  <tromey@redhat.com>
1778
1779         * config-lang.in (lang_requires): Define.
1780
1781 2001-03-07  Brad Lucier  <lucier@math.purdue.edu>
1782
1783         * typeck.c (convert): Check flag_unsafe_math_optimizations,
1784         not flag_fast_math.
1785
1786 2001-03-05  Per Bothner  <per@bothner.com>
1787
1788         Fix a problem where rest_of_decl_compilation applied to
1789         class_dtable_decl causes problems because it was done too early,
1790         before output file was opened.
1791         * decl.c (init_decl_processing):  Remove init of class_dtable_decl.
1792         * class.c (class_dtable_decl):  Add macro - element of class_roots.
1793         (make_class_data):  Define class_dtable_decl.
1794         * java-tree.h (JTI_CLASS_DTABLE_DECL, class_dtable_decl):  Removed.
1795
1796 2001-03-01  Zack Weinberg  <zackw@stanford.edu>
1797
1798         * java/class.c, java/decl.c, java/java-tree.h: Replace all
1799         uses of 'boolean' with 'bool'.
1800
1801 2001-03-01  Zack Weinberg  <zackw@stanford.edu>
1802
1803         * lang-specs.h: Add zero initializer for cpp_spec field to all
1804         array elements.
1805
1806 2001-02-16  Per Bothner  <per@bothner.com>
1807
1808         Handle compiling multiple input files at once, and @FILE syntax.
1809         * gcj.texi:  Updated documentation to match.
1810         * java-tree.h (flag_filelist_file, init_src_parse):  New declarations.
1811         * jcf-parse.c (parse_source_file):  Split into ...
1812         (parse_source_file_1):  New function - and:
1813         (parse_source_file_2):  New function.
1814         (yyparse):  On -ffilelist-file, open and scan named file.
1815         On first pass over files, only do parse_source_file_1.
1816         A new second pass calls parse_source_file_2 for each file to compile.
1817         (init_jcf_parse):  Call init_src_parse.
1818         * jvspec.c (INDIRECT_FILE_ARG):  New flag.
1819         (lang_specific_driver):  Support @FILELIST-FILE syntax, as well
1820         as multiple input file combined in one compilation.
1821         * lang-options.h:  Add -ffilelist-file
1822         * lang.c (flag_filelist_file):  New flag variable.
1823         (lang_f_options):  Handle -ffilelist-file.
1824         * lex.c (java_init_lex): Don't clear ctxp->incomplete_class.
1825         * parse.h (struct parse_ctxt):  Remove fields incomplete_class and
1826         gclass_list - use global fields of src_parse_roots instead.
1827         * parse.y (src_parse_roots):  New array.
1828         (incomplete_class_list, gclass_list):  New macros.
1829         (push_parser_context, java_pop_parser_context,
1830         java_parser_context_resume):  Don't fiddle with deleted fields.
1831         (various):  Use incomplete_class gclass_list and global macros
1832         instead of parse_ctxt fields - the lists are global.
1833         (init_src_parse):  New function.
1834
1835 Fri Feb 23 15:28:39 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
1836
1837         * decl.c (set_block): Set NAMES and BLOCKS from BLOCK.
1838
1839 2001-02-20  Alexandre Petit-Bianco  <apbianco@redhat.com>
1840
1841         * parse.y (check_inner_class_access): Moved declaration of local
1842         `enclosing_decl_type' to the right location.
1843
1844 2001-02-19  Bryce McKinlay  <bryce@albatross.co.nz>
1845
1846         * parse.y (parser_check_super_interface): Don't call
1847         check_pkg_class_access for an inner interface.
1848         (parser_check_super): Don't call check_pkg_class_access for inner
1849         class.
1850         (do_resolve_class): Simplify enclosing type loop. Don't call
1851         check_pkg_class_access if CL and DECL are not set.
1852         (find_in_imports_on_demand): Set DECL if class_type needed to be
1853         loaded. Don't call check_pkg_class_access for an inner class.
1854         (check_inner_class_access): Rewritten to implement member access
1855         rules as per spec 6.6.1.
1856         (check_pkg_class_access): Handle the empty package correctly.
1857         (in_same_package): New function. Determine if two classes are in the
1858         same package.
1859
1860 2001-02-18  Bryce McKinlay  <bryce@albatross.co.nz>
1861
1862         * typeck.c (build_java_array_type): Don't try to poke a public `clone'
1863         method into array types.
1864         * parse.y (patch_method_invocation): Bypass access check on clone call
1865         to array instance.
1866
1867 2001-02-15  Alexandre Petit-Bianco  <apbianco@redhat.com>
1868
1869         * expr.c (build_instanceof): Check for arrays when trying fold to
1870         false.
1871
1872 2001-02-15  Jim Meyering  <meyering@lucent.com>
1873
1874         * Make-lang.in (java.install-common): Depend on `installdirs'.
1875         (java.install-info): Likewise.
1876
1877 2001-02-15  Bryce McKinlay  <bryce@albatross.co.nz>
1878
1879         * Make-lang.in (jvspec.o): Modify rule to match that of cp/g++spec.o.
1880
1881 2001-02-14  Tom Tromey  <tromey@redhat.com>
1882             Alexandre Petit-Bianco  <apbianco@cygnus.com>
1883
1884         Fix for PR java/1261.
1885         * typeck.c (build_java_array_type): Add public `clone' method to
1886         arrays.
1887         * parse.y (resolve_qualified_expression_name): Use current_class
1888         when checking for inaccessibility.
1889         (patch_method_invocation): Fixed error message when accessibility
1890         denied.  Added `from_super' argument.
1891
1892 2001-02-14  Alexandre Petit-Bianco  <apbianco@redhat.com>
1893
1894         * parse.y (resolve_class): Don't build a fake decl. Use the one
1895         already built.
1896         * typeck.c (build_java_array_type): Build and assign decl to array
1897         type.
1898
1899 2001-02-14  Alexandre Petit-Bianco  <apbianco@redhat.com>
1900
1901         * parse.y (not_accessible_p): Changed leading comment. Added extra
1902         `where' argument. Use it to enforce protected access rules.
1903         (resolve_qualified_expression_name): Added extra argument to
1904         not_accessible_p.
1905         (patch_method_invocation): Use argument `primary' to provide
1906         not_accessible_p with an extra argument.
1907         (lookup_method_invoke): Added extra argument to not_accessible_p.
1908         (search_applicable_method_list): Likewise.
1909
1910 2001-02-13  Alexandre Petit-Bianco  <apbianco@redhat.com>
1911
1912         * parse.y (resolve_qualified_expression_name): Try to resolve as
1913         an inner class access only if `decl' is a TYPE_DECL.
1914
1915 2001-02-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1916
1917         * decl.c (classdollar_identifier_node): Initialize.
1918         * java-tree.h (enum java_tree_index): New entry
1919         `JTI_CLASSDOLLAR_IDENTIFIER_NODE.'
1920         (classdollar_identifier_node): New macro.
1921         (ID_CLASSDOLLAR_P): Likewise.
1922         * parse.y (build_dot_class_method): Use `classdollar_identifier_node.'
1923         (build_dot_class_method_invocation): Likewise.
1924         (find_applicable_accessible_methods_list): `class$' can't be
1925         inherited.
1926
1927 2001-02-09  Raja R Harinath  <harinath@cs.umn.edu>
1928
1929         * Make-lang.in (java/mangle_name.o): Add 'make' prereqs.
1930
1931 2001-02-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
1932
1933         * Manke-lang.in (JVGENMAIN_OBJS): Added `errors.o'
1934         * jvgenmain.c (error): Reversed 2001-02-09 patch. `error' is now
1935         gone.
1936
1937 2001-02-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
1938
1939         * mangle_name (append_unicode_mangled_name): Emit `_' or `U'
1940         outside of the `__U' sequence too.
1941         (unicode_mangling_length): Count `_' or `U' outside of the `__U'
1942         sequence too.
1943
1944 2001-02-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
1945
1946         * jvgenmain.c (error): Reversed 2001-02-01 deletion.
1947
1948 2001-02-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1949
1950         * Make-lang.in (JAVA_OBJS): Added java/mangle_name.o
1951         (JVGENMAIN_OBJS): Likewise.
1952         * java-tree.h (append_gpp_mangled_name): New prototype.
1953         * jcf-parse.c (ggc_mark_jcf): Argument now `void *.'
1954         Removed cast calling `gcc_add_root.'
1955         * jvgenmain.c (mangle_obstack): New global, initialized.
1956         (main): Use it.
1957         (do_mangle_class): Constify local `ptr.'
1958         Removed macro `MANGLE_NAME.' Removed cast in `for.' Call
1959         append_gpp_mangle_name and update `count' if necessary.
1960         Use `mangle_obstack.'
1961         * mangle.c (append_unicode_mangled_name): Removed.
1962         (append_gpp_mangled_name): Likewise.
1963         (unicode_mangling_length): Likewise.
1964         (mangle_member_name): Return type set to `void.'
1965         (mangle_field_decl): Don't append `U' in escaped names.
1966         (mangle_method_decl): Likewise.
1967         (mangle_member_name): Just use `append_gpp_mangled_name.'
1968         * mangle_name.c: New file.
1969
1970 2001-02-07  Per Bothner  <per@bothner.com>
1971
1972         * check-init.c (check_init):  Fix TRY_FINALLY_EXPR logic.
1973
1974         * check-init.c (check_init):  Don't call done_alternative after
1975         processing loop code, as a LOOP_EXPR never terminates normally.
1976
1977 2001-02-08  Joseph S. Myers  <jsm28@cam.ac.uk>
1978
1979         * gcj.texi: Change sources.redhat.com reference to gcc.gnu.org.
1980
1981 2001-02-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1982
1983         * jcf-parse.c (HANDLE_SYNTHETIC_ATTRIBUTE): Don't handle field
1984         DECLs.
1985
1986 2001-02-06  Tom Tromey  <tromey@redhat.com>
1987
1988         * lex.c (java_new_lexer): Longer error message.
1989
1990 2001-02-05  Jeff Sturm  <jeff.sturm@commerceone.com>
1991             Alexandre Petit-Bianco  <apbianco@cygnus.com>
1992
1993         * typeck.c (build_prim_array_type): Added leading comment.
1994         (build_java_array_type): Moved locals out of
1995         block. Always create the `data' field, fixed alignment to match
1996         C++.
1997
1998 2001-02-04  Tom Tromey  <tromey@redhat.com>
1999
2000         * expr.c (java_lang_expand_expr): Don't bother recomputing
2001         `length'.  Use rest_of_decl_compilation, not make_decl_rtl.
2002         Fixes PR java/1866.
2003
2004 2001-02-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2005
2006         * parse.y (process_imports): Save the original name of the import
2007         for better error report.
2008
2009 2001-02-04  Bryce McKinlay  <bryce@albatross.co.nz>
2010
2011         * Make-lang.in (jvspec.o): Add DRIVER_DEFINES to the list
2012         of macros used when compiling jvspec.c.
2013         * jvspec.c (lang_specific_driver): Link with the shared
2014         libgcc by default.
2015
2016 Sun Feb  4 15:52:44 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
2017
2018         * check-init.c (check_init): Call internal_error instead of fatal.
2019         * expr.c (java_lang_expand_expr): Likewise.
2020         * jcf-parse.c (get_constant): Likewise.
2021         * mangle.c (java_mangle_decl): Likewise.
2022         * parse.y (make_nested_class_name, java_complete_lhs): Likewise.
2023         (operator_string): Likewise.
2024         * check-init.c (check_init): Call abort instead of fatal.
2025         * class.c (build_class_ref): Likewise.
2026         * constants.c (write_constant_pool): Likewise.
2027         * decl.c (start_java_method): Likewise.
2028         * expr.c (push_type, java_stack_pop, java_stack_swap): Likewise.
2029         (java_stack_dup, encode_newarray_type): Likewise.
2030         (build_java_array_length_access): Likewise.
2031         (build_java_check_indexed_type, expand_java_pushc): Likewise.
2032         (build_java_soft_divmod, build_invokeinterface): Likewise.
2033         * java-tree.h (INNER_CLASS_P): Likewise.
2034         * jcf-parse.c (parse_signature, get_name_constant): Likewise.
2035         (give_name_to_class, get_class_constant): Likewise.
2036         * jcf-write.c (CHECK_PUT, CHECK_OP, get_access_flags): Likewise.
2037         (find_constant_index, generate_bytecode_conditional): Likewise.
2038         (generate_bytecode_insns, perform_relocations): Likewise.
2039         * lex.c (java_unget_unicode, java_lex): Likewise.
2040         * mangle.c (mangle_type, mangle_record_type): Likewise.
2041         (mangle_pointer_type, mangle_array_type, init_mangling): Likewise.
2042         (finish_mangling): Likewise.
2043         * parse.h (MARK_FINAL_PARMS): Likewise.
2044         * parse.y (pop_current_osb, unreachable_stmt_error): Likewise.
2045         (obtain_incomplete_type, java_complete_class): Likewise.
2046         (java_check_regular_methods, java_complete_expand_method): Likewise.
2047         (cut_identifier_in_qualified, check_deprecation): Likewise.
2048         (patch_invoke, find_applicable_accessible_methods_list): Likewise.
2049         (java_complete_lhs, lookup_name_in_blocks): Likewise.
2050         (check_final_variable_indirect_assignment, build_unaryop): Likewise.
2051         * typeck.c (set_local_type, parse_signature_type): Likewise.
2052         (parse_signature_string, build_java_signature): Likewise;
2053         (set_java_signature): Likewise.
2054         * verify.c (type_stack_dup, CHECK_PC_IN_RANGE): Likewise.
2055         * class.c (add_method): Call fatal_error instead of fatal.
2056         (build_static_field_ref): Likewise.
2057         * expr.c (build_known_method_ref, expand_invoke): Likewise.
2058         * jcf-parse.c (get_constant, jcf_parse): Likewise.
2059         * lex.c (java_new_new_lexer): Likewise.
2060         * jv-scan.c (main): Likewise.
2061         (fatal_error): Renamed from fatal.
2062         * jcf-parse.c (yyparse): Call fatal_io_error instead of
2063         pfatal_with_name.
2064         * jcf-parse.c (jcf_parse_source): Call fatal_io_error, not fatal.
2065         (yyparse): Likewise.
2066         * jcf-write.c (make_class_file_name, write_classfile): Likewise.
2067         * lex.c (java_get_line_col): Likewise.
2068         * jcf-parse.c (load_class): Make errors non-fatal.
2069         * lex.c (byteswap_init, need_byteswap): Only #ifdef HAVE_ICONV.
2070
2071 2001-02-01  Bryce McKinlay  <bryce@albatross.co.nz>
2072
2073         * jvgenmain.c (class_mangling_suffix): Remove unused string.
2074         (error): Remove unused function.
2075         (main): Don't use "__attribute__ alias" on generated class symbol.
2076
2077 2001-01-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2078
2079         * jcf-parse.c (init_jcf_parse): Added cast to ggc_add_root's last
2080         argument.
2081         * parse.y (finish_method_declaration): Code accounting for WFLed
2082         method DECL_NAMEs deleted.
2083         (check_abstract_method_definitions): Likewise.
2084         (resolve_type_during_patch): Layout resolved type.
2085         * typeck.c (lookup_do): Removed unused local.
2086
2087 2001-01-30  Bryce McKinlay  <bryce@albatross.co.nz>
2088
2089         * java-tree.h: Remove JTI_INTEGER_NEGATIVE_ONE_NODE.
2090         * decl.c (init_decl_processing): Use integer_minus_one_node, not
2091         integer_negative_one_node.
2092         * expr.c (build_java_binop): Likewise.
2093
2094 2001-01-24  Jeff Sturm  <jeff.sturm@commerceone.com>
2095
2096         * zextract.c (read_zip_archive): Read file_offset before writing
2097         zipd and consequently clobbering the header contents.
2098
2099 2001-01-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2100
2101         * Make-lang.in: Remove all dependencies on defaults.h.
2102         * decl.c: Don't include defaults.h.
2103         * expr.c: Likewise.
2104         * parse.y: Likewise.
2105
2106 2001-01-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2107
2108         * ChangeLog (2001-01-21): Fixed typo.
2109         * class.c (layout_class_method): Code accounting for WFLed
2110         method DECL_NAMEs deleted.
2111         * constant.c (find_methodref_index): Likewise.
2112         * decl.c (lang_mark_tree): Mark `wfl' field in struct lang_decl.
2113         * java-tree.h (DECL_FUNCTION_WFL): New macro.
2114         (struct lang_decl): New field `wfl'.
2115         (java_get_real_method_name): Prototype deleted.
2116         * mangle.c (mangle_method_decl): Code accounting for WFLed
2117         method DECL_NAMEs deleted.
2118         * parse.h (GET_METHOD_NAME): Macro deleted.
2119         * parse.y (reset_method_name): Deleted.
2120         (method_header): Set DECL_FUNCTION_WFL.
2121         (check_abstract_method_header): Code accounting for WFLed method
2122         DECL_NAMEs deleted.
2123         (java_get_real_method_name): Deleted.
2124         (check_method_redefinition): Code accounting for WFLed method
2125         DECL_NAMEs deleted. Use DECL_FUNCTION_WFL.
2126         (java_check_regular_methods): Likewise.
2127         (java_check_abstract_methods): Likewise.
2128         (java_expand_classes): Don't call `reset_method_name.'
2129         (search_applicable_method_list): Use DECL_NAMEs instead of
2130         GET_METHOD_NAME.
2131         * typeck.c (lookup_do): Code accounting for WFLed method
2132         DECL_NAMEs deleted.
2133
2134 2001-01-25  Richard Earnshaw  <rearnsha@arm.com>
2135
2136         * lex.c (java_read_char): Check for EOF from getc first.
2137
2138 2001-01-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2139
2140         * class.c (layout_class): Don't lay the superclass out if it's
2141         already being laid out.
2142         * jcf-parse.c (handle_innerclass_attribute): New function.
2143         (HANDLE_INNERCLASSES_ATTRIBUTE): Invoke
2144         handle_innerclasses_attribute.
2145         (jcf_parse): Don't load an innerclasses if it's already being
2146         laid out.
2147         * jcf-write.c (append_innerclass_attribute_entry): Static
2148         `anonymous_name' and its initialization deleted. `ocii' and `ini'
2149         to be zero for anonymous classes.
2150
2151 2001-01-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2152
2153         * class.c (set_constant_value): Set DECL_FIELD_FINAL_IUD if
2154         necessary.
2155         * jcf-parse.c (set_source_filename): Use
2156         MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC if necessary.
2157
2158 2001-01-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2159
2160         * expr.c (build_jni_stub): Set DECL_CONTEXT on `meth_var' so it
2161         gets a unique asm name.
2162
2163 2001-01-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2164
2165         * jcf-parse.c (HANDLE_END_METHODS): Nullify current_method.
2166         (HANDLE_START_FIELD): Invoke MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC
2167         if necessary.
2168         (HANDLE_SYNTHETIC_ATTRIBUTE): New macro.
2169         * jcf-reader.c (get_attribute): Handle `Synthetic' attribute.
2170         * parse.y (lookup_package_type_and_set_next): Deleted.
2171         (resolve_package): Removed unnecessary code.
2172         (find_applicable_accessible_methods_list): `finit$' can't be
2173         inherited.
2174         * verify.c (pop_argument_types): Added missing prototype.
2175
2176 2001-01-23  Bryce McKinlay  <bryce@albatross.co.nz>
2177
2178         * config-lang.in: Disable java by default.
2179
2180 2001-01-23  Tom Tromey  <tromey@redhat.com>
2181
2182         * gcj.texi (Copying): New node.
2183         Added copyright information.
2184
2185 2001-01-21  Per Bothner  <per@bothner.com>
2186
2187         Various fixes to allow compiling a compressed .jar/.zip archive.
2188         * zipfile.h (struct ZipFileCache):  Replace by struct ZipFile.
2189         (struct ZipFile):  Add fields name and next (from  ZipFileCache).
2190         (struct ZipDirectory):  New field zipf points to owning ZipFile.
2191         * jcf.h (struct ZipDirectory):  Add forward declaration.
2192         (struct JCF):   Declare zipd field to have type struct ZipDirectory.
2193         Remove seen_in_zip and zip_offset fields.
2194         (JCF_SEEN_IN_ZIP):  New macro.
2195         * zextract.c (read_zip_archive):  Set ZipDirectory's zipf field.
2196         * jcf-io.c:  Change all ZipFileCache to ZipFile.
2197         (read_zip_member):  New function.
2198         (open_in_zip):  Call read_zip_member.
2199         * jcf-parse.c (find_in_current_zip):  Remove function.
2200         (read_class):  Merge in find_in_current_zip functionality.
2201         Call read_zip_member if needed.
2202         (parse_zip_file_entries):  Use read_zip_member.
2203         (process_zip_dir):  Update for removed and added JCF fields.
2204         (jcf_figure_file_type):  Re-use, don't copy initial ZipFile struct.
2205
2206 2001-01-21  Per Bothner  <per@bothner.com>
2207
2208         Minor optimization of static ggc roots.
2209         * jcf-parse.c (parse_roots):  New static field.
2210         (current_field, current_method, current_file_list):  Replace by macros
2211         naming fields of parse_roots.
2212         (init_jcf_parse):  Combine 3 ggc_add_tree_root calls to 1.
2213         * class.c (class_roots):  New static field.
2214         (registered_class, fields_ident, info_ident, class_list):
2215         New macros naming fields of parse_roots.
2216         (build_static_field_ref):  Don't register roots here.
2217         (layout_class):  Static field list replaced by macro class_list.
2218         (init_class_processing):  Call ggc_add_tree_root for 4 roots.
2219         Initialize fields_ident and info_ident here.
2220
2221 2001-01-21  Per Bothner  <per@bothner.com>
2222
2223         * jcf-parse.c (ggc_mark_jcf):  New function.
2224         (init_jcf_parse):  Register current_jcf as ggc root.
2225
2226 2001-01-21  Per Bothner  <per@bothner.com>
2227
2228         * lang.c (put_decl_node):  Print method's name.
2229
2230 2001-01-21  Per Bothner  <per@bothner.com>
2231
2232         * verify.c (VERIFICATION_ERROR_WITH_INDEX):  New macro.
2233         (verify_jvm_instructions):  Use it, for better error messages on loads.
2234
2235 2001-01-21  Per Bothner  <per@bothner.com>
2236
2237         * verify.c (merge_type_state):  Still may have to merge even if
2238         LABEL_VERIFIED (label).
2239
2240 2001-01-21  Per Bothner  <per@bothner.com>
2241
2242         * parse.y (method_header):  Don't set the DECL_NAME of a FUNCTION_DECL
2243         to a EXPR_WITH_FILE_LOCATION - that is just too fragile and wrong.
2244
2245 2001-01-19  Per Bothner  <per@bothner.com>
2246
2247         * expr.c (pop_type_0):  Only return object_ptr_type_node on mismatch
2248         if expeting an interface type.  Refines Tom's change of 2000-09-12.
2249
2250 2001-01-18  Per Bothner  <per@bothner.com>
2251
2252         * gcj.texi (Input Options): Mention .java files.
2253
2254 2001-01-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2255
2256         * lang-options.h (-Wunsupported-jdk11): Removed.
2257         * lang.c (flag_not_overriding): Deleted.
2258         (flag_static_local_jdk1_1): Likewise.
2259         (lang_W_options): Removed "unsupported-jdk11" entry.
2260         * parse.y (java_check_methods): Removed dead code.
2261
2262 2001-01-17  Tom Tromey  <tromey@redhat.com>
2263
2264         Changes suggested by Per Bothner:
2265         * gcj.texi (Input Options): Don't mention input files.
2266         (Code Generation): Updated --main information.
2267         (Invoking jcf-dump): Mention that --javap is incomplete.
2268         From Alexandre Petit-Bianco:
2269         (Warnings): Don't mention -Wunsupported-jdk11.
2270         My stuff:
2271         (Compatibility): Mention JDK 1.2-ness of libraries.
2272         (Resources): Mention resources used when writing gcj.
2273
2274 2001-01-17  Tom Tromey  <tromey@redhat.com>
2275
2276         * gcj.texi: New file.
2277         * Make-lang.in ($(srcdir)/java/gcj.info): New target.
2278         (java.info): Depend on gcj.info.
2279         (java/gcj.dvi): New target.
2280         (java.dvi): Depend on gcj.dvi.
2281         (java.install-info): Wrote.
2282
2283 2001-01-16  Jeff Sturm  <jeff.sturm@appnet.com>
2284
2285         * expr.c (java_lang_expand_expr): Use TREE_SYMBOL_REFERENCED after
2286         having called make_decl_rtl.
2287
2288 2001-01-14  Per Bothner  <per@bothner.com>
2289
2290         Various patches to emit better messages on verification errors.
2291         * expr.c (push_type_0):  Return error indication on stack overflow,
2292         instead of callinfg fatal.
2293         (push_type):  Now just call push_type_0 (nd fatal on overflow).
2294         (pop_type_0):  Return detailed error message (in a char** argument).
2295         (pop_type):  If pop_type_0 fails, print error message.
2296         (pop_argument_types):  Moved to verify.c.
2297         * verify.c (pop_argument_types):  Moved from expr.c.
2298         Return a (possible) error message, rather than void.
2299         (POP_TYPE, POP_TYPE_CONV, PUSH_TYPE, PUSH_PENDING):  New macros.
2300         (verify_jvm_instruction):  Use new macros, improving error messages.
2301         For case OPCODE_astore use object_ptr_type_node.
2302         * java-tree.h (TYPE_UNDERFLOW, TYPE_UNEXPECTED):  New macros.
2303         (pop_type_0, push_type_0, pop_argument_types):  Update accordingly.
2304
2305         * parse.y (java_complete_lhs case EXPR_WITH_FILE_LOCATION): If body is
2306         constant, return body without wrapper.  (Improves constant folding.)
2307         * lex.c (build_wfl_node):  Clear TREE_TYPE from returned node.
2308
2309 2001-01-13  Per Bothner  <per@bothner.com>
2310
2311         * expr.c (expand_java_field_op):  Assigning to a final field outside
2312         an initializer does not violate JVM spec, so should be warning, not
2313         error.  (Sun's verifier does not complain - though MicroSoft's does.)
2314
2315 2001-01-12  Joseph S. Myers  <jsm28@cam.ac.uk>
2316
2317         * gjavah.c (version), jcf-dump.c (version): Update copyright year
2318         to 2001.
2319
2320 2001-01-11  Bryce McKinlay  <bryce@albatross.co.nz>
2321
2322         * parse.y (resolve_expression_name): Permit instance variables from
2323         enclosing context in super constructor call.
2324         (resolve_qualified_expression_name): Permit enclosing class's qualified
2325         "this" in super constructor call.
2326
2327 2001-01-10  Mark Mitchell  <mark@codesourcery.com>
2328
2329         * class.c (build_utf8_ref): Remove last argument in call to
2330         make_decl_rtl; use make_function_rtl instead of make_decl_rtl.
2331         (build_class_ref): Likewise.
2332         (build_static_field_ref): Likewise.
2333         (get_dispatch_table): Likewise.
2334         (layout_class_method): Likewise.
2335         (emit_register_classes): Likewise.
2336         * constants.c (build_constant_data_ref): Likewise.
2337         * decl.c (builtin_function): Likewise.
2338         (create_primitive_vtable): Likewise.
2339         * expr.c (build_known_method_def): Likewise.
2340         (build_jni_stub): Likewise.
2341         (java_lang_expand_expr): Likewise.
2342
2343 2001-01-10  Tom Tromey  <tromey@redhat.com>
2344
2345         * jvspec.c (jvgenmain_spec): Omit -fencoding from cc1 invocation.
2346
2347 2001-01-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2348
2349         * java-tree.h (lang_printable_name_wls): New prototype.
2350         * lang.c (put_decl_name): Removed dead code. Use DECL_CONTEXT
2351         rather than `current_class' to print type name. Don't prepend type
2352         names when printing constructor names.
2353         (lang_printable_name_wls): New function.
2354         * jcf-parse.c (jcf_parse_source): Pass NULL `file' argument to
2355         `build_expr_wfl', alway set EXPR_WFL_FILENAME_NODE.
2356         * parse.y (patch_method_invocation): Message tuned for constructors.
2357         (not_accessible_p): Grant `private' access from within
2358         enclosing contexts.
2359
2360 2001-01-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2361
2362         All files with updated copyright when applicable.
2363         * Make-lang.in (JVGENMAIN_OBS): Removed java/mangle.o.
2364         * class.c (mangle_class_field): Function removed.
2365         (append_gpp_mangled_type, mangle_static_field, mangle_field): Likewise.
2366         (utf8_cmp, cxx_keyword_p): Moved to lex.c.
2367         (build_class_ref): Call `java_mangle_class_field' instead of
2368         `mangle_class_field.'
2369         (build_dtable_decl): Rewritten to call `java_mangle_vtable.'
2370         (layout_class): Call `java_mangle_decl' instead of
2371         `mangle_static_field.'
2372         (cxx_keywords): Initialized static array moved to `lex.c.'
2373         (layout_class_method): Changed leading comment. Simplified to
2374         call `java_mangle_decl.' Local `ptr' moved in for loop body.
2375         * decl.c (lang_mark_tree): Mark field `package_list.'
2376         * java-tree.h (TYPE_PACKAGE_LIST): New macro.
2377         (struct lang_type): New field `package_list.'
2378         (unicode_mangling_length): Prototype removed.
2379         (append_gpp_mangled_name, append_gpp_mangled_classtype,
2380         emit_unicode_mangled_name): Likewise.
2381         (cxx_keyword_p): New prototype.
2382         (java_mangle_decl, java_mangle_class_field,
2383         java_mangle_class_field_from_string, java_mangle_vtable): Likewise.
2384         * jcf-parse.c (jcf_parse_source): Constify `file' argument to
2385         `build_expr_wfl.'
2386         * jvgenmain.c (main_method_prefix): Global variable removed.
2387         (main_method_suffix): Likewise.
2388         (do_mangle_classname): New function.
2389         (main): Call it. Format changed to accommodate new mangling scheme.
2390         * lex.c: (utf8_cmp): Conditionally prototyped.
2391         (cxx_keywords): Moved from class.c, conditionally defined.
2392         (utf8_cmp, cxx_keyword_p): Likewise.
2393         * mangle.c (obstack.h, ggc.h): Included.
2394         (mangle_field_decl): New function.
2395         (mangle_method_decl, mangle_type, mangle_pointer_type,
2396         mangle_array_type, mangle_record_type,
2397         find_compression_pointer_match, find_compression_array_match,
2398         find_compression_record_match,
2399         find_compression_array_template_match, set_type_package_list,
2400         entry_match_pointer_p, emit_compression_string, init_mangling,
2401         finish_mangling, compression_table_add, mangle_member_name): Likewise.
2402         (mangle_obstack): New global.
2403         (MANGLE_RAW_STRING): New macro.
2404         (unicode_mangling_length): Turned static.
2405         (append_unicode_mangled_name): Renamed from
2406         `emit_unicode_mangled_name.'  Turned static. `mangle_obstack'
2407         replaces `obstack', removed from the parameter list.
2408         (append_gpp_mangled_name): Turned static. `mangle_obstack'
2409         replaces parameter `obstack', removed from the parameter list. Call
2410         `append_unicode_mangled_name' instead of `emit_unicode_mangled_name.
2411         (append_gpp_mangled_classtype): Removed.
2412         (compression_table, compression_next): New static variables.
2413         * parse.y (temporary_obstack): Extern declaration removed.
2414
2415 2001-01-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2416
2417         * parse.y (patch_binop): Compute missing type in error situations.
2418
2419 2001-01-05  Bryce McKinlay  <bryce@albatross.co.nz>
2420
2421         * class.c (make_class_data): Push initial value for "arrayclass".
2422         * decl.c (init_decl_processing): Add new class field "arrayclass".
2423
2424 2001-01-05  Bryce McKinlay  <bryce@albatross.co.nz>
2425
2426         From patha@softlab.ericsson.se:
2427         * parse.y (switch_label): Use build, not build1, to construct
2428         DEFAULT_EXPR.
2429
2430 2001-01-04  Neil Booth  <neil@daikokuya.demon.co.uk>
2431
2432         * lang.c (lang_decode_option): Change -MA to -MP.
2433         * jcf-depend.c (jcf_dependency_add_target, jcf_dependency_set_target):
2434         Update to new prototype; do quote targets.
2435         (jcf_dependency_write): Update.
2436
2437 2000-12-22  Bryce McKinlay  <bryce@albatross.co.nz>
2438
2439         Shorten primitive array allocation path:
2440         * decl.c (init_decl_processing): Use _Jv_NewPrimArray not _Jv_NewArray
2441         to create new primitive arrays.
2442         * expr.c (build_newarray): If generating native code, call
2443         soft_newarray_node with a reference to the primitive TYPE identifier
2444         instead of type_value.
2445
2446 2000-12-17  Bryce McKinlay  <bryce@albatross.co.nz>
2447
2448         Fix for PRs gcj/312 and gcj/253:
2449         * parse.y (valid_ref_assignconv_cast_p): Load classes for source and
2450         dest if they arn't already.
2451         * class.c (layout_class): Call maybe_layout_super_class on
2452         superinterfaces also, but only if compiling from bytecode.
2453
2454         Fix for PR gcj/373:
2455         * parse.y (create_class): Set ACC_STATIC if class is declared in an
2456         interface.
2457
2458 2000-12-15  Tom Tromey  <tromey@redhat.com>
2459
2460         * jcf-parse.c (jcf_parse_source): Set wfl_operator if not already
2461         set.
2462
2463 2000-12-14  Andrew Haley  <aph@redhat.com>
2464
2465         * boehm.c (mark_reference_fields): Change test to correctly detect
2466         bitmap overflow.
2467
2468 2000-12-15  Andreas Jaeger  <aj@suse.de>
2469
2470         * config-lang.in (lang_dirs): Added.
2471
2472 2000-12-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2473
2474         * parse.y (end_artificial_method_body): Fixed undefined behavior.
2475         Credits go to rth for finding it.
2476
2477 2000-12-13  Mike Stump  <mrs@wrs.com>
2478
2479         * parse.y (check_static_final_variable_assignment_flag): Fix spelling.
2480
2481 2000-11-07  Tom Tromey  <tromey@cygnus.com>
2482
2483         * Make-lang.in (JAVA_LEX_C): Added chartables.h.
2484         * lex.c (java_ignorable_control_p): Removed.
2485         (java_letter_or_digit_p): Removed.
2486         (java_start_char_p): New function.
2487         (java_read_char): Return `int', not `unicode_t'.  Changed
2488         callers.
2489         (java_read_unicode): Likewise.
2490         (java_read_unicode_collapsing_terminators): Likewise.
2491         (java_get_unicode): Likewise.
2492         (java_new_lexer): Initialize hit_eof.
2493         (java_parse_end_comment): Take `int' argument.
2494         (java_parse_doc_section): Likewise.
2495         (java_parse_escape_sequence): Don't allow backlash-newline.
2496         Return `int'.
2497         * lex.h (JAVA_DIGIT_P): Removed.
2498         (_JAVA_LETTER_OR_DIGIT_P): Removed.
2499         (_JAVA_IDENTIFIER_IGNORABLE): Removed.
2500         (JAVA_START_CHAR_P): Renamed from JAVA_ID_CHAR_P.
2501         (JAVA_PART_CHAR_P): New macro.
2502         (UEOF): Now -1.
2503         (JAVA_CHAR_ERROR): Now -2.
2504         (java_lexer): New field `hit_eof'.
2505         * chartables.h: New file.
2506         * gen-table.pl: new file.
2507
2508 2000-11-20  Tom Tromey  <tromey@cygnus.com>
2509             Alexandre Petit-Bianco  <apbianco@cygnus.com>
2510
2511         * parse.y (java_complete_lhs): Only allow compound assignment of
2512         reference type if type is String.
2513
2514 2000-12-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2515
2516         * Make-lang.in (java/jcf-path.o:): libgcj.jar replaces libgcj.zip.
2517         jcf-path.c: Likewise.
2518
2519 2000-12-09  Anthony Green  <green@redhat.com>
2520
2521         * zipfile.h (ZipDirectory): Declare size, uncompressed_size,
2522         filestart and filename_length as int values.
2523
2524 2000-12-07  Mo DeJong  <mdejong@redhat.com>
2525
2526         * jcf-io.c (find_class): Correct the logic that tests to see if a
2527         .java file is newer than its .class file. The compiler was
2528         incorrectly printing a warning when file mod times were equal.
2529
2530 2000-12-07  Zack Weinberg  <zack@wolery.stanford.edu>
2531
2532         * jvgenmain.c: Use ISPRINT not isascii.
2533
2534 2000-12-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2535
2536         * parse.y (end_artificial_method_body): Fixed typo.
2537
2538 2000-12-04  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2539
2540         * parse.y (patch_method_invocation): Pick the correct enclosing
2541         context when creating inner class instances.
2542         Fixes gcj/332.
2543
2544 2000-11-26  Joseph S. Myers  <jsm28@cam.ac.uk>
2545
2546         * gjavah.c (version), jcf-dump.c (version), jv-scan.c (version):
2547         Update copyright year to 2000.
2548
2549 2000-11-23  Anthony Green  <green@redhat.com>
2550
2551         * jcf-parse.c (init_jcf_parse): Register current_file_list root.
2552         Move current_file_list out of yyparse and make it static.
2553
2554         * expr.c: Declare quick_stack and tree_list_free_list as static
2555         (init_expr_processing): Register quick_stack and
2556         tree_list_free_list roots.
2557
2558 2000-11-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2559
2560         * parse.y (build_outer_field_access): New local `decl_ctx', use
2561         it. Check for field's context and current class immediate outer
2562         context inheritance.
2563         (outer_field_access_p): Consider fields inherited from the last
2564         enclosing context.
2565         (build_access_to_thisn): Stop at the last enclosing context if
2566         necessary.
2567         Fixes gcj/367.
2568
2569 Thu Nov 23 02:19:14 2000  J"orn Rennecke <amylaar@redhat.com>
2570
2571         * Make-lang.in (jvspec.o): Depend on $(CONFIG_H).
2572
2573 2000-11-22  Bryce McKinlay  <bryce@albatross.co.nz>
2574
2575         * jcf-parse.c (get_constant): Call UT8_CHAR_LENGTH on `utf8', not the
2576         scratch buffer.
2577
2578 2000-11-20  Tom Tromey  <tromey@cygnus.com>
2579
2580         * jv-scan.c (help): Document --complexity.
2581         (options): Added --complexity.
2582         (flag_complexity): New global.
2583         (main): Call `report'.
2584         * parse-scan.y (complexity): New global.
2585         (if_then_statement, if_then_else_statement,
2586         if_then_else_statement_nsi, switch_block_statement_group,
2587         while_expression, do_statement, for_begin, continue_statement,
2588         throw_statement, catch_clause, finally, method_invocation,
2589         conditional_and_expression, conditional_or_expression,
2590         conditional_expression): Update complexity.
2591         (reset_report): Reset complexity.
2592         (report): New function.
2593
2594 2000-11-20  Tom Tromey  <tromey@cygnus.com>
2595
2596         * lex.c (yylex): Added STRICT_TK case.
2597         * parse.y (STRICT_TK): Added.
2598         * parse-scan.y (STRICT_TK): Added.
2599         * Make-lang.in ($(srcdir)/java/keyword.h): Added missing `\' and
2600         `;'.  Use 4, not 3, with -k option.  Correctly rename resulting
2601         file.
2602         * keyword.h: Rebuilt.
2603         * keyword.gperf (strictfp): Added.
2604
2605 2000-11-20  Tom Tromey  <tromey@cygnus.com>
2606
2607         * lex.c (yylex): Recognize floating point constants with leading
2608         0.
2609
2610 2000-11-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2611
2612         * java-tree.h (cyclic_inheritance_report): Constify.
2613         * parse.y (cyclic_inheritance_report): Likewise.
2614
2615 2000-11-17  Zack Weinberg  <zack@wolery.stanford.edu>
2616
2617         * parse.y (goal): Remove call to ggc_add_string_root.
2618
2619 2000-11-16  Zack Weinberg  <zack@wolery.stanford.edu>
2620
2621         * jcf-parse.c (get_constant), parse.y (do_merge_string_cste):
2622         Create string in scratch buffer, then pass to build_string.
2623
2624 2000-11-13  Joseph S. Myers  <jsm28@cam.ac.uk>
2625
2626         * parse.y (issue_warning_error_from_context): Add
2627         ATTRIBUTE_PRINTF.
2628
2629 2000-11-11  Anthony Green  <green@redhat.com>
2630
2631         * jcf-parse.c (process_zip_dir): Add finput parameter.
2632         (jcf_figure_file_type): Call process_zip_dir with appropriate
2633         argument.
2634
2635 2000-11-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2636
2637         * decl.c (copy_lang_decl): Use memcpy, not bcopy.
2638         * jcf-parse.c (jcf_figure_file_type): Likewise.
2639
2640 2000-11-09  Joseph S. Myers  <jsm28@cam.ac.uk>
2641
2642         * parse.y (create_new_parser_context): Use memset () instead of
2643         bzero ().
2644
2645 2000-11-08  Tom Tromey  <tromey@cygnus.com>
2646
2647         * gjavah.c (process_file): Only include gcj/cni.h when generating
2648         CNI stubs.
2649
2650 2000-11-07  Joseph S. Myers  <jsm28@cam.ac.uk>
2651
2652         * expr.c (note_instructions), jcf-io.c (find_class), jcf-parse.c
2653         (init_outgoing_cpool), lex.c (java_init_lex): Use memset ()
2654         instead of bzero ().
2655
2656 2000-11-05  Tom Tromey  <tromey@cygnus.com>
2657
2658         * lex.h (JAVA_FLOAT_RANGE_ERROR): Typo fix.
2659         * lex.c (IS_ZERO): New define.
2660         (java_perform_atof): Error on floating point underflow.
2661
2662 2000-11-04  Tom Tromey  <tromey@cygnus.com>
2663
2664         * lex.c (java_parse_escape_sequence): Only read two octal
2665         characters if the first one is greater than 3.  Don't allow
2666         "octal" numbers to include the digits 8 or 9.
2667
2668 2000-11-05  Joseph S. Myers  <jsm28@cam.ac.uk>
2669
2670         * Make-lang.in (java.distdir): Remove.
2671
2672 2000-11-03  Tom Tromey  <tromey@cygnus.com>
2673
2674         * Make-lang.in (java.dvi): New target.
2675         Partial fix for PR other/567.
2676
2677         * lang-options.h: Mention -Wout-of-date.
2678         * jcf-dump.c (flag_newer): New global.
2679         * gjavah.c (flag_newer): New global.
2680         * jcf-io.c (find_class): Only warn when flag_newer set.
2681         * lang.c (flag_newer): New global.
2682         (struct string_option): New declaration.
2683         (lang_W_options): New global.
2684         (process_option_with_no): New function.
2685         (lang_decode_option): Use it.
2686
2687         * class.c (cxx_keyword_p): Accept keywords with trailing `$'s.
2688         * gjavah.c (cxx_keyword_subst): Handle any number of trailing
2689         `$'.
2690
2691         * lex.h (_JAVA_IDENTIFIER_IGNORABLE): New macro.
2692         (JAVA_ID_CHAR_P): Also try java_ignorable_control_p.
2693         * lex.c (java_read_unicode): Removed `term_context' argument.
2694         Recognize any number of `u' in `\u'.
2695         (java_read_unicode_collapsing_terminators): New function.
2696         (java_get_unicode): Use it.
2697         (java_lineterminator): Removed.
2698         (yylex): Produce error if character literal is newline or single
2699         quote.  Return if eof found in middle of `//' comment.  EOF in
2700         `//' comment is only an error if pedantic.
2701         (java_ignorable_control_p): New function.
2702         (java_parse_end_comment): Return if eof found in middle of
2703         comment.
2704         Include flags.h.
2705         * jv-scan.c (pedantic): New global.
2706
2707 2000-10-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2708
2709         * parse.y (outer_field_access_p): Inherited fields aren't
2710         consider outer fields.
2711         (maybe_build_thisn_access_method): Use
2712         PURE_INNER_CLASS_TYPE_P instead of INNER_CLASS_TYPE_P.
2713         (resolve_expression_name): Trigger an error if a static field
2714         is being accessed as an outer field.
2715
2716 2000-10-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2717
2718         * Make-lang.in (LIBGCJ_ZIP_FILE): Define with `$(prefix)'.
2719         Fixes gcj/365.
2720
2721 2000-10-27  Zack Weinberg  <zack@wolery.stanford.edu>
2722
2723         * Make-lang.in: Move all build rules here from Makefile.in,
2724         adapt to new context.  Wrap all rules that change the current
2725         directory in parentheses.  Expunge all references to $(P).
2726         When one command depends on another and they're run all at
2727         once, use && to separate them, not ;.  Add OUTPUT_OPTION to
2728         all object-file generation rules.  Delete obsolete variables.
2729
2730         * Makefile.in: Delete.
2731         * config-lang.in: Delete outputs= line.
2732
2733 2000-10-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2734
2735         * parse.y (patch_method_invocation): NULLify this_arg when already
2736         inserted.
2737         (maybe_use_access_method): Handle call to methods unrelated to the
2738         current class. Fixed comment.
2739         Fixes gcj/361.
2740
2741 2000-10-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2742
2743        * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Check inherited type in
2744        scope.
2745
2746 2000-10-24  Tom Tromey  <tromey@cygnus.com>
2747
2748         * lex.c (java_new_lexer): Initialize new fields.  Work around
2749         broken iconv() implementations.
2750         (java_read_char): Swap bytes if required.  Use fallback decoder if
2751         required.
2752         (byteswap_init, need_byteswap): New globals.
2753         (java_destroy_lexer): Only close iconv handle if it is in use.
2754         * lex.h (java_lexer): New fields read_anything, byte_swap,
2755         use_fallback.
2756         Made out_buffer unsigned.
2757
2758 2000-10-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2759
2760         * parse.y (register_incomplete_type): Include JDEP_FIELD as a case
2761         where an enclosing context can be set on the jdep.
2762         (do_resolve_class): Fixed identation.
2763
2764 2000-10-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2765
2766         * gjavah.c (NEED_PEEK_ATTRIBUTE, NEED_SKIP_ATTRIBUTE): Define
2767
2768         * jcf-reader.c (peek_attribute, skip_attribute): Only define
2769         when requested.
2770
2771         * parse.h (yyerror): If JC1_LITE, mark with ATTRIBUTE_NORETURN.
2772
2773         * verify.c (CHECK_PC_IN_RANGE): Cast result of stmt-expr to void.
2774
2775 2000-10-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2776
2777         * jcf-write.c (OP1): Update `last_bc'.
2778         (struct jcf_block): Fixed indentation and typo in comments.  New
2779         field `last_bc'.
2780         (generate_bytecode_insns): Insert `nop' if `jsr' immediately
2781         follows `monitorenter'.
2782         * parse.y (patch_synchronized_statement): New local `tmp'. Call
2783         `patch_string'.
2784         Fixes gcj/232.
2785
2786 2000-10-16  Tom Tromey  <tromey@cygnus.com>
2787
2788         * jvspec.c (lang_specific_driver): Recognize -MF and -MT.
2789         * lang-specs.h: Added %{MA}, %{MF*}, %{MT*}.
2790         * lang-options.h: Added -MA, -MT, -MF..
2791         * lang.c (lang_decode_option): Recognize -MA, -MT, -MF.
2792         (DEPEND_TARGET_SET): New macro.
2793         (DEPEND_FILE_ALREADY_SET): Likewise.
2794         (init_parse): Handle new flags.
2795         * jcf.h (jcf_dependency_print_dummies): Declare.
2796         * Make-lang.in (s-java): Added mkdeps.o.
2797         * Makefile.in (BACKEND): Added mkdeps.o.
2798         (../gcjh$(exeext)): Added mkdeps.o.
2799         (../jcf-dump$(exeext)): Added mkdeps.o.
2800         * jcf-depend.c: Include mkdeps.h.
2801         (struct entry, dependencies, targets, MAX_OUTPUT_COLUMNS,
2802         add_entry): Removed.
2803         (jcf_dependency_reset): Rewrote.
2804         (dependencies): New global.
2805         (jcf_dependency_set_target): Rewrote.
2806         (jcf_dependency_add_target): Likewise.
2807         (jcf_dependency_add_file): Likewise.
2808         (munge): Removed.
2809         (print_ents): Removed.
2810         (jcf_dependency_write): Rewrote.
2811         (print_dummies): New global.
2812         (jcf_dependency_print_dummies): New function
2813         (jcf_dependency_write): Call deps_dummy_targets if required.
2814
2815 2000-10-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2816
2817         * gjavah.c (add_class_decl): Removed unused variables `tname',
2818         `tlen' and `name_index'.
2819         * java-tree.h (BUILD_FILENAME_IDENTIFIER_NODE): New macro.
2820         * jcf-parse.c (jcf_parse_source): Use it and set EXPR_WFL_FILENAME
2821         in `wfl_operator' with value.
2822         (yyparse): Use BUILD_FILENAME_IDENTIFIER_NODE.
2823         (jcf_figure_file_type): Fixed identation.
2824         * lex.c (java_get_line_col): Use EOF. Tuned `^' placement.
2825         * parse.y (analyze_clinit_body): New function.
2826         (static_initializer:): Reset `current_static_block'.
2827         (java_parser_context_restore_global): Set EXPR_WFL_FIILENAME_NODE in
2828         `wfl_operator' with new value.
2829         (lookup_cl): Use EXPR_WFL_FILENAME.
2830         (maybe_yank_clinit): Handle bogus <clinit> bodies, call
2831         analyze_clinit_body.
2832         (build_outer_field_access): Access to this$<n> built from
2833         current_class, not its outer context.
2834         (build_access_to_thisn): Fixed leading comment. Tidied things up.
2835         (resolve_qualified_expression_name): Handle `T.this' and `T.this.f()'.
2836         (patch_method_invocation): Use `is_static_flag' when already
2837         initialized.
2838         (patch_newarray): Removed assignment in ternary operator.
2839
2840 2000-10-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2841
2842         * except.c (free_eh_ranges): Don't free `whole_range'.
2843
2844 2000-10-15  Anthony Green  <green@redhat.com>
2845
2846         * decl.c (init_decl_processing): Call init_class_processing before
2847         anything else.
2848
2849 2000-10-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2850
2851         * check-init.c (check_init): Fixed leading comment. Use
2852         LOCAL_FINAL_P.
2853         * decl.c (push_jvm_slot): Use MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC.
2854         (give_name_to_locals): Likewise.
2855         (lang_mark_tree): Handle FIELD_DECL. Register `am' and `wfl'
2856         fields in lang_decl_var.
2857         * java-tree.h (DECL_FUNCTION_SYNTHETIC_CTOR,
2858         DECL_FUNCTION_ALL_FINAL_INITIALIZED): New macros.
2859         (FIELD_INNER_ACCESS): Removed ugly cast, macro rewritten.
2860         (FIELD_INNER_ACCESS_P, DECL_FIELD_FINAL_IUD, DECL_FIELD_FINAL_LIIC,
2861         DECL_FIELD_FINAL_IERR, DECL_FIELD_FINAL_WFL): New macros.
2862         (LOCAL_FINAL): Rewritten.
2863         (LOCAL_FINAL_P, FINAL_VARIABLE_P, CLASS_FINAL_VARIABLE_P
2864         MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC): New macros.
2865         (struct lang_decl): Fixed comments. Added `synthetic_ctor' and
2866         `init_final' fields.
2867         (struct lang_decl_var): Fixed leading comment. Added `am', `wfl',
2868         `final_uid', `final_liic', `final_ierr' and `local_final' fields.
2869         (TYPE_HAS_FINAL_VARIABLE): New macro.
2870         (struct lang_type): Added `afv' field.
2871         * parse.y (check_static_final_variable_assignment_flag): New function.
2872         (reset_static_final_variable_assignment_flag): Likewise.
2873         (check_final_variable_local_assignment_flag): Likewise.
2874         (reset_final_variable_local_assignment_flag): Likewise.
2875         (check_final_variable_indirect_assignment): Likewise.
2876         (check_final_variable_global_assignment_flag): Likewise.
2877         (add_inner_class_fields): Use LOCAL_FINAL_P.
2878         (register_fields): Handle local finals and final variables.
2879         (craft_constructor): Set DECL_FUNCTION_SYNTHETIC_CTOR.
2880         (declare_local_variables): Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC.
2881         (source_start_java_method): Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC
2882         on local finals.
2883         (java_complete_expand_methods): Loop to set
2884         TYPE_HAS_FINAL_VARIABLE. Call
2885         `reset_final_variable_local_assignment_flag' and
2886         `check_final_variable_local_assignment_flag' accordingly before
2887         and after constructor expansion. Call
2888         `reset_static_final_variable_assignment_flag'
2889         before expanding <clinit> and after call
2890         `check_static_final_variable_assignment_flag' if the
2891         current_class isn't an interface. After all methods have been
2892         expanded, call `check_final_variable_global_assignment_flag' and
2893         `check_static_final_variable_assignment_flag' if the current class
2894         is an interface.
2895         (maybe_yank_clinit): Fixed typo in comment.
2896         (build_outer_field_access_methods): Removed old sanity check. Use
2897         FIELD_INNER_ACCESS_P. Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC.
2898         Don't create access methods for finals.
2899         (resolve_field_access): Use `CLASS_FINAL_VARIABLE_P'.
2900         (java_complete_tree): Likewise. Reset DECL_FIELD_FINAL_IUD if
2901         existing DECL_INIT has been processed.
2902         (java_complete_lhs): Likewise.
2903         (check_final_assignment): Filter input on `lvalue''s TREE_CODE.
2904         Test for COMPONENT_REF to get to the FIELD_DECL. Implemented new
2905         logic.
2906         (patch_assignment): Use LOCAL_FINAL_P.
2907         (fold_constant_for_init): Reset DECL_FIELD_FINAL_IUD if
2908         DECL_INITIAL is nullified.
2909         Fixes gcj/163.
2910
2911 2000-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2912
2913         * Make-lang.in (parse.c, parse-scan.c): Create atomically.
2914
2915         * Makefile.in (parse.c, parse-scan.c): Likewise.
2916
2917 2000-10-12  Mark Mitchell  <mark@codesourcery.com>
2918
2919         * class.c (temporary_obstack): Remove.
2920         (make_class): Don't mess with obstascks.
2921         (push_class): Likewise.
2922         (set_super_info): Likewise.
2923         (add_method_1): Likewise.
2924         (add_method): Likewise.
2925         (add_field): Likewise.
2926         (build_utf8_ref): Likewise.
2927         (build_class_ref): Likewise.
2928         (build_static_field_ref): Likewise.
2929         (finish_class): Likewise.
2930         (push_super_field): Likewise.
2931         (layout_class): Likewise.
2932         (layout_class_methods): Likewise.
2933         (init_class_processing): Likewise.
2934         * constants.c (get_tag_node): Likewise.
2935         (build_constant_data_ref): Likewise.
2936         * decl.c (ggc_p): Remove.
2937         (copy_lang_decl): Use ggc_alloc.
2938         (complete_start_java_method): Don't mess with obstacks.
2939         (start_java_method): Likewise.
2940         (end_java_method): Likewise.
2941         * except.c (link_handler): Use xmalloc.
2942         (free_eh_ranges): New function.
2943         (method_init_exceptions): Use it.
2944         (add_handler): Use xmalloc.
2945         (expand_start_java_handler): Don't mess with obstacks.
2946         (prepare_eh_table_type): Likewise.
2947         (expand_end_java_handler): Likewise.
2948         * expr.c (push_value): Likewise.
2949         (create_label_decl): Likewise.
2950         (build_jni_stub): Likewise.
2951         (java_lang_expand_expr): Likewise.
2952         (note_instructions): Use xrealloc.
2953         (java_push_constant_from_pool): Don't mess with obstacks.
2954         (process_jvm_instruction): Likewise.
2955         * java-tree.h (cyclic_inheritance_report): Remove duplicate
2956         declaration.
2957         * jcf-parse.c (get_constant): Don't mess with obstacks.
2958         (read_class): Likewise.
2959         (jcf_parse): Likewise.
2960         * lex.c (expression_obstack): Remove.
2961         (java_lex): Don't use obstack_free.
2962         * parse.h (exit_java_complete_class): Don't mess with obstacks.
2963         (MANGLE_OUTER_LOCAL_VARIABLE_NAME): Adjust.
2964         (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID): Likewise.
2965         (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_STRING): Likewise.
2966         * parse.y (gaol): Add more GC roots.
2967         (add_inner_class_fields): Adjust calls to MANGLE_* macros.
2968         (lookup_field_wrapper): Likewise.
2969         (obtain_incomplete_type): Don't mess with obstacks.
2970         (build_alias_initializer_parameter_list): Adjust calls to MANGLE_*
2971         macros.
2972         (craft_constructor): Don't mess with obstacks.
2973         (safe_layout_class): Likewise.
2974         (java_complete_class): Likewise.
2975         (source_end_java_method): Likewise.
2976         (build_outer_field_access_methods): Likewise.
2977         (build_outer_method_access_method): Likewise.
2978         (maybe_build_thisn_access_method): Likewise.
2979         (build_dot_class_method_invocation): Likewise.
2980         (java_complete_tree): Likewise.
2981         (java_complete_lhs): Likewise.
2982         (do_merge_string_cste): Likewise.
2983         (patch_string_cst): Likewise.
2984         (array_constructor_check_entry): Likewise.
2985         * typeck.c (build_java_array_type): Likewise.
2986         (parse_signature_string): Likewise.
2987         (build_java_signature): Likewise.
2988
2989 2000-10-12  Tom Tromey  <tromey@cygnus.com>
2990
2991         Fix for PR gcj/356:
2992         * gjavah.c (add_class_decl): Don't special-case inner classes.
2993         (add_namelet): Likewise.
2994
2995 2000-10-11  Rodney Brown  <RodneyBrown@mynd.com>
2996
2997         * java-tree.h: Constify current_encoding.
2998         * lang.c: Constify current_encoding.
2999
3000 2000-10-10  Jeff Sturm  <jeff.sturm@appnet.com>
3001
3002         * jvgenmain.c (class_mangling_suffix): Omit `.'.
3003         (main): Use `$' when NO_DOLLAR_IN_LABEL is not set, otherwise `.'.
3004
3005 2000-10-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3006
3007         * expr.c (java_lang_expand_expr): Reinstall 1999-08-14 Anthony's
3008         patch. Fixes gcj/340.
3009
3010 2000-10-10  Tom Tromey  <tromey@cygnus.com>
3011
3012         * lex.c (java_new_lexer): Initialize out_first and out_last
3013         fields.
3014         * lex.h (java_lexer): Added out_buffer, out_first, out_last.
3015
3016 2000-10-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3017
3018         * parse.y (pop_current_osb): New function.
3019         (array_type:): Use `dims:', changed actions
3020         accordingly. Suggested by Anthony Green.
3021         (array_creation_expression:): Used pop_current_osb.
3022         (cast_expression:): Likewise.
3023         (search_applicable_method_list): Fixed indentation.
3024
3025 2000-10-08  Anthony Green  <green@redhat.com>
3026
3027         * parse.y (array_type_literal): Remove production.
3028         (type_literals): Refer to array_type, not array_type_literal.
3029
3030 2000-10-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3031
3032         Patch contributed by Corey Minyard.
3033         * decl.c (check_local_named_variable): New function.
3034         (tree check_local_unnamed_variable): Likewise.
3035         (find_local_variable): Splitted. Call check_local_{un}named_variable.
3036
3037 2000-10-07  Anthony Green  <green@redhat.com>
3038
3039         * class.c (layout_class): Handle case where superclass can't be
3040         layed out yet.
3041
3042 2000-10-07  Joseph S. Myers  <jsm28@cam.ac.uk>
3043
3044         * Makefile.in (keyword.h): Refer to GNU FTP site for updated
3045         gperf.
3046
3047 2000-10-05  Tom Tromey  <tromey@cygnus.com>
3048
3049         * jvspec.c (jvgenmain_spec): Added `-fdollars-in-identifiers'.
3050         * jvgenmain.c (class_mangling_prefix): Removed.
3051         (class_mangling_suffix): New global.
3052         (main): Use it.
3053         * gjavah.c (cxx_keyword_subst): Mangle C++ keywords by appending
3054         `$'.
3055         (print_method_info): Handle overrides for static and final
3056         methods.
3057         (process_file): Generate declaration for class object field.
3058         * class.c (cxx_keywords): New array.
3059         (utf8_cmp): New function.
3060         (cxx_keyword_p): New function.
3061         (layout_class_method): Mangle C++ keywords by appending `$'.
3062         (mangle_field): New function.
3063         (mangle_class_field): Use mangle_field.  Mangle class name as
3064         `class$'.
3065         (mangle_static_field): Use mangle_field.
3066
3067 Tue Oct  3 13:44:37 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3068
3069         * decl.c (find_local_variable): Removed uncessary type check and
3070         fixed range check typo. From Corey Minyard.
3071
3072 Wed Sep 13 16:06:52 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3073
3074         * decl.c (give_name_to_locals): New local `code_offset'. Call
3075         `maybe_adjust_start_pc'.
3076         * expr.c (note_instructions): New function.
3077         (expand_byte_code): Don't collect insn starts here.
3078         (peek_opcode_at_pc): New function.
3079         (maybe_adjust_start_pc): Likewise.
3080         * java-tree.h (maybe_adjust_start_pc): Declare.
3081         (note_instructions): Likewise.
3082         * jcf-parse.c (parse_class_file): Call `note_instructions'.
3083
3084 Wed Sep 13 11:50:35 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3085
3086         * parse.y (field_access:): Fixed indentation.
3087         (qualify_ambiguous_name): Properly qualify `this.a[b].c'.
3088
3089 2000-09-07  Tom Tromey  <tromey@cygnus.com>
3090
3091         Fix for PR gcj/307:
3092         * parse.y (patch_binop): Use JNUMERIC_TYPE_P, not
3093         JPRIMITIVE_TYPE_P, for arithmetic operators.
3094         (patch_method_invocation): Indentation fix.
3095         (try_builtin_assignconv): Handle boolean specially.  Fixed typo.
3096         (valid_builtin_assignconv_identity_widening_p): Handle boolean.
3097         (do_unary_numeric_promotion): Cleaned up code.
3098         (valid_cast_to_p): Handle boolean correctly.
3099
3100 2000-09-27  Tom Tromey  <tromey@cygnus.com>
3101
3102         * lex.c (java_read_unicode): Reset bs_count when finished with
3103         `\u' sequence.
3104
3105 2000-10-01  Mark Mitchell  <mark@codesourcery.com>
3106
3107         Convert to GC.
3108         * Make-lang.in (s-java): Don't depend on ggc-callbacks.o.
3109         * Makefile.in (BACKEND): Don't include ggc-callbacks.o.
3110         (typeck.o): Depend on ggc.h.
3111         * class.c (add_method_1): Use GC functions for allocation.
3112         (init_class_processing): Register roots.
3113         * decl.c (ggc_p): Set to 1.
3114         (pending_local_decls): Make it static.
3115         (push_jvm_slot): Use GC functions for allocation.
3116         (init_decl_processing): Register roots.
3117         (give_name_to_locals): Use GC functions for allocation.
3118         (lang_mark_tree): New function.
3119         * java-tree.h (MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Use GC
3120         functions for allocation.
3121         * jcf-parse.c (jcf_parse_source): Use ggc_strdup.
3122         * lex.c (java_lex): Use build_string, rather than replicating it
3123         inline.
3124         * parse.y (goal): Add more roots.
3125         (mark_parser_ctxt): New function.
3126         * typeck.c: Include ggc.h.
3127
3128 2000-09-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3129
3130         * parse.y (maybe_yank_clinit): Also keep <clinit> if its body
3131         contains something else than MODIFY_EXPR.
3132
3133 2000-09-23  Mark Mitchell  <mark@codesourcery.com>
3134
3135         * Make-lang.in (JAVA_SRCS): Include java-tree.h.
3136         * Makefile.in (parse.o): Depend on ggc.h.
3137         (class.o): Likewise.
3138         (constants.o): Likewise.
3139         (decl.o): Likewise.
3140         (expr.o): Likewise.
3141         (jcf-parse.o): Likewise.
3142         (jcf-write.o): Likewise.
3143         (mangle.o): Likewise.
3144         * class.c: Include ggc.h.
3145         (build_static_field_ref): Register GC roots.
3146         (layout_class): Likewise.
3147         (init_class_processing): Likewise.
3148         * constants.c: Include ggc.h.
3149         (current_constant_pool_data_ref): Remove.
3150         (tag_nodes): Move it to ...
3151         (get_tag_node): ... here.  Register GC roots.
3152         * decl.c: Include ggc.h.  Remove many global tree definitions.
3153         (throw_node): Define.
3154         (java_global_trees): Likewise.
3155         (predef_filenames): Make the size a constant.
3156         (init_decl_processing): Adjust accordingly.
3157         (init_decl_processing): Call init_jcf_parse.  Register GC roots.
3158         * expr.c: Include ggc.h.
3159         (init_expr_processing): Register GC roots.
3160         (build_invokeinterface): Likewise.
3161         * java-tree.h: Replace extern tree declarations with macros.
3162         (java_global_trees): New variable.
3163         (java_tree_index): New enumeration.
3164         (init_jcf_parse): Declare.
3165         * jcf-parse.c: Include ggc.h.
3166         (current_class): Remove declaration.
3167         (main_class): Likewise.
3168         (all_class_list): Likewise.
3169         (predefined_filename_p): Adjust for constant size of
3170         predef_filenames.
3171         (init_jcf_parse): New function.
3172         * jcf-write.c: Include ggc.h.
3173         (generate_classfile): Register GC roots.
3174         (append_synthetic_attribute): Likewise.
3175         (append_innerclass_attribute_entry): Likewise.
3176         * lang.c: Include ggc.h.
3177         (lang_print_error): Register GC roots.
3178         * parse.h (struct parser_ctxt): Rename fields to avoid conflicts
3179         with macros.
3180         * parse.y: Include ggc.h.
3181         (wfl_operator): Remove.
3182         (goal): Register GC roots.
3183         (java_pop_parser_context): Adjust for new field names.
3184         (java_parser_context_save_global): Likewse.
3185         (java_parser_context_restore_global): Likewise.
3186         (java_parser_context_suspend): Likewise.
3187         (java_parser_context_resume): Likewise.
3188         (verify_constructor_circularity): Register GC roots.
3189         (lookup_cl): Likewise.
3190         (java_reorder_fields): Likewise.
3191         (build_current_this): Likewise.
3192         (class_in_current_package): Likewise.
3193         (argument_types_convertible): Likewise.
3194         (patch_cast): Rename wfl_op parameter to avoid macro conflicts.
3195
3196 2000-09-14  Tom Tromey  <tromey@cygnus.com>
3197
3198         * lex.h: Use HAVE_ICONV_H, not HAVE_ICONV.
3199
3200 2000-09-13  Tom Tromey  <tromey@cygnus.com>
3201
3202         * jcf-parse.c: Include <locale.h>.
3203         * jv-scan.c: Include <locale.h>.
3204
3205 2000-09-12  Tom Tromey  <tromey@cygnus.com>
3206
3207         * expr.c (pop_type_0): Return `Object' if trying to merge two
3208         interface types.
3209         * verify.c (merge_types): Don't return `TYPE_UNKNOWN' for
3210         interface types; `Object' is always a valid supertype.
3211
3212 2000-09-12  Tom Tromey  <tromey@cygnus.com>
3213
3214         Fix for PR gcj/33:
3215         * jv-scan.c (help): Document --encoding.
3216         (options): Added `encoding' entry.
3217         (OPT_ENCODING): New define.
3218         (main): Handle --encoding.
3219         Include <langinfo.h> if nl_langinfo exists.
3220         * lang-options.h: Document --classpath, --CLASSPATH, --main, and
3221         --encoding.
3222         * jcf-parse.c Include <langinfo.h> if we have nl_langinfo.
3223         (parse_source_file): Correctly call java_init_lex.  Added `finput'
3224         argument.  Use nl_langinfo to determine default encoding.
3225         * java-tree.h (current_encoding): Declare.
3226         * parse.y (java_parser_context_restore_global): Don't restore
3227         `finput'.
3228         (java_parser_context_save_global): Don't set `finput' field.
3229         (java_pop_parser_context): Don't restore `finput'.  Free old lexer
3230         if required.
3231         * lang.c (current_encoding): New global.
3232         (lang_decode_option): Recognize `-fencoding='.
3233         (finish_parse): Don't close finput.
3234         * parse.h (struct parser_ctxt): Removed `finput' and
3235         `unget_utf8_value' fields.  Added `lexer' field.
3236         (java_init_lex): Fixed declaration.
3237         * lex.c (java_new_lexer): New function.
3238         (java_destroy_lexer): Likewise.
3239         (java_read_char): Added `lex' argument.  Handle iconv case.
3240         (java_read_unicode): Added `lex' argument.  Count backslashes in
3241         lexer structure.
3242         (java_init_lex): Added `finput' and `encoding' arguments.  Set
3243         `lexer' field in ctxp.
3244         (BAD_UTF8_VALUE): Removed.
3245         (java_lex): Handle seeing UEOF in the middle of a string literal.
3246         * lex.h: Include <iconv.h> if HAVE_ICONV defined.
3247         (java_lexer): New structure.
3248         (UNGETC): Removed.
3249         (GETC): Removed.
3250         (DEFAULT_ENCODING): New define.
3251         (java_destroy_lexer): Declare.
3252
3253 2000-09-12  Tom Tromey  <tromey@cygnus.com>
3254
3255         Fix for PR gcj/343:
3256         * lex.c (java_init_lex): Initialize java_io_serializable.
3257         * parse.y (java_io_serializable): New global.
3258         (valid_ref_assignconv_cast_p): An array can be cast to
3259         serializable.
3260
3261 2000-09-10  Zack Weinberg  <zack@wolery.cumb.org>
3262
3263         * decl.c, expr.c: Include defaults.h if not already included.
3264         Don't define the *_TYPE_SIZE macros.
3265
3266 2000-09-09  Geoffrey Keating  <geoffk@cygnus.com>
3267
3268         * typeck.c (build_java_array_type): Correct first parameter
3269         in ADJUST_FIELD_ALIGN invocation.
3270
3271 2000-09-06  Tom Tromey  <tromey@cygnus.com>
3272
3273         * lang-specs.h: Also recognize `-femit-class-files'.
3274
3275 2000-09-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3276
3277         * verify.c (merge_types): Load the types to merge if necessary.
3278
3279 2000-09-02  Anthony Green  <green@redhat.com>
3280
3281         * jcf-io.c: Include zlib.h.
3282         (open_in_zip): Read compressed class file archives.
3283         * zipfile.h (ZipDirectory): Add uncompressed_size and
3284         compression_method fields.
3285         * zextract.c (read_zip_archive): Collect file compression info.
3286
3287 2000-08-15  Bryce McKinlay  <bryce@albatross.co.nz>
3288
3289         * parse.y (do_resolve_class): Also explore superclasses of
3290         intermediate enclosing contexts when searching for inner classes.
3291
3292 2000-08-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3293
3294         * parse.y (variable_declarator_id:): Better error message.
3295         (expression_statement:): Use YYNOT_TWICE.
3296         (cast_expression:): Likewise.
3297         (assignment:): Likewise.
3298
3299 2000-08-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3300
3301         * parse.y (do_merge_string_cste): New locals. Create new
3302         STRING_CSTs each time, use memcpy. Fixes gcj/311.
3303
3304 2000-08-07  Hans Boehm  <boehm@acm.org>
3305
3306         * boehm.c (mark_reference_fields): Set marking bits for all words in
3307         a multiple-word record.
3308         (get_boehm_type_descriptor): Use the procedure marking descriptor for
3309         java.lang.Class.
3310
3311 2000-08-31  Mike Stump  <mrs@wrs.com>
3312
3313         * Make-lang.in (jc1$(exeext), gcjh$(exeext), jv-scan$(exeext),
3314         jcf-dump$(exeext)): Make parallel safe.
3315
3316 2000-08-29  Zack Weinberg  <zack@wolery.cumb.org>
3317
3318         * jcf-parse.c (set_source_filename): Constify a char *.
3319         * jcf-write.c (append_innerclasses_attribute,
3320         make_class_file_name): Constify a char *.  Don't recycle a
3321         variable for an unrelated purpose.
3322         * parse.y: (build_alias_initializer_parameter_list): Constify a char *.
3323         (breakdown_qualified): Do not modify IDENTIFIER_POINTER strings.
3324
3325 2000-08-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3326
3327         * expr.c (can_widen_reference_to): Fixed indentation.
3328         * java-tree.h (CLASS_METHOD_CHECKED_P): Added leading comment.
3329         * parse.y: `finit$' replaces `$finit$' in comments.
3330         (try_builtin_assignconv): Fixed leading comment.
3331
3332 2000-08-25  Greg McGary  <greg@mcgary.org>
3333
3334         * gjavah.c (cxx_keyword_subst): Use ARRAY_SIZE.
3335
3336 2000-08-24  Greg McGary  <greg@mcgary.org>
3337
3338         * lang.c (lang_decode_option): Use ARRAY_SIZE.
3339         * parse.y (BINOP_LOOKUP): Likewise.
3340
3341 2000-08-22  Andrew Haley  <aph@cygnus.com>
3342
3343         * javaop.h (WORD_TO_INT): Mask lower 32 bits of a jword before
3344         sign extending. Fixes gcj/321.
3345         * jcf-parse.c (get_constant): Mask lower 32 bits of a jint before
3346         combining to make a jlong. Fixes gcj/321.
3347
3348 2000-08-21  Nix  <nix@esperi.demon.co.uk>
3349
3350         * lang-specs.h: Do not process -o or run the assembler if
3351         -fsyntax-only.
3352
3353 2000-08-16  Andrew Haley  <aph@cygnus.com>
3354
3355         * typeck.c (build_java_array_type): Rewrite code to do array
3356         alignment.  Take into account back-end macros when aligning array
3357         data.  Remove setting of TYPE_USER_ALIGN; Java doesn't allow the
3358         user to set alignment. Fixes gcj/252 and 160.
3359
3360 2000-08-09  Tom Tromey  <tromey@cygnus.com>
3361
3362         * parse.y (check_abstract_method_definitions): Now return `int'.
3363         Check implemented interfaces.  Fixes PR gcj/305.
3364
3365         * parse.y (patch_switch_statement): Disallow `long' in switch
3366         expressions.  Fixes PR gcj/310.
3367
3368 2000-08-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3369
3370         * decl.c (finit_leg_identifier_node): New global.
3371         (init_decl_processing): Use `finit$' to initialize
3372         finit_identifier_node. Use `$finit$' to initialize
3373         finit_leg_identifier_node.
3374         * expr.c (expand_java_field_op): Use ID_FINIT_P.
3375         * java-tree.h (finit_identifier_node): Changed attached comment.
3376         (finit_leg_identifier_node): New declaration.
3377         (ID_FINIT_P): Take finit_identifier_node and
3378         finit_leg_identifier_node into account. This is a backward
3379         compatibility hack.
3380
3381 2000-08-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3382
3383         * jcf-write.c (generate_bytecode_conditional): Re-installed lost
3384         Jan 6 2000 patch.
3385         (generate_bytecode_insns): Check `nargs' before emitting it.
3386         * verify.c (merge_type_state): Fixed typo.
3387         * ChangeLog: Fixed typo in some jcf-write.c entries mentioning
3388         generate_bytecode_{conditional,insns}.
3389
3390 Sun Aug 13 09:41:49 2000  Anthony Green  <green@redhat.com>
3391
3392         * check-init.c (check_init): Add case for BIT_FIELD_REF (required
3393         for -pg builds).
3394
3395 2000-08-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3396
3397         * class.c (maybe_layout_super_class): Fixed indentation.
3398         * java-tree.h (CLASS_METHOD_CHECKED_P): New macro.
3399         (java_check_methods): New function declaration.
3400         * jcf-parse.c (get_constant): Let `char_len' go up to 3. Use `str'
3401         instead of `str_ptr'.
3402         * jcf-write.c (generate_bytecode_insns): Emit number the of args
3403         of a `invokeinterface' at the right time.
3404         * parse.h (WFL_STRIP_BRACKET): New macro.
3405         (SET_TYPE_FOR_RESOLUTION): Use it.
3406         * parse.y (build_unresolved_array_type): Reuse `type_or_wfl'.
3407         (check_class_interface_creation): Don't check for cross package
3408         innerclass name clashes.
3409         (method_header): Behave properly if MDECL is `error_mark_node'.
3410         (method_declarator): Return `error_mark_node' if bogus current
3411         class.
3412         (resolve_class): Apply WFL_STRIP_BRACKET on `cl' if necessary.
3413         (resolve_and_layout): New local `decl_type', set and used. Call
3414         java_check_methods.
3415         (java_check_methods): New method.
3416         (java_layout_classes): Use it.
3417         (resolve_qualified_expression_name): No EH check necessary in
3418         access$<n>.
3419         (java_complete_lhs): Use VAR_DECL's DECL_INITIAL when evaluating
3420         `case' statement.
3421         (patch_assignment): Set DECL_INITIAL on integral final local.
3422
3423 2000-08-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3424
3425         * java-tree.h (flag_extraneous_semicolon): New extern.
3426         * lang-options.h: (-Wextraneous-semicolon): New option.
3427         * lang.c (flag_redundant): Fixed typo in leading comment.
3428         (flag_extraneous_semicolon): New global.
3429         (lang_decode_option): Set `flag_extraneous_semicolon' when
3430         -Wall. Decode `-Wextraneous-semicolon'.
3431         * parse.y (type_declaration:): Removed `SC_TK' hack, added
3432         `empty_statement' rule.
3433         (class_body_declaration): Likewise.
3434         (method_body:): Accept `;' as a method body.
3435         (static_initializer:): Removed `SC_TK' hack.
3436         (constructor_block_end:): Likewise.
3437         (empty_statement:): Report deprecated empty declaration. Fixes
3438         gcj/295
3439
3440 2000-08-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3441
3442         * parse.y (build_dot_class_method_invocation): Changed parameter
3443         name to `type'. Build signature from `type' and convert it to a
3444         STRING_CST if it's an array.
3445         (patch_incomplete_class_ref): `build_dot_class_method_invocation'
3446         to use `ref_type' directly.
3447
3448 Sun Aug  6 00:47:24 2000  Ovidiu Predescu  <ovidiu@cup.hp.com>
3449
3450         * lang-options.h: Added a comma after the last element to avoid
3451         syntax errors when other languages define additional options.
3452
3453 2000-08-04  Zack Weinberg  <zack@wolery.cumb.org>
3454
3455         * Make-lang.in (jc1, jv-scan): Depend on $(BACKEND), not stamp-objlist.
3456         * Makefile.in: Add BACKEND; delete OBJS, OBJDEPS.
3457         (jc1): Link with $(BACKEND).
3458         (jv-scan): Depend on version.o, not all of $(OBJS) or $(BACKEND).
3459
3460 2000-08-02  Zack Weinberg  <zack@wolery.cumb.org>
3461
3462         * jvspec.c: Adjust type of second argument to
3463         lang_specific_driver, and update code as necessary.
3464
3465         * class.c (build_dtable_decl): Initialize dummy.
3466
3467 2000-08-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3468
3469         * parse.y (maybe_yank_clinit): When generating bytecode: non empty
3470         method bodies not to rule out discarding `<clinit>'; don't use
3471         <clinit> to initialize static fields with constant initializers.
3472
3473 2000-08-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3474
3475         * gjavah.c (print_method_info): Added `synth' parameter. Skip
3476         synthetic methods.
3477         (method_synthetic): New global.
3478         (HANDLE_METHOD): Recognize synthetic method and tell
3479         `print_method_info' about it.
3480         (HANDLE_END_METHOD): Do not issue an additional `;\n' if we're
3481         processing a synthetic method.
3482         * jcf-reader.c (skip_attribute): New function.
3483         ( skip_attribute): Likewise.
3484
3485 2000-08-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3486
3487         * parse.y (build_outer_field_access): Fixed comments.
3488         (fix_constructors): Emit the initialization of this$<n> before
3489         calling $finit$.
3490         (resolve_qualified_expression_name): Build an access to `decl' if
3491         necessary.
3492
3493 2000-07-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3494
3495         * parse-scan.y (curent_class): Non longer const.
3496         (inner_qualifier, inner_qualifier_length): Deleted.
3497         (current_class_length): New global.
3498         (bracket_count): Fixed typo in leading comment.
3499         (anonymous_count): New global.
3500         (class_instance_creation_expression:): Handle anonymous classes.
3501         (anonymous_class_creation:): New rule.
3502         (push_class_context): Rewritten.
3503         (pop_class_context): Likewise.
3504         (INNER_QUALIFIER): Macro deleted.
3505         (report_class_declaration): call `push_class_context' when
3506         entering the function. `fprintf' format modified not to use
3507         INNER_QUALIFIER.
3508         (report_class_declaration): Assign `package_name' and
3509         `current_class' to NULL separately.
3510
3511 2000-07-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3512
3513         * expr.c (build_invokeinterface): Call layout_class_methods on
3514         target interface.
3515
3516 2000-07-27  Tom Tromey  <tromey@cygnus.com>
3517             Anthony Green  <green@cygnus.com>
3518             Alexandre Petit-Bianco  <apbianco@cygnus.com>
3519
3520         * class.c (make_class_data): Create vtable for abstract classes.
3521         (get_dispatch_table): Changed to cope with abstract classes.
3522
3523 2000-07-27  Tom Tromey  <tromey@cygnus.com>
3524
3525         * parse.y (patch_method_invocation): Don't reverse the argument
3526         list when dealing with anonymous class constructors. Fixed typo in
3527         comment.
3528
3529 2000-07-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3530
3531         * parse.y (build_alias_initializer_parameter_list): Reverse
3532         crafted list when building aliases for anonymous class
3533         constructors.
3534
3535 2000-07-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3536
3537         * parse.y (jdep_resolve_class): Don't bother checking potential
3538         innerclass access if `decl' is NULL.
3539         (find_in_imports_on_demand): TREE_PURPOSE of `import' contains the
3540         WFL.
3541
3542 2000-07-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3543
3544         * parse.c: Remove (again.)
3545
3546 2000-07-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3547
3548         * parse.y (find_as_inner_class): Removed 2000-07-19 patches.
3549         * jcf-parse.c (HANDLE_INNERCLASSES_ATTRIBUTE): Local `decl' moved
3550         outside the `if' statement, alias to innerclass removed, `decl'
3551         used to mark the class complete.
3552
3553 2000-07-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3554
3555         * parse.y (simple_name:): Fixed typo in error message.
3556
3557 2000-07-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3558
3559         * parse.y (java_complete_lhs): LOOP_EXPR:, SWITCH_EXPR: the node
3560         or its first operand can be error marks.
3561
3562 2000-07-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3563
3564         * parse.h (SET_TYPE_FOR_RESOLUTION): Use GET_CPC.
3565         * parse.y (method_header): Likewise.
3566
3567 2000-07-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3568
3569         * parse.y (process_imports): Consider that one might be trying to
3570         import an innerclass. Fixes gcj/254
3571
3572 2000-07-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3573
3574         * parse.y (find_as_inner_class): Handle the case where the
3575         enclosing context of an innerclass has been loaded as bytecode.
3576
3577 2000-07-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3578
3579         * parse.y (simple_name:): Reject `$' in type names.
3580         (resolve_type_during_patch): Use `type' as a second
3581         argument to resolve_no_layout. Fixes gcj/257.
3582
3583 2000-07-18  Bryce McKinlay  <bryce@albatross.co.nz>
3584
3585         * parse.y (find_most_specific_methods_list): Select the only
3586         non-abstract method even if max has been set.
3587         Fixes gcj/285, gcj/298.
3588
3589 2000-07-18  Jeff Sturm  <jeff.sturm@appnet.com>
3590
3591         * lang-specs.h: Added %(jc1) to java compiler options.
3592
3593 2000-07-14  Zack Weinberg  <zack@wolery.cumb.org>
3594
3595         * .cvsignore: New file.
3596
3597 2000-07-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3598
3599         * parse.y (not_accessible_p): Access granted to innerclasses
3600         (indirectly) extending the reference type. Fixes gcj/249.
3601
3602 2000-07-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3603
3604         * parse.y (patch_method_invocation): Fixed comment.
3605         (maybe_use_access_method): Build this$<n>s to the context of the
3606         target method, or a type that extends it. Fixes gcj/242.
3607
3608 2000-07-13  Mark Mitchell  <mark@codesourcery.com>
3609
3610         * parse.c: Remove.
3611
3612 2000-07-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3613
3614         * parse.y (fold_constant_for_init): Avoid bullish conversion.
3615
3616 2000-07-13  Tom Tromey  <tromey@cygnus.com>
3617
3618         * lang-specs.h: Added %{I*}.
3619
3620 2000-07-13  Zack Weinberg  <zack@wolery.cumb.org>
3621
3622         * lang-specs.h: Use the new named specs.  Remove unnecessary braces.
3623
3624 2000-07-12  Mark Mitchell  <mark@codesourcery.com>
3625
3626         * parse-scan.c: Remove.
3627
3628 2000-07-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3629
3630         * class.c (set_super_info): Handled protected inner classes.
3631         (common_enclosing_context_p): Bail early if arguments aren't both
3632         inner classes.
3633         (get_access_flags_from_decl): Handle private and protected inner
3634         classes.
3635         * java-tree.h (TYPE_PROTECTED_INNER_CLASS): New macro.
3636         (CLASS_PROTECTED): Likewise.
3637         (struct lang_type): New bitfield `poic'.
3638         * parse.y (jdep_resolve_class): Call check_inner_class_access on
3639         inner classes only.
3640         (check_inner_class_access): Renamed arguments, added
3641         comments. Handles protected inner classes (fixes gcj/225)
3642         (not_accessible_p): Fixed comments. Avoid handling inner classes.
3643
3644 2000-07-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3645
3646         * parse.y (resolve_qualified_expression_name): Verify qualified
3647         access to `this'. Fixes gcj/239.
3648
3649 2000-07-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3650
3651         * jcf-write.c (generate_classfile): Don't install ConstantValue
3652         for null pointers.
3653
3654 2000-07-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3655
3656         * parse.y (resolve_qualified_expression_name): Handle inner class
3657         access. Fixes gcj/256.
3658
3659 2000-07-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3660
3661         * jcf-write.c (generate_classfile): Properly install the
3662         ConstantValue attribute and the initial value constant pool index
3663         on string constants.
3664         * parse.y (java_complete_lhs): Keep DECL_INITIAL when emitting
3665         class files.
3666
3667 2000-07-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3668
3669         * parse.h (BUILD_PTR_FROM_NAME): Surround with a do/while
3670         construct.
3671         * parse.y (find_as_inner_class): Fixed typo.
3672         (do_resolve_class): Explore enclosing contexts when searching for
3673         innerclasses. Removed curly brackets around BUILD_PTR_FROM_NAME.
3674         (check_inner_class_access): Check `decl' which can be null in case
3675         of previous errors.
3676
3677 2000-07-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3678
3679         * java-tree.h (java_debug_context): Declared `extern'.
3680         (safe_layout_class): Likewise.
3681         * parse.y (resolve_field_access): Field must be `static' in order
3682         to be replaced by its initial value. Added comments.
3683         (find_applicable_accessible_methods_list): Fixed typo.
3684         (find_most_specific_methods_list): Methods found in innerclasses
3685         take over methods founds in the enclosing contexts.
3686         (java_complete_tree): Loosen restrictions on the type of DECLs
3687         that can be replaced by their initialization values.
3688         (valid_ref_assignconv_cast_p): Removed call to `enclosing_context_p'.
3689
3690 2000-07-05  Tom Tromey  <tromey@cygnus.com>
3691
3692         * Make-lang.in (PARSE_DIR): New macro.
3693         (PARSE_RELDIR): Likewise.
3694         (PARSE_C): Likewise.
3695         (PARSE_SCAN_C): Likewise.
3696         ($(PARSE_C)): New target.
3697         ($(PARSE_SCAN_C)): Likewise.
3698         (SET_BISON): New macro.
3699         (BISONFLAGS): Likewise.
3700         (JAVABISONFLAGS): Likewise.
3701
3702 2000-07-02  Bryce McKinlay  <bryce@albatross.co.nz>
3703
3704         * gjavah.c (HANDLE_METHOD): Call print_method_info with a NULL stream
3705         argument on the first pass for CNI as well as JNI.
3706         (print_method_info): Set up method name on the first pass only.
3707
3708 2000-07-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3709
3710         * parse.y (parser_qualified_classname): Removed parameter
3711         `is_static'.
3712         (create_interface): Removed first passed parameter to
3713         parser_qualified_classname.
3714         (create_class): Likewise. Don't install alias on static
3715         innerclasses. Fixes gcj/275.
3716
3717 2000-07-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3718
3719         * parse.y (maybe_generate_pre_expand_clinit): Don't build a
3720         debugable statement with empty_stmt_node. Fixes gcj/272
3721
3722 2000-07-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3723
3724         * expr.c (build_instanceof): Layout type after it's loaded. Fixes
3725         gcj/271.
3726
3727 2000-06-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3728
3729         * jcf-write.c (push_long_const): Appropriately cast short negative
3730         constant to jword.
3731
3732 2000-06-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3733
3734         * parse.y (verify_constructor_super): Use loop variable
3735         `m_arg_type' initialized with `mdecl_arg_type'.
3736
3737 2000-06-29  Tom Tromey  <tromey@cygnus.com>
3738
3739         * parse.y (resolve_field_access): Handle case where `type_found'
3740         is NULL.
3741
3742 2000-06-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3743
3744         * expr.c (lookup_field): The same field can be found through two
3745         different interface. Don't declare it ambiguous in that case.
3746
3747 2000-06-27  Tom Tromey  <tromey@cygnus.com>
3748
3749         * lex.c (java_lineterminator): Don't recognize \r after \n.  If \r
3750         follows \r, then unget it at a lower level.
3751
3752 2000-06-26  Tom Tromey  <tromey@cygnus.com>
3753
3754         * parse.y (resolve_field_access): Pass decl, not DECL_INITIAL, to
3755         java_complete_tree.
3756
3757 2000-06-25  Tom Tromey  <tromey@cygnus.com>
3758
3759         * parse.y (for_statement): Wrap expression in a WFL if it is a
3760         constant.  For PR gcj/268.
3761
3762 2000-06-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3763
3764         * parse.y (do_resolve_class): Minor optimiztion in the package
3765         list search. Removed unnecessary test and return statement.
3766         (valid_ref_assignconv_cast_p): Order of arguments to
3767         enclosing_context_p fixed.
3768
3769 2000-06-24  Tom Tromey  <tromey@cygnus.com>
3770
3771         * expr.c (lookup_field): Print error and return error_mark_node if
3772         field reference is ambiguous.
3773
3774         * parse.y (check_abstract_method_definitions): Also check if
3775         `other_method' is abstract.
3776
3777 2000-06-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3778
3779         * class.c (set_super_info): Handle ACC_PRIVATE for (inner)
3780         classes.
3781         * java-tree.h (TYPE_PRIVATE_INNER_CLASS): New macro.
3782         (struct lang_type): New field `pic'.
3783         (CLASS_PRIVATE): New macro.
3784         * parse.y (check_inner_class_access): New function.
3785         (jdep_resolve_class): Call it.
3786
3787 2000-06-23  Tom Tromey  <tromey@cygnus.com>
3788
3789         * parse.y (patch_incomplete_class_ref): Initialize the returned
3790         class.  For PR gcj/260.
3791
3792 2000-06-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3793
3794         * except.c (prepare_eh_table_type): Use `CATCH_ALL_TYPE'.
3795
3796 2000-06-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3797
3798         * check-init.c (ENABLE_JC1_CHECKING): Replaces ENABLE_CHECKING for
3799         Java specific checks.
3800         * expr.c (build_instanceof): CLASS_INTERFACE and CLASS_FINAL usage
3801         screened by DECL_P.
3802         * java-tree.def (CASE_EXPR): Marked 'e'.
3803         (DEFAULT_EXPR): Likewise.
3804         * jcf-parse.c (set_source_filename): CLASS_COMPLETE_P usage
3805         screened by DECL_P.
3806         * jcf-write.c (ENABLE_JC1_CHECKING): Replaces ENABLE_CHECKING for
3807         Java specific checks.
3808         (generate_bytecode_insns): Test try_block for BLOCK before using
3809         BLOCK_EXPR_BODY.
3810         * parse.y (build_wfl_wrap): Added `location' argument. Set
3811         EXPR_WFL_LINECOL accordingly.
3812         (dim_expr:): Wrap constants with WFLs.
3813         (method_declarator): Use TREE_TYPE not TYPE_NAME on GET_CPC.
3814         (resolve_package): Check for `stmt' not being a BLOCK before
3815         building a debuggable statement with it.
3816         (make_qualified_primary): Added extra parameter to build_wfl_wrap
3817         invocation.
3818         (resolve_field_access): Make sure `decl' is a DECL before treating
3819         it as such.
3820         (maybe_build_primttype_type_ref): Make sure `wfl''s node is an
3821         IDENTIFIER_NODE before treating it as such.
3822         (patch_new_array_init): Make sure `elt' is a TREE_LIST before
3823         treating it as such.
3824         (find_applicable_accessible_methods_list): CLASS_INTERFACE macro
3825         to be applied only on non array types.
3826
3827 2000-06-16  Per Bothner  <per@bothner.com>
3828
3829         * java-tree.h (LABEL_RETURN_LABELS, LABEL_PENDING_CHAIN):  Don't
3830         define in terms of DECL_RESULT, as that fails when --enable-checking.
3831
3832 2000-06-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3833
3834         * jcf-write.c (CHECK_PUT): Add static prototype.  Make pointer
3835         types the same in comparison.
3836         (CHECK_OP): Add static prototype.
3837
3838 2000-06-13  Jakub Jelinek  <jakub@redhat.com>
3839
3840         * typeck.c (build_java_array_type): Set TYPE_USER_ALIGN.
3841         * parse.y (java_complete_class): Set DECL_USER_ALIGN.
3842         * parse.c: Rebuilt.
3843
3844 2000-06-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3845
3846         * decl.c (create_primitive_vtable): Prototype.
3847
3848         * jcf-write.c (generate_bytecode_insns): Initialize variable
3849         `saved_context'.
3850
3851         * lang.c (lang_get_alias_set): Mark parameter with ATTRIBUTE_UNUSED.
3852
3853 2000-06-09  Bryce McKinlay  <bryce@albatross.co.nz>
3854
3855         * parse.y (find_applicable_accessible_methods_list): Use a hashtable
3856         to track searched classes, and do not search the same class more than
3857         once. Call find_applicable_accessible_methods_list on immediate
3858         superclass, instead of search_applicable_method_list on all ancestors.
3859         Fix for PR gcj/238.
3860
3861 2000-06-09  Bryce McKinlay  <bryce@albatross.co.nz>
3862
3863         * parse.y (register_fields): Permit static fields in inner classes
3864         if they are final. Fix for PR gcj/255.
3865
3866 2000-06-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3867
3868         * parse.h (REGISTER_IMPORT): Use `chainon' to link new entries.
3869         * parse.y (find_in_imports): Returned type changed to void,
3870         leading comment fixed.
3871         (register_package): New function.
3872         (qualify_and_find): Likewise.
3873         (package_declaration:): Use `register_package'.
3874         (single_type_import_declaration:): Removed local variable
3875         `node'. Added missing `;' for consistency.
3876         (type_import_on_demand_declaration:): Use `chainon' to link new
3877         entries.
3878         (lookup_field_wrapper): Lookup local variables defined in outer
3879         contexts first.
3880         (java_complete_class): Don't reverse the list of imported on demand.
3881         (do_resolve_class): Reorganized. Removed local variable
3882         `original_name'. Call `qualify_and_find' with the current package
3883         name, invoke `find_in_imports_on_demand' right after. Call
3884         `qualify_and_find' with the packages we've seen so far. Fixed
3885         operations numbering in comments.
3886         (java_expand_class): Don't reverse `package_list'.
3887         (find_most_specific_methods_list): New local variables `abstract'
3888         and `candidates'. Use them to pick the right method.
3889
3890 Tue Jun  6 11:39:05 2000  Tom Tromey  <tromey@ferrule.cygnus.com>
3891
3892         * parse.y (check_modifiers_consistency): Don't subtract out
3893         `PUBLIC_TK' from argument to THIS_MODIFIER_ONLY.
3894
3895 2000-06-04  Philipp Thomas  <pthomas@suse.de>
3896
3897         * Makefile.in (INTLLIBS): New.
3898         (LIBS): Add above.
3899         (DEPLIBS): Ditto.
3900
3901 Fri Jun  2 16:48:55 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3902
3903         * class.c (get_dispatch_table): Build the vtable dummy entry list
3904         element with a null purpose. Fixed leading comment.
3905         (build_dtable_decl): Build an accurate dtable type when appropriate
3906         and use it.
3907
3908 2000-06-02  Richard Henderson  <rth@cygnus.com>
3909
3910         * lang.c (lang_get_alias_set): New.
3911
3912 2000-05-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3913
3914         * parse.y (resolve_field_access): Complete the DECL_INITIAL tree
3915         before using it as the accessed field.
3916
3917 2000-05-31  Tom Tromey  <tromey@cygnus.com>
3918
3919         * java-tree.h (boolean_array_vtable, byte_array_vtable,
3920         char_array_vtable, short_array_vtable, int_array_vtable,
3921         long_array_vtable, float_array_vtable, double_array_vtable):
3922         Declare.
3923         * expr.c (get_primitive_array_vtable): New function.
3924         (create_primitive_vtable): New function.
3925         (java_lang_expand_expr): Enable code to statically generate
3926         arrays.
3927         * decl.c (init_decl_processing): Create primitive vtables.
3928         (boolean_array_vtable, byte_array_vtable, char_array_vtable,
3929         short_array_vtable, int_array_vtable, long_array_vtable,
3930         float_array_vtable, double_array_vtable): Define.
3931
3932 2000-05-26  Zack Weinberg  <zack@wolery.cumb.org>
3933
3934         * java/parse.y (find_applicable_accessible_methods_list):
3935         Don't add an uninitialized value to the list.
3936
3937 2000-05-25  Tom Tromey  <tromey@cygnus.com>
3938
3939         * parse.y (resolve_field_access): Don't check DECL_LANG_SPECIFIC
3940         when trying to see if field's class should be initialized.  Always
3941         initialize field's declaring class, not qualified class.
3942         For PR gcj/162.
3943
3944         * parse.y (array_constructor_check_entry): Pass `wfl_value', not
3945         `wfl_operator', to maybe_build_primttype_type_ref.
3946         Fixes PR gcj/235.
3947
3948 2000-05-23  Bryce McKinlay  <bryce@albatross.co.nz>
3949
3950        * parse.y (patch_method_invocation): Don't try to lookup methods
3951        in primitive types.
3952
3953 2000-05-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3954
3955         * parse.y (resolve_field_access): Call the appropriate <clinit>
3956         before accessing the length of a static array. Craft a decl for
3957         the field while its time. Fixes PR gcj/129.
3958
3959 2000-05-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3960
3961         * parse.y (resolve_package): Correctly set `*next' (was off by
3962         one.)
3963         (resolve_qualified_expression_name): Fixed comment.
3964
3965 Thu Apr 27 17:47:34 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3966
3967         * jcf-parse.c (jcf_parse_source): Reset current_class and
3968         current_function_decl to NULL before parsing a new file.
3969
3970 Thu Apr 27 17:25:33 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3971
3972         * parse.y (block_end:): If the collected block doesn't feature a
3973         statement, insert an empty statement.
3974
3975 2000-04-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3976
3977         * parse.y (maybe_yank_clinit): New function.
3978         (maybe_generate_pre_expand_clinit): Always link <clinit> at the
3979         end of the list of methods belonging to a class.
3980         (java_complete_expand_method): Check whether <clinit> is really
3981         necessary and expand it accordingly.
3982
3983 2000-04-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3984
3985         * parse.y (fold_constant_for_init): Let VAR_DECL and FIELD_DECL be
3986         processed by the method's switch statement.
3987
3988 2000-05-19  Tom Tromey  <tromey@cygnus.com>
3989
3990         * java-tree.h: Added init state enum.
3991         * decl.c (emit_init_test_initialization): Initialize class
3992         initialization check variable by looking at class' state.
3993
3994 2000-05-19  Tom Tromey  <tromey@cygnus.com>
3995
3996         * java-tree.h (build_instanceof): Declare.
3997         (build_get_class): Declare.
3998         * parse.y (patch_binop): Use build_instanceof.
3999         * expr.c (build_instanceof): New function.  If class is final,
4000         don't make a function call.
4001         (expand_java_INSTANCEOF): Use it.
4002         (build_get_class): New function.
4003
4004 2000-05-18  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>
4005
4006         * jcf-write.c (generate_classfile): Scan the source_file for
4007         slashes with the right pointer variable.
4008
4009 Wed May 17 17:27:44 2000  Andrew Cagney  <cagney@b1.cygnus.com>
4010
4011         * lang.c (lang_decode_option): Update -Wunused flags by calling
4012         set_Wunused.
4013         * decl.c (poplevel): Replace warn_unused with warn_unused_label.
4014
4015 2000-05-09  Zack Weinberg  <zack@wolery.cumb.org>
4016
4017         * check_init.c (check_init): Constify local char *.
4018         * class.c (push_class): Constify local char *.
4019         * java_tree.h: Update prototypes.
4020         * jcf-io.c (open_class): Constify filename parameter and
4021         return value.
4022         (find_class): Remove redundant string copy.  Cast return from
4023         open_class.
4024         * jcf-parse.c (read_class, parse_class_file, yyparse):
4025         Constify local char *.
4026         * jcf-write.c (generate_bytecode_insns, generate_classfile):
4027         Constify local char *.
4028         * jcf.h (JCF): Constify filename and classname.
4029         (JCF_FINISH): Cast args to FREE to char * when appropriate.
4030         * lang.c (init_parse): Constify parameter and return value.
4031         * lex.c (java_get_line_col): Constify filename parameter.
4032         * parse.h: Constify parser_ctxt.filename.  Update prototypes.
4033         * parse.y (java_parser_context_suspend,
4034         issue_warning_error_from_context, safe_layout_class): Constify
4035         local char *.
4036         * parse.c: Regenerate.
4037
4038 2000-05-08  Tom Tromey  <tromey@cygnus.com>
4039
4040         * expr.c (build_jni_stub): Cache the result of
4041         _Jv_LookupJNIMethod.
4042
4043 2000-05-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4044
4045         * decl.c (predef_filenames_size): Now 7.
4046         (predef_filenames): New seventh entry.
4047
4048 2000-05-04  Tom Tromey  <tromey@cygnus.com>
4049
4050         * boehm.c (mark_reference_fields): Don't mark RawData fields.
4051         Keep track of when we've seen a reference field after a
4052         non-reference field.
4053         (get_boehm_type_descriptor): Handle case where we see
4054         non-reference fields but no trailing reference field.
4055         * decl.c (rawdata_ptr_type_node): Define.
4056         (init_decl_processing): Initialize rawdata_ptr_type_node.
4057         * java-tree.h (rawdata_ptr_type_node): Declare.
4058
4059 2000-05-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4060
4061         * jcf-dump.c (SPECIAL_IINC): Ensure arguments match format
4062         specifiers in calls to fprintf.
4063
4064 2000-05-03  Andrew Haley  <aph@cygnus.com>
4065
4066         * expr.c (build_java_jsr): Use emit_jump, not expand_goto.
4067
4068         * javaop.h (WORD_TO_INT): New function.
4069         (IMMEDIATE_s4): Use WORD_TO_INT.
4070         * jcf.h (JPOOL_INT): Ditto.
4071
4072         * gjavah.c (decode_signature_piece): Don't treat `$' as namespace
4073         separator.
4074
4075 2000-04-19  Tom Tromey  <tromey@cygnus.com>
4076
4077         * class.c (add_method_1): Set both DECL_EXTERNAL and METHOD_NATIVE
4078         on native function.
4079         * jcf-parse.c (parse_class_file): Call build_jni_stub for native
4080         JNI methods.
4081         * expr.c (build_jni_stub): New function.
4082         * lang-specs.h: -fjni and -femit-class-file are incompatible.
4083         * parse.c: Rebuilt.
4084         * parse.y (java_complete_expand_methods): Expand a native method
4085         and call build_jni_stub if -fjni given.
4086         * lang-options.h: Document -fjni.
4087         * lang.c (flag_jni): New global.
4088         (lang_f_options): Added `jni' entry.
4089         * java-tree.h (soft_lookupjnimethod_node,
4090         soft_getjnienvnewframe_node, soft_jnipopsystemframe_node):
4091         Declare.
4092         (flag_jni): Declare.
4093         (build_jni_stub): Declare.
4094         (struct lang_decl): Added `native' flag.
4095         (METHOD_NATIVE): Redefined to use `native' field of lang specific
4096         structure.
4097         * decl.c (soft_lookupjnimethod_node, soft_getjnienvnewframe_node,
4098         soft_jnipopsystemframe_node): New globals.
4099         (init_decl_processing): Set them.  _Jv_InitClass only takes one
4100         argument.
4101
4102         * java-tree.def: Put into `C' mode.
4103
4104 2000-04-27  Tom Tromey  <tromey@cygnus.com>
4105
4106         Fix for PR gcj/2:
4107         * expr.c (expand_invoke): Generate check to see if object pointer
4108         is null in nonvirtual invocation case.
4109         * java-tree.h (soft_nullpointer_node): Declare.
4110         * decl.c (soft_nullpointer_node): New global.
4111         (init_decl_processing): Initialize soft_nullpointer_node.
4112         * parse.y (invocation_mode): Return INVOKE_NONVIRTUAL for `final'
4113         or `private' methods.
4114         (patch_invoke): Handle INVOKE_NONVIRTUAL case.
4115
4116 Wed Apr 26 14:29:33 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4117
4118         * decl.c (complete_start_java_method): Don't call _Jv_InitClass
4119         from <clinit>
4120
4121 2000-04-26  Tom Tromey  <tromey@cygnus.com>
4122
4123         * zextract.c (find_zip_file_start): New function.
4124         (read_zip_archive): Use it.
4125
4126 2000-04-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4127
4128         * parse.y (register_incomplete_type): Handle JDEP_ANONYMOUS.
4129
4130 2000-04-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4131
4132         * class.c (common_enclosing_context_p): New function.
4133         * java-tree.h (common_enclosing_context_p): Added prototype.
4134         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Relaxed test to allow
4135         classes sharing an outer context with the current instance.
4136         * parse.y (build_access_to_thisn): Fixed leading comment.
4137         (verify_constructor_super): New local `supper_inner'. Skip
4138         enclosing context argument in the case of inner class constructors.
4139         (patch_method_invocation): Insert proper context as second
4140         parameter to pure inner class constructor super invocations.
4141
4142 Mon Apr 24 14:59:36 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4143
4144         * parse.y (end_class_declaration): Reset the interface number
4145         counter.
4146
4147 2000-04-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4148
4149         * parse.y (source_start_java_method): Deleted unnecessary code.
4150         (patch_method_invocation): Fixed comment.
4151
4152 2000-04-24  Robert Lipe <robertlipe@usa.net>
4153
4154         * parse.h (_jdep): Member `kind' now ENUM_BITFIELD.
4155
4156 2000-04-23  Tom Tromey  <tromey@cygnus.com>
4157
4158         * boehm.c (mark_reference_fields): Use int_byte_position.
4159
4160 2000-04-22  Tom Tromey  <tromey@cygnus.com>
4161
4162         * boehm.c (mark_reference_fields): Only call byte_position on
4163         non-static fields.
4164
4165 2000-04-22  Tom Tromey  <tromey@cygnus.com>
4166
4167         * boehm.c (mark_reference_fields): Added `last_view_index'
4168         argument.  Use DECL_FIELD_OFFSET to determine field's offset.
4169
4170 Thu Apr 20 17:41:28 2000  Mo DeJong  <mdejong@cygnus.com>
4171
4172         * parse.h (INTERFACE_INNER_MODIFIERS): New macro.
4173         * parse.y (check_class_interface_creation): Fixed comments. Select
4174         permitted modifiers for (inner) interfaces. Changed error message
4175         to report rejected modifiers used with local classes.
4176
4177 2000-04-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4178
4179         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Immediate inner classes
4180         of directly inherited type considered in scope.
4181         * parse.y (do_resolve_class): Search inherited classes for inner
4182         classes.
4183
4184 2000-04-20  Tom Tromey  <tromey@cygnus.com>
4185
4186         * parse.y (not_accessible_p): Use member's class, not current
4187         class, when doing inheritance check for protected reference.
4188         Fixes PR gcj/124.
4189
4190 Thu Apr 20 18:20:58 2000  Jason Schroeder  <shrode@subnature.com>
4191
4192         * jcf-dump.c (SPECIAL_IINC): Fixed typo printing iinc instruction.
4193
4194 2000-04-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4195
4196         * parse.y (lookup_field_wrapper): Search for final local aliases.
4197         (resolve_expression_name): Let lookup_field_wrapper search for
4198         final local aliases. Force the value of `name' if one is found.
4199         (qualify_ambiguous_name): CONVERT_EXPR is enough to now we have
4200         an expression name. Fixed comments.
4201
4202 2000-04-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4203
4204         * parse.y (yyerror): `msg' can be null, don't use it in that case.
4205
4206 2000-04-19  Tom Tromey  <tromey@cygnus.com>
4207
4208         * gjavah.c (cxx_keyword_subst): Avoid potential infinite loop.
4209
4210 2000-04-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4211
4212         * parse.y (maybe_make_nested_class_name): Use `obstack_grow0'.
4213
4214 2000-04-18  Tom Tromey  <tromey@cygnus.com>
4215
4216         PR gcj/211:
4217         * gjavah.c (utf8_cmp): Changed return value.
4218         (cxx_keyword_subst): Handle all C++ keywords.  Allocate new return
4219         result.
4220         (cxx_keywords): New global.
4221         (get_field_name): Handle new result of cxx_keyword_subst.
4222         (print_method_info): Likewise.
4223
4224 2000-04-17  Bryce McKinlay  <bryce@albatross.co.nz>
4225
4226         * gjavah.c (print_name_for_stub_or_jni): Don't prefix method names
4227         with a newline, for CNI.
4228         (print_stub_or_jni): Print a space or newline before method name for
4229         CNI as well as JNI.
4230         (print_cxx_classname): Don't write leading "::" in CNI stub method.
4231         (process_file): Include gcj/cni.h if generating CNI stubs.
4232
4233 2000-04-16  Tom Tromey  <tromey@cygnus.com>
4234
4235         * gjavah.c (decompile_method): Use print_field_name.
4236         Fixes PR gcj/205.
4237
4238 2000-04-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4239
4240         * parse.y (java_expand_classes): Reverse the package list once.
4241         (java_complete_lhs): PLUS_EXPR: don't try rhs and lhs at string
4242         reduction.
4243         (patch_binop): New temp `cn'. Call patch_string on LHS/RHS of
4244         the `==' and `!=' operators.
4245
4246 2000-04-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4247
4248         * jcf-write.c (generate_bytecode_insns): At invokation time,
4249         always relate an interface method to the type of its selector.
4250
4251 2000-04-05  Tom Tromey  <tromey@cygnus.com>
4252
4253         Fix for PR gcj/2:
4254         * expr.c (expand_invoke): Generate check to see if object pointer
4255         is null in nonvirtual invocation case.
4256         * java-tree.h (soft_nullpointer_node): Declare.
4257         * decl.c (soft_nullpointer_node): New global.
4258         (init_decl_processing): Initialize soft_nullpointer_node.
4259         * parse.y (invocation_mode): Return INVOKE_NONVIRTUAL for `final'
4260         or `private' methods.
4261         (patch_invoke): Handle INVOKE_NONVIRTUAL case.
4262
4263 2000-04-05  Tom Tromey  <tromey@cygnus.com>
4264
4265         Fix for PR gcj/140:
4266         * parse.y (check_final_assignment): Recognize assignments to the
4267         `length' field of an array when generating class files.
4268
4269 2000-04-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4270
4271         * class.c (decl_hash): Prototype removed.
4272         (decl_compare): Likewise.
4273
4274 2000-04-05  Tom Tromey  <tromey@cygnus.com>
4275
4276         * parse.h (THIS_MODIFIER_ONLY): Changed meaning of `v' parameter.
4277         * parse.y (check_modifiers_consistency): Check for final/volatile
4278         clash.  Fixes PR gcj/164.
4279
4280 2000-04-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4281
4282         * class.c: (java_hash_hash_tree_node): Renamed from `decl_hash',
4283         made global.
4284         (java_hash_compare_tree_node): Renamed from `decl_compare, made
4285         global.
4286         (add_method_1): Use `java_hash_hash_tree_node' and
4287         `java_hash_compare_tree_node'.
4288         * java-tree.h: (java_hash_hash_tree_node): Prototyped.
4289         (java_hash_compare_tree_node): Likewise.
4290         * parse.y (find_applicable_accessible_methods_list): Create,
4291         delete and use a hash table to remember already searched interfaces.
4292
4293 2000-04-03  Matt Welsh  <mdw@cs.berkeley.edu>
4294
4295         * jcf-depend.c (add_entry): Fixed bug where list was always replaced
4296         with latest entry.
4297
4298 2000-04-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4299
4300         * boehm.c (mark_reference_fields, set_bit): Prototype.
4301         (set_bit): Un-ANSI-fy definition.
4302
4303         * class.c (init_test_hash_newfunc, decl_hash, decl_compare):
4304         Prototype.
4305
4306         * decl.c (emit_init_test_initialization): Likewise.
4307
4308         * gjavah.c (jni_print_char): Likewise.
4309
4310         * parse.y (create_new_parser_context): Likewise.
4311
4312 Thu Mar 30 15:26:56 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4313
4314         * expr.c (java_lang_expand_expr): Added Anthony's Thu Jan 6 2000
4315         patch missing hunk. Fixed indentation.
4316
4317 2000-03-30  Tom Tromey  <tromey@cygnus.com>
4318
4319         * gjavah.c (D_NAN_MASK): Only define as word-reversed when
4320         HOST_FLOAT_WORDS_BIG_ENDIAN and HOST_WORDS_BIG_ENDIAN disagree.
4321
4322 2000-03-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4323
4324         * parse-scan.y (pop_class_context): Reset `inner_qualifier_length'
4325         when negative *before* using it as an array index.
4326         * ChangeLog: Fixed typo.
4327
4328 2000-03-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4329
4330         * parse-scan.y (pop_class_context): Reset `inner_qualifier_length'
4331         to 0 when it reaches -1.
4332
4333 2000-03-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4334
4335         * jcf-parse.c (get_constant): Properly cast `num' during the
4336         invocation of `add_double'.
4337         * jcf-write.c (push_long_const): Properly cast `lo' before
4338         comparing it to short bounds.
4339         * parse-scan.y (interface_declaration:): Rule re-arrange so that
4340         `interface_body:' is reduced after the current interface is
4341         pushed.
4342
4343 2000-03-26  Tom Tromey  <tromey@cygnus.com>
4344
4345         * jvspec.c (jvgenmain_spec): Add `%{<...}' construct for each
4346         Java-specific `-f' option.
4347
4348 Sun Mar 26 11:37:55 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
4349
4350         * decl.c (init_decl_processing): Only call initialize_sizetypes once.
4351         Adjust order of making types.
4352         Make bitsize_*_node values.
4353
4354 Sat Mar 25 09:12:10 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
4355
4356         * class.c (make_field_value): Use byte_position.
4357         * expr.c (JAVA_ARRAY_LENGTH_OFFSET): Use byte_position.
4358         (java_array_data_offset): Likewise.
4359         * java-tree.h (MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Add case to
4360         bzero call.
4361
4362 2000-03-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4363
4364         * parse.y (check_abstract_method_definitions): New local
4365         `end_type_reached'. Make sure we also consider `end_type'.
4366         (java_check_abstract_method_definitions): Make sure we eventually
4367         consider `java.lang.Object'.
4368         (maybe_use_access_method): Don't use access method if not in the
4369         context of a pure inner class or if the method's context is right.
4370         (find_applicable_accessible_methods_list): New static flag
4371         `object_done'. Don't search abstract classes as interfaces. Fixed
4372         indentation. Fixed the `java.lang.Object' only search. Search
4373         class interface(s) first, then fully search enclosing contexts.
4374         (find_most_specific_methods_list): Pick the closest candidate when
4375         they're all abstract.
4376
4377 Mon Mar 20 08:58:51 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4378
4379         * jcf-write.c (generate_bytecode_insns): TRY_FINALLY_EXPR:
4380         properly initialize `finished_label'. Don't emit gotos for empty
4381         try statements.
4382
4383 2000-03-19  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
4384
4385         * except.c (emit_handlers): Clear catch_clauses_last.
4386
4387 2000-03-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4388
4389         * parse.y (check_method_types_complete): New function.
4390         (create_class): Reset anonymous class counter only when seeing an
4391         non inner classe.
4392         (java_complete_class): JDEP_METHOD: Don't recompute signature
4393         if incomplete.
4394
4395 2000-03-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4396
4397         * class.c (build_static_ref): Fixed indentation in comment.
4398         * java-tree.def (TRY_EXPR): Fixed typo in name.
4399         (CLASS_LITERAL): Likewise.
4400         * java-tree.h: (TYPE_DOT_CLASS): New macro.
4401         (struct lang_type): New field `dot_class'.
4402         * jcf-write.c (generate_bytecode_insns): Fixed error message.
4403         (generate_classfile): Method `class$' is synthetic.
4404         * parse.y (build_do_class_method): New function.
4405         (build_dot_class_method_invocation): Likewise.
4406         (java_complete_expand_methods): Expand TYPE_DOT_CLASS if necessary.
4407         (resolve_qualified_expression_name): Handle CLASS_LITERAL.
4408         (qualify_ambiguous_name): Likewise.
4409         (patch_incomplete_class_ref): Invoke synthetic method if necessary.
4410         (build_try_statement): Fixed leading comment.
4411
4412 Fri Mar 17 08:09:14 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
4413
4414         * class.c (make_field_value): Properly handle sizes.
4415         (get_dispatch_vector): Use tree_low_cst and host_integerp.
4416         (layout_class_method): Count using trees.
4417         * decl.c (push_promoted_type): Set TYPE_{MIN,MAX}_VALUE with copy_node.
4418         * expr.c (java_array_data_offset): Use int_bit_position.
4419         (build_newarray, build_anewarray): Use host_integerp and tree_low_cst.
4420         (build_invokevirtual): Use tree_low_cst and do computations with trees.
4421
4422 2000-03-16  Tom Tromey  <tromey@cygnus.com>
4423
4424         * lang.c (flag_hash_synchronization): New global.
4425         (lang_f_options): Added `hash-synchronization'.
4426         * lang-options.h: Mention -fhash-synchronization.
4427         * java-tree.h (flag_hash_synchronization): Declare.
4428         * expr.c (java_lang_expand_expr): Only push `sync_info' value when
4429         hash table synchronization is disabled.
4430         * decl.c (init_decl_processing): Only push `sync_info' value when
4431         hash table synchronization is disabled.
4432         * class.c (make_class_data): Only push `sync_info' field when hash
4433         table synchronization is disabled.  Removed dead code.
4434
4435 2000-03-16  Tom Tromey  <tromey@cygnus.com>
4436
4437         * lang.c (lang_decode_option): Enable -Wunused when -Wall given.
4438
4439 2000-03-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4440
4441         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Disregard anonymous
4442         classes.
4443         * parse.y (patch_method_invocation): Handle anonymous classes
4444         creation in static context.
4445
4446 2000-03-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4447
4448         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): New macro.
4449         * parse.y (resolve_qualified_expression_name): Use it.
4450         (patch_method_invocation): Likewise.
4451
4452 2000-03-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4453
4454         * parse.y (register_incomplete_type): JDEP_ENCLOSING set
4455         depending on the type of dependency which dictates what the
4456         current class is.
4457         (unresolved_type_p): Resolved types limited to the current class.
4458
4459 2000-03-15  Tom Tromey  <tromey@cygnus.com>
4460
4461         * decl.c (init_decl_processing): Set type of `sync_info' to be
4462         pointer to Object.
4463
4464         * boehm.c (get_boehm_type_descriptor): Correctly compute `bits'.
4465         Correctly compute bit number for current slot.  Zero `high' and
4466         `low' in DS_LENGTH case.  Don't skip inherited fields.  Use
4467         mark_reference_fields.
4468         (mark_reference_fields): New function.
4469
4470 Tue Mar 14 17:15:41 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4471
4472         * parse.y (register_incomplete_type): Fixed initialization of
4473         JDEP_ENCLOSING.
4474
4475 2000-02-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4476
4477         * parse-scan.y (inner_qualifier, inner_qualifier_length): New
4478         static globals.
4479         (push_class_context, pop_class_context): New function.
4480         (class_body:): Call pop_class_context.
4481         (interface_body:): Likewise.
4482         (INNER_QUALIFIER): New macro.
4483         (report_class_declaration): Changed output format and use
4484         INNER_QUALIFIER. Call push_class_context.
4485
4486 2000-02-14  Andrew Haley  <aph@cygnus.com>
4487
4488         * check-init.c (check_init): Add new cases for unary and binary
4489         tree nodes.
4490
4491 2000-03-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4492
4493         * parse.y (resolve_package): Set `next' once a type name has been
4494         progressively discovered.
4495         (resolve_qualified_expression_name): Propagate resolution only if
4496         there are remaining qualifiers. Take into account `q' might have
4497         been cleared after re-qualification.
4498         * parse.y (patch_method_invocation): New local `resolved'.
4499         Section dealing with qualified expression rewritten to use
4500         resolve_field_access.
4501
4502 Mon Mar 13 12:21:13 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4503
4504         * parse.h (PUSH_CPC): Fixed indentation.
4505         (DEBUG_CPC): New macro.
4506         (SET_CPC_INITIALIZER_STMT, SET_CPC_STATIC_INITIALIZER_STMT,
4507         SET_CPC_INSTANCE_INITIALIZER_STMT): New macros.
4508         * parse.y (class_body_declaration:): Use
4509         SET_CPC_INSTANCE_INITIALIZER_STMT.
4510         (method_declaration:): Check for null current_function_decl.
4511         (static_initializer:): Use SET_CPC_STATIC_INITIALIZER_STMT.
4512         (java_parser_context_pop_initialized_field): Better handling of
4513         empty lists.
4514         (maybe_make_nested_class_name): Mark nested class name as
4515         qualified when necessary.
4516         (end_class_declaration): Don't call java_parse_context_resume when
4517         one or more error occurred.
4518         (add_inner_class_fields): Use SET_CPC_INITIALIZER_STMT.
4519         (register_fields): Use SET_CPC_STATIC_INITIALIZER_STMT and
4520         SET_CPC_INITIALIZER_STMT.
4521         (method_header): Check for inner classes declaring static methods.
4522         (resolve_qualified_expression_name): Handle situation where `this'
4523         is implied.
4524
4525 Mon Mar 13 11:36:51 2000  Hans Boehm <boehm@acm.org>
4526
4527         * typeck.c (build_prim_array_type): Correctly set the high word too.
4528
4529 2000-03-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4530
4531         * parse.y (java_complete_expand_methods): Leave <clinit> out of
4532         ordinary methods.
4533         (maybe_generate_pre_expand_clinit): Put <clinit> at the end of the
4534         list of methods for interfaces.
4535
4536 2000-03-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4537
4538         * parse.y (qualify_ambiguous_name): Properly handle expressions
4539         using `null'.
4540
4541 2000-03-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4542
4543         * parse.y (check_final_assignment): Extended to process
4544         COMPOUND_EXPR.
4545         (patch_assignment): Have check_final_assignment called only once.
4546
4547 2000-03-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4548
4549         * java-tree.h (IS_INIT_CHECKED): New flag.
4550         * check-init.c (check_init): Test and set IS_INIT_CHECKED.
4551         * parse.y (patch_string): Call force_evaluation_order on the
4552         completed string concatenation tree.
4553         * expr.c (force_evaluation_order): Call force_evaluation_order on
4554         function's arguments too.
4555
4556 Mon Mar  6 18:07:07 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
4557
4558         * decl.c (emit_init_test_initialization): Mark KEY as unused.
4559         * expr.c (build_newarray): Cast TREE_INT_CST_LOW to HOST_WIDE_INT.
4560         (build_anewarray): Likewise.
4561         * parse.y (patch_newarray): Likewise.
4562         * parse.c: Regenerated.
4563
4564 2000-03-06  Bryce McKinlay  <bryce@albatross.co.nz>
4565
4566         * decl.c (init_decl_processing): Added new class fields `depth',
4567         `ancestors', and `idt' to class_type_node. Use
4568         _Jv_LookupInterfaceMethodIdx for soft_lookupinterfacemthod_node.
4569         * class.c (make_class_data): Push initial values for new fields.
4570         * java-tree.h: Updated prototype for `build_invokeinterface'.
4571         * expr.c (build_invokeinterface): Changed parameters to accept
4572         `method' tree. Calculate index of `method' in its declaring
4573         interface. Build call to _Jv_LookupInterfaceMethodIdx.
4574         (expand_invoke): Call `build_invokeinterface' with new parameters.
4575         * parse.y (patch_invoke): Call `build_invokeinterface' with new
4576         parameters.
4577
4578 2000-03-06  Bryce McKinlay <bryce@albatross.co.nz>
4579
4580         * typeck.c (lookup_do): Search superinterfaces first
4581         when looking up an interface method. From Godmar Back
4582         <gback@cs.utah.edu>
4583
4584 2000-03-06  Tom Tromey  <tromey@cygnus.com>
4585
4586         * Make-lang.in (JAVA_SRCS): Added boehm.c, lex.c.
4587
4588 2000-03-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4589
4590         * java-tree.h (lookup_argument_method2): Declared.
4591         (safe_layout_class): Prototype moved from parse.h.
4592         * parse.h (safe_layout_class): Prototype moved to java-tree.h.
4593         * parse.y (java_check_regular_methods): Local `super_class' gone.
4594         Call lookup_argument_method2 instead of lookup_argument_method.
4595         Perform modifier match for methods found declared in implemented
4596         interfaces. Fixed indentation problem. Overriding/hiding error
4597         report to take place only for methods found in classes.
4598         * typeck.c (lookup_argument_method): Changed leading
4599         comment. Re-written by calling lookup_do.
4600         (lookup_argument_method2): New function.
4601         (lookup_java_method): Re-written by calling lookup_do.
4602         (lookup_do): New function.
4603
4604 Thu Mar  2 15:18:33 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4605
4606         * check-init.c (check_init): Removed dead code. Handle (blank)
4607         final variables.
4608         * parse.y (declare_local_variables): New local `final_p', set it
4609         and use it to initialize LOCAL_FINAL.
4610         (check_final_assignment): Only check FIELD_DECLs.
4611
4612 2000-02-17  Tom Tromey  <tromey@cygnus.com>
4613
4614         * Makefile.in (JAVA_OBJS): Added boehm.o.
4615         (boehm.o): New target.
4616         * Make-lang.in (JAVA_SRCS): Added boehm.c.
4617         * java-tree.h (flag_use_boehm_gc): Declare.
4618         (get_boehm_type_descriptor): Declare.
4619         * lang.c (lang_f_options): Added `use-boehm-gc'.
4620         (flag_use_boehm_gc): New global.
4621         * lang-options.h: Added -fuse-boehm-gc.
4622         * boehm.c: New file.
4623         * class.c (get_dispatch_table): If class uses a Boehm type
4624         descriptor, put it in the vtable.
4625         (make_class_data): Removed dead code.
4626
4627 2000-03-03  Per Bothner  <per@bothner.com>
4628
4629         * decl.c (init_decl_processing):  Initialize sizetype properly.
4630
4631 2000-03-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4632
4633         * java-tree.h (LOCAL_CLASS_P): New flag usage and macro.
4634         (PURE_INNER_CLASS_DECL_P, PURE_INNER_CLASS_TYPE_P): New macros.
4635         * jcf-dump.c (HANDLE_INNERCLASSES_ATTRIBUTE): New macro.
4636         * jcf-parse.c (HANDLE_INNERCLASSES_ATTRIBUTE): Likewise.
4637         (jcf_parse): New local `current'. Load innerclasses seen in outer
4638         context being processed.
4639         * jcf-reader.c (HANDLE_INNERCLASSES_ATTRIBUTE): New macro.
4640         * jcf-write.c (append_innerclasses_attribute): New function.
4641         (append_innerclasses_attribute_entry): Likewise.
4642         (get_access_flags): Handle static classes. Set anonymous and local
4643         classes to be private.
4644         (generate_classfile): Attribute count adjusted. Call
4645         append_innerclasses_attribute.
4646         * parse.h (SKIP_THIS_AND_ARTIFICIAL_PARMS): Use
4647         PURE_INNER_CLASS_TYPE_P.
4648         * parse.y (parser_qualified_classname): New parameter `is_static',
4649         produce non qualified name accordingly.
4650         (block_statement:): Set LOCAL_CLASS_P when declaring local class.
4651         (create_interface): Added argument to parser_qualified_classname.
4652         (create_class): Added argument to parser_qualified_classname. Setup
4653         alias for top level classes. Use PURE_INNER_CLASS_DECP_P.
4654         (add_inner_class_fields): Fixed indentation.
4655         (method_declarator): Use PURE_INNER_CLASS_DECP_P.
4656         (method_declarator): Fixed typo in comment.
4657         (craft_constructor): Use PURE_INNER_CLASS_DECP_P.
4658         (build_current_thisn): Likewise.
4659         (patch_method_invocation): Likewise.
4660
4661 2000-03-01  Martin von Loewis  <loewis@informatik.hu-berlin.de>
4662
4663         * decl.c (current_function_decl): Move to toplev.c.
4664
4665 Mon Feb 28 08:20:42 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
4666
4667         * java-tree.h (LABEL_PC): Relect name changes in ../tree.h.
4668         (DECL_BIT_INDEX): Use underlying representation.
4669         * parse.h (DECL_INHERITED_SOURCE_LINE): Likewise.
4670
4671 Sun Feb 27 16:40:33 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
4672
4673         * expr.c (build_java_ret): Pass proper type to size_binop.
4674
4675 2000-02-25  Anthony Green  <green@cygnus.com>
4676
4677         * expr.c (build_class_init): Mark the decl to be ignored by
4678         check_init.
4679         * java-tree.h (DECL_BIT_INDEX): Move definition from check-init.c
4680         * check-init.c: Move DECL_BIT_INDEX to java-tree.h
4681         * class.c (init_test_hash_newfunc): New function.
4682         (decl_hash): New function.
4683         (decl_compare): New function.
4684         * decl.c (emit_init_test_initialization): New function.
4685         (complete_start_java_method): Traverse the init test hashtable,
4686         calling emit_init_test_initialization.
4687         (always_initialize_class_p): Define.
4688         * expr.c (build_class_init): Use initialization tests when
4689         emitting class initialization code.
4690         (always_initialize_class_p): Declare.
4691         * jcf-parse.c (parse_class_file): Set always_initialize_class_p to
4692         1.
4693         * java-tree.h: Include hash.h.
4694         (DECL_FUNCTION_INIT_TEST_TABLE): Define.
4695         (struct lang_decl): Add init_test_table field.
4696         (init_test_hash_entry): Define.
4697
4698 Fri Feb 25 18:41:31 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4699
4700         * gjavah.c (main): Avoid using `argi' to report unimplemented
4701         options.
4702
4703 Fri Feb 25 18:47:25 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4704
4705         * jcf-write.c (generate_bytecode_insns): TRY_FINALLY_EXPR:
4706         initialize locals to avoid warnings. Local `exception_type' moved
4707         into if statement.
4708
4709 Fri Feb 25 18:00:37 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4710
4711         * parse.y (resolve_expression_name): Use `orig' as a second
4712         argument to resolve_field_access.
4713         (resolve_field_access): Removed unnecessary code when dealing with
4714         static fields.
4715
4716 Wed Feb 23 17:41:50 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4717
4718         * class.c (push_super_field): Don't push the field twice.
4719         * jcf-parse.c (parse_source_file): Call java_reorder_fields.
4720         * parse.h (java_reorder_fields): Prototyped.
4721         * parse.y (java_reorder_fields): New function.
4722         (java_layout_class): Simplified not to worry about re-ordering.
4723
4724 2000-02-23  Tom Tromey  <tromey@cygnus.com>
4725
4726         * gjavah.c (print_name): In JNI case, correctly quote string.
4727         (print_method_info): Don't handle overrides in JNI mode.
4728
4729 2000-02-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4730
4731         * parse.y (init_decl_processing): `_Jv_IsInstanceOf' returned
4732         value type set to `boolean_type_node'.
4733
4734 Mon Jan 18 14:30:09 2000  Joerg Brunsmann  <joerg.brunsmann@fernuni-hagen.de>
4735
4736         * jcf-dump.c (main): Test for correct condition after
4737         output file creation.
4738
4739 2000-02-19  Anthony Green  <green@cygnus.com>
4740
4741         * jcf-depend.c (add_entry): Fix test for first list entry.
4742
4743 Sat Feb 19 18:43:13 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
4744
4745         * class.c (build_class_ref, push_super_field): Set DECL_SIZE_UNIT.
4746         * constants.c (build_constants_constructor): Likewise.
4747
4748 2000-02-19  Anthony Green  <green@cygnus.com>
4749
4750         * jcf-depend.c (add_entry): Add entries to the end of the list.
4751
4752 Wed Nov 03 02:16:00 PST 1999  Pekka Nikander  <pekka.nikander@hut.fi>
4753
4754         * decl.c (INT_TYPE_SIZE): Define if necessary.
4755         (expand_java_return): Handle the case of a native integer smaller
4756         than a JVM integer.
4757
4758 2000-02-18  Martin von Loewis  <loewis@informatik.hu-berlin.de>
4759
4760         * gjavah.c (help): Use GCCBUGURL.
4761         * jv-scan.c (help): Likewise.
4762         * jcf-dump.c (help): Likewise.
4763
4764 Thu Feb 17 14:30:37 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4765
4766         * jcf-write.c (generate_bytecode_insns): Don't generate empty
4767         `finally' clauses.
4768
4769 Thu Feb 17 13:20:58 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4770
4771         * jcf-parse.c (load_class): Call `fatal' if no file containing
4772         the target class are found.
4773
4774 2000-02-16  Zack Weinberg  <zack@wolery.cumb.org>
4775
4776         * Makefile.in (PARSE_C, PARSE_SCAN_C): Move dependencies on
4777         lex.c, lex.h, and PARSE_H to...
4778         (parse.o, parse-scan.o): ...here, respectively.
4779
4780         * lex.c: Split out code that may trigger SIGFPE from yylex()
4781         to its own function.
4782         * lex.h (JAVA_FLOAT_RANGE_ERROR): Don't set value.
4783
4784 2000-02-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4785
4786         * Make-lang.in (jvspec.o): Depend on $(GCC_H), not gcc.h.
4787
4788 2000-02-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4789
4790         * parse.y (outer_field_access_p): Stop in time when outer contexts
4791         are exhausted.
4792         (resolve_qualified_expression_name): Properly qualify *everything*
4793         after a package.type to be resoled as expression names.
4794         (find_applicable_accessible_methods_list): Save/restore `class' to
4795         isolate it from a possible outer context search.
4796
4797 2000-02-15  Tom Tromey  <tromey@cygnus.com>
4798
4799         * gjavah.c (jni_print_char): New function.
4800         (print_full_cxx_name): Use it.
4801         (decode_signature_piece): Likewise.
4802         (print_cxx_classname): Likewise.
4803
4804 2000-02-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4805
4806         * Makefile.in (jv-scan, jcf-dump, gcjh): Depend on and link with
4807         version.o.
4808         (jcf-dump.o, gjavah.o, jv-scan.o): Depend on version.h.
4809
4810         * gjavah.c: Include version.h.
4811
4812         * jcf-dump.c: Likewise.
4813
4814         * jv-scan.c: Likewise.
4815
4816 Sat Feb 12 04:34:04 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4817
4818         * parse.y (outer_field_access_fix): First parameter now a tree
4819         node. Check for assignement to final. First argument to
4820         build_outer_field_access_fix modified to accommodate prototype.
4821         (build_outer_field_access): Don't check for assignment to final
4822         here.
4823         (java_complete_lhs): MODIFY_EXPR case: Check for `error_mark_node'
4824         possibly returned by outer_field_access_fix. Changed
4825         outer_field_access_fix's first argument.
4826         (check_final_assignment): $finit$'s context is OK.
4827         (patch_unaryop): Use node instead of its line/column value when
4828         calling outer_field_access_fix.
4829
4830 Fri Feb 11 17:38:26 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4831
4832         * parse.y (interface_declaration:): No longer tagged
4833         <node>. Re-installed default action.
4834         (class_member_declaration:): Handle inner interfaces.
4835         (interface_member_declaration): Handle inner interfaces and
4836         classes.
4837         (create_interface): Push error if one seen. Suspend parsing
4838         context when processing an inner interface.
4839         (register_fields): Inner class static field limitations not to
4840         apply to inner interfaces.
4841
4842 Thu Feb 10 22:07:35 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4843
4844         * jcf-parse.c (load_class): Update `java_error_count' when a
4845         class' file can't be found.
4846         (parse.y): Avoid (byte)code generation when errors seen.
4847
4848 Thu Feb 10 20:10:43 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4849
4850         * parse.y (java_complete_lhs): Handle TRUNC_DIV_EXPR. Ensure `fatal'
4851         decodes a valid node.
4852         (patch_binop): Handle TRUNC_DIV_EXPR.
4853
4854 Thu Feb 10 16:04:26 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4855
4856         * parse.y (resolve_package): New local `acc'. Try to progressively
4857         build and guess a package and type name.
4858
4859 Thu Feb 10 12:52:09 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4860
4861         * parse.y (find_applicable_accessible_methods_list): Load and
4862         layout the search class if necessary.
4863         (java_complete_tree): Keep to original type of the folded initial
4864         value.
4865
4866 2000-02-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4867
4868         * class.c (layout_class): Set and test CLASS_BEING_LAIDOUT.
4869         Generate error message if circularity is detected. New static
4870         local `list'.
4871         * java-tree.h (CLASS_BEING_LAIDOUT): New flag usage, new macro.  *
4872         * jcf-write.c (generate_bytecode_insns): Very simply handle
4873         SAVE_EXPR.
4874         * parse.y (java_check_circular_reference): Use
4875         `cyclic_inheritance_report' during report, if necessary.
4876         (java_complete_lhs): fixed comment with `THROW_EXPR:' case. Avoid
4877         walking NEW_ARRAY_INIT twice.
4878
4879 2000-02-09  Tom Tromey  <tromey@cygnus.com>
4880
4881         * parse.y (check_class_interface_creation): Allow inner classes to
4882         be `private' or `protected', check modifiers' consistency. Prevent
4883         block local classes from bearing any modifiers.
4884
4885 2000-02-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4886
4887         * except.c (check_start_handlers): Re-add prototype lost in last
4888         patch.
4889         (maybe_start_try): Remove excess argument to `check_start_handlers'.
4890
4891 2000-02-09  Andrew Haley  <aph@cygnus.com>
4892
4893         * decl.c (clear_binding_level): Remove excess initializer.
4894         (maybe_poplevels): Remove unused variable.
4895         (force_poplevels): Ditto.
4896         (struct binding_level): Add comment.
4897
4898 2000-02-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4899
4900         * jcf-write.c (generate_classfile): Don't consider
4901         pre-initialization with reference value (use <clinit> instead.)
4902         * parse.y (java_fix_constructors): No generated constructor for
4903         interfaces.
4904         (build_outer_field_access): Removed debug message.
4905         (outer_field_expanded_access_p): Adapted to bytecode generation.
4906         (build_outer_field_access_method): Use fix_method_argument_names.
4907         (build_outer_method_access_method): Fixed indentation. Added
4908         comment. Handle access method generation for static and also void
4909         methods.
4910         (build_access_to_thisn): Inserted debug message.
4911         (maybe_build_thisn_access_method): Use fix_method_argument_names.
4912         (resolve_qualified_expression_name): Fixed comment.
4913         (not_accessible_p): Adapted to bytecode generation. Added comment.
4914         (patch_method_invocation): Added comment.
4915         (maybe_use_access_method): Fixed leading comment. Handle static
4916         methods.
4917         (java_complete_lhs): Don't shortcut handling of initialized upon
4918         declaration String type static fields when generating bytecode.
4919         (patch_unaryop): Handle outer field access when generating
4920         bytecode.
4921
4922 Thu Feb  3 20:23:19 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4923
4924         * java-tree.h (FIELD_THISN): New macro.
4925         * jcf-write.c (append_synthetic_attribute): New function.
4926         (generate_classfile): Set "Synthetic" attribute on this$<n>,
4927         val$<name> fields, access$<n> and $finit$ methods. Fixed indentation.
4928         * parse.y (add_inner_class_fields): Set FIELD_THISN for created
4929         this$<n> fields.
4930         (build_outer_field_access): Turned on access functions usage and
4931         generation when compiling to bytecode.
4932         (maybe_use_access_method): Likewise.
4933
4934 2000-01-25  Andrew Haley  <aph@cygnus.com>
4935
4936         * java-except.h (struct eh_range): Add `expanded' field.
4937         (maybe_start_try): Add end_pc arg.
4938         (maybe_end_try): Ditto.
4939         * java-tree.h (force_poplevels): new function.
4940         * expr.c (expand_byte_code): Don't call maybe_start_try or
4941         maybe_end_try.
4942         * except.c (add_handler): Reset expanded.
4943         (expand_start_java_handler): Set expanded.
4944         (check_start_handlers): Don't expand a start handler that's
4945         already been expanded.
4946         (maybe_start_try): Add end_pc arg.  Only expand a handler which
4947         ends after end_pc.
4948         (expand_end_java_handler): call force_poplevels.
4949         (force_poplevels): new function.
4950         * decl.c (binding_level): Add start_pc of binding level.
4951         (maybe_pushlevels): Call maybe_start_try when pushing binding
4952         levels.
4953         (maybe_poplevels): Call maybe_end_try when popping binding levels.
4954         (LARGEST_PC): Define.
4955         (clear_binding_level): Use LARGEST_PC.
4956
4957         * java-tree.h (DEBUG_JAVA_BINDING_LEVELS): new define.
4958         * decl.c (DEBUG_JAVA_BINDING_LEVELS): new define.
4959         (binding_depth, is_class_level, current_pc): new variables.
4960         (struct binding_level): ditto.
4961         (indent): new function.
4962         (push_jvm_slot): add debugging info.
4963         (maybe_pushlevels): ditto.
4964         (maybe_poplevels): ditto.
4965         (pushlevel): ditto.
4966         (poplevel): ditto.
4967         (start_java_method): ditto.
4968         (give_name_to_locals): comment only.
4969         * except.c (binding_depth, is_class_level, current_pc):
4970         new variables.
4971         (expand_start_java_handler): add debugging info.
4972         (expand_end_java_handler): ditto.
4973
4974 2000-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4975
4976         * gjavah.c (overloaded_jni_method_exists_p): Add prototype.
4977         (print_name_for_stub_or_jni, process_file): Constify a char*.
4978
4979 2000-02-03  Tom Tromey  <tromey@cygnus.com>
4980
4981         * jcf-io.c (jcf_print_utf8_replace): Handle UTF-8 input.
4982
4983 2000-01-31  Scott Bambrough  <scottb@netwinder.org>
4984
4985         * gcc/java/javaop.h (WORDS_TO_DOUBLE): Allow WORDS_TO_DOUBLE to
4986         assemble doubles correctly when HOST_FLOAT_WORDS_BIG_ENDIAN is
4987         defined to be 1.
4988
4989 Wed Feb  2 18:43:37 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4990
4991         * java-tree.def (INSTANCE_INITIALIZERS_EXPR): New tree code.
4992         * java-tree.h (TYPE_II_STMT_LIST): New macro.
4993         (struct lang_type): New field `ii_block'.
4994         * lex.c (java_init_lex): Use CPC_INITIALIZER_LIST,
4995         CPC_STATIC_INITIALIZER_LIST and CPC_INSTANCE_INITIALIZER_LIST.
4996         * parse.h (struct parser_ctxt): New field `instance_initializers'.
4997         (CPC_INITIALIZER_LIST, CPC_STATIC_INITIALIZER_LIST,
4998         CPC_INSTANCE_INITIALIZER_LIST, CPC_INITIALIZER_STMT,
4999         CPC_STATIC_INITIALIZER_STMT, CPC_INSTANCE_INITIALIZER_STMT): New
5000         macros.
5001         * parse.y (add_instance_initializer): New function.
5002         (in_instance_initializer): New static global.
5003         (class_body_declaration:): Link instance initializer block.
5004         (static_initializer:): Use CPC_STATIC_INITIALIZER_STMT.
5005         (array_creation_expression:): Remove unused local.
5006         (java_parser_context_push_initialized_field): Fixed leading
5007         comment. Use CPC_STATIC_INITIALIZER_LIST, CPC_INITIALIZER_LIST and
5008         CPC_INSTANCE_INITIALIZER_LIST.
5009         (java_parser_context_pop_initialized_field): Likewise.
5010         (add_inner_class_fields): Use CPC_INITIALIZER_STMT.
5011         (register_fields): Use CPC_STATIC_INITIALIZER_STMT and
5012         CPC_INITIALIZER_STMT.
5013         (fix_constructors): New local `class_type'. Use it. Call
5014         add_instance_initializer.
5015         (java_complete_lhs): New case INSTANCE_INITIALIZERS_EXPR.
5016         (patch_return): Forbid return in instance initializers.
5017         (patch_throw_statement): Enforce exception handling in the context
5018         of instance initializers.
5019
5020 2000-02-03  Tom Tromey  <tromey@cygnus.com>
5021
5022         * Make-lang.in (java.mostlyclean): Remove executables in
5023         `mostlyclean'.
5024
5025 2000-01-31  Scott Bambrough  <scottb@netwinder.org>
5026
5027         * gcc/java/gjavah.c (D_NAN_MASK): Alternate definition required when
5028         HOST_FLOAT_WORDS_BIG_ENDIAN is defined to be 1.
5029         (java_float_finite): Convert to use union Word from javaop.h.
5030         (java_double_finite): Convert to use union DWord from javaop.h.
5031
5032 2000-02-02  Tom Tromey  <tromey@cygnus.com>
5033
5034         * gjavah.c (options): Added `jni' entry.
5035         (help): Document -jni.
5036         (flag_jni): New global.
5037         (process_file): Handle JNI output.  Don't print text from
5038         -prepend, -add, etc, when generating stubs.  Only remove `.class'
5039         suffix if it actually exists.
5040         (main): Create a `.c' file when run with `--jni --stubs'.  Create
5041         correct output file name with `--jni'.
5042         (print_include): Mangle header name differently in JNI case.
5043         (HANDLE_METHOD): In JNI mode, call print_method_info to generate
5044         method list.
5045         (print_method_info): Handle JNI case.  Put signature info into
5046         method name.  Handle case when STREAM is NULL.
5047         (print_name_for_stub_or_jni): New function.
5048         (print_stub_or_jni): Renamed from `print_stub'.  Handle JNI.
5049         (print_cxx_classname): Handle JNI.
5050         (print_full_cxx_name): Likewise.
5051         (decode_signature_piece): Likewise.
5052         (overloaded_jni_method_exists_p): New function.
5053         (struct method_name): Added `signature' and `sig_length' fields.
5054         (HANDLE_END_FIELD): Do nothing in JNI mode.
5055
5056 2000-02-02  Tom Tromey  <tromey@cygnus.com>
5057
5058         * jv-scan.c: Include version.c, <getopt.h>.
5059         (LONG_OPT, OPT_HELP, OPT_VERSION): New macros.
5060         (options): New array.
5061         (usage): New function.
5062         (version): New function.
5063         (main): Use getopt_long to parse command line.
5064         * jcf-dump.c: Include version.c, <getopt.h>.
5065         (LONG_OPT, OPT_classpath, OPT_CLASSPATH, OPT_HELP, OPT_VERSION,
5066         OPT_JAVAP): New macros.
5067         (options): New array.
5068         (usage): Return `void'.  Changed message.
5069         (help): New function.
5070         (version): New function.
5071         (main): Use getopt_long_only to parse command line.
5072         * gjavah.c: Include <getopt.h>.
5073         (LONG_OPT, OPT_classpath, OPT_CLASSPATH, OPT_HELP, OPT_TEMP,
5074         OPT_VERSION, OPT_PREPEND, OPT_FRIEND, OPT_ADD, OPT_APPEND, OPT_M,
5075         OPT_MM, OPT_MG, OPT_MD, OPT_MMD): New macros.
5076         (options): New array.
5077         (java_no_argument): Removed.
5078         (help): Updated with missing options.
5079         (main): Use getopt_long_only to parse command line.
5080         (usage): Changed message.
5081
5082 Tue Feb  1 22:23:41 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5083
5084         * java-tree.def (NEW_ANONYMOUS_ARRAY_EXPR): New tree code.
5085         * parse.h (ANONYMOUS_ARRAY_BASE_TYPE, ANONYMOUS_ARRAY_DIMS_SIG,
5086         ANONYMOUS_ARRAY_INITIALIZER): New access macros.
5087         * parse.y (array_creation_expression:): Handle anonymous arrays.
5088         (build_array_from_name): Don't set `ret_name' if null.
5089         (resolve_qualified_expression_name): New case NEW_ANONYMOUS_ARRAY_EXPR.
5090         (qualify_ambiguous_name): Likewise.
5091         (java_complete_expand_class): Likewise.
5092
5093 Tue Feb  1 14:59:35 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5094
5095         * java-tree.def (SYNCHRONIZED_EXPR): Fixed typo.
5096         * parse.h (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID): New macro.
5097         (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_STR): Likewise.
5098         (SKIP_THIS_AND_ARTIFICIAL_PARMS): Use DECL_FINIT_P.
5099         (AIPL_FUNCTION_FINIT_INVOCATION): Replaces
5100         AIPL_FUNCTION_COMPLETED_INVOCATION.
5101         (AIPL_FUNCTION_CTOR_INVOCATION): Replaces
5102         AIPL_FUNCTION_INVOCATION_READY.
5103         (AIPL_FUNCTION_DECLARATION): New enum entry.
5104         * parse.y (reorder_static_initialized): New function.
5105         (java_parser_context_pop_initialized_field): Use it.
5106         (add_inner_class_fields): Use
5107         MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID. Comment
5108         augmented. Install marker after last alias initializer, if any.
5109         (generate_finit): Fixed typo. Don't try to retain only the used
5110         fields.
5111         (method_header): Compute and set DECL_FUNCTION_NAP.
5112         (method_declarator): Fixed comment. Insert alias initializer in
5113         parameter list.
5114         (build_alias_initializer_parameter_list): Fixed leading
5115         comment. New case for AIPL_FUNCTION_DECLARATION. Old enum value
5116         replaced by new ones. Use MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID.
5117         (java_complete_expand_class): Code to retain only used aliases
5118         removed.
5119         (java_complete_expand_methods): New local `first_decl'. Generate
5120         $finit$ first, then expand the constructors, regular methods and
5121         <clinit>.
5122         (java_complete_expand_method): Don't report error on missing
5123         return statement if previously detected bogus.
5124         (fix_constructors): Don't patch constructor parameters list.
5125         (patch_method_invocation): Use new AIPL enum values. Reverse
5126         alias initializer list for anonymous classes.
5127
5128 2000-01-30  Anthony Green  <green@redhat.com>
5129
5130         * jcf-write.c (generate_bytecode_insns): Use TYPE_IS_WIDE to
5131         determine how many stack slots to pop.
5132
5133 2000-01-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5134
5135         * parse.y (formal_parameter:): Set `$$' to NULL_TREE for better
5136         error handling/recovery.
5137         * java-tree.h (SYNCHRONIZED_EXPR): Fixed typo in comment.
5138
5139 Fri Jan 28 20:10:57 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5140
5141         * java-tree.h (ARG_FINAL_P, FIELD_LOCAL_ALIAS,
5142         FIELD_LOCAL_ALIAS_USED): New macros.
5143         (DECL_FUNCTION_NAP): New macro.
5144         (struct lang_decl): New field `nap'.
5145         (TYPE_FINIT_STMT_LIST, TYPE_CLINIT_STMT_LIST): New macros.
5146         (struct lang_type): New fields `finit_stmt_list' and
5147         `clinit_stmt_list'.
5148         (CLASS_HAS_FINIT_P): Defined using TYPE_FINIT_STMT_LIST.
5149         * parse.h (MANGLE_OUTER_LOCAL_VARIABLE_NAME): New macro.
5150         (SKIP_THIS_AND_ARTIFICIAL_PARMS, MARK_FINAL_PARMS,
5151         UNMARK_FINAL_PARMS, CRAFTED_PARAM_LIST_FIXUP): New macros.
5152         (AIPL_FUNCTION_CREATION, AIPL_FUNCTION_COMPLETED_INVOCATION,
5153         AIPL_FUNCTION_INVOCATION_READY): New enum fields.
5154         (BUILD_THROW): Macro line separator re-indented.
5155         * parse.y (end_class_declaration): New function.
5156         (maybe_generate_pre_expand_clinit): New name for
5157         java_pre_expand_clinit. Create <clinit> off TYPE_CLINIT_STMT_LIST,
5158         pre-expand static fields.
5159         (maybe_generate_clinit): Function deleted.
5160         (check_for_static_method_reference): Prototype's parameter list
5161         indented.
5162         (generate_finit): New name for maybe_generate_finit. Changed
5163         leading comment. Function rewritten to use
5164         TYPE_FINIT_STMT_LIST. Call build_alias_initializer_parameter_list.
5165         (build_alias_initializer_parameter_list): New function.
5166         (java_parser_context_pop_initialized_field): Likewise.
5167         (add_inner_class_fields): Likewise.
5168         (type_declaration:): Call end_class_declaration.
5169         (class_member_declaration:): Likewise.
5170         (formal_parameter_list:): Fixed typos.
5171         (formal_parameter:): Use ARG_FINAL_P to mark created tree list
5172         element. Improved error handling.
5173         (block_statement:): Call end_class_declaration.
5174         (anonymous_class_creation:): Likewise.
5175         (create_anonymous_class): Fixed comments.
5176         (create_class): Call add_inner_class_fields.
5177         (register_fields): Set FIELD_LOCAL_ALIAS according to ARG_FINAL_P.
5178         (method_header): Use MARK_FINAL_PARMS.
5179         (finish_method_declaration): Use UNMARK_FINAL_PARMS.
5180         (method_declarator): Propagate final argument flag.
5181         (craft_constructor): New local `artificial'. Call
5182         build_alias_initializer_parameter_list. Use
5183         CRAFTED_PARAM_LIST_FIXUP, assign DECL_FUNCTION_NAP.
5184         (source_start_java_method): Mark parm decls with LOCAL_FINAL if
5185         necessary.
5186         (complete_expand_class): Get rid of unused outer context local
5187         alias fields.
5188         (java_complete_expand_methods): Fixed leading
5189         comment. Generate/pre-expand <clinit> first. Changed method
5190         expansion order to regular, $finit$, constructors, <clinit>.
5191         (java_complete_expand_method): Set current_function_decl.
5192         (fix_constructors): Fix constructor parameter list to account for
5193         outer context local alias initializers.
5194         (verify_constructor_super): Use SKIP_THIS_AND_ARTIFICIAL_PARMS.
5195         (resolve_expression_name): Lookup outer context local aliases. New
5196         local `access', use it.
5197         (patch_method_invocation): Patch inner class ctor invocation with
5198         outer context local aliases initialization values. $finit$
5199         invocation patching now includes things generated with
5200         build_alias_initializer_parameter_list.
5201         (argument_types_convertible): Use SKIP_THIS_AND_ARTIFICIAL_PARMS.
5202         (build_super_invocation): Likewise.
5203         (patch_assignment): Changed comment.
5204
5205 2000-01-27  Andrew Haley  <aph@cygnus.com>
5206
5207         * jcf-write.c (emit_goto): RESERVE 3 bytes for insn.
5208         (emit_if): Ditto.
5209         (emit_jsr): Ditto.
5210
5211 2000-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5212
5213         * parse.h (OBSOLETE_MODIFIER_WARNING): Don't use ANSI string
5214         concatenation.
5215         (OBSOLETE_MODIFIER_WARNING2): New macro allowing two args.
5216
5217         * parse.y (register_fields): Don't pass a format specifier to
5218         OBSOLETE_MODIFIER_WARNING.
5219         (check_abstract_method_header): Use OBSOLETE_MODIFIER_WARNING2
5220         instead of OBSOLETE_MODIFIER_WARNING, and don't pass a format
5221         specifier.
5222         (check_modifiers): Change function into a macro.
5223         (check_class_interface_creation): Pass a literal format string.
5224
5225 2000-01-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5226
5227         * buffer.h: PROTO -> PARAMS.
5228         * check-init.c: Likewise.
5229         * class.c: Likewise.
5230         * constants.c: Likewise.
5231         * convert.h: Likewise.
5232         * decl.c: Likewise.
5233         * except.c: Likewise.
5234         * expr.c: Likewise.
5235         * gjavah.c: Likewise.
5236         * java-except.h: Likewise.
5237         * java-tree.h: Likewise.
5238         * jcf-depend.c: Likewise.
5239         * jcf-dump.c: Likewise.
5240         * jcf-parse.c: Likewise.
5241         * jcf-path.c: Likewise.
5242         * jcf-reader.c: Likewise.
5243         * jcf-write.c: Likewise.
5244         * jcf.h: Likewise.
5245         * jv-scan.c: Likewise.
5246         * jvgenmain.c: Likewise.
5247         * jvspec.c: Likewise.
5248         * lang.c: Likewise.
5249         * lex.c: Likewise.
5250         * lex.h: Likewise.
5251         * parse-scan.y: Likewise.
5252         * parse.h: Likewise.
5253         * parse.y: Likewise.
5254         * typeck.c: Likewise.
5255         * verify.c: Likewise.
5256         * xref.c: Likewise.
5257         * xref.h: Likewise.
5258         * zextract.c: Likewise.
5259         * zipfile.h: Likewise.
5260
5261 2000-01-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5262
5263         * class.c (make_class): Use MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC.
5264         (is_compiled_class): Remove test on TYPE_LANG_SPECIFIC, use TYPE_JCF.
5265         * constants.c (build_constant_data_ref): Check for cached
5266         current_constant_pool_data_ref. Cache current_constant_pool_data_ref
5267         in TYPE_CPOOL_DATE_REF.
5268         * java-tree.h (TYPE_JCF, TYPE_CPOOL, TYPE_CPOOL_DATA_REF,
5269         MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC:) New macros.
5270         (struct lang_type): New fields `cpool' and `cpool_data_ref'.
5271         (LOCAL_FINAL): New macro.
5272         * jcf-parse.c (init_outgoing_cpool): Always allocate new outgoing
5273         constant pool -- don't try to reuse.
5274         (parse_zip_file_entries): Use TYPE_JCF, don't lazily allocate
5275         TYPE_LANG_SPECIFIC.
5276         (find_in_current_zip): Use TYPE_JCF.
5277         * parse.h (java_check_final): Prototype removed.
5278         * parse.y (create_class): Reversed Jan 12, 2000 extra argument patch.
5279         (maybe_create_class_interface_decl,
5280         check_class_interface_creation): Likewise.
5281         (java_expand_finals): Function removed.
5282         (class_declaration:): Reversed Jan 12, 2000 extra argument patch.
5283         (block_statement:): Fixed comment.
5284         (anonymous_class_creation:): Likewise.
5285         (check_class_interface_creation): Reversed Jan 12, 2000 extra
5286         argument patch.
5287         (check_class_interface_creation): Loosened error report on (inner)
5288         public class declarations. CPC_INNER_P replaces GET_CPC_LIST.
5289         (link_nested_class_to_enclosing): Reversed Jan 12, 2000 patch.
5290         (maybe_create_class_interface_decl): Reversed Jan 12, 2000 extra
5291         argument patch.
5292         (create_interface): Likewise.
5293         (anonymous_class_counter): New static global.
5294         (create_anonymous_class): Reversed Jan 12, 2000 extra argument
5295         patch. Fixed comments.
5296         (create_class): Reversed Jan 12, 2000 extra argument patch. Reset
5297         anonymous_class_counter when declaring a toplevel class.
5298         (craft_constructor): Fixed constructor name when handling
5299         anonymous classes. Anonymous class constructors to feature hidden
5300         this$<n> parameter.
5301         (java_fix_constructors): Added comment.
5302         (java_check_final): Function removed.
5303         (java_complete_expand_methods): Fixed comment. Don't generate
5304         class data, save its outgoing constant pool instead.
5305         (verify_constructor_super): Skip anonymous class constructor
5306         hidden this$<n> parameter.
5307         (java_expand_classes): New local `saved_ctxp'. Removed call to
5308         java_expand_finals and java_check_final. Expand anonymous class
5309         constructors. Generate class data.
5310         (build_super_invocation): Skip anonymous class hidden this$<n>
5311         parameter.
5312         * typeck.c (build_java_signature): Use TYPE_SIGNATURE and
5313         MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC.
5314         (set_java_signature): Likewise.
5315
5316 Mon Jan 18 14:30:09 2000  Joerg Brunsmann  <joerg.brunsmann@fernuni-hagen.de>
5317
5318         * gjavah.c: Delete ACC_VISIBILITY define.
5319         * jcf.h: Add ACC_VISIBILITY define.
5320         * parse.y: final: rule tagged <value>.
5321         (java_check_regular_methods): Use ACC_VISIBILITY define for
5322         default package access check.
5323         (local_variable_declaration_statement): Use final: rule.
5324
5325 Mon Jan 17 11:58:17 2000  Joerg Brunsmann  <joerg.brunsmann@fernuni-hagen.de>
5326
5327         * parse.y (format_parameter:): Use final: rule instead of modifiers:.
5328         (final:): New rule.
5329
5330 2000-01-17  Tom Tromey  <tromey@cygnus.com>
5331
5332         * gjavah.c (print_field_info): Allow non-static final fields.
5333
5334 Fri Jan 14 18:03:41 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5335
5336         * parse.h (enum jdep_code): New entry `JDEP_ANONYMOUS'.
5337         * parse.y (patch_anonymous_class): New function.
5338         (create_anonymous_class): Register incomplete type when the
5339         class/interface to extends/implement isn't known yet.
5340         (parser_check_super_interface): Simplify argument to CLASS_INTERFACE.
5341         (verify_constructor_super): Tuned error message.
5342
5343 Fri Jan 14 00:14:24 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5344
5345         * java-tree.h (FOR_LOOP_P): Replaces IS_FOR_LOOP_P.
5346         (ANONYMOUS_CLASS_P): New macro.
5347         (TYPE_SIGNATURE, TYPE_JCF): New macros.
5348         (INNER_CLASS_TYPE_P): Fixed typo in leading comment.
5349         * parse.y (create_class): Added leading argument.
5350         (maybe_create_class_interface_decl,
5351         check_class_interface_creation): Likewise.
5352         (craft_constructor): New function.
5353         (verify_constructor_super): Added argument in prototype.
5354         (class_declaration:): Inserted leading argument.
5355         (for_begin:): Use FOR_LOOP_P.
5356         (anonymous_class_creation): Create WFL of the anonymous class to
5357         instantiate. Call build_new_invocation. Added comments.
5358         (check_class_interface_creation): Handle parameter `anonymous' in
5359         verbose mode class creation announce.
5360         (link_nested_class_to_enclosing): Exclude anonymous classes.
5361         (maybe_create_class_interface_decl): Don't set DECL_CONTEXT on
5362         anonymous class, even though they appear to have an enclosing
5363         context.
5364         (create_interface): Pass extra argument to
5365         check_class_interface_creation.
5366         (create_anonymous_class): Set ANONYMOUS_CLASS_P to 1.
5367         (create_class): Call check_class_interface_creation and
5368         maybe_create_class_interface_decl with extra new argument. Don't
5369         add private this$<n> to anonymous classes.
5370         (method_declarator): Insert hidden this$<n> to anonymous class
5371         constructors.
5372         (java_fix_constructors): Deleted code creating default
5373         constructor. Call craft_constructor instead.
5374         (java_check_regular_methods): Set `saw_constructor' to 1 for
5375         anonymous classes.
5376         (fix_constructors): Pass extra argument to verify_constructor_super.
5377         (verify_constructor_super): New local `sdecl', use it. Search for
5378         matching constructor (possibly featuring arguments) in super
5379         class.
5380         (lookup_method_invoke): Craft constructor according to arguments
5381         list when dealing with anonymous class constructors.
5382         (build_super_invocation): Pass arguments to anonymous class super
5383         constructors.
5384         (search_loop): Use FOR_LOOP_P.
5385         (labeled_block_contains_loop_p): Likewise.
5386
5387 Wed Jan 12 00:38:47 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5388
5389         * class.c (set_super_info): Set CLASS_STATIC when appropriate.
5390         (enclosing_context_p): New function.
5391         (get_access_flags_from_decl): Handle CLASS_STATIC.
5392         (maybe_layout_super_class): Extra first argument passed to
5393         do_resolve_class.
5394         (layout_class_method): Use ID_FINIT_P, DECL_CLINIT_P and
5395         ID_INIT_P.
5396         * decl.c (access0_identifier_node): New global.
5397         (init_decl_processing): access0_identifier_node initialized.
5398         (pushdecl): Set DECL_CONTEXT only on non type decls.
5399         * expr.c (lookup_field): Lookup inner class fields in enclosing
5400         contexts.
5401         (expand_invoke): Use ID_INIT_P.
5402         (expand_java_field_op): Use DECL_CLINIT_P.
5403         * java-tree.def (CLASS_LITERAL): New tree code.
5404         * java-tree.h (DECL_FUNCTION_ACCESS_DECL,
5405         DECL_FUNCTION_INNER_ACCESS, FIELD_INNER_ACCESS): New macros.
5406         (struct lang_decl): New field `inner_access'.
5407         (enclosing_context_p): Prototyped.
5408         (DECL_INIT_P, DECL_FINIT_P, DECL_CLINIT_P, ID_INIT_P, ID_FINIT_P,
5409         ID_CLINIT_P): New macros.
5410         (CLASS_STATIC): New macro.
5411         (CLASS_ACCESS0_GENERATED_P): New macro.
5412         (OUTER_FIELD_ACCESS_IDENTIFIER_P, INNER_CLASS_DECL_P,
5413         TOPLEVEL_CLASS_DECL_P, INNER_CLASS_TYPE_P, TOPLEVEL_CLASS_TYPE_P,
5414         INNER_CLASS_P): New macros.
5415         (DECL_INNER_CLASS_LIST): New macro.
5416         * jcf-parse.c (yyparse): Avoid the use of ANSI string
5417         concatenation.
5418         * jcf-write.c (generate_bytecode_insns): binop: Change the type of
5419         the shift value to int. Fixed typo in comment.
5420         * lex.c (inst_id, wpv_id): Initialize.
5421         * mangle.c (unicode_mangling_length): Take `$' into account.
5422         * parse.h (DRECOVER, RECOVER): Terminate properly.
5423         (IDENTIFIER_INNER_CLASS_OUTER_FIELD_ACCESS): New macro.
5424         (typedef struct _jdep): New field `enclosing'.
5425         (JDEP_ENCLOSING): New macro.
5426         (IS_CLINIT): Deleted (DECL_CLINIT_P replaces it.)
5427         (struct parser_ctxt): New fields `marker_beginning', `marked_end'.
5428         (GET_CPC_LIST, CPC_INNER_P, GET_CPC, GET_CPC_UN, GET_CPC_UN_MODE,
5429         GET_CPC_DECL_NODE, GET_ENCLOSING_CPC, GET_NEXT_ENCLOSING_CPC,
5430         GET_ENCLOSING_CPC_CONTEXT): New macros.
5431         (PUSH_CPC, PUSH_ERROR, POP_CPC): New macros.
5432         (do_resolve_class): Added extra argument in prototype.
5433         * parse.y (resolve_class): Added extra argument in prototype.
5434         (maybe_create_class_interface_decl): Likewise.
5435         (maybe_use_access_method, build_wfl_wrap): New functions.
5436         (java_complete_expand_classes, java_complete_expand_class):
5437         Likewise.
5438         (java_parser_context_push_initialized_field,
5439         java_parser_context_suspend, java_parser_context_resume):
5440         Likewise.
5441         (maybe_make_nested_class_name, make_nested_class_name,
5442         set_nested_class_simple_name_value,
5443         link_nested_class_to_enclosing, find_as_inner_class,
5444         find_as_inner_class_do, check_inner_class_redefinition,
5445         build_thisn_assign, build_current_thisn, build_access_to_thisn,
5446         maybe_build_thisn_access_method, build_outer_field_access,
5447         build_outer_field_access_methods, build_outer_field_access_expr,
5448         build_outer_method_access_method, build_new_access_id,
5449         build_outer_field_access_method, outer_field_access_p,
5450         outer_field_expanded_access_p, outer_field_access_fix,
5451         build_incomplete_class_ref, patch_incomplete_class_ref,
5452         create_anonymous_class): Likewise.
5453         (inst_id, wpv_id): New static global variables.
5454         (synchronized:): New rule, tagged <node>.
5455         (type_declaration:): No longer tagged <node>. Call POP_CPC in sub
5456         rules.
5457         (anonymous_class_creation:): New rule, tagged <node>.
5458         (NEW_TK): Tagged <node>.
5459         (type_literals, array_type_literal): New rules, tagged <node>.
5460         (class_declaration:): Removed action when reducing by class_body:
5461         (class_body:): Set DECL_END_SOURCE_LINE and rule's returned value
5462         using GET_CPC in sub-rules.
5463         (class_member_declaration): Handle inner classes.
5464         (method_declaration): When reducing method_header:, reset
5465         current_function_decl when appropriate.
5466         (method_declarator:): Set the number of formal parameter to 0 for
5467         method declared without arguments.
5468         (constructor_declarator:): Likewise.
5469         (static_initializer:): List of elements kept in a list.
5470         (static:): Rule modifiers: replaces MODIFIER_TK. Enforce correct
5471         use of the keyword `static' for type declarations.
5472         (block_statement:): Handle inner class declarations.
5473         (primary_no_new_array:): Use type_literals:. Fixed comment. Handle
5474         type qualified `this'.
5475         (class_instance_creation_expression): Use anonymous_class_creation:
5476         to handle inner class instances creation. Handle qualified `new'.
5477         (something_dot_new): Added appropriate actions.
5478         (create_new_parser_context): New function.
5479         (java_push_parser_context, java_parser_context_save_global,
5480         java_parser_context_suspend): Use create_new_parser_context.
5481         (check_modifiers): Changed leading comment.
5482         (check_class_interface_creation): Handle interclasses.
5483         (add_superinterfaces): Fixed comment.
5484         (create_interface): Build qualified name from the raw_name instead
5485         of its matching WFL. Push the initialized fields list. raw_name added
5486         as an extra argument to maybe_create_class_interface_decl.
5487         (create_class): Build qualified name from the raw_name instead of
5488         its matching WFL. Removed assignment to current_parsed_class_un.
5489         Call PUSH_ERROR before returning an error. Suspend the current
5490         parser context when processing an inner class. Push the
5491         initialized fields list. raw_name added as an extra argument to
5492         maybe_create_class_interface_decl. Add the private this$<n>
5493         field.
5494         (duplicate_declaration_error_p): Use GET_CPC when calling find_field.
5495         (register_fields): Get the class type from GET_CPC and handle
5496         previous errors.  Added code to handle the creation of static
5497         fields in inner classes. Initialized fields initialization
5498         statements kept in a list of lists.
5499         (maybe_generate_finit): Initialized fields initialization
5500         statements kept in a list of lists. Use GET_CPC.
5501         (maybe_generate_clinit): Likewise.
5502         (method_header): Use GET_CPC and GET_CPC_UN.
5503         (parser_qualified_classname): Handle inner classes.
5504         (register_incomplete_type): Set JDEP_ENCLOSING using GET_CPC.
5505         (java_fix_constructors): Hide pointer to enclosing context
5506         instance in constructor list when dealing with inner classes.
5507         (jdep_resolve_class): Call resolve_class with extra first argument
5508         JDEP_ENCLOSING.
5509         (resolve_class): Add enclosing context as a first extra argument
5510         to do_resolve_class.
5511         (do_resolve_class): Call find_as_inner_class. Handle WFLs
5512         properly.
5513         (resolve_no_layout): Extra argument added to resolve_class
5514         invocation.
5515         (reset_method_name): Use DECL_CLINIT_P, DECL_FINIT_P.
5516         (java_get_real_method_name): Use GET_CPC_UN.
5517         (check_abstract_method_definitions): Use DECL_CLINIT_P.
5518         (java_check_abstract_methods): Handle static method declared in
5519         inner classes by an error.
5520         (java_check_regular_methods): Use DECL_CLINIT_P.
5521         (source_start_java_method): Also set DECL_MAX_LOCALS.
5522         (create_artificial_method): Call java_parser_context_save_global
5523         and java_parser_context_restore_global instead of saving/restoring
5524         the context by hand.
5525         (expand_start_java_method): Improved verbose mode message.
5526         (java_complete_expand_methods): Fixed leading comment. Use
5527         DECL_CLINIT_P.
5528         (fix_constructors): Added assignment to this$<n> if necessary.
5529         (java_expand_classes): Call java_complete_expand_classes instead
5530         of java_complete_expand_methods.
5531         (make_qualified_primary): Simplified.
5532         (merge_qualified_name): Optimized for missing left or right parts.
5533         (resolve_expression_name): Handle access to outer class fields from
5534         interclasses.
5535         (resolve_qualified_expression_name): New macro
5536         RESTORE_THIS_AND_CURRENT_CLASS, used. Handle creation of inner
5537         classes. Report error on non appropriate qualification of
5538         `new'. Handle qualified `this'.
5539         (not_accessible_p): Allow access to outer class private fields from
5540         inner classes.
5541         (patch_method_invocation): Handle method invocations through
5542         access methods and inner class constructor invocations.
5543         (find_applicable_accessible_methods_list): Search enclosing
5544         contexts of an inner class.
5545         (search_applicable_methods_list): Fixed typo.
5546         (argument_types_convertible): Handle inner class constructors'
5547         hidden outer context reference argument.
5548         (qualify_ambiguous_name): Handle qualified `this'.
5549         (java_complete_lhs): Handle use of field accessed through
5550         artificial access methods in various cases of assignments. Handle
5551         CLASS_LITERAL node.
5552         (check_final_assignment): Use DECL_CLINIT_P.
5553         (valid_ref_assignconv_cast_p): Handle the destination being an
5554         enclosing context of the source.
5555         (patch_unaryop): Handle use of field accessed through artificial
5556         access methods.
5557         (patch_return): Use DECL_CLINIT_P.
5558         (patch_throw_statement): Use DECL_CLINIT_P.
5559         (check_thrown_exceptions): Use DECL_FINIT_P and DECL_INIT_P.
5560         * verify.c (verify_jvm_instructions): Use ID_CLINIT_P and
5561         ID_INIT_P.
5562
5563 2000-01-16  Anthony Green  <green@cygnus.com>
5564
5565         * parse.y (build_string_concatenation): Only use
5566         StringBuffer(String) shortcut if String arg is constant.
5567
5568 Wed Jan 12 20:20:11 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5569
5570         * jcf-write.c (generate_bytecode_insns): binop: Change the type of
5571         the shift value to int. Fixed typo in comment.
5572
5573 2000-01-11  Mumit Khan  <khan@xraylith.wisc.edu>
5574
5575         * jcf-path.c: Delete PATH_SEPARATOR and DIR_SEPARATOR macros.
5576         * jcf-write.c: Likewise.
5577         * parse.y: Likewise.
5578         * parse.c: Regenerate.
5579
5580 2000-01-09  Anthony Green  <green@cygnus.com>
5581
5582         * jcf-write.c (generate_bytecode_insns): Emit invokeinterface
5583         bytecodes in the correct order.
5584
5585 2000-01-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5586
5587         * Makefile.in (jcf-dump, gcjh): Move ../errors.o before $(LIBS).
5588
5589 Thu Jan  6 16:31:28 2000  Anthony Green  <green@cygnus.com>
5590
5591         * expr.c (java_lang_expand_expr): Switch to permanent obstack
5592         before building constant array decl.
5593
5594 Thu Jan  6 00:54:10 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5595
5596         * jcf-write.c (generate_bytecode_conditional): Fixed indentation in
5597         method invocation and typo in conditional expression.
5598         (generate_bytecode_insns): COND_EXPR can be part of a binop. Issue
5599         the appropriate NOTE_POP.
5600         * parse.y (patch_binop): Shift value mask to feature the right
5601         type.
5602
5603 1999-12-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5604
5605         * class.c (assume_compiled, assume_compiled_node): Add static
5606         prototype.
5607         (add_assume_compiled): Use xmalloc/xstrdup, not malloc/strdup.
5608
5609         * jcf-dump.c (ARRAY_NEW_NUM): Cast long to int in switch.
5610
5611         * jvgenmain.c (usage): Add static prototype with ATTRIBUTE_NORETURN.
5612
5613         * parse.h (OBSOLETE_MODIFIER_WARNING): Rename parameter `modifier'
5614         to `__modifier' to avoid stringifying it.
5615
5616         * parse.y (verify_constructor_circularity): Don't call a variadic
5617         function with a non-literal format string.
5618         (java_check_abstract_methods): Move unreachable code inside
5619         `continue' statement.
5620         (lookup_method_invoke): Call xstrdup, not strdup.
5621
5622         * expr.c (expand_java_field_op): Avoid the use of ANSI string
5623         concatenation.
5624
5625         * jcf-parse.c (yyparse): Likewise.
5626
5627         * jv-scan.c (main): Likewise.
5628
5629 1999-12-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5630
5631         * parse.h (ABSTRACT_CHECK, JCONSTRUCTOR_CHECK,
5632         ERROR_CANT_CONVERT_TO_BOOLEAN, ERROR_CANT_CONVERT_TO_NUMERIC,
5633         ERROR_CAST_NEEDED_TO_INTEGRAL): Avoid the use of ANSI string
5634         concatenation.
5635
5636         * parse.y (synchronized, variable_redefinition_error,
5637         check_class_interface_creation, create_interface, create_class,
5638         method_header, finish_method_declaration,
5639         check_modifiers_consistency, method_declarator,
5640         complete_class_report_errors, check_abstract_method_definitions,
5641         java_check_regular_methods, check_throws_clauses,
5642         java_check_abstract_methods, read_import_dir,
5643         check_pkg_class_access, declare_local_variables, fix_constructors,
5644         cut_identifier_in_qualified, resolve_expression_name,
5645         resolve_qualified_expression_name, patch_method_invocation,
5646         java_complete_lhs, patch_assignment, try_builtin_assignconv,
5647         patch_binop, patch_array_ref, patch_newarray, build_labeled_block,
5648         patch_exit_expr, patch_exit_expr, patch_switch_statement,
5649         patch_try_statement, patch_synchronized_statement,
5650         patch_throw_statement, check_thrown_exceptions,
5651         patch_conditional_expr): Likewise.
5652
5653 Fri Dec 24 00:25:29 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5654
5655         * Makefile.in (LIBDEPS): Added gcc's errors.o
5656         (../jcf-dump$(exeext):): Link with gcc's errors.o
5657         (../gcjh$(exeext):): Likewise.
5658         * expr.c (expand_java_NEW): Layout the entire target type instead of
5659         laying out its methods only.
5660         (lookup_field): Layout the class after having loaded it.
5661         * java-tree.h (java_debug_context): Declared.
5662         * jcf-io.c (toplev.h): Included.
5663         (find_class): Removed assignment to jcf's outofsynch
5664         field. Force source file to be read if newer than its matching
5665         class file. Tweaked debug messages.
5666         * jcf-parse.c (jcf_out_of_synch): Deleted.
5667         (read_class): Call to jcf_out_of_synch removed.
5668         * jcf.h (typedef struct JCF): Field `outofsynch' deleted.
5669         (jcf_out_of_synch): Prototype deleted.
5670         * parse.h (struct parser_ctxt): `minus_seen', `java_error_flag',
5671         `deprecated' and `class_err': integer turned into bit fields.
5672         New bit fields `saved_data_ctx' and `saved_data'. Fixed comments.
5673         * parse.y (package_list): New global.
5674         (package_declaration:): Record newly parsed package name.
5675         (extra_ctxp_pushed_p): Static global deleted.
5676         (java_parser_context_save_global): Create buffer context for the
5677         purpose of saving globals, if necessary.
5678         (java_parser_context_restore_global): Pop context pushed for the
5679         purpose of saving globals, if necessary.
5680         (java_debug_context_do): New prototype and function.
5681         (java_debug_context): Likewise.
5682         (do_resolve_class): Use already parsed package names to qualify
5683         and lookup class candidate.
5684         (java_pre_expand_clinit): Removed unnecessary local variable.
5685
5686 1999-12-17  Tom Tromey  <tromey@cygnus.com>
5687
5688         * gjavah.c (decode_signature_piece): Print "::" in JArray<>.  This
5689         fixes PR gcj/119.
5690         (process_file): Use `\n\' at end of each line in string.
5691
5692 Thu Dec 16 00:09:45 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5693
5694         * expr.c (expand_invoke): Layout the loaded class before
5695         attempting to use it.
5696         (expand_java_field_op): Allow final field assignments to take
5697         place in $finit$.
5698         * typeck.c (convert): Return error_mark_node if expr is null.
5699
5700 1999-12-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5701
5702         * class.c (class_depth): Return -1 if the class doesn't load
5703         properly.
5704         * expr.c (can_widen_reference_to): Check for errors during depth
5705         computation and return 0 accordingly.
5706         * jcf-parse.c (parse_source_file): Call java_fix_constructors to
5707         create default constructors and add an other error check.
5708         * parse.h (java_fix_constructors): Prototyped.
5709         * parse.y (java_pre_expand_clinit): Likewise.
5710         (build_super_invocation): Re-prototyped to feature one argument.
5711         (java_check_circular_reference): Directly use `current'.
5712         (java_fix_constructors): New function.
5713         (java_check_regular_methods): Don't create default constructors
5714         here, but abort if none were found.
5715         (java_complete_expand_methods): Pre-process <clinit> calling
5716         java_pre_expand_clinit.
5717         (java_pre_expand_clinit): New function.
5718         (fix_constructors): build_super_invocation invoked with the
5719         current method declaration as an argument.
5720         (build_super_invocation): Use the context of the processed method
5721         decl argument instead of current_class.
5722         * typeck.c (lookup_java_method): Take WFLs in method names into
5723         account.
5724
5725 Tue Dec 14 14:20:16 1999  Per Bothner  <per@bothner.com>
5726
5727         * class.c (make_class_data): flag_keep_inline_functions to keep
5728         private methods in the method array.
5729
5730 1999-12-15  Anthony Green  <green@cygnus.com>
5731
5732         * check-init.c (check_init): Take into account both types of
5733         `throw's when checking for uninitialized variables.
5734
5735 Fri Dec 10 21:53:45 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5736
5737         * parse.y (java_complete_lhs): Force convertion of array
5738         dimensions to int_type_node, that's what runtime's ABI expects.
5739
5740 Fri Dec 10 16:13:48 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5741
5742         * parse.h (EXPR_WFL_QUALIFICATION): Temporary uses the third
5743         operand of a WFL, until the Java front-end gets fixed with regard
5744         to Mark Mitchell's gcc/tree.h patch (1999-12-04.)
5745
5746 1999-12-10  Andrew Haley  <aph@cygnus.com>
5747
5748         * parse.h (BUILD_THROW): Add support for sjlj-exceptions.
5749         decl.c (init_decl_processing): Add _Jv_Sjlj_Throw.
5750         expr.c (build_java_athrow): Add support for sjlj-exceptions.
5751         java-tree.h: Ditto.
5752         jcf-write.c: Ditto.
5753
5754 Wed Dec  8 15:33:26 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5755
5756         * expr.c (java_lang_expand_expr): Switch to permanent obstack
5757         before calling expand_eh_region_start and expand_start_all_catch.
5758         * except.c (expand_start_java_handler): Switch to permanent
5759         obstack before calling expand_eh_region_start.
5760         (expand_end_java_handler): Switch to permanent obstack before
5761         calling expand_start_all_catch.
5762
5763 1999-12-5  Anthony Green  <green@cygnus.com>
5764
5765         * decl.c (init_decl_processing): Mark throw_node as a noreturn
5766         function with side effects.
5767         (init_decl_processing): Mark all memory allocating DECLs with
5768         DECL_IS_MALLOC.
5769
5770 Wed Dec  1 04:25:06 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5771
5772         * except.c (expand_end_java_handler): Call
5773         expand_resume_after_catch and end_catch_handler.
5774
5775 Tue Nov 30 12:36:15 1999  Anthony Green  <green@cygnus.com>
5776
5777         * verify.c (verify_jvm_instructions): Create new return label
5778         chain if non existent (don't rely on the verified state of the jsr
5779         target.)
5780
5781 Tue Nov 30 12:28:34 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5782
5783         * jcf-write.c (generate_bytecode_insns): Fixed indentation for
5784         COMPOUND_EXPR and FIX_TRUNC_EXPR cases.
5785
5786         * parse.y (patch_assignment): Removed bogus final class test on
5787         lhs when checking on whether to emit an ArrayStoreException runtime
5788         check.
5789         * expr.c (expand_java_arraystore): Likewise.
5790
5791 1999-11-28 Anthony Green <green@cygnus.com>
5792
5793         * decl.c (find_local_variable): Reuse single slot decls when
5794           appropriate.
5795
5796 Wed Nov 24 17:33:26 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5797
5798         * jcf-parse.c (saw_java_source): Global variable removed.
5799         (read_class): Don't use `saw_java_source'. Added extra braces.
5800         (yyparse): Code setting `saw_java_source' removed.
5801
5802 1999-11-24  Mark Mitchell  <mark@codesourcery.com>
5803
5804         * except.c (emit_handlers): Zero catch_clauses after emitting them.
5805
5806 Tue Nov 23 17:29:40 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5807
5808         * verify.c (merge_type_state): Non verified subroutines being
5809         considered more than once to trigger passive type merge.
5810
5811 Tue Nov 23 10:55:18 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5812
5813         * parse.y (catch_clause_parameter:): Still set `$$' to NULL_TREE
5814         in case of error. Error message tuned.
5815
5816 1999-11-21  Anthony Green  <green@cygnus.com>
5817
5818         * constants.c (find_methodref_index): Unwrap method names before
5819         inserting them in the constant pool.
5820
5821         * jcf-parse.c (jcf_parse): Display `interface' when appropriate.
5822
5823         * class.c (assume_compiled_node): New typedef.
5824         (assume_compiled_tree): New static data.
5825         (find_assume_compiled_node): New function.
5826         (add_assume_compiled): New function.
5827         (assume_compiled): New function.
5828         * class.c (make_class_data): Use assume_compiled.
5829         (is_compiled_class): Use assume_compiled.
5830
5831         * java-tree.h (add_assume_compiled): Declare.
5832
5833         * lang.c (lang_decode_option): Parse new options.
5834
5835 Wed Nov 17 21:09:28 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5836
5837         * class.c (layout_class): Always convert TYPE_SIZE_UNIT to
5838         int_type_node: that's what `_Jv_AllocObject' expects.
5839
5840 Thu Nov 11 01:57:14 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5841
5842         * parse.y (lookup_method_invoke): Use lang_printable_name to
5843         reliably build the type name during error report. Fixes PR gcj/97.
5844
5845 1999-11-09  Tom Tromey  <tromey@cygnus.com>
5846
5847         * jcf-path.c: Include <sys/stat.h>.
5848         (jcf_path_init): Search for libjava.zip.  Fixes PR gcj/84.
5849         (DIR_UP): New macro.
5850
5851 Tue Nov  9 12:12:38 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5852
5853         * parse.y (source_end_java_method): Resume permanent allocation,
5854         reversing Apr 27 1998 patch.
5855         (patch_string_cst): Pop obstacks after having pushed the permanent
5856         ones.
5857
5858 1999-11-05  Tom Tromey  <tromey@cygnus.com>
5859
5860         * class.c (finish_class): Emit inlined methods if any native
5861         methods exist in the class.  Fixes PR gcj/85.
5862
5863 Thu Nov  4 16:27:01 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5864
5865         * parse.y (resolve_qualified_expression_name): Handle PLUS_EXPR.
5866         (qualify_ambiguous_name): Likewise.
5867
5868 Wed Nov  3 15:20:02 MST 1999  Godmar Back <gback@cs.utah.edu>
5869
5870         * typeck.c: (lookup_java_method):  search all inherited
5871         interfaces when looking up interface method.
5872
5873 Mon Nov  1 23:42:00 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5874
5875         * parse.y (method_header:): Issue error message for rule `type
5876         error'.
5877         (synchronized:): Error report when not using synchronized.
5878
5879 Mon Nov  1 01:32:48 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5880
5881         * parse.y (resolve_qualified_expression_name): Prevent `this' from
5882         being used before the superclass constructor has been called.
5883         (complete_function_arguments): Use CALL_EXPLICIT_CONSTRUCTOR_P
5884         instead of `CALL_THIS_CONSTRUCTOR_P'.
5885
5886 Sat Oct 30 21:35:13 1999  Todd T. Fries <todd@lighthouse.fries.net>
5887
5888         * check-init.c: Fix typo in comment.
5889
5890 Fri Oct 29 14:35:18 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5891
5892         * class.c (add_method_1): Set DECL_INLINE to 1 for private, static
5893         and final method.
5894
5895 Fri Oct 29 14:23:32 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5896
5897         * parse.y (expression_statement:): Call function to report
5898         improper invocation of a constructor.
5899         (parse_ctor_invocation_error): New function.
5900
5901 1999-10-26  Mark Mitchell  <mark@codesourcery.com>
5902
5903         * decl.c (poplevel): Don't set BLOCK_TYPE_TAGS or call
5904         remember_end_note.
5905
5906 1999-10-21  Tom Tromey  <tromey@cygnus.com>
5907
5908         * jvgenmain.c (main): _Jv_Compiler_Properties now an extern; set
5909         in generated `main'.
5910
5911 Thu Oct 21 01:27:31 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5912
5913         * parse.y (resolve_qualified_expression_name): Handle MODIFY_EXPR.
5914         (qualify_ambiguous_name): Likewise.
5915
5916 Wed Oct 20 01:41:47 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5917
5918         * parse.y (java_complete_tree): fold_constant_for_init to work on
5919         permanent_obstack.
5920         (java_complete_lhs): Likewise.
5921         (array_constructor_check_entry): Complete an initializer element
5922         on permanent_obstack.
5923
5924 1999-10-19  Tom Tromey  <tromey@cygnus.com>
5925
5926         * jcf-parse.c (parse_source_file): Call jcf_dependency_add_file.
5927         From Mike Moreton <mike@pillim.demon.co.uk>.
5928
5929 1999-10-15  Greg McGary  <gkm@gnu.org>
5930
5931         * java-tree.h (flag_bounds_check): Remove extern decl.
5932         * lang.c (flag_bounds_check): Remove global variable.
5933         (lang_f_options): Remove "bounds-check" entry.
5934         (lang_init_options): Default flag_bounds_check to "on".
5935
5936 1999-10-14  Tom Tromey  <tromey@cygnus.com>
5937
5938         * jvgenmain.c (usage): New function.
5939         (main): Use it.  Also, handle `-D' options.
5940         * jvspec.c (lang_specific_driver): Recognize -D.
5941         (jvgenmain_spec): Added `%{D*}' to jvgenmain invocation.
5942
5943         * jvspec.c (jvgenmain_spec): Use `%umain', not just `%u'.
5944
5945 1999-10-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5946
5947         * jcf-dump.c (print_constant, disassemble_method): Don't call a
5948         variadic function with a non-literal format string.
5949
5950         * parse-scan.y (report_main_declaration): Likewise.
5951
5952         * parse.h (ERROR_CAST_NEEDED_TO_INTEGRAL): Likewise.
5953
5954         * parse.y (read_import_dir, patch_assignment, patch_binop,
5955         patch_array_ref): Likewise.
5956
5957         * typeck.c (build_java_array_type): Likewise.
5958
5959         * verify.c (verify_jvm_instructions): Likewise.
5960
5961 Tue Oct 12 22:28:10 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5962
5963         * jcf-write.c (RELOCATION_VALUE_1): Fixed integer value from 0 to 1.
5964
5965 1999-10-07  Anthony Green  <green@cygnus.com>
5966
5967         * jcf-write.c (generate_classfile): Use UNSAFE_PUTx in cases
5968         where CHECK_PUT may fail for valid reasons.
5969
5970         * jcf-write.c (UNSAFE_PUT1, UNSAFE_PUT2, UNSAFE_PUT3,
5971         UNSAFE_PUTN): New macros.
5972
5973 1999-10-04  Tom Tromey  <tromey@cygnus.com>
5974
5975         * lex.h (BUILD_OPERATOR2): Return ASSIGN_ANY_TK in `lite' case as
5976         well.  Fixes Java PR gcj/59.
5977         * parse-scan.y (yyerror): Report errors.
5978
5979 Fri Sep 24 12:23:05 1999  Glenn Chambers  <GChambers@provsol.com>
5980
5981         * decl.c (insert_block): Remove unconditional `abort'.
5982
5983 Fri Sep 24 10:48:10 1999  Bernd Schmidt  <bernds@cygnus.co.uk>
5984
5985         * decl.c (builtin_function): No longer static.  New arg CLASS.  Arg
5986         FUNCTION_CODE now of type int.  All callers changed.
5987         Set the builtin's DECL_BUILT_IN_CLASS.
5988
5989 1999-09-23  Tom Tromey  <tromey@cygnus.com>
5990
5991         * jvspec.c (lang_specific_driver): Don't read spec file if
5992         -fsyntax-only given.
5993
5994 1999-09-22  Tom Tromey  <tromey@cygnus.com>
5995
5996         * lang-specs.h: Added `%(jc1)' to the jc1 spec.
5997
5998         * javaop.h (WORD_TO_FLOAT): Use `inline' unconditionally.
5999         (WORDS_TO_LONG): Likewise.
6000         (WORDS_TO_DOUBLE): Likewise.
6001
6002 Tue Sep 14 16:24:19 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6003
6004         * jcf-write.c (RELOCATION_VALUE_0): New macro.
6005         (RELOCATION_VALUE_1): Likewise.
6006         (emit_iinc, emit_reloc, push_constant1, push_constant2,
6007         push_in_const, push_long_const): Prototyped.
6008         (push_constant1): Argument `index' is of type HOST_WIDE_INT.
6009         (push_constant2): Likewise.
6010         (push_int_const): Cast find_constant1's integer arguments to `jword'.
6011         (find_constant_wide): Cast find_constant2's integer arguments to
6012         `jword'.
6013         (find_constant_index): Cast find_constant2's and find_constant2's
6014         integer arguments to `jword'.
6015         (emit_pop): Argument `value' is of type HOST_WIDE_INT.
6016         (emit_switch_reloc): Use RELOCATION_VALUE_0.
6017         (emit_if): Use RELOCATION_VALUE_1.
6018         (emit_goto): Likewise.
6019         (emit_jsr): Likewise.
6020         (generate_bytecode_insns): Use RELOCATION_VALUE_0. Cast second
6021         argument to push_long_const to HOST_WIDE_INT.
6022
6023 1999-09-15  Andreas Schwab  <schwab@suse.de>
6024
6025         * Makefile.in (parse.o): Depend on $(JAVA_TREE_H).
6026
6027 1999-09-20  Nick Clifton  <nickc@cygnus.com>
6028
6029         * lang.c (lang_decode_option): Extend comment.
6030
6031 Thu Sep 16 15:42:39 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6032
6033         * parse.y (java_method_add_stmt): Test against GET_CURRENT_BLOCK
6034         instead of fndecl.
6035
6036 1999-09-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6037
6038         * gjavah.c (get_field_name, print_method_info, print_include,
6039         add_namelet): Use xmalloc, not malloc.
6040
6041         * jcf-depend.c (add_entry): Likewise.  Use xstrdup, not strdup.
6042         (munge): Use xrealloc, not realloc, trust xrealloc to handle a
6043         NULL pointer.
6044
6045         * jcf-io.c (open_in_zip, find_class): Use xstrdup, not strdup.
6046
6047         * jcf-parse.c (jcf_out_of_synch, yyparse): Likewise.
6048
6049         * jcf-path.c (add_entry): Likewise.
6050
6051         * jcf.h (ALLOC, REALLOC): Use xmalloc/xrealloc, not malloc/realloc.
6052
6053         * jv-scan.c (xmalloc): Remove definition.
6054
6055         * jvgenmain.c (xmalloc): Likewise.
6056
6057         * jvspec.c (lang_specific_driver): Use xcalloc, not xmalloc/bzero.
6058
6059         * lex.c (java_store_unicode): Use xrealloc, not realloc.
6060
6061         * parse-scan.y: Use concat, not of xmalloc/assign/strcpy.  Use
6062         concat, not xmalloc/sprintf.
6063         (java_push_parser_context): Use xcalloc, not xmalloc/bzero.
6064         (xstrdup): Remove definition.
6065
6066         * parse.y (duplicate_declaration_error_p,
6067         constructor_circularity_msg, verify_constructor_circularity,
6068         check_abstract_method_definitions, java_check_regular_methods,
6069         java_check_abstract_methods, patch_method_invocation,
6070         check_for_static_method_reference, patch_assignment, patch_binop,
6071         patch_cast, array_constructor_check_entry, patch_return,
6072         patch_conditional_expr): Use xstrdup, not strdup.
6073
6074         * zextract.c (ALLOC): Use xmalloc, not malloc.
6075
6076 Sun Sep 12 23:30:09 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6077
6078         * Make-lang.in (jvspec.o): Depend on system.h and gcc.h.
6079
6080         * jvspec.c: Include gcc.h.  Don't include gansidecl.h.
6081         (do_spec, lang_specific_pre_link, lang_specific_driver,
6082         input_filename, input_filename_length): Don't declare.
6083         (main_class_name, jvgenmain_spec, lang_specific_driver):
6084         Constify a char*.
6085         (lang_specific_driver): All calls to the function pointer
6086         parameter now explicitly call `fatal'.
6087
6088 Sat Sep 11 16:46:44 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6089
6090         * parse.y (find_applicable_accessible_methods_list): Search
6091         abstract classes as interfaces.
6092
6093 Thu Sep  9 17:33:28 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6094
6095         * class.c (finish_class): We're now outside a valid method
6096         declaration. Tell the rest of gcc so.
6097
6098 1999-09-08  Bruce Korb  autogen@linuxbox.com
6099
6100         * Makefile.in: Give the gperf user a hint about why "gperf -F" fails.
6101
6102 1999-09-07  Tom Tromey  <tromey@cygnus.com>
6103
6104         * gjavah.c (add_class_decl): Generate include for gcj/array.h, not
6105         java-array.h.
6106         (decode_signature_piece): Don't emit "::" in JArray<>.
6107         (print_namelet): Only print trailing `;' when printing a class.
6108
6109 Fri Sep 10 10:32:32 1999  Bernd Schmidt  <bernds@cygnus.co.uk>
6110
6111         * java-tree.h: Delete declarations for all tree nodes now moved to
6112         global_trees.
6113         * decl.c: Delete their definitions.
6114
6115 1999-09-04  Mark Mitchell  <mark@codesourcery.com>
6116
6117         * Make-lang.in (jc1): Depend on ggc-callbacks.o.
6118         * Makefile.in (OBJS): Add ggc-callbacks.o.
6119         (OBJDEPS): Likewise.
6120
6121 1999-09-03  Tom Tromey  <tromey@cygnus.com>
6122
6123         * parse.y (strip_out_static_field_access_decl): Return operand if
6124         it satisfies JDECL_P.
6125
6126 1999-09-02  Tom Tromey  <tromey@cygnus.com>
6127
6128         * gjavah.c (decode_signature_piece): Emit "::" in JArray<>.
6129         Handle nested arrays, like `[[I'.
6130
6131 1999-09-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6132
6133         * class.c (finish_class): Remove unused parameter, all callers
6134         changed.
6135
6136         * expr.c (build_java_athrow): Change return type to void.
6137         (java_lang_expand_expr): Make sure each case in switch returns a
6138         value.
6139
6140         * java-tree.h (finish_class): Fix prototype to take void args.
6141
6142         * jcf-dump.c (usage): Mark with ATTRIBUTE_NORETURN.
6143         (main): Issue return from main, not exit.
6144
6145         * jcf-parse.c (parse_class_file): Fix call to `finish_class'.
6146
6147         * jcf.h (jcf_unexpected_eof): Mark with ATTRIBUTE_NORETURN.
6148
6149         * jv-scan.c (main): Issue return from main, not exit.
6150
6151         * parse.y (check_abstract_method_definitions,
6152         java_check_abstract_method_definitions): Add static prototypes.
6153         (java_complete_expand_methods): Fix call to `finish_class'.
6154
6155         * verify.c (verify_jvm_instructions): Initialize variables `oldpc'
6156         and `prevpc'.
6157
6158 1999-08-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6159
6160         * lang.c (language_string): Constify.
6161
6162 1999-08-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6163
6164         * Makefile.in (LIBS): Fix definition so we link with $(CLIB).
6165         Remove hacks for stuff which comes from libiberty.
6166
6167         * Make-lang.in: Likewise.
6168
6169 Mon Aug 30 16:41:41 1999  Hans-Peter Nilsson  <hp@axis.se>
6170
6171         * Makefile.in (xref.o): Depend on xref.c explicitly.
6172
6173 1999-08-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6174
6175         * java-tree.h (lang_printable_name): Constify a char*.
6176
6177         * lang.c (lang_printable_name): Likewise.
6178
6179 Fri Aug 27 23:31:57 1999  Jeffrey A Law  (law@cygnus.com)
6180
6181         * gjavah.c, jcf-write.c, verify.c: Do not use C++ style
6182         comments in C code.
6183
6184 1999-08-26  Tom Tromey  <tromey@cygnus.com>
6185
6186         * gjavah.c (print_cxx_classname): Print "::" before qualified
6187         name.
6188
6189 Thu Aug 26 09:10:58 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6190
6191         * parse.y (lookup_cl): Changed leading comment. Now does its best
6192         to set the column number.
6193         (qualify_ambiguous_name): Take WFL wrappers into account.
6194
6195 Wed Aug 25 15:37:15 1999  Gregg Townsend  <gmt@cs.arizona.edu>
6196
6197         * verify.c (verify_jvm_instructions): Don't check instruction
6198         validity beyond end of method.
6199
6200 1999-08-25  Tom Tromey  <tromey@cygnus.com>
6201
6202         * jvspec.c (lang_specific_driver): Correctly handle --help again.
6203
6204 1999-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6205
6206         * gjavah.c (print_name, print_base_classname, utf8_cmp,
6207         cxx_keyword_subst, generate_access, name_is_method_p,
6208         get_field_name, print_field_name, super_class_name, print_include,
6209         decode_signature_piece, print_class_decls, usage, help,
6210         java_no_argument, version, add_namelet, print_namelet): Add static
6211         prototype.
6212         (print_base_classname, utf8_cmp, cxx_keyword_subst,
6213         name_is_method_p): Constify a char*.
6214         (get_field_name): Likewise.  Prefer xstrdup over malloc/strcpy.
6215         Provide a final else clause in an if-else-if.
6216         (print_field_info): Add missing final arg in function call to
6217         `print_field_name'.
6218         (print_method_info, decompile_method, decode_signature_piece,
6219         print_c_decl, print_full_cxx_name, print_stub,
6220         print_mangled_classname, super_class_name, print_include,
6221         add_namelet, add_class_decl, print_class_decls, process_file,
6222         help): Constify a char*.
6223
6224         * jcf-write.c (jcf_handler, push_constant1, push_constant2,
6225         push_int_const, find_constant_wide, find_constant_index,
6226         push_long_const, field_op, maybe_wide, emit_dup, emit_pop,
6227         emit_iinc, emit_load_or_store, emit_load, emit_store, emit_unop,
6228         emit_binop, emit_reloc, emit_switch_reloc, emit_case_reloc,
6229         emit_if, emit_goto, emit_jsr, call_cleanups,
6230         make_class_file_name): Add static prototypes.
6231         (generate_bytecode_return, generate_bytecode_insns): Pass a
6232         NULL_PTR, not a NULL_TREE.
6233
6234         * jv-scan.c: Include "jcf.h".
6235         (main): Declare using DEFUN macro.
6236
6237         * jvspec.c (find_spec_file, lang_specific_pre_link,
6238         lang_specific_driver): Add prototypes.
6239         (find_spec_file): Constify a char*.
6240
6241         * keyword.gperf (hash, java_keyword): Add prototypes.
6242
6243         * lang.c (lang_print_error): Add static prototype.
6244         (lang_init): Prefer memcpy over bcopy to avoid casts.
6245
6246         * lex.c (yylex): Add static prototype.
6247
6248         * parse-scan.y: Include "lex.c" earlier.
6249
6250         * parse.h: Remove redundant declaration for `yylex'.
6251
6252         * parse.y (java_decl_equiv, binop_compound_p, search_loop,
6253         labeled_block_contains_loop_p): Add static prototypes.
6254         (not_accessible_p): Make static to match prototype.
6255
6256         * verify.c (start_pc_cmp): Don't needlessly cast away const.
6257
6258 Sun Aug 22 11:07:41 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6259
6260         * parse.y (check_method_redefinition): Changed leading comment.
6261         (check_abstract_method_definitions): New function.
6262         (java_check_abstract_method_definitions): New function.
6263         (java_check_regular_methods): Call it.
6264         (verify_constructor_super): Fixed indentation.
6265         (lookup_method_invoke): Likewise.
6266
6267 Thu Aug 19 10:26:18 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6268
6269         * parse.y (method_header): Return a null pointer if the current
6270         class node is null.
6271         (finish_method_declaration): Return if the current function decl
6272         is null.
6273         (source_start_java_method): Likewise.
6274         (java_method_add_stmt): Likewise.
6275
6276 Wed Aug 18 13:17:15 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6277
6278         * class.c (emit_register_class): Removed unnecessary call to
6279         start_sequence.
6280         * parse.y (labeled_block_contains_loop_p): Removed unused local
6281         variable.
6282
6283 Tue Aug 17 22:51:44 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6284
6285         * parse.y (java_refold): Added prototype.
6286
6287 Tue Aug 17 21:48:41 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6288
6289         * parse.y (BINOP_COMPOUND_CANDIDATES): New macro.
6290         (java_stabilize_reference): Removed unnecessary `else'.
6291         (java_complete_lhs): Set flag to remember boolean. Call
6292         java_refold. Added comments.
6293         (java_decl_equiv): New function.
6294         (binop_compound_p): Likewise.
6295         (java_refold): Likewise.
6296         (patch_unaryop): Striped static field access assigned to decl and
6297         op. Changed promotion scheme for ++/-- operators.
6298         (search_loop): New function.
6299         (labeled_block_contains_loop_p): Likewise.
6300         (patch_loop_statement): Call labeled_block_contains_loop_p. Added
6301         comment.
6302         (patch_bc_statement): Call search_loop. Fixed comment.
6303
6304 1999-08-14  Anthony Green  <green@cygnus.com>
6305
6306         * expr.c (java_lang_expand_expr): Mark static array data as
6307         referenced.
6308
6309 Tue Aug 10 00:28:31 1999  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
6310
6311         * jvgenmain.c (main): NUL-terminate name_obstack.
6312
6313 1999-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6314
6315         * check-init.c (check_bool2_init, done_alternative): Add static
6316         prototypes.
6317
6318         * class.c (add_interface_do, maybe_layout_super_class): Likewise.
6319         (add_method, build_utf8_ref, build_class_ref,
6320         append_gpp_mangled_type, layout_class_method): Constify a char*.
6321
6322         * decl.c (push_promoted_type, make_binding_level): Add static
6323         prototypes.
6324         (push_promoted_type, pushdecl): Constify a char*.
6325
6326         * except.c (find_handler_in_range, link_handler,
6327         check_start_handlers): Add static prototypes.
6328
6329         * expr.c (process_jvm_instruction): Constify a char*.
6330
6331         * gjavah.c (main): Constify a char*.
6332
6333         * java-tree.h (verify_jvm_instructions, process_jvm_instruction):
6334         Constify a char*.
6335
6336         * jcf-depend.c (free_entry, add_entry, munge, print_ents): Add
6337         static prototypes.
6338         (add_entry, jcf_dependency_set_target, jcf_dependency_add_target,
6339         munge, print_ents): Constify a char*.
6340
6341         * jcf-dump.c (disassemble_method): Constify a char*.
6342         (print_constant_pool, print_exception_table): Add static prototypes.
6343         (print_constant, print_exception_table, main, disassemble_method):
6344         Constify a char*.
6345
6346         * jcf-io.c (find_classfile, find_class): Likewise.
6347
6348         * jcf-parse.c (JPOOL_UTF_DATA, find_in_current_zip): Likewise.
6349         (set_source_filename, predefined_filename_p): Add static prototypes.
6350         (set_source_filename, get_constant, get_class_constant,
6351         find_in_current_zip): Constify a char*.
6352
6353         * jcf-path.c (free_entry, append_entry, add_entry, add_path): Add
6354         static prototypes.
6355         (add_entry, add_path, jcf_path_classpath_arg,
6356         jcf_path_CLASSPATH_arg, jcf_path_include_arg): Constify a char*.
6357
6358         * jcf-reader.c (get_attribute, jcf_parse_preamble,
6359         jcf_parse_constant_pool, jcf_parse_class, jcf_parse_fields,
6360         jcf_parse_one_method, jcf_parse_methods,
6361         jcf_parse_final_attributes): Add static prototypes.
6362         (get_attribute): Constify a char*.
6363
6364         * jcf.h (find_class, find_classfile, jcf_dependency_set_target,
6365         jcf_dependency_add_target, jcf_path_classpath_arg,
6366         jcf_path_CLASSPATH_arg, jcf_path_include_arg): Constify a char*.
6367
6368         * jv-scan.c (main): Constify a char*.
6369         (gcc_obstack_init): Add prototype arguments.
6370
6371         * jvgenmain.c (gcc_obstack_init): Likewise.
6372         (main): Constify a char*.
6373
6374         * lang.c (put_decl_string, put_decl_node, java_dummy_print): Add
6375         static prototypes.
6376         (put_decl_string, lang_print_error): Constify a char*.
6377         (lang_init): Remove redundant extern prototype.
6378
6379         * mangle.c (emit_unicode_mangled_name): Constify a char*.
6380
6381         * typeck.c (convert_ieee_real_to_integer, parse_signature_type):
6382         Add static prototypes.
6383         (get_type_from_signature): Constify a char*.
6384
6385         * verify.c (check_pending_block, type_stack_dup, start_pc_cmp ):
6386         Add static prototypes.
6387         (start_pc_cmp): Prefer PTR over GENERIC_PTR.
6388         (verify_jvm_instructions): Constify a char*.
6389
6390         * xref.c (xref_flag_value): Likewise.
6391
6392         * xref.h (xref_flag_value): Likewise.
6393
6394         * zextract.c (makeword, makelong): Add static prototypes.
6395         (makeword, makelong): Constify a uch*.
6396
6397 1999-08-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6398
6399         * lang.c (java_dummy_print): Constify a char*.
6400         (lang_print_error): Likewise.
6401         (lang_init): Remove redundant prototype for `print_error_function'.
6402         (lang_init_source): Likewise.
6403         (lang_identify): Constify a char*.
6404
6405 1999-08-09  Tom Tromey  <tromey@cygnus.com>
6406
6407         * javaop.h (WORD_TO_FLOAT): only inline if building with gcc.
6408         (WORDS_TO_LONG): Likewise.
6409         (WORDS_TO_DOUBLE): Likewise.
6410
6411 1999-08-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6412
6413         * Makefile.in (lang.o): Depend on $(RTL_H) $(EXPR_H).
6414
6415         * expr.c (java_stack_pop, java_array_data_offset,
6416         build_java_throw_out_of_bounds_exception, case_identity,
6417         build_java_check_indexed_type): Add static prototypes.
6418         (linenumber_table, expand_invoke, expand_java_field_op,
6419         build_primtype_type_ref, expand_byte_code): Constify a char*.
6420
6421         * java-tree.h (build_primtype_type_ref, linenumber_table):
6422         Constify a char*.
6423         (java_lang_expand_expr): Add prototype.
6424
6425         * lang.c: Include rtl.h and expr.h.  Remove extern prototype for
6426         `java_lang_expand_expr'.
6427
6428         * lex.c (java_lex_error): Constify a char*.
6429         (java_get_unicode, java_read_char, java_allocate_new_line,
6430         java_unget_unicode, java_sneak_unicode): Prototype.
6431
6432         * parse-scan.y (current_class, package_name, method_declarator,
6433         report_class_declaration, yyerror): Constify a char*.
6434
6435         * parse.h (java_report_errors): Prototype.
6436         (yyerror): Constify a char*.
6437
6438         * parse.y (classitf_redefinition_error, check_modifiers,
6439         parse_jdk1_1_error, lookup_package_type,
6440         lookup_package_type_and_set_next, get_printable_method_name,
6441         purify_type_name): Constify a char*.
6442         (build_super_invocation, maybe_generate_finit,
6443         verify_constructor_super, parser_add_interface,
6444         add_superinterfaces, jdep_resolve_class, note_possible_classname,
6445         java_complete_expand_methods, java_expand_finals,
6446         cut_identifier_in_qualified, java_stabilize_reference,
6447         do_unary_numeric_promotion, operator_string, do_merge_string_cste,
6448         merge_string_cste): Prototype.
6449         (single_type_import_declaration, yyerror,
6450         variable_redefinition_error, build_array_from_name,
6451         build_unresolved_array_type, check_class_interface_creation,
6452         resolve_class, complete_class_report_errors,
6453         note_possible_classname, read_import_dir,
6454         find_in_imports_on_demand, resolve_package, fix_constructors,
6455         check_deprecation, lookup_method_invoke,
6456         maybe_build_primttype_type_ref, array_constructor_check_entry):
6457         Constify a char*.
6458         (java_complete_expand_methods, java_expand_finals): Make static.
6459         (convert_narrow): Remove static prototype.
6460
6461 Tue Aug  3 20:21:20 1999  J"orn Rennecke <amylaar@cygnus.co.uk>
6462
6463         * Makefile.in (decl.o): Depends on $(srcdir)/../defaults.h.
6464
6465 1999-08-02  Richard Henderson  <rth@cygnus.com>
6466
6467         * decl.c: Include defaults.h instead of expr.h.
6468         * parse.y: Likewise.
6469
6470 1999-08-02  Jakub Jelinek  <jj@ultra.linux.cz>
6471
6472         * java/decl.c (start_java_method): Change all uses of
6473         PROMOTE_PROTOTYPES, so that it tests it as a C expression.
6474         Ensure expr.h is included.
6475         * java/expr.c (pop_arguments): Ditto.
6476         * java/parse.y (expand_start_java_method): Ditto.
6477
6478 1999-08-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6479
6480         * Makefile.in (ALL_CFLAGS): Add '-W -Wall'.
6481
6482 1999-07-31  Bernd Schmidt  <bernds@cygnus.co.uk>
6483
6484         * decl.c: Include "function.h".
6485         * except.c: Likewise.
6486         * parse.y: Likewise.
6487         * Makefile.in: Update dependencies.
6488
6489 1999-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6490
6491         * expr.c (build_java_soft_divmod): Provide a default case in switch.
6492         (java_lang_expand_expr): Mark parameters `target', `tmode' and
6493         `modifier' with ATTRIBUTE_UNUSED.
6494
6495         * gjavah.c (process_file): Add braces around ambiguous `else'.
6496
6497         * jcf-dump.c (print_access_flags, localvar_free): Change return
6498         type to void.
6499
6500         * parse.y (java_complete_expand_method): Initialize variable
6501         `exception_copy'.
6502         (resolve_qualified_expression_name): Likewise for `field_decl'.
6503         (patch_method_invocation): Likewise for `class_to_search'.
6504         (qualify_ambiguous_name): Likewise for `name' and `ptr_type'.
6505         (patch_assignment): Likewise for `lhs_type'.
6506
6507         * verify.c (verify_jvm_instructions): Remove unused variable
6508         `caller'.
6509
6510 1999-07-25  Richard Henderson  <rth@cygnus.com>
6511
6512         * decl.c (va_list_type_node): New.
6513
6514 1999-07-25  Anthony Green  <green@cygnus.com>
6515
6516         * gjavah.c (print_stub): New function.
6517         (METHOD_IS_NATIVE): New macro.
6518         (print_mangled_classname): Make static.
6519         (HANDLE_END_FIELD): Don't emit fields during stub generation.
6520         (process_file): Perform stub generation.
6521         (HANDLE_METHOD): Don't emit class decls during stub
6522         generation.
6523         (HANDLE_END_METHOD): Take into account stub generation.
6524         (print_method_info): Handle stub generation.
6525         (print_stub): New function.
6526         (print_cxx_classname): Make signature consistant with others.
6527         (help): Describe -stubs option.
6528         (main): Create stub file.
6529         (version): Use version.c.
6530         (print_full_cxx_name): New function.
6531         (print_c_decl): Use print_full_cxx_name.
6532
6533 Thu Jul 22 12:41:12 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6534
6535         * check-init.c (check_init): Handle MAX_EXPR.
6536
6537 1999-07-15  Andrew Haley  <aph@cygnus.com>
6538
6539         * lang.c (flag_use_divide_subroutine): New variable.
6540         * typeck.c: (convert_ieee_real_to_integer): Bounds check
6541         fp-to-integer conversion.
6542         (convert): Call convert_ieee_real_to_integer when flag_fast_math
6543         is not set.
6544
6545         * expr.c (build_java_soft_divmod): New function.
6546         (build_java_binop): Call build_java_soft_divmod if
6547         flag_use_divide_subroutine is set.
6548         * decl.c: soft_idiv_node, soft_irem_node, soft_ldiv_node, tree
6549         soft_lrem_node: new builtin functions.
6550         (init_decl_processing) Initialize the new builtins.
6551         * java-tree.h soft_idiv_node, soft_irem_node, soft_ldiv_node, tree
6552         soft_lrem_node: new builtin functions.
6553         (build_java_soft_divmod): New function.
6554         * parse.y: Call build_java_soft_divmod if
6555         flag_use_divide_subroutine is set.
6556         * parse.c: Rebuilt.
6557
6558         * jvspec.c (lang_specific_driver): Always allow an extra arg (for
6559         a --specs= arg) even if not linking.
6560         * lang-options.h (DEFINE_LANG_NAME ("Java")): Add
6561         -fuse-divide-subroutine
6562
6563 Tue Jul 20 13:20:05 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6564
6565         * parse.y (resolve_and_layout): Check methods only once.
6566         (resolve_qualified_expression_name): Verify thrown exceptions
6567         compatibility.
6568         (check_thrown_exceptions): Reject exceptions thrown in
6569         initializer. Error message tuned.
6570
6571 1999-07-14  Andrew Haley  <aph@cygnus.com>
6572
6573         * expr.c (expand_expr): Do not return the last statement in a
6574         block as the block's value.
6575
6576 Sat Jul  3 22:26:32 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6577
6578         * expr.c (force_evaluation_order): Save the COMPOUND_EXPR'ed
6579         CALL_EXPR, to avoid order of evaluation changes.
6580
6581 Fri Jul  2 17:44:08 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6582
6583         * parse.y (qualify_ambiguous_name): Do not use
6584         IDENTIFIER_LOCAL_VALUE when name is a STRING_CST.
6585
6586 Thu Jul  1 23:31:16 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6587
6588         * check-init.c (check_init): Handle MAX_EXPR.
6589         * expr.c (force_evaluation_order): Force method call arguments to
6590         be evaluated in left-to-right order.
6591         * parse.y (qualify_ambiguous_name): Loop again to qualify
6592         NEW_ARRAY_EXPR properly.
6593
6594 Wed Jun 30 17:27:58 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6595
6596         * parse.y (patch_invoke): Resolve unresolved invoked method
6597         returned type.
6598         (qualify_ambiguous_name): STRING_CST to qualify expression for
6599         type name resolution.
6600
6601 1999-06-24  Andrew Haley  <aph@cygnus.com>
6602
6603         * class.c (finish_class): Whenever a deferred method is
6604         output, rescan the list of methods to see if a new candidate for
6605         output can be found.
6606
6607 1999-06-28  Tom Tromey  <tromey@cygnus.com>
6608
6609         * jvspec.c (lang_specific_driver): Recognize --help.
6610
6611 Fri Jun 25 13:35:19 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6612
6613         * parse.y (resolve_package): Fixed bogus return statement.
6614         (patch_method_invocation): Resolve method invocation beginning with
6615         a package name qualifier.
6616
6617 1999-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6618
6619         * Make-lang.in (java.stage1): Depend on stage1-start.
6620         (java.stage2): Likewise for stage2-start.
6621         (java.stage3): Likewise for stage3-start.
6622         (java.stage4): Likewise for stage4-start.
6623
6624 Thu Jun 24 13:12:15 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6625
6626         * parse.y (java_complete_lhs): When doing cross referencing, don't
6627         try to keep file location on a WFL expanded as a CALL_EXPR.
6628
6629 Wed Jun 23 14:37:15 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6630
6631         * parse.y (finish_method_declaration): Insert a RETURN_EXPR when
6632         compiling to class file a void method with an empty method body.
6633         As a side effect, the bytecode backend will generate the
6634         appropriate `return' instruction.
6635
6636 Tue Jun 22 20:43:49 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6637
6638         * parse.y (lookup_package_type_and_set_next): New function prototype.
6639         (resolve_package): Search current and imported packages.
6640         (lookup_package_type_and_set_next): New function.
6641
6642 1999-06-22  Andrew Haley  <aph@cygnus.com>
6643
6644         * verify.c (verify_jvm_instructions): Check for pending blocks
6645         before invalid PC test and opcode switch, not after.
6646
6647 1999-06-21  Andrew Haley  <aph@cygnus.com>
6648
6649         * except.c (find_handler_in_range): The upper limit for exception
6650         ranges is exclusive, not inclusive: (start <= pc < end).
6651         (link_handler): find child pointer which points to outer by
6652         searching sibling list: previous code incorrectly assumed that
6653         outer->outer->first_child must point to outer.
6654         * verify.c (verify_jvm_instructions): FIXME added to code for
6655         `athrow'.
6656         (verify_jvm_instructions): Do not assume that the last block
6657         processed in a subroutine is a block which ends with a `ret'
6658         instruction.  With some control flows it is possible that the last
6659         block ends with an `athrow'.
6660
6661 Mon Jun 14 13:13:39 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6662
6663         * parse.y (qualify_ambiguous_name): Reorganized the post
6664         evaluation of non WFL leading expression nodes.
6665
6666 Fri Jun 11 21:37:18 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6667
6668         * parse.y (qualify_ambiguous_name): Handle ARRAY_REF after
6669         CONVERT_EXPR.
6670
6671 Thu Jun 10 22:26:17 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6672
6673         * parse.y (qualify_ambiguous_name): Handle qualified expression
6674         beginning with a STRING_CST.
6675
6676 Thu Jun 10 20:27:25 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6677
6678         * parse.y (register_fields): Set DECL_INITIAL on both
6679         pre-initialized static and public fields.
6680         (resolve_field_access): Static field access expressions to always
6681         use pointer types.
6682         (qualify_ambiguous_name): Work out buried CALL_EXPR for proper
6683         qualification. CONVERT_EXPR to be resolved as an expression name.
6684         (java_complete_lhs): Identify and access qualified final
6685         initialized field in switch statement case expression.
6686         (fold_constant_for_init): Pre-initialized field decl constant to
6687         be folded.
6688
6689 Mon Jun  7 16:09:51 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6690
6691         * parse.y (note_possible_classname): Mark returned node with
6692         QUALIFIED_P only if the original class name contained a '/'.
6693
6694 Sat Jun  5 11:46:59 1999  Anthony Green  <green@cygnus.com>
6695
6696         * Make-lang.in (gcjh): More parallel build fixes.
6697
6698 1999-06-03  Mike Stump  <mrs@wrs.com>
6699
6700         * Make-lang.in (JCF_DUMP_SOURCES, jvgenmain): Fix parallel builds.
6701
6702 Wed Jun  2 10:44:38 1999  Anthony Green  <green@cygnus.com>
6703
6704         * except.c (link_handler): Chain exception handlers in order.
6705
6706 Wed Jun  2 10:41:24 1999  Anthony Green  <green@cygnus.com>
6707
6708         * expr.c (expand_byte_code): Fill unreachable bytecode regions
6709         with nops and process as usual in order to always set correct EH
6710         ranges.  Emit detailed warnings about unreachable bytecodes.
6711
6712 Wed Jun  2 10:35:13 1999  Anthony Green  <green@cygnus.com>
6713
6714         * class.c (build_utf8_ref): Mark cinit and utf8 tree nodes as
6715         constant.
6716
6717 Fri May 28 18:22:45 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6718
6719         * parse.y (lookup_field_wrapper): Unified returned value to NULL
6720           or the searched field decl.
6721
6722 Fri May 28 11:34:05 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6723
6724         * parse.y (fold_constant_for_init): Convert numerical constant
6725         values to the type of the assigned field.
6726
6727 Thu May 27 19:57:40 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6728
6729         * expr.c (lookup_field): Relaxed the test on class loading error
6730         detection.
6731         * parse.y (fold_constant_for_init): Enabeled old code.
6732
6733 Wed May 26 18:06:02 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6734
6735         * parse.y (valid_ref_assignconv_cast_p): Let `_Jv_CheckCast'
6736         decide the validity of the cast of a java.lang.Cloneable reference
6737         to an array.
6738         (patch_conditional_expr): Fixed first argument passed to
6739         binary_numeric_promotion.
6740
6741 Wed May 26 15:33:06 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6742
6743         * parse.y (qualify_ambiguous_name): Take into account that a
6744         CONVERT_EXPR might specify a type as a WFL.
6745
6746 Tue May 25 15:06:13 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6747
6748         * parse.y (patch_assignment): Save the rhs before using it as an
6749         argument to _Jv_CheckArrayStore.
6750
6751 Tue May 25 11:23:59 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6752
6753         * lex.c (java_parse_doc_section): Fixed `tag' buffer size.
6754
6755 Mon May 24 13:26:00 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6756
6757         * lex.c (java_lex): Accepts `+' or `-' after the beginning of a
6758         floating point litteral only when the exponent indicator has been
6759         parsed.
6760
6761 Sat May 22 13:54:41 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6762
6763         * parse.y (formal_parameter:): Construct argument tree list
6764         element even if a yet unsupported final parameter was encountered.
6765
6766 Tue May 18 00:28:58 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6767
6768         * parse.y (finish_method_declaration): Issue errors for native or
6769         abstract methods declared with a method body, as well as for non
6770         native or non abstract methods with no method body.
6771
6772 1999-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6773
6774         * class.c (build_utf8_ref): Initialize variable `field'.
6775
6776         * decl.c (init_decl_processing): Initialize variable `field'.
6777
6778         * expr.c (build_known_method_ref): Mark parameters `method_type',
6779         `method_signature' and `arg_list' with ATTRIBUTE_UNUSED.
6780         (process_jvm_instruction): Likewise for parameter `length'.
6781
6782         * jvspec.c (lang_specific_driver): Mark variables `saw_math',
6783         `saw_libc', `saw_gc', `saw_threadlib' and `saw_libgcj' with
6784         ATTRIBUTE_UNUSED.
6785
6786         * parse.y (maybe_generate_clinit): Remove unused variable
6787         `has_non_primitive_fields'.
6788         (find_in_imports_on_demand): Initialize variables `node_to_use'
6789         and `cl'.
6790         (patch_binop): Likewise for variable `prom_type'.
6791         (patch_unaryop): Likewise for variable `prom_type'.
6792
6793         * verify.c (verify_jvm_instructions): Likewise for variable `last'.
6794
6795         * xref.c (xref_table): Add missing initializer.
6796
6797 1999-05-14  Tom Tromey  <tromey@cygnus.com>
6798
6799         * java-except.h (struct eh_range): Removed unused `next' member.
6800         * verify.c (verify_jvm_instructions): Call check_nested_ranges
6801         after adding all exception handlers.  Sort exception ranges in
6802         order of start PC.
6803         (struct pc_index): New structure.
6804         (start_pc_cmp): New function.
6805         * except.c (add_handler): Return `void'.  Don't call link_handler;
6806         instead construct an ordinary linked list and do range
6807         coalescing.
6808         (check_nested_ranges): New function.
6809         (link_handler): Changed interface to allow merging of eh_ranges.
6810         Split overlapping ranges.  Return `void'.
6811
6812 Mon May 17 19:20:24 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6813
6814         * parse.y (constructor_block_end:): New rule, tagged <node>.
6815         (constructor_body:): Use `constructor_block_end' instead of
6816         `block_end'.
6817
6818 Mon May 17 18:01:40 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6819
6820         * parse.y (statement_nsi:): Pop `for' statement block.
6821         (java_complete_lhs): Labeled blocks containing no statement are
6822         marked as completing normally.
6823
6824 Fri May 14 12:31:08 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6825
6826         * xref.c (xref_set_current_fp): New function, defined.
6827         * xref.h (xref_set_current_fp): New function, prototyped.
6828
6829 Fri May 14 11:57:54 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6830
6831         * check-init.c (check_init): Take into account that
6832         LABELED_BLOCK_STMT can be empty.
6833
6834 Thu May 13 18:30:48 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6835
6836         * parse.y (java_check_regular_methods): Warning check on not
6837         overriding methods with default access in other packages does not
6838         apply to `<clinit>'.
6839         (java_complete_lhs): If block body is an empty_stmt_node, replace
6840         it by NULL_TREE. This prevents gcc from generating an irrelevant
6841         warning.
6842
6843 Thu May 13 13:23:38 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6844
6845         * check-init.c (check_init): Removed code accepting to see things
6846         falling through default:, when doing xrefs.
6847         * java-tree.h (do_not_fold): New global variable, declared.
6848         * parse.y (do_not_fold): New global variable, defined.
6849         (java_complete_expand_method): Set `do_not_fold' to the value of
6850         `flag_emit_xref'. When doing xrefs: copy the thrown exceptions,
6851         and reinstall them after them have been purged; do not check for
6852         initializations; do not issue missing return errors.
6853         (java_complete_lhs): Do not attempt to patch INSTANCEOF_EXPR nodes
6854         when doing xrefs.
6855         (patch_binop): Skip the fold part when doing xrefs.
6856         (build_string_concatenation): Skip the concatenation part when
6857         doing xrefs.
6858         (patch_synchronized_statement): Do not generate a try-finally when
6859         doing xrefs.
6860         (patch_throw_statement): When doing xrefs, do not call BUILD_THROW
6861         and keep the location where the throw was seen.
6862         * typeck.c (convert): When `do_not_fold' is set, do not attempt
6863         any treatment on the converted node an simply return a NOP_EXPR of
6864         the targeted type.
6865         * xref.c (xref_get_data): New function, defined.
6866         * xref.h (xref_get_data): New function, declared.
6867         (XREF_GET_DATA): Use xref_get_data.
6868
6869 1999-05-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6870
6871         * gjavah.c (print_include): Cast the result of `strlen' to int
6872         when comparing against a signed value.
6873         (add_namelet): Likewise.
6874
6875 1999-05-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6876
6877         * expr.c (expand_invoke): Mark parameter `nargs' with
6878         ATTRIBUTE_UNUSED.
6879         (PRE_LOOKUP_SWITCH): Likewise for variable `match'.
6880
6881         * jcf-io.c (jcf_unexpected_eof): Mark parameter `count' with
6882         ATTRIBUTE_UNUSED.
6883
6884         * jcf-reader.c (get_attribute): Cast a value to long
6885         when comparing against a signed expression.  Likewise.
6886
6887         * lex.h: Never define HOST_WIDE_INT, HOST_BITS_PER_WIDE_INT or
6888         HOST_BITS_PER_CHAR.
6889
6890 1999-05-11  Andrew Haley  <aph@cygnus.com>
6891
6892         * parse.y (source_end_java_method): If the current method contains
6893         any exception handlers, force asynchronous_exceptions: this is
6894         necessary because signal handlers in libjava may throw exceptions.
6895         * decl.c (end_java_method): Ditto.
6896
6897 1999-05-11  Tom Tromey  <tromey@cygnus.com>
6898
6899         * Make-lang.in (jvspec.o): Don't define WITH_THREAD_x or WITH_GC_x
6900         flags.
6901         * jvspec.c (THREAD_NAME): Removed.
6902         (GC_NAME): Likewise.
6903         (MATHLIB): Likewise.
6904         (WITHLIBC): Likewise.
6905         (GCLIB): Likewise.
6906         (THREADLIB): Likewise.
6907         (MATH_LIBRARY): Likewise.
6908         (lang_specific_driver): Don't add `-l' options to command line.
6909         Instead, add a single --specs option.  Recognize `-L' options and
6910         use them to search for spec file.
6911         (find_spec_file): New function.
6912         (SPEC_FILE): New define.
6913
6914 Tue May 11 11:46:36 1999  Dave Brolley  <brolley@cygnus.com>
6915
6916         * lang-options.h: -MD, -MMD, -M and -MM not needed here for
6917         cpplib-enabled build.
6918
6919 1999-05-05  Per Bothner  <bothner@cygnus.com>
6920
6921         * class.c (make_field_value):  DECL_INITIAL may be a string literal;
6922         temporarily zero it while calling rest_of_decl_compilation.
6923
6924         * java-tree.h (string_ptr_type_node):  Add declaration.
6925         * decl.c:  Define and initialize string_ptr_type_node.
6926         * parse.y (patch_string_cst):  Use string_ptr_type_node.
6927
6928         * parse.h (LOOP_HAS_LABEL_P, LOOP_HAS_LABEL_SKIP_P):  Removed.
6929         * parse.y (for_statement):  Now unconditionally exit_block.
6930         (finish_labeled_statement):  No longer exit_block if for-loop.
6931         (patch_loop_statement):  Check harder if the loop is already labeled.
6932
6933         * parse.y (patch_initialized_static_field):  Removed function.
6934         (maybe_generate_clinit):  Removed special handling for interfaces.
6935         (java_complete_expand_methods):  Do a preliminary java_complete_tree
6936         on <clinit> to determine if it can be removed.
6937         (java_complete_expand_method):  Remove special handling for <clinit>.
6938         (java_complete_lhs):  For BLOCK and EXPR_WITH_FILE_LOCATION
6939         optimize if we get back empty_stmt_node.
6940         For MODIFY_EXPR, re-do checking of static initializers.
6941         (fold_constant_for_init):  Don't return immediate if VAR_DECL.
6942         For VAR_DECL, pass correct context.
6943
6944         * verify.c (verify_jvm_instructions):  Better error messages.
6945
6946 1999-05-03  Tom Tromey  <tromey@cygnus.com>
6947
6948         * parse-scan.y (interface_declaration): Call
6949         report_class_declaration for interfaces.
6950
6951 1999-04-30 20:54 -0400  Zack Weinberg  <zack@rabi.columbia.edu>
6952
6953         * Makefile.in: Remove -v from bison command lines.
6954
6955 Fri Apr 30 17:54:40 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6956
6957         * check-init.c (check_init): Exclude a case of error when doing
6958         xrefs.
6959         * class.c (layout_class_method): Don't generate the error message
6960         twice when compiling from source.
6961         * lang-options.h: Added `-Wredundant-modifers' and
6962         `-Wunusupported-jdk11' flags and help text.
6963         * lang.c (lang_decode_option): Added support for
6964         `-Wunsupported-jdk11' and `-Wredundant-modifiers'.
6965         flag_static_local_jdk11 and flag_redundant set accordingly.
6966         * lex.c (java_lex): Call BUILD_OPERATOR on CCB_TK.
6967         * parse.h (EXPR_WFL_ADD_COL): New macro.
6968         (DECL_END_SOURCE_LINE): Likewise.
6969         (DECL_INHERITED_SOURCE_LINE): Likewise.
6970         * parse.y (static_ref_err): New function, prototyped.
6971         (CCB_TK): Now tagged <operator>.
6972         (class_body:): Remember the location of the closing '}' of a class
6973         definition when doing xrefs.
6974         (block:): Likewise.
6975         (block_end:): Likewise.
6976         (create_class): Remember the location of the inherited class
6977         identifier when doing xrefs.
6978         (register_fields): Added test on first operand of `init' before
6979         testing it TREE_CODE.
6980         (method_header): Store the location of the class identifier in the
6981         class decl when doing xrefs.
6982         (finish_method_declaration): Don't combine first/last method line
6983         when doing xref.
6984         (java_check_regular_methods): Warning check on not overriding
6985         methods with default access on other packages move before check on
6986         static methods. Initialization of `aflags' also moved up.
6987         (resolve_expression_name): Call static_ref_err to report the error.
6988         (static_ref_err): New function, implemented.
6989         (resolve_field_access): Returned simplified static field access
6990         when doing xrefs.
6991         (resolve_qualified_expression_name): Check for illegal use of
6992         static fields in a non static context. Call static_ref_err to
6993         report error in various places.
6994         (java_complete_tree): Do not fold initialized static fields when
6995         doing xrefs.
6996         (java_complete_lhs): Likewise.
6997
6998 1999-04-29  Anthony Green  <green@cygnus.com>
6999
7000         * expr.c (generate_name): Use ASM_GENERATE_INTERNAL_LABEL to
7001         create internal labels.
7002         (lookup_label): Ditto.
7003
7004 Sat Apr 24 16:50:19 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7005
7006         * class.c (layout_class_method): Generate <clinit>'s rtl for
7007         interfaces.
7008         * decl.c (complete_start_java_method): Don't call _Jv_InitClass
7009         for interfaces' <clinit>.
7010         * expr.c (lookup_field): Search for fields in interfaces.
7011         (expand_invoke): Fixed indentation.
7012         (expand_java_field_op): Likewise. Use IS_CLINIT.
7013         * parse.h (JPRIMITIVE_TYPE_OR_VOID_P): Macro removed.
7014         (IS_CLINIT): New macro.
7015         * parse.y (type_declaration:): Call maybe_generate_clinit after an
7016         interface was parsed.
7017         (maybe_generate_clinit): Don't generate if the current class is an
7018         interface with only fields of primitive types.
7019         (reset_method_name): Use IS_CLINIT.
7020         (java_complete_expand_method): Expand <clinit> when it exists for
7021         interfaces. Use IS_CLINIT.
7022         (resolve_expression_name): Use DECL_CONTEXT instead of
7023         current_class to build static field references.
7024         (java_complete_lhs): Use IS__CLINIT. Don't use SAVE_EXPR on
7025         ARRAY_REF when doing xreferencing.
7026         (check_final_assignment): Fixed typo in leading comment. Use
7027         IS_CLINIT.
7028         (patch_array_ref): Don't fully expand array references when
7029         xreferencing.
7030         (patch_return): Use IS_CLINIT.
7031         (patch_throw_statement): Likewise.
7032
7033 1999-04-22  Tom Tromey  <tromey@cygnus.com>
7034
7035         * Make-lang.in (JAVA_SRCS): Added check-init.c.
7036
7037 Wed Apr 21 11:13:36 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7038
7039         * decl.c (predef_filenames, predef_filenames_size): New globals
7040         (init_decl_processing): predef_filenames and predef_filenames_size
7041         initialized.
7042         * java-tree.h (predef_filenames, predef_filenames_size): Declared
7043         extern.
7044         * jcf-parse.c (predefined_filename_p): New function.
7045         (yyparse): Check that files on the command line are specified only
7046         once and issue a warning otherwise.
7047         * parse.h (JPRIMITIVE_TYPE_OR_VOID_P): New macro.
7048         * parse.y (source_end_java_method): Nullify NOP method bodies, to
7049         avoid a gcc warning with -W -Wall turned on.
7050         (java_expand_classes): Abort if errors were encountered.
7051         (java_complete_lhs): If the cross reference flag is set, wrap
7052         field DECL node around a WFL when resolving expression name.
7053
7054 Mon Apr 19 14:44:48 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7055
7056         * lang.c (lang_decode_option): Fixed returned value when parsing
7057         `-fxref=...' and `-Wall'.
7058         * parse.y (source_end_java_method): Do not generate code when
7059         flag_emit_xref is set.
7060         (resolve_expression_name): Do not build static field access when
7061         flag_emit_xref is set.
7062         (resolve_field_access): No special treatment on `length' when
7063         flag_emit_xref is set. Do not build qualified static field access
7064         when flag_emit_xref is set.
7065         (patch_invoke): Keep the method DECL as operand 0 of the CALL_EXPR
7066         when flag_emit_xref is set.
7067         (patch_assignment): Do not generate array store runtime check when
7068         flag_emit_xref is set.
7069         * xref.c (xref_flag_value): Fixed function declaration
7070         indentation.
7071         (xset_set_data): New function.
7072         * xref.h (xref_set_data): Added prototype for new function.
7073         (typedef struct xref_flag_table): New field data.
7074         (XREF_GET_DATA): New macro.
7075
7076 1999-04-19  Tom Tromey  <tromey@cygnus.com>
7077
7078         * xref.h (enum): Removed trailing comma.
7079
7080         * parse.y (resolve_qualified_expression_name): Added missing
7081         `break'.
7082
7083 Thu Apr 15 13:08:03 1999  Anthony Green  <green@cygnus.com>
7084
7085         * gjavah.c: New prototypes for java_float_finite and
7086         java_double_finite.
7087
7088 Mon Apr 12 18:27:32 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7089
7090         * parse.y (patch_unaryop): Fixed ++/-- operator check on array
7091         references.
7092
7093 Tue Apr  6 23:15:52 1999  Jeffrey A Law  (law@cygnus.com)
7094
7095         * Makefile.in (TREE_H): Add tree-check.h.
7096         (RTL_H): Add genrtl.h.
7097
7098 Tue Apr  6 15:15:51 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7099
7100         * parse.y (patch_assignment): Added ArrayStoreException runtime
7101         check.
7102
7103 1999-04-06  Per Bothner  <bothner@cygnus.com>
7104
7105         * expr.c (pop_type_0):  New function.
7106         (pop_type):  Use pop_type_0.
7107         * java-tree.h (pop_type_0):  New declaration.
7108         * verify.c (verify_jvm_instructions):  Check return instructions.
7109
7110         * parse.y (patch_binop):  Don't fold if non-constant and emiting
7111         class files.
7112
7113 Mon Apr  5 16:06:09 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7114
7115         * Makefile.in (gjavah.o): Depend on $(JAVA_TREE_H).
7116
7117         * gjavah.c: Include math.h earlier.  Include tree.h/java-tree.h.
7118         (main_jcf): Don't define.
7119         (process_file): Don't set `main_jcf'.
7120
7121         * java-tree.h (main_jcf): Don't declare.
7122
7123         * jcf-parse.c (main_jcf): Add static definition.
7124
7125         * lang.c (main_jcf): Don't define.
7126
7127 Mon Apr  5 15:43:51 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7128
7129         * class.c (add_method_1): Cast the argument of `bzero' to PTR.
7130
7131         * decl.c (copy_lang_decl): Likewise for `bcopy'.
7132
7133         * jcf-depend.c: Include "config.h", not <config.h>.
7134
7135         * jcf-parse.c (jcf_figure_file_type): Cast the arguments of
7136         `bcopy' to PTR.
7137
7138         * jcf-path.c: Include "config.h", not <config.h>.
7139
7140         * lex.c: Don't include various system header files.
7141         (java_init_lex): Cast the argument of `bzero' to PTR
7142
7143         * parse-scan.y (java_push_parser_context): Likewise.
7144
7145         * parse.y (java_push_parser_context): Likewise.
7146         (patch_bc_statement): Match format specifier to variable argument.
7147
7148         * xref.c: Don't include <stdio.h>.
7149
7150 Mon Apr  5 11:24:19 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7151
7152         * parse.y (struct parser_ctxt *ctxp): Now global.
7153         (declare_local_variables): Use WFL compound value for the
7154         declaration source line value, when doing cross-referencing.
7155
7156 1999-03-31  Tom Tromey  <tromey@cygnus.com>
7157
7158         * gjavah.c (print_field_info): Allow constants of other types.
7159         (print_include): Generate include when new name is proper prefix
7160         of already printed name.
7161         (add_namelet): Likewise.
7162         (cxx_keyword_subst): New function.
7163         (print_method_info): Use it.
7164         (print_field_name): New function.
7165         (get_field_name): New function.
7166         (print_field_info): Use get_field_name and print_field_name.
7167
7168 Wed Mar 31 11:00:32 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7169
7170         * Makefile.in (keyword.h): Generate using gperf language 'C', not
7171         'KR-C', so gperf uses the `const' keyword on strings.
7172
7173         * keyword.gperf (java_keyword): Const-ify a char*.
7174
7175 Tue Mar 30 11:31:53 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7176
7177         * parse.y (patch_bc_statement): Fixed identation and a bogus
7178         `printf' format.
7179
7180 Tue Mar 30 11:29:29 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7181
7182         * parse.y (patch_assignment): Allow static variables in other
7183         classes to be assigned.
7184
7185 Sun Mar 28 22:12:10 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7186
7187         * class.c (maybe_add_interface): Remove unused variable
7188         `interface_binfo'.
7189         (make_class_data): Use = for assignment, not ==.  Likewise.
7190         (emit_register_classes): Remove unused variable `decl'.
7191
7192         * lex.c: Fix comment so as not to contain an embedded `/*'.
7193
7194         * verify.c (verify_jvm_instructions): Remove unused variable
7195         `self_type'.
7196
7197 Sat Mar 27 15:49:18 1999  Per Bothner  <bothner@cygnus.com>
7198
7199         * parse.y (complete_loop_body):  Rename to finish_loop_body.
7200         (complete_labeled_statement):  Rename to finish_labeled_statement.
7201         (complete_for_loop):  Rename to finish_for_loop.
7202         (complete_method_declaration):  Rename to finish_method_declaration.
7203
7204         * java-tree.h (continue_identifier_node):  New global node.
7205         * decl.c:  Define and initialize continue_identifier_node.
7206         * parse.y (generate_labeled_block):  Remove - no longer needed.
7207         (build_loop_body):  Use continue_identifier_node for continue block.
7208         (finish_labeled_statement):  Also do pop_labeled_block actions.
7209         (java_complete_lhs):  POP_LOOP even if error.
7210         (build_labeled_block):  Special handling for continue_identifier_node.
7211         (patch_loop_statement):  Re-organize.
7212         (patch_bc_statement):  Re-write.
7213
7214 Sat Mar 27 15:13:21 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7215
7216         * parse.h (EXPR_WFL_GET_LINECOL): Set a line and column count
7217         using a WFL compound value.
7218         * parse.y (xref.h): Include.
7219         (maybe_create_class_interface_decl): Set DECL_SOURCE_LINE to the
7220         WFL compound value.
7221         (register_fields): Set WFL compound value to lineno if doing
7222         xrefs.
7223         (java_complete_expand_method): Call expand_xref if flag_emit_xref
7224         is set.
7225         * xref.c (system.h, jcf.h, parse.h, obstack.h): Include.
7226         * xref.h (expand_xref): Prototype renamed from xref_generate.
7227
7228 Sat Mar 27 14:16:32 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7229
7230         * parse.h (BLOCK_CHAIN_DECL): New use GET_CURRENT_BLOCK.
7231         (GET_CURRENT_BLOCK): New macro.
7232         * parse.y (current_static_block): New global variable.
7233         (method_body:): Define action.
7234         (complete_method_declaration): Set current_function_decl to NULL
7235         when work on the current method is done.
7236         (declare_local_variables): Use GET_CURRENT_BLOCK.
7237         (java_method_add_stmt): Likewise.
7238         (java_complete_expand_method): Disable the use of `this' when
7239         expanding <clinit>.
7240         (enter_a_block): If no current method exist, use
7241         current_static_block to link static initializer blocks.
7242         (exit_block): Rewritten to use current_static_block when no current
7243         method decl exists.
7244         (lookup_name_in_blocks): Use GET_CURRENT_BLOCK.
7245         (patch_return): Forbid the use of `return' in static initializers.
7246         (patch_throw_statement): Fixed indentation. Issue specific error
7247         for uncaught thrown checked exception in static initializer
7248         blocks. Removed FIXME.
7249
7250 1999-03-25  Zack Weinberg  <zack@rabi.columbia.edu>
7251
7252         * java/Make-lang.in: Remove all references to gcj.o/gcj.c.
7253         Link gcj from gcc.o.
7254
7255 Tue Mar 23 10:48:24 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7256
7257         * parse.y (find_applicable_accessible_methods_list): When dealing
7258         with interface: ensure that a given interface or java.lang.Object
7259         are searched only once.
7260
7261 Tue Mar 23 10:05:27 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7262
7263         * gjavah.c (print_c_decl): Remove unused argument `flags'.
7264
7265         * jcf-dump.c (print_access_flags): Add braces around if-else.
7266
7267         * jvspec.c (lang_specific_driver): Wrap variable `len' in macro
7268         COMBINE_INPUTS.
7269
7270         * lex.c (build_wfl_node): Add static prototype.
7271
7272         * lex.h (build_wfl_node): Remove static prototype.
7273
7274         * parse.y: Include lex.c early enough to declare everything needed.
7275         Ensure calls to `build_wfl_node' pass the proper arguments.
7276         (create_class): Remove unused variable `super_decl'.
7277         (get_printable_method_name): Initialize variable `name'.
7278
7279 Mon Mar 22 20:14:26 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7280
7281         * Changelog: Fixed 1999-03-22 typos.
7282         * lang.c (lang_decode_option): Fixed typo in error string in the
7283         XARG section.
7284
7285 1999-03-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7286
7287         * Makefile.in (JAVA_OBJS): Added entry xref.o.
7288         (xref.o): New rule.
7289         * java-tree.h (flag_emit_xref): Declared extern.
7290         * lang.c (xref.h): Included.
7291         (flag_emit_xref): New global variable.
7292         (lang_decode_option): Added support for -fxref.
7293         * xref.c: Created.
7294         * xref.h: Likewise.
7295
7296 1999-03-21  Manfred Hollstein  <manfred@s-direktnet.de>
7297
7298         * Make-lang.in ($(GCJ)$(exeext)): Add intl.o to list of files to be
7299         linked with.
7300
7301 Sun Mar 21 08:30:30 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7302
7303         * Makefile.in (jcf-dump.o): Depend on $(CONFIG_H)
7304         $(srcdir)/../system.h and $(JAVA_TREE_H).
7305         (jcf-io.o): Depend on $(JAVA_TREE_H).
7306         (mangle.o): Likewise.
7307
7308         * check-init.c (check_cond_init): Add static prototype.
7309
7310         * class.c (build_java_method_type, hashUtf8String,
7311         make_field_value, get_dispatch_vector, get_dispatch_table,
7312         append_gpp_mangled_type, mangle_static_field): Likewise.
7313         (strLengthUtf8): Hide unused definition.
7314         (hashUtf8String): Const-ify.
7315         (make_field_value): Un-ANSI-fy.
7316
7317         * constants.c: Move inclusion of jcf.h above java-tree.h.
7318         (set_constant_entry, find_class_or_string_constant,
7319         find_name_and_type_constant, get_tag_node,
7320         build_constant_data_ref): Add static prototype.
7321
7322         * decl.c (push_jvm_slot, builtin_function,
7323         lookup_name_current_level): Likewise.
7324         (builtin_function): Const-ify.
7325
7326         * except.c (expand_start_java_handler, expand_end_java_handler):
7327         Add static prototype.
7328
7329         * expr.c (flush_quick_stack, push_value, pop_value,
7330         java_stack_swap, java_stack_dup, build_java_athrow,
7331         build_java_jsr, build_java_ret, expand_java_multianewarray,
7332         expand_java_arraystore, expand_java_arrayload,
7333         expand_java_array_length, build_java_monitor, expand_java_pushc,
7334         expand_java_return, expand_java_NEW, expand_java_INSTANCEOF,
7335         expand_java_CHECKCAST, expand_iinc, expand_java_binop, note_label,
7336         expand_compare, expand_test, expand_cond, expand_java_goto,
7337         expand_java_call, expand_java_ret, pop_arguments, expand_invoke,
7338         expand_java_field_op, java_push_constant_from_pool): Likewise.
7339
7340         (decode_newarray_type, expand_iinc): Un-ANSI-fy.
7341         (build_java_arraynull_check): Mark parameters `node' and `type'
7342         with ATTRIBUTE_UNUSED.
7343         (note_label): Likewise for parameter `current_pc'.
7344         (expand_java_call, expand_java_ret): Hide unused definition.
7345
7346         * java-tree.h (make_class, build_constants_constructor,
7347         java_set_exception_lang_code, pop_labeled_block, emit_handlers,
7348         init_outgoing_cpool, register_class, emit_register_classes,
7349         java_layout_seen_class_methods): Prototype.
7350         (unicode_mangling_length): Const-ify.
7351         (append_gpp_mangled_name, append_gpp_mangled_classtype,
7352         emit_unicode_mangled_name, format_int, format_uint,
7353         jcf_trim_old_input, jcf_print_utf8, jcf_print_char,
7354         jcf_print_utf8_replace, open_class): Prototype.
7355
7356         * jcf-dump.c: Include "config.h", not <config.h>.  Don't include
7357         <stdio.h>.  Include tree.h/java-tree.h.
7358         (utf8_equal_string usage, process_class): Add static prototype.
7359         (open_class): Don't prototype this here.
7360         (utf8_equal_string): Match arguments to format specifiers.
7361         (HANDLE_CODE_ATTRIBUTE, BRANCH, JSR, RET, LOOKUP_SWITCH,
7362         TABLE_SWITCH, disassemble_method): Likewise.
7363
7364         * jcf-io.c: Include tree.h/java-tree.h.
7365         (open_class, find_classfile, jcf_print_utf8,
7366         jcf_print_utf8_replace): Const-ify.
7367
7368         * jcf-parse.c (parse_zip_file_entries, process_zip_dir,
7369         parse_class_file): Add static prototype.
7370         (find_in_current_zip): Match definition to existing static
7371         prototype.
7372
7373         * jcf-write.c: Include jcf.h before tree.h/java-tree.h.
7374         (alloc_chunk, append_chunk, append_chunk_copy, gen_jcf_label,
7375         finish_jcf_block, define_jcf_label, get_jcf_label_here,
7376         put_linenumber, localvar_alloc, localvar_free, get_access_flags,
7377         write_chunks, adjust_typed_op, generate_bytecode_conditional,
7378         generate_bytecode_return, perform_relocations, init_jcf_state,
7379         init_jcf_method, release_jcf_state, generate_classfile):
7380         Add static prototype.
7381         (emit_unop): Mark parameter `type' with ATTRIBUTE_UNUSED.
7382         (make_class_file_name): Const-ify.
7383
7384         * jcf.h (find_classfile): Const-ify.
7385
7386         * jv-scan.c (reset_report): Remove prototype.
7387
7388         * jvgenmain.c: Include jcf.h/tree.h/java-tree.h.
7389         (error): Rewrite to allow varargs.
7390
7391         * lang.c (lang_f_options): Const-ify.
7392
7393         * lex.c (java_parse_escape_sequence): Add static prototype.
7394         (java_allocate_new_line): Match definition to existing static
7395         prototype.
7396
7397         * mangle.c Include tree.h/java-tree.h.
7398         (unicode_mangling_length, emit_unicode_mangled_name,
7399         append_gpp_mangled_name, append_gpp_mangled_classtype): Const-ify.
7400
7401         * parse.h (jdep_code): Remove trailing comma in enumeration.
7402         (java_get_line_col): Move prototype outside of !JC1_LITE test.
7403         (reset_report): Add prototype.
7404
7405         * verify.c (push_pending_label, merge_types): Add static
7406         prototypes.
7407
7408         * zipfile.h (opendir_in_zip, open_in_zip): Prototype.
7409
7410 1999-03-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7411
7412         * parse.y (find_applicable_accessible_methods_list): Extend the
7413         search to superinterfaces when relevant.
7414         (search_applicable_methods_list): New function.
7415
7416 1999-03-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7417
7418         * class.c (unmangle_classname): Implemented stricter testing
7419         before setting the QUALIFIED_P flag on an identifier.
7420
7421 Tue Mar 16 15:15:41 1999  Per Bothner  <bothner@cygnus.com>
7422
7423         * parse.y (java_complete_lhs):  Call force_evaluation_order
7424         after patch_newarray.
7425         (patch_binop):  Don't call fold if there are side effects.
7426
7427 1999-03-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7428
7429         * parse.y (java_stabilize_reference): Use save_expr instead of
7430         building a SAVE_EXPR node.
7431         (java_complete_lhs): Patch the resulting string of the `+='
7432         operator (if necessary) and complete the RHS after having built
7433         the cast.
7434
7435 Mon Mar 15 12:18:29 1999  Per Bothner  <bothner@cygnus.com>
7436
7437         * class.c (make_class):  Don't set CLASS_P here (because
7438         this function is also called by build_java_array_type).
7439         (push_class):  Set CLASS_P here instead.
7440         * parse.h (TYPE_CLASS_P):  Check for TYPE_ARRAY_P is redundant.
7441
7442         * jcf-dump.c (print_access_flags):  Take extra parameter to indicate
7443         context.  If the context is class, perfer "super" over "synchronized".
7444         * jcf-write.c (generate_classfile):  Don't add ACC_SUPER if interface.
7445
7446         * parse.y (create_class):  Don't call parser_check_super here;
7447         it is not robust.  Always wait until later.
7448
7449         * parse.y (method_header):  For interfaces, set ACC_ABSTRACT (to
7450         match what JDK 1.2 does), but don't set ACC_PUBLIC.
7451
7452 Sat Mar 13 18:16:34 1999  Per Bothner  <bothner@cygnus.com>
7453
7454         * lex.c (java_read_char):  UNGET invalid non-initial utf8 character.
7455         * lex.h (UNGETC):  Change misleading macro.
7456
7457 1999-03-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7458
7459         * parse.y (java_stabilize_reference): Return NODE when patching a
7460         COMPOUND_EXPR.
7461         (java_complete_lhs): Put parenthesis around truth values.
7462
7463 1999-03-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7464
7465         * class.c (layout_class_method): Don't make rtl for interface
7466         methods.
7467         * parse.h (GET_TYPE_NAME): New macro.
7468         * parse.y (if_then_statement:): Fixed indentation.
7469         (if_then_else_statement:): Likewise.
7470         (for_statement:): Fixed spacing.
7471         (try_statement:): Fixed indentation.
7472         (create_interface): Don't force interfaces to be abstract.
7473         (method_header): Abstract methods are OK in interfaces.
7474         (declare_local_variables): Fixed typo in comment.
7475         (java_complete_expand_method): Fixed indentation.
7476         (resolve_qualified_expression_name): Use GET_TYPE_NAME to report
7477         non accessible fields.
7478         (java_stabilize_reference): New function.
7479         (java_complete_lhs): Fixed indentation. Use
7480         java_stabilize_reference in compound assignement. Insert the
7481         cast. If not processing `+' fix string constants before processing
7482         binop.
7483
7484 Fri Mar 12 19:42:55 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7485
7486         * constants.c (find_class_or_string_constant): Cast variable `j'
7487         to a `jword' when comparing against one.
7488
7489         * expr.c (java_lang_expand_expr): Remove unused variables
7490         `has_finally_p' and `op0'.
7491
7492         * gjavah.c (print_field_info): Cast a value to jint when comparing
7493         against one.  Likewise for a jlong.
7494         (add_namelet): Likewise cast a `sizeof' to an int when comparing
7495         against a signed quantity.
7496
7497         * jcf-dump.c (print_signature_type): Remove unused variable `digit'.
7498         (print_signature): Don't needlessly dereference variable `str'
7499
7500         * jcf-reader.c (get_attribute): Mark variables `max_stack' and
7501         `max_locals' with ATTRIBUTE_UNUSED.
7502         (jcf_parse_class): Likewise for variable `index'.
7503
7504         * parse.h (reverse_jdep_list): Remove static prototype.
7505
7506         * parse.y (build_jump_to_finally): Remove prototype and definition.
7507         (reverse_jdep_list): Add static prototype.
7508
7509         * typeck.c (convert_ieee_real_to_integer): Remove unused variables
7510         `assignment' and `expr_decl'.
7511
7512         * verify.c (verify_jvm_instructions): Remove unused label `bad_ldc'.
7513
7514 1999-03-12  Andrew Haley  <aph@cygnus.com>
7515
7516         * jcf-path.c (add_entry): alloca len+2 rather than len+1 bytes;
7517         we'll need a directory separator and a null character.
7518
7519 Wed Mar 10 23:20:11 1999  Per Bothner  <bothner@cygnus.com>
7520
7521         * jcf-write.c (generate_bytecode_insns):  Handle __builtin_fmod, for %.
7522
7523   Tue Mar  9 11:52:08 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7524
7525         * parse.y (method_header): Don't set ACC_ABSTRACT flags on
7526         interfaces.
7527
7528 Fri Mar  5 15:17:29 1999  Per Bothner  <bothner@cygnus.com>
7529
7530         * lex.c (java_parse_end_comment):  Take extra parameter (next char).
7531
7532         * class.c (build_utf8_ref):  Fix possible name class/ambiguity.
7533
7534         * class.c (layout_class_method):  A static method in a base class
7535         is never overridden, so treat it like it doesn't exist.
7536         However, do complain about private non-static method overriding
7537         public static method.
7538
7539         * parse.y:  Don't set unused INITIALIZED_P flag.
7540         * java-tree.h (INITIALIZED_P):  Removed no-longer needed flag.
7541
7542         * parse.y (find_expr_with_wfl):  Optimize tail-calls.
7543         (build_array_from_name):  Re-order &index[string] to &string[index].
7544
7545         * parse.y (java_complete_lhs):  Don't call patch_assignment if rhs is
7546         error_mark (it might catch more errors, but it is more likely to lose).
7547
7548 Sat Mar  6 11:17:16 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7549
7550         * Makefile.in (jcf-parse.o): Depend on $(PARSE_H).
7551         (parse-scan.o): Depend on toplev.h.
7552
7553         * class.c (make_method_value): Add prototype.  Make it static.
7554         Remove unused second argument, caller changed.
7555
7556         * expr.c (java_lang_expand_expr): Remove unused variable
7557         `return_label'.
7558
7559         * java-tree.h: Don't prototype find_in_current_zip.
7560         Add prototypes for verify_constant_pool, start_java_method,
7561         end_java_method, give_name_to_locals, expand_byte_code,
7562         open_in_zip, set_constant_value, find_constant1, find_constant2,
7563         find_utf8_constant, find_string_constant, find_class_constant,
7564         find_fieldref_index, find_methodref_index, write_constant_pool,
7565         count_constant_pool_bytes and encode_newarray_type.
7566
7567         * jcf-dump.c: Remove unused variable `LONG_temp'.
7568
7569         * jcf-parse.c: Include parse.h.
7570         (jcf_parse_source): Remove unused parameter, all callers changed.
7571         (jcf_figure_file_type): Add static prototype.
7572         (find_in_current_zip): Likewise.  Also remove unused parameter,
7573         all callers changed.
7574         (read_class): Initialize variable `saved_pos'.
7575
7576         * jcf-reader.c (jcf_parse_preamble): Mark variables
7577         `minor_version' and `major_version' with ATTRIBUTE_UNUSED.
7578
7579         * lex.c (java_is_eol): Wrap prototype and definition in !JC1_LITE.
7580         (java_init_lex): Wrap variable `java_lang_imported' in !JC1_LITE.
7581         (java_parse_doc_section): Initialize variable `seen_star'.
7582         (java_lex): Wrap variable `number_beginning' in !JC1_LITE.
7583         (java_lex_error): Mark parameters `msg' and `forward' with
7584         ATTRIBUTE_UNUSED.
7585         (java_get_line_col): Mark parameters `filename' and `line' with
7586         ATTRIBUTE_UNUSED.
7587
7588         * parse-scan.y: Include toplev.h.
7589         (yyerror): Mark parameter `msg' with ATTRIBUTE_UNUSED.
7590
7591         * parse.h: use `struct JCF', not plain `JCF'.
7592         (java_parser_context_save_global, java_expand_classes
7593         java_parser_context_restore_global, java_parse): Add prototypes.
7594
7595         * typeck.c (convert_ieee_real_to_integer): Remove unused variable
7596         `node'.
7597
7598 Wed Feb 24 16:13:59 1999  Per Bothner  <bothner@deneb.cygnus.com>
7599
7600         *  check-init.c (check_init):  COPYN takes word count, not bit count.
7601
7602 Fri Feb 26 14:06:21 1999  Per Bothner  <bothner@cygnus.com>
7603
7604         * typeck.c (convert_ieee_real_to_integer):  Use save_expr instead of
7605         explicit build_decl.  (Avoids crash in reload when optimizing.)
7606
7607 Thu Feb 25 21:05:04 1999  Per Bothner  <bothner@cygnus.com>
7608
7609         * decl.c (complete_start_java_method):  Handle synchronized method
7610         even when compiling from bytecode.
7611
7612 1999-02-26  Tom Tromey  <tromey@cygnus.com>
7613
7614         * gjavah.c (add_class_decl): Only generate `#include' if outer
7615         class is not the name of the class we are processing.  Correctly
7616         append `.h' in #include.
7617         (process_file): Clean up newlines around generated `#include's.
7618         (decode_signature_piece): Correctly handle inner classes.
7619         (struct include): New structure.
7620         (all_includes): New global.
7621         (print_include): New function.
7622         (add_class_decl): Use it.
7623         (process_file): Likewise.
7624         (add_class_decl): Generate include for java-array.h if array
7625         seen.
7626         (process_file): Don't generate java-array.h include.
7627
7628         * gjavah.c (add_namelet): Check for standard package names here.
7629         (add_class_decl): Don't check for standard package names here.
7630
7631 1999-02-25  Tom Tromey  <tromey@cygnus.com>
7632
7633         * parse.y (read_import_dir): Use `|=', not `+=', to set `found'.
7634         When reading a zip file, only use strncmp if both strings are
7635         bigger than the buffer length.  Initialize `k' when looping
7636         through zip file.
7637
7638 1999-02-24  Tom Tromey  <tromey@cygnus.com>
7639
7640         * gjavah.c (struct namelet): New structure.
7641         (add_namelet): New function.
7642         (print_namelet): New function.
7643         (print_class_decls): Use add_namelet and print_namelet to generate
7644         namespaces and not classes.
7645         (method_printed): New global.
7646         (HANDLE_END_METHOD): Examine method_printed.
7647         (print_method_info): Set method_printed when required.  Print
7648         error if function to be ignored is marked virtual.  Handle $finit$
7649         method.
7650         (METHOD_IS_FINAL): New macro.
7651         (print_field_info): Use it.
7652         (HANDLE_METHOD): Clear method_printed.
7653         (method_pass): New global.
7654         (HANDLE_END_FIELD): Call add_class_decl on the first pass.
7655         (process_file): Do two passes over both fields and methods.
7656         (HANDLE_METHOD): Examine method_pass.
7657         (root): New global.
7658         (add_class_decl): New function.
7659         (print_class_decls): Don't scan over entire constant pool.
7660
7661 1999-02-23  Tom Tromey  <tromey@cygnus.com>
7662
7663         * jvspec.c (lang_specific_driver): Recognize -fsyntax-only and
7664         disable linking in that case.
7665
7666 1999-02-20  Tom Tromey  <tromey@cygnus.com>
7667
7668         * jcf.h (UTF8_GET): Mask first byte of 3-byte encoding with 0x0f,
7669         not 0x1f.
7670
7671 Sun Feb 21 14:56:11 1999  Per Bothner  <bothner@cygnus.com>
7672
7673         * decl.c (build_result_decl), java-tree.h:  New method.
7674         (complete_start_java_method):  Handle synchronized methods.
7675         Don't build DECL_RESULT here.  (Ordering dependency problem.)
7676         (start_java_method):  Call build_result_decl here instead  ...
7677         * parse.y (java_complete_expand_method):  ... and here.
7678         (expand_start_java_method): Don't call complete_start_java_method here.
7679         (java_complete_expand_method):  Call it here instead.
7680         * parse.h (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT):  Moved to ..
7681         * java-tree.h:  ... here.
7682
7683         * expr.c (force_evaluation_order):  Fix typo, don't handle ARRAY_REF.
7684         * parse.y (java_complete_lhs):  Don't call force_evaluation_order
7685         for ARRAY_REF - it doesn't work when array bounds are checked.
7686         (patch_array_ref):  Handle it here instead.
7687
7688         * jcf-write.c (generate_classfile):  Emit "Exceptions" attribute.
7689
7690 Fri Feb 19 15:35:01 1999  Per Bothner  <bothner@cygnus.com>
7691
7692         Force left-to-right evaluation of binary operations etc.
7693         * expr.c (force_evaluation_order), java-tree.h:  New function.
7694         * parse.y (java_complete_lhs):  Pass binary operations, procedure
7695         calls, and ARRAY_REFs to force_evaluation_order.
7696         (various):  Set TREE_SIDE_EFFECTS more carefully.
7697
7698         Tolerate random (non-UTF8) encoding in comments without complaining.
7699         * lex.c (java_read_char):  Return 0xFFFE if bad UTF8 encoding.
7700         (java_is_eol):  Handle '\r' followed by '\n' instead of vice versa.
7701
7702         * parse.y (resolve_qualified_expression_name):  Handle error_mark.
7703         (java_complete_node case EXPR_WITH_FILE_LOCATION):  Likewise.
7704
7705         * parse.y (java_complete_lhs):  Ignore an empty statement in a
7706         COMPOUND_EXPR.  Don't complain about empty statement after return.
7707
7708 Fri Feb 19 13:00:56 1999  Per Bothner  <bothner@cygnus.com>
7709
7710         * parse.y (obtain_incomplete_type):  Don't wrap unknown types
7711         in TREE_LIST - just chain the POINTER_TYPEs together.
7712         (resolve_class):  If type already resolved, return decl.
7713         After resolving, update TREE_TYPE(class_type), and name (if array).
7714         * parse.h (do_resolve_class), parse.y:  Make non-static.
7715         * class.c (maybe_layout_super_class):  Take this_class argument.
7716         Do do_resolve_class if necessary.
7717         (layout_class, layout_class_methods): Adjust calls appropriately.
7718         * parse.h (JDEP_TO_RESOLVE, JDEP_RESOLVED_DECL, JDEP_RESOLVED,
7719         JDEP_RESOLVED_P):  Redefined for new TREE_LIST-less convention.
7720         * typeck.c (build_java_array_type):  Don't call layout_class.
7721
7722 Wed Feb 17 15:47:20 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7723
7724         * parse.y (check_pkg_class_access): Allow private class access
7725         within the same package.
7726         (strip_out_static_field_access_decl): New function.
7727         (patch_unaryop): Call strip_out_static_field_access_decl on ++/--
7728         operator argument before testing its nature.
7729
7730 Wed Feb  3 12:38:43 1999  Per Bothner  <bothner@cygnus.com>
7731
7732         * java-tree.def (FINALLY_EXPR):  Removed.  (Now uses TRY_FINALLY_EXPR.)
7733         (TRY_EXPR):  Simplify - it no longer has a finally clause.
7734         * check-init.c (check_init):  Handle TRY_FINALLY_EXPR.
7735         Simpler handling of TRY_EXPR, which no longer has a finally clause.
7736         * expr.c (java_lang_expand_expr):  Likewise.
7737         * java-tree.h (CATCH_EXPR_GET_EXPR):  Removed - no longer needed.
7738         * parse.h (java_get_catch_block), parse.y:  Removed - no longer needed.
7739         * parse.y (java_complete_lhs):  Add support for TRY_FIANLLY_EXPR.
7740         (build_try_statement):  Remove finally parameter and handling.
7741         (build_try_finally_statement):  New function.
7742         (patch_try_statement):   No longer need to support finally clause.
7743         (try_statement):  Update grammar action rules.
7744         * jcf-write.c (generate_bytecode_insns):  Handle TRY_FINALLY_EXPR.
7745         Simpler handling of TRY_EXPR, which no longer has a finally clause.
7746
7747 1998-11-26  Andrew Haley  <aph@viagra.cygnus.co.uk>
7748
7749         * jcf-parse.c (get_constant): Add braces around computation of 'd'
7750         when REAL_ARITHMETIC is not defined.  [Oct 26 fix got overwritten -PB]
7751
7752 1999-02-17  Andrew Haley  <aph@cygnus.com>
7753
7754         * class.c (build_utf8_ref): Back out broken patch which was
7755         intended to to output signatures using '.' as a separator.
7756
7757         * class.c (make_class_data): Output signatures using '.' as a
7758         separator, rather than '/'.
7759         (mangled_classname): Likewise.
7760         (make_field_value): Likewise.
7761         (make_method_value): Likewise.
7762         * constants.c (alloc_class_constant): Likewise.
7763         * expr.c (build_invokeinterface): Likewise.
7764
7765 Thu Feb 11 21:25:51 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7766
7767         * parse.y (valid_builtin_assignconv_identity_widening_p): Got rid
7768         of an ancient workaround.
7769
7770 Wed Feb 10 23:27:33 1999  Jeffrey A Law  (law@cygnus.com)
7771
7772         * jvspec.c (xmalloc): Kill the prototype.  It does not belong
7773         here anymore.
7774
7775 1999-02-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7776
7777         * lex.c (yylex): Encode \0 as UTF8.
7778
7779 1999-02-10  Tom Tromey  <tromey@cygnus.com>
7780
7781         * jvspec.c (lang_specific_driver): Use libgcj, not libjava.
7782         * Makefile.in (jcf-path.o): Define LIBGCJ_ZIP_FILE.
7783         (libgcj_zip): Renamed.
7784         * jcf-path.c (add_entry): Use LIBGCJ_ZIP_FILE, not
7785         LIBJAVA_ZIP_FILE.
7786         (jcf_path_init): Use LIBGCJ_ZIP_FILE.
7787
7788         * jvspec.c (THREAD_NAME): Renamed -lqthreads to -lgcjcoop.
7789         (GC_NAME): Renamed -lgc to -lgcjgc.
7790
7791 Tue Feb  9 19:31:09 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7792
7793         * lex.c (java_lang_cloneable): Initialize.
7794         * parse.y (java_lang_cloneable): New static variable.
7795         (qualify_ambiguous_name): Take CONVERT_EXPR into account when
7796         doing one more qualification round.
7797         (valid_ref_assignconv_cast_p): Reject null source or
7798         destination. Allow an array to be cast into java.lang.Cloneable.
7799         (patch_cast): Swapped two first arguments to first call to
7800         valid_ref_assignconv_cast_p.
7801
7802 Mon Feb  8 11:50:50 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7803
7804         * parse.h: DECL_P renamed JDECL_P.
7805         * parse.y: DECL_P replaced by JDECL_P.
7806         (build_array_from_name): Always use pointer's type.
7807         (patch_bc_statement): Extra code to search continue target in a
7808         for loop. Fixed comments. Continue target is current loop when
7809         unlabeled.
7810
7811 1999-02-05  Andrew Haley  <aph@cygnus.com>
7812
7813         * class.c (make_class_data): The superclass of an interface should
7814         be null, not class Object.
7815
7816         * lex.c (java_lex): Sign extend hex literals.
7817
7818 1999-02-04  Andrew Haley  <aph@cygnus.com>
7819
7820         * class.c (build_utf8_ref): Output signatures using '.' as a
7821         separator, rather than '/'.
7822         (make_class_data): Likewise.
7823
7824 Wed Feb  3 22:50:17 1999  Marc Espie <Marc.Espie@liafa.jussieu.fr>
7825
7826         * Make-lang.in ($(GCJ)(exeext)): Remove choose-temp.o, pexecute.o and
7827         mkstemp.o.  Get them from libiberty now.
7828
7829 Tue Feb  2 19:49:12 1999  Jeffrey A Law  (law@cygnus.com)
7830
7831         * jcf-io.c: Do not include sys/stat.h or sys/wait.h
7832
7833 Tue Feb  2 20:04:50 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7834
7835         * jvspec.c (xmalloc): Fix the prototype to match the one obtained
7836         from libiberty.h
7837
7838 Tue Feb  2 10:39:47 1999  Per Bothner  <bothner@cygnus.com>
7839
7840         Optimize: `return (a ? b : c)' as: `if (a) return b; else return c;'.
7841         * jcf-write.c (generate_bytecode_return):  New function.
7842         (generate_bytecode_insns):  Use it, for RETURN_EXPR.
7843
7844         * jcf-write.c (generate_bytecode_insns):  For REAL_CST that is 0 or 1,
7845         generate special [fd]const_[01] instructions.
7846
7847         * jcf-parse.c (yyparse):  Don't emit_register_classes if -fsyntax-only.
7848
7849         * verify.c (verify_jvm_instructions):  Do INVALIDATE_PC after
7850         handling OPCODE_lookupswitch or OPCODE_tableswitch.
7851
7852 Mon Feb  1 20:44:47 1999  Per Bothner  <bothner@cygnus.com>
7853
7854         * parse.y (patch_method_invocation):  Handle calling static methods,
7855         even in the form EXPR.METHOD(ARGS), not just TYPE.METHOD(ARGS).
7856
7857         * parse.y (java_complete_lhs):  Don't complain about unreachable
7858         exit condition in a do-while statement.
7859
7860 Fri Jan 29 18:19:02 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7861
7862         * lex.c (java_read_char): Fixed utf8 decoding.
7863         (java_unicode_2_utf8): Fixed utf8 encoding in the 0x800-0xffff
7864         range.
7865         * parse.y (valid_builtin_assignconv_identity_widening_p): Fixed
7866         comments. Local variable `all_primitive' is gone. Broadened
7867         acceptance of `0' to floating point targets. `long' can now be
7868         widened to `double' or `float'.
7869         (valid_method_invocation_conversion_p): Added leading
7870         comment. Fixed tabulation.
7871         (build_string_concatenation): Optimize out left or right empty
7872         string constants.
7873
7874 Thu Jan 28 18:51:26 1999  Per Bothner  <bothner@cygnus.com>
7875
7876         * jcf-write.c (localvar_alloc):  Only emit entry for
7877         LocalVariableTable if debug_info_level > DINFO_LEVEL_TERSE.
7878         (generate_bytecode_insns):  Only call put_linenumber if
7879         debug_info_level > DINFO_LEVEL_NONE.
7880         * jvspec.c (lang_specific_driver):  If no -O* or -g* option
7881         is specified, add -g1 (for compatibility wih javac).
7882
7883 Thu Jan 28 09:17:51 1999  Hans-Peter Nilsson  <hp@axis.se>
7884
7885         * java/Makefile.in: Add missing dependencies for jcf-dump.o,
7886         gjavah.o, check-init.o, jv-scan.o
7887
7888 Mon Feb  1 09:50:48 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7889
7890         * Makefile.in (gjavah.o): Depend on $(CONFIG_H) and system.h.
7891
7892         * gjavah.c: Include config.h and system.h.
7893
7894         * javaop.h (inline): Don't define, its handled by system.h.
7895         (WORD_TO_FLOAT, WORDS_TO_LONG, WORDS_TO_DOUBLE): Change these
7896         from `inline' to `static inline'.
7897
7898         * jcf.h (inline): Don't define, its handled by system.h.
7899
7900         * lex.c (inline): Likewise.
7901
7902 Sun Jan 31 20:34:29 1999  Zack Weinberg  <zack@rabi.columbia.edu>
7903
7904         * lang-specs.h: Map -Qn to -fno-ident.
7905
7906 Fri Jan 29 16:51:56 1999  Richard Henderson  <rth@cygnus.com>
7907
7908         * check-init.c (check_init): Fix CLEANUP_POINT_EXPR typo.
7909
7910 1999-01-29  Tom Tromey  <tromey@cygnus.com>
7911
7912         * parse.h (BUILD_APPEND): If ARG is a non-String object reference,
7913         then cast it to Object before calling `append' method.
7914
7915 Thu Jan 28 14:45:39 1999  Per Bothner  <bothner@cygnus.com>
7916
7917         * check-init.c (check_bool2_init, check_bool_init, check_init):
7918         Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR, and TRUTH_XOR_EXPR.
7919         * jcf-write.c (generate_bytecode_insns):  Likewise.
7920
7921 Thu Jan 28 11:50:11 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7922
7923         * jcf-parse.c (jcf_parse): Don't parse the same class file twice.
7924         * parse.y (patch_cast): Allow a boolean to be cast into a
7925         boolean.
7926
7927 Wed Jan 27 10:19:29 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7928
7929         * parse.y: (class_declaration:): Fixed indentation.
7930         (class_member_declaration:): Extra `;' after field declaration now
7931         accepted.
7932         (interface_declaration:): Removed debug messages in error reports.
7933         (patch_binop): Nodes created and returned inherit the orignal
7934         node's COMPOUND_ASSIGN_P flag value.
7935         (patch_cast): Fix cast from char to floating point.
7936
7937 Mon Jan 25 17:39:19 1999  Andrew Haley  <aph@cygnus.com>
7938
7939         * except.c, java-except.h (expand_resume_after_catch): new
7940         function.
7941         * expr.c (java_lang_expand_expr): call expand_resume_after_catch
7942         to branch back to main flow of control after a catch block.
7943
7944 Sat Jan 23 23:02:43 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7945
7946         * Makefile.in (parse.o): Depend on $(CONFIG_H) and
7947         $(srcdir)/../system.h.
7948         (class.o): Depend on $(PARSE_H) and $(srcdir)/../output.h.
7949         (jcf-parse.o): Depend on $(srcdir)/../toplev.h.
7950         (jcf-write.o): Likewise.
7951         (jv-scan.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h.
7952         (mangle.o): Depend on $(srcdir)/../toplev.h.
7953         (parse-scan.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h.
7954         (zextract.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h.
7955
7956         * class.c: Include output.h and parse.h.
7957         (mangled_classname): Add the `const' keyword to a char*.
7958         (find_named_method): Hide unused function definition.
7959         (build_utf8_ref): Change type of variable `c' to unsigned char.
7960         Use ISALPHA/ISDIGIT instead of isalpha/isdigit.
7961         (build_class_ref): Add the `const' keyword to a char*.
7962         (layout_class_method): Remove unused variable `buf'.
7963
7964         * decl.c (find_local_variable): Remove unused variable `rtl'.
7965         (pushdecl): Likewise for variables `different_binding_level' and
7966         `oldglobal'.
7967         (pushlevel): Mark parameter `unused' with ATTRIBUTE_UNUSED.
7968         (maybe_build_cleanup): Likewise for parameter `decl'.
7969
7970         * except.c (expand_start_java_handler): Mark parameter `range'
7971         with ATTRIBUTE_UNUSED.
7972
7973         * expr.c: Include except.h.
7974         (pop_type): Remove unused variable `i'.
7975         (pop_value): Likewise for variables `n_words' and `i'.
7976         (expand_java_arrayload): Likewise for variable `convert'.
7977         (java_lang_expand_expr): Likewise for variables `op0', `type',
7978         `mode', `unsignedp', `node' and `elements'.
7979         (expand_byte_code): Likewise for variables `prev_eh_ranges' and
7980         `eh_ranges'.
7981         (process_jvm_instruction): Add a `const' qualifier to a char*.
7982
7983         * gjavah.c (output_directory): Add the `const' keyword to a char*.
7984         (temp_directory): Likewise.
7985         (print_c_decl): Likewise.
7986         (print_method_info): Likewise.
7987         (decode_signature_piece): Likewise.
7988         (print_mangled_classname): Likewise.
7989
7990         * java-except.h: Provide prototypes for maybe_start_try,
7991         maybe_end_try and add_handler.
7992
7993         * java-tree.h (mangled_classname): Add the `const' keyword to a char*.
7994         (parse_error_context): Likewise.  Also add ATTRIBUTE_PRINTF_2.
7995         (pushdecl_top_level, alloc_class_constant, unicode_mangling_length,
7996         init_expr_processing, push_super_field, init_class_processing,
7997         can_widen_reference_to, class_depth, verify_jvm_instructions,
7998         maybe_pushlevels, maybe_poplevels, process_jvm_instruction,
7999         set_local_type, merge_type_state, push_type, load_type_state,
8000         add_interface, find_in_current_zip, append_gpp_mangled_classtype,
8001         emit_unicode_mangled_name): Add prototypes.
8002
8003         * jcf-dump.c (print_constant): Add the `const' keyword to a char*.
8004         (print_signature_type): Use ISDIGIT, not isdigit.
8005         (print_signature): Remove unused variable `j'.
8006
8007         * jcf-io.c (jcf_filbuf_from_stdio): Cast the result of `fread' to
8008         int when comparing against one.
8009
8010         * jcf-parse.c: Include toplev.h.
8011
8012         * jcf-write.c: Likewise.  Don't include <string.h> or <sys/stat.h>.
8013         (localvar_free): Remove unused variable `i'.
8014         (generate_bytecode_conditional): Likewise for variable `kind'.
8015
8016         * jv-scan.c: Include config.h and system.h.  Remove redundant
8017         OS header and gansidecl.h includes.
8018         (warning): Add the `const' keyword to a char*.  Also add
8019         ATTRIBUTE_PRINTF_1 to the prototype.  Check ANSI_PROTOTYPES, not
8020         __STDC__, when determining whether to use ANSI-isms.
8021         (fatal): Likewise.  Also add ATTRIBUTE_UNUSED.
8022         (xmalloc): Don't redundantly prototype here.
8023         (main): Remove unused parameter `envp'.  Also fix the arguments
8024         passed to function `fatal' to match the format specifier.
8025
8026         * lang.c (java_tree_code_name): Add the `const' keyword to a char*.
8027
8028         * mangle.c: Include toplev.h.
8029         (emit_unicode_mangled_name): Declare parameter `len'.
8030
8031         * parse.y (parse_warning_context): Add the `const' keyword to a
8032         char*.  Also add ATTRIBUTE_PRINTF_2 to the prototype.  Check
8033         `ANSI_PROTOTYPES' not `__STDC__' for whether to use ANSI-isms.
8034         (issue_warning_error_from_context): Add the `const' keyword to
8035         a char*.
8036         (parse_error_context): Likewise.  Also check `ANSI_PROTOTYPES'
8037         not `__STDC__' for whether to use ANSI-isms.
8038
8039         * typeck.c (incomplete_type_error): Mark parameters `value' and
8040         `type' with ATTRIBUTE_UNUSED.
8041         (parse_signature_type): Use ISDIGIT, not isdigit.
8042
8043         * verify.c (check_pending_block): Add the `const' keyword to a char*.
8044         (verify_jvm_instructions): Likewise.  Remove unused variables
8045         `field_name' and `default_val'.
8046
8047         * zextract.c: Include config.h and system.h.  Remove redundant
8048         OS header includes.
8049
8050         * zipfile.h: Prototype `read_zip_archive'.
8051
8052 Thu Jan 21 16:00:06 1999  Andrew Haley  <aph@cygnus.com>
8053
8054         * typeck.c (convert): Allow conversions to void type: some
8055         optimizations in gcc do this.
8056
8057 Thu Jan 21 15:21:49 1999  Andrew Haley  <aph@cygnus.com>
8058
8059         * typeck.c (convert_ieee_real_to_integer): New function.
8060         (convert): When not using fast-math and using hardware fp, convert
8061         an IEEE NaN to zero.
8062
8063 1999-01-18  Andrew Haley  <aph@cygnus.com>
8064
8065         * parse.y (patch_binop): Do a type conversion from signed to
8066         unsigned and then back to signed when a ">>>" is found.
8067
8068 Sun Jan 17 22:34:22 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8069
8070         * java-tree.h: (check_for_initialization): Added prototype.
8071         * lex.c (java_parse_doc_section): `\n' breaks the `*/' string.
8072         * parse.y (do_resolve_class): Removed unused locals.
8073         (read_import_dir): Likewise.
8074         (resolve_qualified_expression_name): Array creation
8075         expressions are valid primary expressions.
8076         (qualify_ambiguous_name): Likewise.
8077         (patch_synchronized_statement): Removed unused local.
8078
8079 Sun Jan 17 21:55:42 1999  Jeffrey A Law  (law@cygnus.com)
8080
8081         * Makefile.in (zextract.o): Add dependencies.
8082
8083         * Makefile.in: Do not put ^Ls at the start of a line.
8084
8085 Fri Jan 15 20:16:20 1999  Per Bothner  <bothner@cygnus.com>
8086
8087         * expr.c (process_jvm_instruction):  Coerce to correct Throwable
8088         sub-type the result of the call that gets the exception value.
8089
8090         * parse.y (java_complete_expand_methods):  If flags_syntax_only,
8091         don't call finish_class.
8092
8093         * parse.y (java_check_regular_methods):  If METHOD_PRIVATE,
8094         clear found before continuing.
8095
8096         * verify.c (verify_jvm_instructions):  On an array load, allow
8097         and handle top of stack to be TYPE_NULL.
8098
8099         * gjavah.c (generate_access):  Translate Java package private or
8100         protected access to C++ public, but with a comment.
8101
8102 1999-01-13  Andrew Haley  <aph@cygnus.com>
8103
8104         * expr.c (generate_name): Name prefix changed to avoid clashes
8105         with assembler temp labels.
8106
8107         * parse.y (patch_synchronized_statement): Set TREE_SIDE_EFFECTS on
8108         MODIFY_EXPR.  Without this, code for the assignement may not be
8109         generated at all and the synchronized statement will read an
8110         uninitialized variable.
8111
8112 Wed Jan 13 01:24:54 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8113
8114         * class.c (maybe_layout_super_class): Fixed returned value.
8115         * lex.c: Added 1999 to the copyright.
8116         (java_init_lex): Initialize java_lang_imported.
8117         * lex.h: Added 1999 to the copyright.
8118         * parse.h: Added 1999 to the copyright.
8119         (REGISTER_IMPORT): Fixed typo in trailing macro.
8120         (CURRENT_OSB): New macro.
8121         (struct parser_ctxt): New fields osb_depth, osb_limit.
8122         * parse.y (java_lang_id): New global variable.
8123         (type_import_on_demand_declaration): Don't import java.lang.* twice.
8124         (array_creation_expression:): Use CURRENT_OSB.
8125         (dims:): Uses a stack to keep track of array dimensions.
8126         (cast_expression:): Use CURRENT_OSB.
8127         (find_expr_with_wfl): Return NULL if node found doesn't meet the
8128         conditions.
8129         (register_fields): Fixed typos in comment.
8130         (check_method_redefinition): Fixed comment indentation.
8131         (java_check_regular_methods): Set saved found wfl to NULL after
8132         having reinstalled it in the previously found DECL_NAME.
8133
8134 Sun Jan 10 13:36:14 1999  Richard Henderson  <rth@cygnus.com>
8135
8136         * gjavah.c (java_float_finite): Use a union to do type punning.
8137         (java_double_finite): Likewise.
8138
8139 Sat Jan  9 11:25:00 1999  Per Bothner  <bothner@cygnus.com>
8140
8141         * parse.y (build_new_array_init):  Don't set EXPR_WFL_LINECOL
8142         on CONSTRUCTOR (since that trashes TREE_CST_RTL).
8143         (patch_new_array_init):  Clear TREE_CONSTANT also if INDIRECT_REF.
8144         (register_fields):  Set TREE_STATIC on NEW_ARRAY_INIT, not on
8145         CONSTRUCTOR (which causes expand_expr to call output_constant_def).
8146         * expr.c (java_lang_expand_expr):  Check TREE_STATIC of NEW_ARRAY_INIT.
8147
8148 Fri Jan  8 15:48:03 1999  Per Bothner  <bothner@cygnus.com>
8149
8150         * check-init.c (check_init):  If compiling to native, we don't
8151         see THROW_EXPR.  Instead, look for a call to throw_node (_Jv_Throw).
8152
8153 1999-01-08  Tom Tromey  <tromey@cygnus.com>
8154
8155         * parse-scan.y (variable_declarator_id): Set or increment
8156         bracket_count.
8157         (bracket_count): New global.
8158         (formal_parameter): Handle case where bracket pairs trail variable
8159         declarator id.
8160
8161 1999-01-07  Andrew Haley  <aph@viagra.cygnus.co.uk>
8162
8163         * jcf-parse.c (yyparse): variable len changed from a char to an
8164         int to prevent overflow.
8165
8166 Wed Jan  6 17:19:46 1999  Per Bothner  <bothner@cygnus.com>
8167
8168         * java-tree.h:  Declare read_class.
8169         * jcf-parse.c (read_class):  New function.
8170         (load_class):  Now just call read_class.
8171
8172         * java-tree.h (java_parse_abort_on_error):  Only return if new errors.
8173         * jcf-parse.c (parse_source_file):  Declare save_error_count,
8174         which is needed by java_parse_abort_on_error macro,
8175         * parse.y (java_layout_classes, java_expand_classes):  Likewise.
8176
8177         * parse.y (register_fields):  Set TREE_STATIC flag of NEW_ARRAY_INIT
8178         constructor, if initializing a static field.
8179         (patch_new_array_init):  Set TREE_CONSTANT if it is.
8180         * expr.c (java_lang_expand_expr):  For a static array constructor
8181         of primitive elements, allocate the array itself statically.
8182         Disabled until we can set the vtable field statically.
8183
8184         * check-init.c:  New file.  Checks for definite assignment.
8185         * Makefile.in (JAVA_OBJS):  Add check-init.o.
8186         * parse.y (java_complete_expand_method): Call check_for_initialization.
8187         * parse.h (BLOCK_EXPR_DECLS, BLOCK_EXPR_BODY):  Moved to java-tree.h.
8188
8189 Wed Jan  6 14:53:10 1999  Graham <grahams@rcp.co.uk>
8190
8191         * parse.y : include system.h instead of including
8192         standard headers directly with the exception of <dirent.h>.
8193
8194 Wed Jan  6 16:20:06 1999  Per Bothner  <bothner@cygnus.com>
8195
8196         * lex.h:  Moved static function declarations to lex.c,
8197         to shut up some -Wall warnings.
8198         * lex.c:  Static function declarations moved here.
8199         * jcf-dump.c:  Small fixes to shut up -Wall warnings.
8200
8201 Tue Jan  5 22:15:40 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8202
8203         * Make-lang.in ($(GCJ).o): Depend on prefix.h.
8204
8205 Tue Dec 22 11:25:19 1998  Per Bothner  <bothner@cygnus.com>
8206
8207         * expr.c (process_jvm_instruction):  Do load_type_state after JSR.
8208         * verify.c (verify_jvm_instructions):  Fix off-by-one error.
8209
8210         * jcf-write.c (CHECK_PUT):  Add (void) cast to avoid -Wall warnings.
8211         (localvar_alloc):  Change return type to void,
8212         (emit_unop):  Remove unused variable size.
8213
8214         * jcf-write.c (struct jcf_block):  Add new union.
8215         (PENDING_CLEANUP_PC, PENDING_EXIT_PC, UNDEFINED_PC):  New macros.
8216         (call_cleanups):  New functions.
8217         (struct jcf_partial):  New fields num_finalizers and return_value_decl.
8218         (generate_bytecode_insns):  Support CLEANUP_POINT_EXPR and
8219         WITH_CLEANUP_EXPR.  Handle cleanups in RETURN_EXPR and EXIT_BLOCK_EXPR.
8220         * lang.c (lang_init):  Call using_eh_for_cleanups.
8221         * parse.y (java_complete_lhs):  For SYNCHRONIZED_EXPR, defer
8222         completing operands to patch_synchronized_statement.
8223         Support CLEANUP_POINT_EXPR, WITH_CLEANUP_EXPR.
8224         (patch_synchronized_statement): Re-write suing CLEANUP_POINT_EXPR and
8225         WITH_CLEANUP_EXPR instead of TRY_EXPR.
8226
8227 Sun Dec 20 16:15:44 1998  John F. Carr  <jfc@mit.edu>
8228
8229         * Make-lang.in: Comment out control-Ls; they upset some makes.
8230
8231 1998-12-18  Tom Tromey  <tromey@cygnus.com>
8232
8233         * parse.y (check_class_interface_creation): Use DIR_SEPARATOR
8234         consistently.
8235
8236 1998-12-17  Tom Tromey  <tromey@cygnus.com>
8237
8238         * parse.y (DIR_SEPARATOR): New define.
8239         (check_class_interface_creation): Use it.
8240
8241         * parse-scan.y (report_main_declaration): Recognize
8242         `java.lang.String' in argument to main.
8243
8244 Wed Dec 16 16:18:59 1998  Per Bothner  <bothner@cygnus.com>
8245
8246         * parse.y (create_interface):  Remove bogus test.
8247
8248 Wed Dec 16 14:42:19 1998  Per Bothner  <bothner@cygnus.com>
8249
8250         * jcf-parse.c (get_constant):  Set TREE_TYPE for string constants.
8251         (HANDLE_CONSTANTVALUE):  If flag_emit_class_files, call get_constant.
8252
8253 1998-12-16  Tom Tromey  <tromey@cygnus.com>
8254
8255         * parse-scan.y (qualified_name): Use correct sprintf format.
8256
8257 1998-12-15  Tom Tromey  <tromey@cygnus.com>
8258
8259         * gjavah.c (print_field_info): Changed how most negative number is
8260         printed.
8261
8262 Mon Dec 14 18:49:29 1998  Per Bothner  <bothner@cygnus.com>
8263
8264         * parse.y (fold_constant_for_init):  New function.
8265         (resolve_expression_name):  Don't replace static final
8266         constant-initialized fields by its value.
8267         (java_complete_lhs):  New.  Same as java_complete_tree, except does
8268         not replace static final constant-initialized fields by their values.
8269         (register_fields):  If there is an initializer, set DECL_INITIAL and
8270         MODIFY_EXPR_FROM_INITIALIZATION_P.
8271         (java_complete_tree):  For MODIFY_EXPR, use java_complete_lhs for lhs.
8272         Only call patch_initialized_static_field if
8273         MODIFY_EXPR_FROM_INITIALIZATION_P.
8274         (patch_initialized_static_field):  If not valid constant, clear
8275         DECL_INITIAL.
8276
8277         * parse.y (lookup_field_wrapper):  Fix thinko.
8278
8279         * parse.y (java_complete_tree):  In EXPR_WITH_FILE_LOCATION,
8280         set and restore global lineno.
8281
8282 1998-12-14  Tom Tromey  <tromey@cygnus.com>
8283
8284         * gjavah.c (print_field_info): If value to print is the smallest
8285         value of its size, then print as hex to avoid later warnings from
8286         C++ compiler.
8287
8288 1998-12-14  Tom Tromey  <tromey@cygnus.com>
8289
8290         * gjavah.c (decompile_method): Decompile `return null'.
8291         (process_file): Generate `#pragma interface'.
8292         (method_declared): New global.
8293         (print_method_info): Set it.
8294         (HANDLE_CODE_ATTRIBUTE): Only print it method_declared set.
8295         (print_method_info): Handle abstract methods.
8296
8297 Sun Dec 13 17:31:40 1998  Per Bothner  <bothner@cygnus.com>
8298
8299         * parse.y (patch_method_invocation):  If class_decl is null
8300         (e.g. an array type), use original type.
8301
8302         * parse.y (check_thrown_exceptions):  Temporary hack to suppress
8303         errors about uncaught exception from clone (of array, specifically).
8304
8305 1998-12-13  Tom Tromey  <tromey@cygnus.com>
8306
8307         * gjavah.c (decompile_method): Handle all types of `return'
8308         opcode.  Decompile `return this' and `return'.
8309         (method_access): New global.
8310         (print_method_info): Set it.
8311         (decompile_method): Don't decompile a synchronized method.
8312
8313 1998-12-13  Tom Tromey  <tromey@cygnus.com>
8314
8315         * jcf-reader.c (jcf_parse_one_method): Recognize
8316         HANDLE_END_METHOD.
8317         * gjavah.c (HANDLE_END_METHOD): New macro.
8318         (HANDLE_CODE_ATTRIBUTE): New macro.
8319         (decompile_method): New function.
8320         (print_method_info): Don't print `;\n' at end of function decl.
8321         Include java-opcodes.h.
8322         (decompiled): New global.
8323
8324 Sat Dec 12 20:13:19 1998  Per Bothner  <bothner@cygnus.com>
8325
8326         * class.c (build_class_ref):  Handle PRIMTYPE.class if
8327         flag_emit_class_files.
8328         * expr.c (expand_java_field_op):  Don't optimize java.lang.XXX.TYPE
8329         if flag_emit_class_files.
8330         * parse.y (java_complete_tree):  Pre-liminary support for
8331         COMPONENT_REF - only to handle PRIMCLASS.TYPE.
8332
8333         * parse.y (patch_synchronized_statement):   Don't call monitorexit
8334         unless block CAN_COMPLETE_NORMALLY.  Propagate that flag properly.
8335
8336         * java-tree.h (DECL_LOCAL_STATIC_VALUE):  Removed - no longer used.
8337
8338         * zipfile.h (opendir_in_zip):  New declaration.
8339         * jcf-io.c (saw_java_source):  Moved to jcf-parse.c.
8340         (opendir_in_zip):  New function, using code from open_in_zip.
8341         (open_in_zip):  Call opendir_in_zip.
8342         (find_class):  Remove no-longer-used do_class_file parameter,
8343         but add source_ok parameter.  Change logic so if we find a .java file,
8344         we don't look for .class in later classpath emtries.
8345         * jcf-parse.c (load_class):  Pass saw_java_source to find_class.
8346         (jcf_figure_file_type):  Only call open_in_zip if correct magic number.
8347         * gjavah.c: Update call to find_class.
8348         * jcf-dump.c:  Likewise.
8349
8350         * jcf-write.c (put_linenumber):  Handle duplicate line numbers.
8351         (generate_bytecode_insns):  For EXPR_WITH_FILE_LOCATION, do
8352         nothing if body is empty_stmt_node.
8353         Various little fixes so SP gets correctly adjusted.
8354         For NEW_ARRAY_INIT, handle IGNORE_TARGET.
8355         For CALL_EXPR, test if static first.
8356         (generate_classfile):  Ignore fields that are DECL_ARTIFICIAL,
8357         such as the ones we create for Object and Class.
8358         Set and restore current_function_decl.
8359         * parse.y:  Check/set IS_AN_IMPORT_ON_DEMAND_P in read_import_dir.
8360         (note_possible_classname):  New function.
8361         (read_import_entry):  Removed.  Merged with read_import_dir.
8362         (read_import_dir):  Don't call find_class - that only gives us
8363         the first classpath entry having the needed package.
8364         Use the struct buffer data structure from buffer.h.
8365         (read_import_dir, find_in_imports_on_demand):  The remembered
8366         class names now use '.' (not '/') as package separator.
8367
8368         * parse.y (java_complete_expand_methods):  Call write_classfile
8369         here, and not in java_expand_classes (which only gets first class).
8370
8371 Sat Dec 12 19:46:04 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8372
8373         * parse.y (<type_declaration>):  Do maybe_generate_clinit last.
8374         (register_fields):  If a static fields has an initializer, just
8375         chain it on ctxp->static_initialized, and handle later.
8376         (java_complete_expand_methods):  Force <clinit> first.
8377         (resolve_expression_name, resolve_field_access):  Just get DECL_INITIAL
8378         - it's already been completed.
8379         (patch_initialized_static_field):  New function.
8380         (java_complete_field):  Call it.
8381
8382 Sat Dec 12 19:21:11 1998  Per Bothner  <bothner@cygnus.com>
8383
8384         * expr.c (encode_newarray_type, build_new_array):  New functions.
8385         * java-tree.h:  Declare build_new_array.
8386         * jcf-write.c (patch_newarray):  Use build_new_array.
8387
8388         * expr.c (java_lang_expand_exp):  Support NEW_ARRAY_INIT.
8389         * jcf-write.c (generate_bytecode_insns):  Support NEW_ARRAY_INIT.
8390
8391         * parse.y (patch_new_array_init):  Re-organize.
8392         Now is passed the actual array (pointer) type of the value.
8393         Set the type of the CONSTRUCTOR to be an ARRAY_TYPE.
8394         (patch_array_constructor):  Removed - merged into patch_new_array_init.
8395         (java_complete_tree):  Update patch_new_array_init.
8396
8397         * jcf-write.c (find_constant_index):  New function.
8398         (generate_bytecode_insns):  Use find_constant_index.
8399         (generate_classfile):  Use find_constant_index for ConstantValue.
8400
8401 1998-12-11  Tom Tromey  <tromey@cygnus.com>
8402
8403         * expr.c (invoke_build_dtable): Renamed dtable -> vtable.
8404         * decl.c (init_decl_processing): Renamed dtable -> vtable.
8405         * class.c (make_class_data): Renamed dtable -> vtable, and
8406         dtable_method_count -> vtable_method_count.
8407
8408 Thu Dec 10 20:00:54 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8409
8410         * decl.c (long_zero_node, float_zero_node, double_zero_node): New
8411         global variables, initialized.
8412         * java-tree.h (long_zero_node, float_zero_node, double_zero_node):
8413         Declared new global variables.
8414         * lex.c (java_lex): Return long_zero_node, float_zero_node,
8415         double_zero_node, integer_zero_node upon direct matching.
8416         * parse.y (purify_type_name): Added function prototype.
8417         (duplicate_declaration_error_p): Consider new_type as potentially
8418         being a incomplete type. Use purify_type_name on type string.
8419         (method_header): saved_type: unused variable removed. Don't figure
8420         return type if method name is invalid.
8421         (java_complete_tree): Set CAN_COMPLETE_NORMALLY after `node' was
8422         processed by patch_unaryop.
8423         (patch_unaryop): Fixed typo in comment. Re-convert pre/post
8424         increment/decrement node into its original type after binary
8425         numeric promotion on its operands.
8426
8427 Thu Dec 10 11:02:49 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8428
8429         * parse.y (array_initializer:): Array init operand is NULL_TREE
8430         instead of a TREE_LIST of NULL_TREEs when parsing `{}'. `{,}' is
8431         now an error. Fixed indentation problems.
8432         (patch_string): Handle error_mark_node as an argument.
8433         (patch_new_array_init): Fixed indentation problems.
8434         (array_constructor_check_entry): Removed check on null wfl_value.
8435         Return an error if wfl_value's walk returns an error.
8436
8437 Wed Dec  9 15:37:05 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8438
8439         * java-tree.def (NEW_ARRAY_INIT): New Java tree code.
8440         * lex.c (java_lex): Remember column position before advancing one
8441         token. Retain location information on OCB_TK.
8442         * lex.h (typedef struct java_lc): Added new field.
8443         * parse.h (GET_SKIP_TYPE): New macro.
8444         (QUAL_DECL_TYPE): Redefined using GET_SKIP_TYPE.
8445         * parse.y (build_new_array_init, patch_new_array_init,
8446         patch_array_constructor, maybe_build_array_element_wfl,
8447         array_constructor_check_entry): New function prototypes.
8448         (switch_block:): Tagged <node>.
8449         (OCB_TK): Tagged <operator>.
8450         (array_initializer:): Installed actions.
8451         (variable_initializer): Build location information on element if
8452         necessary.
8453         (switch_statement:): Fixed indentation typo.
8454         (switch_block:): Redefined default action.
8455         (java_complete_tree): Handle NEW_ARRAY_INIT in MODIFY_EXPR:.
8456         (patch_assignment): Removed duplicate code.
8457         (maybe_build_array_element_wfl, build_new_array_init,
8458         patch_new_array_init, patch_array_constructor,
8459         array_constructor_check_entry): New functions.
8460
8461 Mon Dec  7 15:13:52 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8462
8463         * parse.y (array_initializer): Tagged <node>.
8464         (variable_initializer:): Use default rule.
8465         (array_initializer:): Defined actions.
8466         (variable_initializers:): Likewise.
8467         (resolve_qualified_expression_name): Use DECL_CONTEXT to build
8468         non-static field accesses.
8469         (patch_invoke): Fixed indentation typo.
8470         (java_complete_tree): Likewise.
8471         (build_labeled_block): Changed leading comment. Generate an error
8472         in case of duplicate loop labels.
8473         (patch_conditional_expr): Patch results of string concatenation
8474         operations.
8475
8476 Sun Dec  6 13:45:00 1998  Per Bothner  <bothner@cygnus.com>
8477
8478         * constants.c (find_methodref_index):  When the class is an interface,
8479         generate CONSTANT_InterfaceMethodref instead of a CONSTANT_MethodRef.
8480
8481         * decl.c (finit_identifier_node):  Use "$finit$", rather than
8482         "<finit>" (which Sun's verifier rejects).
8483         * parse.y (maybe_generate_finit):  Leave out meaningless final flag.
8484         (generate_field_initialization_code):  Removed.
8485         (fix_constructors)  Don't add call to $finit$ here (wrong order).
8486         (patch_method_invocation):  Add $finit$ call here.
8487
8488         * java-tree.h (CALL_USING_SUPER):  New macro.
8489         * parse.y (patch_invoke):  Remove im local variable.
8490         (patch_method_invocation, patch_invoke):  Don't pass super parameter.
8491         (patch_invoke):  Use CALL_USING_SUPER instead of from_super parameter.
8492         (resolve_qualified_expression_name):  Maybe set CALL_USING_SUPER.
8493
8494         * jcf-write.c (get_access_flags):  Fix typo ACC_PUBLIC -> ACC_FINAL.
8495
8496         * parse.y (java_complete_tree):  Don't complain about unreachable
8497         statement if it is empty_stmt_node.
8498
8499         * jcf-write.c (find_constant_wide):  New function.
8500         (push_long_const):  Use find_constant_wide.
8501
8502         * jcf-write.c (generate_bytecode_insn):  Fix bug in switch handling.
8503         (generate_bytecode_insn):  Use correct dup variant for MODIFY_EXPR.
8504         Add "redundant" NOTE_PUSH/NOTE_POP uses so code_SP_max gets set.
8505         Emit invokeinterface when calling an interface method.
8506         Emit invokespecial also when calling super or private methods.
8507
8508         * jcf-write.c (generate_classfile):  Emit ConstantValue attributes.
8509
8510 Sun Dec  6 13:21:18 1998  Per Bothner  <bothner@cygnus.com>
8511
8512         * jcf-dump.c (INVOKE):  If invokeinterface, print number of args.
8513
8514 Thu Dec  3 17:11:12 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8515
8516         * java-tree.h (java_layout_seen_class_methods): New function
8517         prototype.
8518         (LAYOUT_SEEN_CLASS_METHODS): Macro removed.
8519         * jcf-parse.c (parse_class_file): Call java_layout_seen_class_methods.
8520         * parse.h (PROMOTE_RECORD_IF_COMPLETE): New macro.
8521         * parse.y (method_declarator:): Defined action.
8522         (issue_warning_error_from_context): input_filename saved, set to
8523         the appropriate value and restored after java_error is called.
8524         (build_unresolved_array_type): Fixed comment.
8525         (register_fields): Use PROMOTE_RECORD_IF_COMPLETE.
8526         (method_header): Deal with return type the same way type are
8527         handled for fields and method's parameters and local variables
8528         types are handled.
8529         (check_method_redefinition): Removed extra CR.
8530         (declare_local_variables): Use PROMOTE_RECORD_IF_COMPLETE.
8531         (java_layout_seen_class_methods): New function.
8532         (java_layout_classes): Call java_layout_seen_class_methods.
8533
8534 Thu Dec  3 15:56:50 1998  Per Bothner  <bothner@cygnus.com>
8535
8536         * parse,y (patch_synchronized_statement):  Set CAN_COMPLETE_NORMALLY.
8537
8538 Thu Dec  3 15:08:30 1998  Per Bothner  <bothner@cygnus.com>
8539
8540         * jcf-dump.c (main):  Fix error message.
8541         * jcf-path.c (add_entry):  Style fix.
8542
8543 Wed Dec  2 15:52:25 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8544
8545         * class.c (layout_class_method): Call build_java_argument_signature
8546         on constructors too.
8547         * parse.y (check_method_redefinition): Use TYPE_ARGUMENT_SIGNATURE.
8548         (patch_method_invocation): Define a primary when resolving an
8549         expression name. Augmented comment on code checking illegal `this'
8550         usage. Loosened it test by accepting NEW_CLASS_EXPR.
8551
8552 Tue Dec  1 13:53:24 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8553
8554         * class.c (layout_class_method): Don't report error on non-static
8555         overriding static if the method is private.
8556         * java-tree.h (finish_class): Prototype added.
8557         * lex.c (java_get_line_col): Handle col argument -2 value.
8558         * parse.h: All static method declarations moved to parse.y.
8559         * parse.y: Now contains all static method declarations previously
8560         found in parse.h.
8561         (find_expr_with_wfl, missing_return_error,
8562         unreachable_stmt_error): New functions.
8563         (java_get_real_method_name): Identify constructors bearing class
8564         names in source code compiled classes only.
8565         (java_complete_expand_methods): Call missing_return_error.
8566         (invocation_mode): Private methods invoked as static methods.
8567         (java_complete_tree): Call unreachable_stmt_error.
8568
8569 1998-12-01  Tom Tromey  <tromey@cygnus.com>
8570
8571         * Makefile.in (+target): Removed.
8572         (+xmake_file): Likewise.
8573         (+tmake_file): Likewise.
8574         (.NOEXPORT): Removed duplicate.
8575
8576 Fri Nov 27 13:20:51 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8577
8578         * Makefile.in (jc1, jv-scan): Link with $(SUBDIR_OBSTACK).
8579
8580         * jv-scan.c: Fix xmalloc prototype.  Provide an xmalloc definition.
8581
8582         * jvgenmain.c: Remove the xmalloc prototype, we get it from
8583         libiberty.h.  Provide an xmalloc definition.
8584
8585         * jvspec.c: Remove the xmalloc prototype.
8586
8587         * parse-scan.y: Include config.h and system.h.  Don't include
8588         OS headers or gansidecl.h.  Don't prototype xmalloc/xstrdup.
8589         Provide an xstrdup definition.
8590
8591 Thu Nov 26 22:03:58 1998  Alexandre Oliva  <oliva@dcc.unicamp.br>
8592
8593         * jcf-path.c (add_entry): Recognize ".jar" too.
8594         * lang-specs.h: Likewise.
8595
8596 Thu Nov 26 12:44:07 1998  Per Bothner  <bothner@cygnus.com>
8597
8598         * jcf-write.c (generate_bytecode_insns):  In Call_EXPR, handle
8599         soft_monitorenter_node, soft_monitorexit_node, throw_node.
8600
8601         * jcf-write.c (generate_bytecode_insns):
8602         Handle pre/post-increment/decrement of long.
8603
8604         * jcf-write.c (generate_bytecode_insns):
8605         Handle missing exception handler (finally for synchronized).
8606
8607 Wed Nov 25 09:47:15 1998  Per Bothner  <bothner@cygnus.com>
8608
8609         * java-tree.h (end_params_node):  Declare global.
8610         * decl.c (end_params_node):  New global.
8611         (init_decl_processing, start_java_method):  Use end_params_node for
8612         end of list of parameter types.  Follows correct gcc conventions.
8613         * expr.c (pop_argument_types, pop_arguments):  Likewise.
8614         * lang.c (put_decl_node):  Likewise.
8615         * typeck.c (various places):  Likewise.
8616         * class.y (various places):  Likewise.
8617         * parse.y (various places):  Likewise.
8618
8619         * parse.y (java_complete_tree):  Move CAN_COMPLETE_NORMALLY.
8620         (build_jump_to_finally):  Add missing CAN_COMPLETE_NORMALLY.
8621
8622         * class.c:  Add #include flags.h, remove no-longer needed declaration.
8623
8624         * class.c (layout_class_method):  Remove commented-out code, re-format.
8625         Don't add vtable entry (or index) for private methods.
8626         * expr.c (expand_invoke):  A private method is implicitly final.
8627         * class.c (make_class_data):  If inlining or optimizing,
8628         skip private methods.
8629
8630         * class.c (finish_class):  New function.  Calls existing methods,
8631         but alls emits deferred inline functions.
8632         * jcf-parse.c (parse_class_file):  Call finish_class.
8633         * parse.y (java_complete_expand_methods):  Likewise.
8634
8635         * expr.c (build_java_binop):  Explicit default, to silence -Wall.
8636
8637         * expr.c (CHECK_PC_IN_RANGE):  Add void cast to kill warnings.
8638
8639 Wed Nov 25 00:50:58 1998  Marc Espie <espie@quatramaran.ens.fr>
8640
8641         * jcf-write.c (generate_bytecode_conditional): Fix typo.
8642
8643 Tue Nov 24 17:06:38 1998  Per Bothner  <bothner@cygnus.com>
8644
8645         * (generate_classfile): Always write class access flag with
8646         ACC_SUPER set.
8647
8648 Tue Nov 24 16:34:33 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8649
8650         * class.c (maybe_layout_super_class): New function.
8651         (layout_class): Reorganized. Loop on class methods dispatched into
8652         a new function. Call maybe_layout_super_class.
8653         (layout_class_methods, layout_class_method): New functions.
8654         * expr.c (expand_java_NEW): Call layout_class_methods on loaded
8655         class.
8656         (expand_invoke): Likewise.
8657         * java-tree.h (all_class_list): New global variable declared.
8658         (layout_class_methods, layout_class_method): New function
8659         prototypes.
8660         (LAYOUT_SEEN_CLASS_METHODS): New macro.
8661         * jcf-parse.c (all_class_list): New global variable.
8662         (load_class): Extended what class_or_name can be. Use parser
8663         context mechanism to save globals before calling jcf_parse.
8664         (jcf_parse_source): Don't parse twice if HAS_BEEN_ALREADY_PARSED_P
8665         is set on the file name.
8666         (jcf_parse): Layout class methods when Object is loaded, otherwise
8667         record class in all_class_list for delayed method layout.
8668         (parse_class_file): Use LAYOUT_SEEN_CLASS_METHODS.
8669         * lang.c (put_decl_node): Decode <init> into the decl context
8670         class name.
8671         * lex.c (java_allocate_new_line): Use xmalloc.
8672         * parse.h (INCOMPLETE_TYPE_P): Redefined to work with incomplete
8673         pointers, not TREE_LIST elements.
8674         (struct parser_ctxt): Fixed comment indentations, added comments
8675         and reordered some fields.
8676         (java_check_methods): Function prototype removed.
8677         * parse.y (java_push_parser_context): Use xmalloc.
8678         (java_parser_context_restore_global): Pop extra pushed ctxp only
8679         when there's nothing next.
8680         (maybe_create_class_interface_decl): Fixed comment, add new
8681         created class decl to all_class_list.
8682         (method_header): Use GET_REAL_TYPE on argument's types.
8683         (method_declarator): Use GET_REAL_TYPE, change type to the real
8684         type in TREE_LIST dependency node. Build argument list with the
8685         real type.
8686         (create_jdep_list): Use xmalloc. Removed allocation error message.
8687         (obtain_incomplete_type): Fixed leading comment. Broadened
8688         incoming argument meaning.
8689         (register_incomplete_type): Use xmalloc. Removed allocation error
8690         message.
8691         (safe_layout_class): Fixed leading comment.
8692         (jdep_resolve_class): Reversed if statement condition and switch
8693         if and else bodies.
8694         (resolve_and_layout): Fixed leading comment. Broadened incoming
8695         argument meaning.
8696         (complete_class_report_errors): New local variable name, for
8697         clarity. purify_type_name used for all error cases.
8698         (java_get_real_method_name): Stricter check on constructors.
8699         (java_check_regular_methods): Reverse methods list only if not
8700         already laid out. Layout artificial constructor.
8701         (java_check_methods): Deleted.
8702         (source_start_java_method): Obtain incomplete type for patchable
8703         method arguments.
8704         (java_layout_classes): Fixed leading comment. Use
8705         LAYOUT_SEEN_CLASS_METHODS, use a loop to check methods. Added else
8706         statement to layout operation, reuse LAYOUT_SEEN_CLASS_METHODS
8707         before returning. Fixed comments.
8708         (java_expand_classes): Check for errors up front.
8709         (patch_method_invocation): Class to search is resolved and laid
8710         out.
8711
8712 Tue Nov 24 12:57:13 1998  Per Bothner  <bothner@cygnus.com>
8713
8714         * expr.c (java_lang_expand_expr):  Add missing emit_queue.
8715
8716         * javaop.h (int8):  Removed - not used.
8717         (jbyte):  Redefine portably with correct signedness.
8718
8719         * jcf-write.c (generate_bytecode_insns):  Don't free sw_state.cases.
8720
8721         * jcf-write.c (generate_bytecode_insns):  Fix typo
8722         OPCODE_getstatic to OPCODE_getfield.
8723
8724         * java-tree.def (CASE_EXPR, DEFAULT_EXPR):  Kind is 'x', not '1'.
8725         * parse.y (java_complete_tree):  For CASE_EXPR and DEFAULT_EXPR,
8726         set TREE_SIDE_EFFECTS (otherwise expand_expr may skip them).
8727
8728 Thu Nov 19 11:16:55 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8729
8730         * jcf-parse.c (jcf_parse_source): Function returned type is
8731         void. Added prototype.
8732         (jcf_parse): Function returned type is void.
8733         (yyparse): Remove call to fclose on the last parsed file.
8734
8735         * java-tree.h (jcf_parse): Changed jcf_parse prototype.
8736
8737 Wed Nov 18 23:54:53 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8738
8739         * class.c (unmangle_classname): Set QUALIFIED_P when appropriate.
8740         (layout_class): Cope with methods featuring WFL in decl names.
8741         * decl.c (unqualified_object_id_node): New global variable,
8742         initialized.
8743         (build_decl_no_layout): Removed.
8744         * expr.c (build_primtype_type_ref): Handle Double.
8745         (java_lang_expand_expr): Fixed indentations.
8746         * java-tree.h (CLASS_METHOD_CHECKED_P): Flag deleted.
8747         (flag_wall, flag_redundant, flag_not_overriding,
8748         flag_static_local_jdk1_1, unqualified_object_id_node): Global
8749         variable declarations.
8750         (build_decl_no_layout): Removed prototype.
8751         (java_get_real_method_name): Added prototype.
8752         (IS_UNCHECKED_EXPRESSION_P): Renamed IS_UNCHECKED_EXCEPTION_P.
8753         (java_parse_abort_on_error): Macro now just returns.
8754         * jcf-parse.c (jcf_parse_source): Check fclose returned
8755         value. Call emit_register_classes if java_report_errors returns
8756         zero.
8757         * lanc.c (flag_wall, flag_redundant, flag_not_overriding,
8758         flag_static_local_jdk1_1): New integer flags.
8759         (lang_decode_option): New flags set here.
8760         * parse.h (GET_REAL_TYPE, GET_METHOD_NAME): New macros.
8761         (OBSOLETE_MODIFIER_WARNING): Issue error message conditionally to
8762         the flag_redundant variable.
8763         (SET_TYPE_FOR_RESOLUTION): Consider Object being java.lang.Object
8764         when parsing java.lang.Object class.
8765         (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT): Added terminal
8766         NULL_TREE to build.
8767         (resolve_qualified_expression_name): Fixed indentation.
8768         (patch_array_ref): Changed prototype.
8769         (not_initialized_as_it_should_p): Prototype removed.
8770         (java_report_errors): Added function prototype.
8771         * parse.y (formal_parameter:): Changed error message for not yet
8772         supported final parameters.
8773         (class_type_list:): Set both PURPOSE and VALUE of created
8774         TREE_LIST to be class_type.
8775         (primary_no_new_array:): Handle class literals on primitive types.
8776         (parse_warning_context): Reinstalled correct force_error and
8777         do_warning flags setups.
8778         (java_report_errors): Changed prototype. Return java_error_count
8779         value.
8780         (variable_redefinition_error): Consider treating variable type as
8781         a fake pointer.
8782         (create_interface): Warn about redundant abstract modifier if
8783         flag_redundant is set. Changed error message.
8784         (lookup_field_wrapper): Save/restore globals before/after looking
8785         up field.
8786         (duplicate_declaration_error_p): Consider treating declaration
8787         type as a fake pointer.
8788         (register_fields): Extract real type from dependency node. Check
8789         for duplicate field declaration after type adjustment. Use
8790         DECL_INITIAL to store static final initialized values.
8791         (method_header): Extract real function type from dependency node.
8792         (check_abstract_method_header): Use GET_METHOD_NAME.
8793         (obtain_incomplete_type): Layout fake pointer type.
8794         (safe_layout_class): Don't try to check for methods before layout.
8795         (java_complete_class): Don't check for correct throws clause
8796         elements inheritance here.
8797         (resolve_and_layout): Broadened name parameter meaning.
8798         (reset_method_name): Use GET_METHOD_NAME.
8799         (java_get_real_method_name): New function.
8800         (java_check_regular_methods): Don't check methods in
8801         java.lang.Object.  Verify lineage of throws clause elements. Use
8802         flag_no_overriding in warning report.
8803         (check_throws_clauses): Don't check if class was from
8804         bytecode. Use IS_UNCHECKED_EXCEPTION_P macro.
8805         (java_check_methods): Don't set CLASS_METHOD_CHECKED_P flag.
8806         (declare_local_variables): Use flag_static_local_jdk1_1 to report
8807         warning on unsupported final local variables. Use build_decl
8808         instead of build_decl_no_layout. Get real local variable type from
8809         dependency node.
8810         (source_start_java_method): Get real parameter type from
8811         dependency node. Call build_decl instead of build_decl_no_layout.
8812         (java_layout_classes): Reverse tree and layout type and class as
8813         required. Mark class as loaded when done.
8814         (resolve_field_access): Fixed indentation. Restricted condition
8815         leading to static field access code generation. Set field_type
8816         decl's TREE_TYPE if QUAL_DECL_TYPE not available.
8817         (resolve_qualified_expression_name): Initialize type_found to
8818         null. Handle static field resolved during qualification. Fixed
8819         layout on non primitive field decl types.
8820         (not_accessible_p): Fixed typo in comment.
8821         (patch_method_invocation): Resolve and layout class to search from
8822         type.
8823         (lookup_method_invoke): Keep integer constant 0 as is. Resolve and
8824         layout non primitive type, if necessary. Make method node only to
8825         report errors.
8826         (find_applicable_accessible_methods_list): Consider WFL'ed method
8827         decl names. Fixed indentation.
8828         (argument_types_convertible): Resolve and layout target type if
8829         necessary.
8830         (java_complete_tree): Fixed indentation problems. Rewrote
8831         CALL_EXPR thrown exceptions check. Re-installed further processing
8832         of the assignment in certain cases.
8833         (patch_assignment): Call maybe_build_primttype_type_ref to perform
8834         inlining on class literals.
8835         (valid_builtin_assignconv_identity_widening_p): Cope with constant
8836         0 literal.
8837         (valid_method_invocation_conversion_p): Likewise.
8838         (patch_string): Temporary disable forbidden use of `this' in
8839         explicit constructor invocations when doing string concatenation
8840         within their scope.
8841         (patch_unaryop): Added comment. Reinstalled code to disable
8842         further check on assignment operation with cast expression RHS.
8843         (patch_switch_statement): Fixed indentation.
8844         (build_try_statement): Call build_decl instead of
8845         build_decl_no_layout.
8846         (patch_synchronized_statement): Likewise.
8847         (patch_throw_statement): Use IS_UNCHECKED_EXCEPTION_P instead of
8848         IS_UNCHECKED_EXPRESSION_P.
8849         (check_thrown_exceptions_do): Changed leading comment. Resolve and
8850         layout argument exception type.
8851         (purge_unchecked_exceptions): Use IS_UNCHECKED_EXCEPTION_P instead
8852         of IS_UNCHECKED_EXPRESSION_P.
8853
8854 Wed Nov 18 14:21:48 1998  Anthony Green  <green@cygnus.com>
8855
8856         * jcf-parse.c (yyparse): Open class file in binary mode.
8857
8858 Sun Nov 15 17:14:17 1998  Per Bothner  <bothner@cygnus.com>
8859
8860         * jvgenmain.c:  Need to #include "gansidecl.h" (to get PROTO).
8861
8862         * jcf-write.c (perform_relocations):  Move check out one loop.
8863
8864 Sun Nov 15 15:09:56 1998  Anthony Green  <green@hoser.cygnus.com>
8865
8866         * Make-lang.in: Fix reference to srcdir.
8867         * jv-scan.c: Add missing xmalloc prototype.
8868         * jvgenmain.c: Ditto.
8869
8870 Sun Nov 15 14:36:29 1998  Per Bothner  <bothner@cygnus.com>
8871
8872         * decl.c (error_mark_node), java-tree.h:  New global.
8873         * parse.y:  Use empty_stmt_node instead of size_zero_node.
8874         (build_if_else_statement):  If missing else, use empty_stmt_node.
8875
8876         * parse.y (not_initialized_as_it_should_p):  Removed, with its callers.
8877         (java_complete_expand_method):  Complain if return is missing.
8878         (java_check_regular_methods):  Comment out incorrect error check.
8879         (not_accessible_p):  Fix incorrect handling of protected methods.
8880         (patch_method_invocation):  Pass correct context to not_accessible_p.
8881         (find_applicable_accessible_methods_list):  Likewise.
8882         (qualify_ambiguous_name):  If ARRAY_REF, it's an expression name.
8883         (java_complete_tree):  For CASE_EXPR and DEFAULT_EXPR, set
8884         TREE_TYPE (to void_type_node);  otherwise expand_expr crashes.
8885         (patch_if_else_statement):  Fix setting of CAN_COMPLETE_NORMALLY.
8886
8887         * jcf-write.c (CHECK_OP, CHECK_PUT):  Add some error checking.
8888         (push_int_const):  Remove reundant NOTE_PUSH.
8889         (generate_bytecode_insns - case STRING_CST):  Do NOTE_PUSH.
8890         (- case SWITCH_EXPR):  Fix code generation bug.
8891         (- case PREDECREMENT_EXPR etc):  Remove redundant NOTE_PUSH.
8892         (generate_classfile):  More robust for abstract methods.
8893
8894 Sun Nov 15 13:52:39 1998  Anthony Green  <green@cygnus.com>
8895
8896         * Makefile.in: jv-scan and jvgenmain all require libiberty.
8897         * Make-lang.in: Ditto.
8898
8899         * jv-scan.c: Remove xmalloc and xstrdup definitions.
8900         * jvgenmain: Ditto.
8901
8902 Sun Nov 15 14:10:56 1998  Per Bothner  <bothner@cygnus.com>
8903
8904         * jcf-parse.c (HANDLE_EXCEPTIONS_ATTRIBUTE):  New macro.
8905
8906         * jcf-io.c (find_class):  Simpler/cleaner structure fixes a bug.
8907
8908 Sat Nov 14 17:19:18 1998  Per Bothner  <bothner@cygnus.com>
8909
8910         Allow uses of interface types to verify.  This is not really
8911         type-safe, but it matches what Sun does, and is OK as long as
8912         there are appropriate run-time checks.
8913         * verify.c (merge_types):  If merging two interface types,
8914         just set the result to java.lang.Object.
8915         * expr.c (pop_type):  Any interface is matches by java.lang.Object.
8916
8917 1998-11-13  Tom Tromey  <tromey@cygnus.com>
8918
8919         * gjavah.c (main): Handle --output-class-directory argument.
8920         * jvspec.c (lang_specific_driver): Translate `-d' into
8921         -foutput-class-dir.
8922         * jcf.h (jcf_write_base_directory): Declare.
8923         * lang.c (lang_decode_option): Recognize -foutput-class-dir.
8924         * lang-options.h: Mention -foutput-class-dir.
8925         * jcf-write.c (jcf_write_base_directory): New global.
8926         (make_class_file_name): Put generated .class file into `-d'
8927         directory, or into source directory if -d not given.  Function now
8928         static.
8929         (write_classfile): Free class file name.  Handle case where class
8930         file name is NULL.
8931         (DIR_SEPARATOR): New macro.
8932         Include <sys/stat.h>
8933
8934         * Makefile.in (prefix): New macro.
8935
8936 Thu Nov 12 14:15:07 1998  Per Bothner  <bothner@cygnus.com>
8937
8938         * parse.y (patch_invoke):  Do less if flag_emit_class_files.
8939         * expr.c (build_known_method_ref):  Don't check flag_emit_class_files
8940         here (done in patch_invoke instead).
8941         (case_identity):  Moved here from parse.y.
8942
8943         * java-tree.h (CAN_COMPLETE_NORMALLY):  New macro.
8944         * parse.y (java_complete_tree etc):  Maybe set CAN_COMPLETE_NORMALLY.
8945         * parse.y (java_complete_tree):  Re-order COMPOUND_EXPR in BLOCK
8946         so they can be efficiently scanned without recursion.
8947         Error it ! CAN_COMPLETE_NORMALLY first part of COMPOUND_EXPR.
8948         * expr.c (java_lang_expand_expr):  Expand statements of COMPOUND_EXPR
8949         in BLOCK iteratively, rather than recursively.
8950
8951         * parse.y (do_unary_numeric_promotion):  New function.
8952         (patch_unaryop, patch_binop, patch_array_ref):  Use it.
8953
8954         * parse.y (patch_newarray):  Various fixes.
8955
8956         Re-do handling of switch statements (for proper block scoping).
8957         * parse.y:  Add just a single block for the enture switch block,
8958         but don't create any "case blocks".
8959         (group_of_labels):  Rmeoved unneeded non-terminal.
8960         CASE_EXPR and DEFAULT_EXPR are added to current block.
8961         * expr.c (java_lang_expand_expr):  Inline SWITCH_EXPR here.
8962         Now also need to handle CASE_EXPR and DEFAULT_EXPR.
8963         * java-tree.h (SWITCH_HAS_DEFAULT):  New macro.
8964         * parse.y (wfl_operator, print_int_node): Make non-static.
8965         (java_complete_tree):  CASE_EXPR and DEFAULT_EXPR are now processed
8966         as part of recursive scan of block.
8967         (java_expand_switch ):  Removed - inlined into java_lang_expand_expr.
8968         (patch_switch_statement):  Most tests move dinto java_complete_tree.
8969
8970         * parse.y:  Make various production be non-typed (void).
8971         * parse.y (parse_error):  Merged into issue_warning_error_from_context.
8972         * parse.y (add_stmt_to_compound):  Don't create/change extra node.
8973         (patch_method_invocation_stmt):  Renamed to patch_method_invocation.
8974
8975         * jcf-write.c (struct jcf_handler):  New type.
8976         (struct jcf_switch_state):  New type.
8977         (SWITCH_ALIGN_RELOC, BLOCK_START_RELOC):  New relocation kinds.
8978         (alloc_handler, emit_unop, emit_reloc):  New functions.
8979         (adjust_typed_op):  Add extra parameter ("max type" offset).
8980         (emit_switch_reloc, emit_case-reloc):  New function.
8981         (generate_bytecode_conditional):  Handle REAL_TYPE comparisons.
8982         (generate_bytecode_insns):  Support REAL_CST, switch statements,
8983         exception handling, method calls, object/array creation, and more.
8984
8985         * class.c:  Remove some unused variables.
8986         * constants.c (find_string_constant):  New function.
8987         (count_constant_pool_bytes):  Fix to correctly handle wide constants.
8988         * decl.c (complete_start_java_method):  Don't _Jv_InitClass
8989         if flag_emit_class_files.
8990
8991 1998-11-12  Tom Tromey  <tromey@cygnus.com>
8992
8993         * jcf-io.c (find_class): Added explanatory comment.
8994
8995         * jcf-path.c (add_entry): Look for `.zip' at end of filename.  Add
8996         trailing slash to `.zip' entries.
8997
8998         * jvspec.c (lang_specific_driver): Correctly handle case where
8999         GC_NAME not defined.
9000
9001 1998-11-11  Tom Tromey  <tromey@cygnus.com>
9002
9003         * jvspec.c (GC_NAME): New define.
9004         (lang_specific_driver): Use GC_NAME.  Add GC_NAME to command line
9005         if required.
9006         * Make-lang.in (jvspec.o): Define WITH_GC_<name>.
9007
9008 Wed Nov 11 19:08:52 1998  Per Bothner  <bothner@cygnus.com>
9009
9010         * jcf-dump.c (TABLE_SWITCH):  Fix typos.
9011
9012 1998-11-11  Tom Tromey  <tromey@cygnus.com>
9013
9014         * jcf-dump.c (main): Correctly recognize `--'-style long options.
9015
9016 Tue Nov 10 12:34:03 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9017
9018         * class.c (is_compiled_class): Call safe_layout_class for class
9019         compiled from source.
9020         * conver.h (convert_to_integer, convert_to_real,
9021         convert_to_pointer): Added prototypes.
9022         * decl.c (init_decl_processing): Non longer push the decls of
9023         `methodtable', `constants', `Class', `Field', `dispatchTable'
9024         `jexception' and `Method'.
9025         * expr.c (build_invokeinterface): New function.
9026         (expand_invoke): static variable CLASS_IDENT now in
9027         build_invokeinterface. Use build_invokeinterface.
9028         (expand_java_field_op): Moved code to inline
9029         java.lang.PRIMTYPE.TYPE into a function.
9030         (build_primtype_type_ref): New function.
9031         * java-tree.def (INSTANCEOF_EXPR): New tree code.
9032         * java-tree.h (CLASS_METHOD_CHECKED_P, METHOD_DEPRECATED,
9033         FIELD_DEPRECATED, CLASS_DEPRECATED): New flag macros.
9034         (DECL_CONSTRUCTOR_P): Fixed typo in comment.
9035         (DECL_LOCAL_STATIC_VALUE): New macro.
9036         (build_invokeinterface, build_primtype_type_ref): New function
9037         prototypes.
9038         (java_parse_abort_on_error): Macro rewritten.
9039         * jcf-parse.c (current_method): Add comment to declaration.
9040         (parse_zip_file_entries, process_zip_dir, void parse_source_file):
9041         Function prototypes fixed.
9042         (jcf_parse_source): push/pop parser context. save/restore global.
9043         (parse_source_file): Fixed leading comment. Now take a
9044         IDENTIFIER_NODE as an argument. Doesn't check methods, layout
9045         classes and pop the parser context anymore.
9046         (yyparse): Push parser context, save globals, parse the source
9047         file, restore globals and pop the parser context when processing a
9048         source file.
9049         * jcf.h (VERBOSE_SKELETON): Replaces SOURCE_FRONTEND_DEBUG define.
9050         * lex.c (java_parse_doc_section): New function.
9051         (java_lex): Call java_parse_doc_section when appropriate. Build an
9052         operator around INSTANCEOF_TK.
9053         * lex.h (java_lineterminator, java_sprint_unicode,
9054         java_unicode_2_utf8, java_lex_error, java_store_unicode):
9055         Prototypes rewritten.
9056         (java_parse_escape_sequence, java_letter_or_digit_p,
9057         java_parse_doc_section, java_parse_end_comment, java_get_unicode,
9058         java_read_unicode, java_store_unicode, java_read_char,
9059         java_allocate_new_line, java_unget_unicode, java_sneak_unicode):
9060         Added function prototypes.
9061         * parse.h (VERBOSE_SKELETON): Replaces SOURCE_FRONTEND_DEBUG
9062         define.
9063         (JNULLP_TYPE_P, CHECK_METHODS, CHECK_DEPRECATED, REGISTER_IMPORT):
9064         New macros
9065         (struct parser_ctxt): New fields: deprecated,
9066         current_parsed_class_un, gclass_list.
9067         (fix_method_argument_names, issue_warning_error_from_context,
9068         resolve_package, lookup_package_type): New function prototypes.
9069         (resolve_expression_name): Fixed function prototype.
9070         (find_applicable_accessible_methods_list): Fixed indentation, added
9071         extra argument in prototype.
9072         (check_final_assignment, build_null_of_type, check_deprecation,
9073         check_method_redefinition, reset_method_name,
9074         java_check_regular_methods, java_check_abstract_methods,
9075         maybe_build_primttype_type_ref): New function prototype.
9076         * parse.y (conver.h): Include.
9077         (INSTANCEOF_TK): Tagged <operator>.
9078         (single_type_import_declaration): Use REGISTER_IMPORT macro.
9079         (relational_expression:): Build binop for instanceof.
9080         (java_push_parser_context): Remember ctxp->gclass_list across
9081         contexts.
9082         (java_pop_parser_context): Simply return if no context
9083         exists. Remember gclass_list across contexts.
9084         (issue_warning_error_from_context): New function.
9085         (parse_error_context): Don't setup ctxp->elc here. Call
9086         issue_warning_error_from_context instead.
9087         (parse_warning_context): Likewise.
9088         (maybe_create_class_interface_decl): Removed DECL_ARTIFICIAL
9089         setup. Link new class/interface to ctxp->gclass_list.
9090         (add_superinterfaces): Register interface as incomplete if not
9091         loaded.
9092         (create_class): Remember class unqualified name in
9093         ctxp->current_parsed_class_un. Check class deprecation.
9094         (register_fields): Check field deprecation. Remember static final
9095         field value in DECL_LOCAL_STATIC_VALUE. Changed comment in part
9096         processing INIT.
9097         (method_header): New local variable ORIG_ARG. Use unqualified
9098         current class name for check on constructor errors. Promote return
9099         type if of record type. Argument list fix moved in
9100         fix_method_argument_names, called here. Check method deprecation.
9101         (fix_method_argument_names): New function.
9102         (method_declarator): Promote record typed arguments.
9103         (safe_layout_class): Check class methods before layout.
9104         (java_complete_class): Compute field layout when patched.
9105         (do_resolve_class): Try to load class after having it renamed
9106         after the package name.
9107         (get_printable_method_name): Use DECL_CONTEXT.
9108         (reset_method_name): New function.
9109         (check_method_redefinition): Use reset_method_name.
9110         (java_check_regular_methods): New local variable
9111         SAVED_FOUND_WFL. Temporarily reinstall overriding/hiding method
9112         names for error report. Check for compile-time error when method
9113         found has default (package) access.
9114         (java_check_abstract_methods): Now takes an interface DECL node as
9115         an argument. Also reinstall real name on unchecked
9116         overriding/hiding methods for error report.
9117         (java_check_methods): Fixed leading comment. Get classes to verify
9118         from ctxp->gclass_list. Use CHECK_METHODS macro and set
9119         CLASS_METHOD_CHECKED_P on class verification.
9120         (lookup_java_method2): Get real method name if necessary.
9121         (find_in_imports): Don't check package class access here.
9122         (resolve_package, lookup_package_type): New functions.
9123         (java_layout_classes): Fixed leading comment. Take classes to be
9124         laid out from ctxp->gclass_list.
9125         (java_complete_expand_methods): Don't expand native and abstract
9126         methods.
9127         (java_expand_classes): New function.
9128         (resolve_expression_name): Use additional argument ORIG.  Retrieve
9129         values of static final field of primitive types.
9130         (resolve_field_access): Handles static final field of promotive
9131         type.
9132         (resolve_qualified_expression_name): Handle STRING_CST as
9133         primaries and package name resolution. Check deprecation on found
9134         decls. Set where_found and type_found on non static field resolved
9135         during qualification. Layout non primitive field decl types.
9136         (check_deprecation): New function.
9137         (maybe_access_field): Simplified.
9138         (patch_method_invocation_stmt): Local variable CLASS_TYPE
9139         removed. Reverse method's argument when primary is a type. Don't
9140         use CLASS_TYPE to report problems, use IDENTIFIER_WFL
9141         instead. Include abstract class in the list of class searchable
9142         for constructors. Use DECL_CONTEXT of found method for access
9143         checks. Check method deprecation.
9144         (patch_invoke): Pay extra care to NEW_CLASS_EXPR type call when
9145         converting arguments. Handle INVOKE_INTERFACE.
9146         (lookup_method_invoke): Search constructor using existing
9147         infrastructure (don't rely on lookup_java_constructor anymore).
9148         (find_applicable_accessible_methods_list): Extra argument flag
9149         LC. Now include constructor in the search.
9150         (qualify_ambiguous_name): Conditional expression are primaries.
9151         (not_initialized_as_it_should_p): static final are always
9152         initialized.
9153         (java_complete_tree): Pass extra NULL argument to
9154         resolve_expression_name. Stricter test to carry on patching
9155         assignments. New case for INSTANCEOF_EXPR.
9156         (complete_function_arguments): Inline PRIMTYPE.TYPE read access.
9157         (check_final_assignment, maybe_build_primttype_type_ref): New
9158         functions.
9159         (patch_assignment): Detect resolved static finals and carry normal
9160         assignment error check on them. Inline PRIMTYPE.TYPE read access.
9161         (try_builtin_assignconv): Access constant 0 on all primitive
9162         types.
9163         (valid_builtin_assignconv_identity_widening_p): Accept identical
9164         types. Accept all promoted type on int type.
9165         (valid_ref_assignconv_cast_p): Accept a null pointer to be
9166         assigned to a reference.
9167         (valid_method_invocation_conversion_p): Accept to check null
9168         pointers.
9169         (build_binop): Merge declaration and initialization of local
9170         variable BINOP.
9171         (patch_binop): New case for INSTANCEOF_EXPR. NE_EXPR to accept all
9172         numeric types. Improved validity test for qualify operators on
9173         references.
9174         (patch_unaryop): Broadened rejection test for PREDECREMENT_EXPR
9175         and PREINCREMENT_EXPR. Also detect resolved static finals of a
9176         primitive type and issue the appropriate error message.
9177         (resolve_type_during_patch): Mark class loaded when resolved.
9178         (patch_cast): Allow null to be cased to reference types.
9179         (build_null_of_type): New function.
9180         (patch_array_ref): Handle array on references correctly.
9181         (patch_return): Removed unused local variable MODIFY. Force
9182         boolean to be returned as integers. Allows null to be returned by
9183         a function returning a reference.
9184         * typeck.c (convert_to_integer, convert_to_real,
9185         convert_to_pointer): Prototypes moved to convert.h
9186         (lookup_argument_method): Use method real name, if necessary.
9187
9188 1998-10-30  Tom Tromey  <tromey@cygnus.com>
9189
9190         * class.c (build_class_ref): Changed name of primitive classes to
9191         start with `_Jv_'.
9192
9193         * class.c (make_class_data): Renamed fields: nmethods to
9194         method_count, method_count to dtable_method_count.  Always set
9195         `state' field to 0.
9196         * decl.c (init_decl_processing): Likewise.
9197
9198 Wed Oct 28 08:03:31 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9199
9200         * class.c (layout_class): Don't mangle <finit>, produce
9201         __finit<class> instead. Don't verify artificial methods.
9202         * decl.c (finit_identifier_node): New declared global.
9203         (init_decl_processing): finit_identifier_node initialized.
9204         * java-tree.def (CONDITIONAL_EXPR): New Java tree code.
9205         * java-tree.h (finit_identifier_node): Declared as extern.
9206         (struct lang_decl): New field called_constructor.
9207         (DECL_CONSTRUCTOR_CALLS): Access macro to called_constructor.
9208         (CLASS_HAS_FINIT_P): New macro.
9209         (CALL_CONSTRUCTOR_P): Leading comment changed. Macro now checks
9210         explicit constructor invocation.
9211         (CALL_EXPLICIT_CONSTRUCTOR_P, CALL_THIS_CONSTRUCTOR_P,
9212         CALL_SUPER_CONSTRUCTOR_P): New macros.
9213         (write_classfile): Added prototype.
9214         * jcf-parse.c (jcf_parse_source): Parse and remember for
9215         generation if the file was seen on the command line.
9216         (parse_source_file): Don't write the class file here.
9217         (yyparse): Loop on files rewritten. Set current_jcf.
9218         (parse_zip_file_entries): Parse class file only if it was found.
9219         * lang.c (init_parse): Don't open command line provided filename
9220         here.
9221         (lang_parse): Don't set main_jcf anymore.
9222         * parse.h (ABSTRAC_CHECK): Capitalized arguments.
9223         (JCONSTRUCTOR_CHECK): New macro.
9224         (JBSC_TYPE_P): New macro.
9225         (IN_TRY_BLOCK_P, EXCEPTIONS_P): Fixed leading comment.
9226         (COMPLETE_CHECK_OP_2): New macro.
9227         (struct parse_ctxt): New field explicit_constructor_p.
9228         (check_class_interface_creation): Fixed prototype indentation.
9229         (patch_method_invocation_stmt): Prototype reflects added argument.
9230         (patch_invoke): Likewise.
9231         (complete_method_declaration, build_super_invocation,
9232         verify_constructor_circularity,
9233         build_this_super_qualified_invocation, get_printable_method_name,
9234         patch_conditional_expr, maybe_generate_finit, fix_constructors,
9235         verify_constructor_super, create_artificial_method,
9236         start_artificial_method_body, end_artificial_method_body,
9237         generate_field_initialization_code): New function prototypes.
9238         * parse.y: Fixed leading comment
9239         (constructor_header:, constructor_body:, block_end:): Rules tagged
9240         <node>.
9241         (type_declaration:): Call maybe_generate_finit.
9242         (method_declaration:): Action for method_body: placed in new
9243         function complete_method_declaration, called here.
9244         (constructor_declaration:): Defined actions. Removed leading
9245         FIXME.
9246         (constructor_header:): New rule with action.
9247         (constructor_body:): Rule rewritten using block_begin: and
9248         block_end:. Defined actions.
9249         (constructor_declarator:, explicit_constructor_invocation:):
9250         Defined actions.
9251         (block:): Use new rules block_begin: block_end:.
9252         (block_begin:, block_end:): New rules and actions.
9253         (block_statements:): Fixed error message for explicit
9254         constructors.
9255         (method_invocation:): Call build_this_super_qualified_invocation
9256         if primary is `this' or `super' was seen.
9257         (conditional_expression:): Action defined.
9258         (extra_ctxp_pushed_p): New static global flag.
9259         (java_parser_context_save_global): Create parser context if
9260         necessary. Use extra_ctxp_pushed_p to remember it.
9261         (java_parser_context_restore_global): Pop extra parser context if
9262         one exists.
9263         (build_array_from_name): Array on primitive types are marked
9264         loaded.
9265         (register_fields): Restore new name in field initializer
9266         expression if type was altered. Non static fields initialized upon
9267         declaration marked initialized.
9268         (maybe_generate_finit): New function.
9269         (maybe_generate_clinit): Use create_artificial_method,
9270         start_artificial_method_body, end_artificial_method_body. Generate
9271         debug info for enclosed initialization statements.
9272         (method_header): Fixed leading comment. Check constructor
9273         flags. Detect constructor declarations and set DECL_CONSTRUCTOR_P
9274         accordingly.
9275         (complete_method_declaration, constructor_circularity_msg,
9276         verify_constructor_circularity): New functions.
9277         (get_printable_method_name): New function.
9278         (check_method_redefinition): Don't rename <finit> methods. Fix
9279         declared constructor names. Error message for
9280         constructors modified.
9281         (java_check_regular_methods): Local variable seen_constructor
9282         renamed saw_constructor. Skip verification on constructors. Create
9283         default constructor with create_artificial_method.
9284         (java_check_methods): Removed unnecessary empty line.
9285         (create_artificial_method, start_artificial_method_body,
9286         end_artificial_method_body): New functions.
9287         (java_layout_classes): Changed leading comment. Reverse fields
9288         list if necessary. Always layout java.lang.Object if being
9289         defined.
9290         (java_complete_expand_methods): Verify constructor circularity.
9291         (java_complete_expand_method): Call fix_constructor on
9292         constructors.  Local variable no_ac_found removed. Restore
9293         bindings if method body expansion failed.
9294         (fix_constructors, verify_constructor_super,
9295         generate_field_initialization_code): New function.
9296         (java_expand_classes): Fixed leading comment. Write class file
9297         here.
9298         (resolve_expression_name): Check for illegal instance variable
9299         usage within the argument scope of an explicit constructor
9300         invocation.
9301         (resolve_qualified_expression_name): Pass extra from_super flag
9302         when invoking patch_method_invocation_stmt. New case for
9303         conditional expression when used as a primary. Check for error
9304         when acquiring super.
9305         (patch_method_invocation_stmt): Added extra argument super. New
9306         local variable is_static_flag. Set class_to_search according to
9307         the nature of the constructor invocation. Don't add `this'
9308         argument when expanding NEW_CLASS_EXPR. Check for illegal method
9309         invocation within the argument scope of explicit constructor
9310         invocation. Set is_static according to is_static_flag. Provide
9311         extra `super' argument to patch_invoke invocation.
9312         (patch_invoke): New argument from_super. Loop on arguments
9313         indentation fixed. Pass from_super to invocation_mode. New switch
9314         case INVOKE_SUPER. Fixed error message in switch default case.
9315         Don't use CALL_CONSTRUCTOR_P but rather a test on the tree node
9316         value.
9317         (invocation_mode): Return INVOKE_SUPER mode when appropriate.
9318         (lookup_method_invoke): Fixed prototypes in candidates list. Error
9319         message takes constructors into account.
9320         (find_applicable_accessible_methods_list): Fixed indentation.
9321         (qualify_ambiguous_name): Take explicit constructor invocation
9322         into account. Deal with a conditional expression as a primary to
9323         a method call.
9324         (java_complete_tree): Added local wfl_op3. New CONDITIONAL_EXPR
9325         case. Added extra argument to patch_method_invocation_stmt.
9326         Register calls made to explicit constructor `this'. Don't call
9327         save_expr in ARRAY_REF case when emitting class files. Check for
9328         illegal use of this when expanding explicit constructor invocation
9329         arguments.
9330         (complete_function_arguments): Set and reset parser context
9331         explicit_constructor_p field value when appropriate.
9332         (build_super_invocation, build_this_super_qualified_invocation):
9333         New functions.
9334         (patch_assignment): Fixed typo.
9335         (patch_unaryop): Check on final fields occurs only when a decl
9336         exits.
9337         (patch_return): Take constructors into account.
9338         (patch_conditional_expr): New function.
9339         * typeck.c (build_java_signature): Removed unnecessary empty line.
9340
9341 Wed Oct 28 00:46:15 1998  Jeffrey A Law  (law@cygnus.com)
9342
9343         * Makefile.in (jcf-dump, gcjh): Link in $(LIBS) too.
9344
9345 1998-10-28  Tom Tromey  <tromey@cygnus.com>
9346
9347         * decl.c (init_decl_processing): Renamed fields.
9348         * class.c (make_class_data): Renamed bfsize, nfields, nsfields,
9349         interface_len, msize fields.
9350
9351         * class.c (make_class_data): Removed subclass_head and
9352         subclass_next fields.
9353         * decl.c (init_decl_processing): Removed subclass_head and
9354         subclass_next fields.
9355
9356 Wed Oct 28 00:46:15 1998  Jeffrey A Law  (law@cygnus.com)
9357
9358         * jcf-write.c (emit_load_or_store): Avoid implicit int arguments.
9359         * mangle.c (emit_unicode_mangled_name): Similarly.
9360
9361 Mon Oct 26 12:17:23 1998  Nick Clifton  <nickc@cygnus.com>
9362
9363         * jcf-parse.c (get_constant): Place braces around code to compute
9364         'd' when REAL_ARITHMETIC is not defined.
9365
9366 Sun Oct 25 14:58:05 1998  H.J. Lu  (hjl@gnu.org)
9367
9368         * Make-lang.in (jv-scan$(exeext)): Add stamp-objlist to
9369         dependency.
9370
9371 1998-10-23  Tom Tromey  <tromey@cygnus.com>
9372
9373         * lang-specs.h: `.zip' files are input to jc1.
9374
9375 Thu Oct 22 23:01:54 1998  Per Bothner  <bothner@cygnus.com>
9376
9377         * jvspecs.c:  Add (but don't enable) support for combining multiple
9378         .class and .java input filenames to a single jc1 invocation.
9379         Add support for -C flag (copile to .class files).
9380         Translate -classpath and -CLASSPATH arguments.
9381         * lang-specs.h:  Don't set %2 spec.
9382
9383 1998-10-22  Tom Tromey  <tromey@cygnus.com>
9384
9385         * jcf-path.c (add_entry): Don't add trailing separator if entry is
9386         a .zip file.
9387         (add_path): Don't add trailing separator to non-empty path
9388         elements.
9389
9390         * lang.c (lang_decode_option): Check for -fclasspath and
9391         -fCLASSPATH before examining other `-f' options.
9392
9393         * java-tree.h (finalize_identifier_node): Don't declare.
9394         * class.c (make_class_data): Don't push "final" field.
9395         * decl.c (init_decl_processing): Don't push "final" field.
9396         (finalize_identifier_node): Removed.
9397         (init_decl_processing): Don't set finalize_identifier_node.
9398
9399         * config-lang.in (stagestuff): Added jcf-dump and jv-scan.
9400
9401 Sun Oct 11 10:31:52 1998  Anthony Green  <green@cygnus.com>
9402
9403         * Make-lang.in (java): Depend on jcf-dump and jv-scan.
9404         (JV_SCAN_SOURCES): New macro.
9405         (JCF_DUMP_SOURCES): Likewise.
9406         (jcf-dump$(exeext)): New target.
9407         (jv-scan$(exeext)): New target.
9408
9409 1998-10-22  Tom Tromey  <tromey@cygnus.com>
9410
9411         * Makefile.in (LEX): Removed.
9412         (LEXFLAGS): Likewise.
9413         (SET_BISON): New macro.
9414         (BISON): Removed.
9415         ($(PARSE_C)): Use SET_BISON.  Run bison from srcdir to avoid
9416         spurious diffs in parse.c.
9417         ($(PARSE_SCAN_C)): Likewise.
9418         (PARSE_DIR): New macro.
9419         (PARSE_C): Use it.
9420         (PARSE_SCAN_C): Likewise.
9421         (PARSE_RELDIR): New macro.
9422
9423         * jcf-io.c (saw_java_source): Define here, not in jcf-parse.c.
9424
9425         * jcf-io.c (find_class): Use saw_java_source to determine when to
9426         look for `.java' file.
9427         * jcf-parse.c (saw_java_source): New global.
9428         (yyparse): Set it if `.java' file seen.
9429
9430         * Make-lang.in (JAVA_SRCS): Added jcf-path.c.
9431         (GCJH_SOURCES): Likewise.
9432         * Makefile.in (datadir): New macro.
9433         (libjava_zip): Likewise.
9434         (JAVA_OBJS): Added jcf-path.o.
9435         (../jcf-dump$(exeext)): Depend on and link with jcf-depend.o.
9436         (../gcjh$(exeext)): Likewise.
9437         (jcf-path.o): New target.
9438         * java-tree.h (fix_classpath): Removed decl.
9439         * jcf-parse.c (fix_classpath): Removed.
9440         (load_class): Don't call fix_classpath.
9441         * parse.y (read_import_dir): Don't call fix_classpath.
9442         * lex.h: Don't mention classpath.
9443         * lex.c (java_init_lex): Don't initialize classpath.
9444         * jcf-io.c (classpath): Removed global.
9445         (find_class): Use jcf_path iteration functions.  Correctly search
9446         class path for .java file.
9447         (open_in_zip): New argument `is_system'.
9448         * jcf-dump.c (main): Call jcf_path_init.  Recognize all new
9449         classpath-related options.
9450         * lang.c (lang_decode_option): Handle -fclasspath, -fCLASSPATH,
9451         and -I.
9452         (lang_init): Call jcf_path_init.
9453         * lang-options.h: Mention -I, -fclasspath, and -fCLASSPATH.
9454         * lang-specs.h: Handle -I.  Minor cleanup to -M options.
9455         Correctly put braces around second string in each entry.
9456         * gjavah.c (main): Call jcf_path_init.  Recognize all the new
9457         classpath-related options.
9458         (help): Updated for new options.
9459         * jcf.h: Declare functions from jcf-path.c.  Don't mention
9460         `classpath' global.
9461         * jcf-path.c: New file.
9462
9463         * jcf-depend.c: Include jcf.h.
9464
9465         * jcf-write.c (localvar_alloc): Returns `void'.
9466         (localvar_free): Removed unused variable.
9467
9468         * lang.c (OBJECT_SUFFIX): Define if not already defined.
9469         (init_parse): Use OBJECT_SUFFIX, not ".o".
9470
9471 Wed Oct 21 07:54:11 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9472
9473         * class.c (emit_register_classes): Renamed from
9474         emit_register_class.
9475         * java-tree.h (emit_register_classes): Prototype renamed from
9476         emit_register_class.
9477         * jcf-parse.c (yyparse): Call emit_register_classes once before
9478         returning.
9479         * parse.y (java_expand_classes): No longer register classes.
9480
9481 Tue Oct 20 09:15:38 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9482
9483         * class.c (is_compiled_class): New local variable
9484         seen_in_zip. Identify classes found in currently compiled source
9485         file(s).
9486         * decl.c (complete_start_java_method): Fixed typo.
9487         * java-tree.h (CLASS_FROM_CURRENTLY_COMPILED_SOURCE_P,
9488         HAS_BEEN_ALREADY_PARSED_P, IS_A_COMMAND_LINE_FILENAME_P): New macros.
9489         (CLASS_P): Moved around.
9490         (java_parse_abort_on_error): Macro moved from jcf-parse.c
9491         * jcf-parse.c (java_parse_abort_on_error): Macro moved to
9492         java-parse.h
9493         (jcf_parse_source): Changed leading comment. Removed unnecessary
9494         fclose and CLASS_FROM_SOURCE_P marking.
9495         (parse_source_file): New local variables remember_for_generation
9496         and filename. Mark parsed file name identifier node. Removed block
9497         executed when parse_only was null. Set remember_for_generation.
9498         Use it as an argument to java_pop_parser_context.
9499         (yyparse): New local variables several_files, list, next node and
9500         current_file_list. Split ampersand separated file names into
9501         current_file_list. Iterate through the list and parse accordingly.
9502         * parse.h (java_pop_parser_context): New function prototype.
9503         * parse.y (ctxp_for_generation): New static global variable.
9504         (java_pop_parser_context): New argument generate. Link popped ctxp
9505         to ctxp_for_generation list accordingly.
9506         (java_complete_expand_methods): Fixed indentation.
9507         (java_expand_classes): New function.
9508
9509 Sat Oct 17 11:25:21 1998  Per Bothner  <bothner@cygnus.com>
9510
9511         * Makefile.in:  Link with libiberty.a instead of memmove.o.
9512
9513 Fri Oct 16 10:59:01 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9514
9515         * lex.c (setjmp.h): No longer included.
9516         * lex.h (setjmp.h): Included.
9517         * parse.h (SET_TYPE_FOR_RESOLUTION): New macro.
9518         (duplicate_declaration_error_p): Renamed from
9519         duplicate_declaration_error.
9520         (build_array_from_name): New function prototype.
9521         * parse.y (setjmp.h): No longer included.
9522         (variable_declarator_id): Define action.
9523         (build_array_from_name): New function.
9524         (duplicate_declaration_error_p): Renamed from
9525         duplicate_declaration_error.  Fixed leading comment.
9526         (register_fields): Main `for' loop reorganized. Uses
9527         SET_TYPE_FOR_RESOLUTION and build_array_from_name.
9528         (method_declarator): Uses SET_TYPE_FOR_RESOLUTION and call
9529         build_array_from_name.
9530         (resolve_class): Set CLASS_LOADED_P on newly build array dimension
9531         types.
9532         (read_import_dir): Don't try to skip `.' and `..'.
9533         (declare_local_variables): Uses SET_TYPE_FOR_RESOLUTION and
9534         build_array_from_name. Main `for' loop reorganized.
9535         (resolve_qualified_expression_name): When building access to a
9536         field, use the type where the field was found, not its own type.
9537         (maybe_access_field): Use field DECL_CONTEXT if the type where the
9538         field was found is null.
9539         (qualify_ambiguous_name): Sweep through all successive array
9540         dimensions.
9541
9542 Wed Oct 14 18:21:29 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9543
9544         * java-tree.h (pop_labeled_block, lang_printable_name,
9545         maybe_add_interface, set_super_info, get_access_flags_from_decl,
9546         interface_of_p, inherits_from_p, fix_classpath,
9547         complete_start_java_method, emit_handlers, init_outgoing_cpool,
9548         make_class_data, register_class, alloc_name_constant): New
9549         function prototypes.
9550         * lang.c (lang_decode_option): Set argc argument unused. Fixed
9551         indentation. Added cast to remove warning.
9552         (lang_printable_name): Set v argument unused.
9553         (lang_print_error): Added argument to lang_printable_name call.
9554         (java_dummy_print, print_lang_decl, print_lang_type,
9555         print_lang_identifier, lang_print_xnode): All argument marked
9556         unused.
9557         * lex.c (java_unget_unicode): Removed unnecessary argument.
9558         (java_allocate_new_line): Unused local variable is gone.
9559         (java_read_char): Added parenthesis in expressions to remove
9560         warnings.  Added final return statement.
9561         (java_read_unicode): Added parenthesis in expression to remove
9562         warning.
9563         (java_parse_end_comment): Fixed java_unget_unicode invocation.
9564         (java_parse_escape_sequence): Likewise.
9565         (java_lex): Unused local variables are gone. Fixed
9566         java_unget_unicode invocation.
9567         * lex.h (set_float_handler): Prototype added when JC1_LITE not
9568         defined.
9569         * parse.h (ERROR_CANT_CONVERT_TO_BOOLEAN): Fixed
9570         lang_printable_name invocation in macro.
9571         (ERROR_CANT_CONVERT_TO_NUMERIC, ERROR_CAST_NEEDED_TO_INTEGRAL):
9572         Likewise.
9573         (duplicate_declaration_error): Suppressed unused argument in
9574         prototype.
9575         (identical_subpath_p): Function declaration is gone.
9576         (patch_invoke): Suppressed unused argument in prototype.
9577         (patch_cast, build_labeled_block, check_thrown_exceptions):
9578         Likewise.
9579         * parse.y (setjmp.h): Included
9580         (toplev.h): Likewise.
9581         (field_declaration:): Suppressed unused local
9582         (label_decl:): Fixed build_labeled_block invocation.
9583         (java_pop_parser_context): Put extra parenthesis around assignment
9584         in if.
9585         (yyerror): Suppressed unused local variables.
9586         (variable_redefinition_error): Fixed lang_printable_name
9587         invocation.
9588         (create_interface): Suppressed unused local variables.
9589         (create_class): Likewise.
9590         (duplicate_declaration_error): Suppressed unused argument. Fixed
9591         lang_printable_name invocation.
9592         (register_fields): Suppressed unused local variable. Fixed
9593         duplicate_declaration_error invocation.
9594         (method_header): Suppressed unused local variable.
9595         (method_declarator, parser_check_super): Likewise.
9596         (java_complete_class): Suppressed unused local variable. Fixed
9597         fatal error message.
9598         (complete_class_report_errors): Added default: in switch.
9599         (java_check_regular_methods): Fixed lang_printable_name
9600         invocations.
9601         (check_throws_clauses): Likewise.
9602         (java_check_abstract_methods): Suppressed unused local
9603         variable. Fixed lang_printable_name invocation.
9604         (read_import_entry): Added supplemental return statement.
9605         (read_import_dir): Suppressed unused local variables.
9606         (check_pkg_class_access, declare_local_variables): Likewise.
9607         (source_start_java_method): Suppressed unused extern variable
9608         declarations
9609         (expand_start_java_method): Suppressed unused extern and local
9610         variable declarations.
9611         (java_complete_expand_methods): Likewise.
9612         (java_complete_expand_method): Suppressed unused local variables.
9613         (make_qualified_name): Likewise.
9614         (resolve_qualified_expression_name): Added default: in
9615         switch. Fixed lang_printable_name invocation.
9616         (class_instance_creation_expression): Added parenthesis around
9617         expressions.
9618         (patch_method_invocation_stmt): Fixed lang_printable_name and
9619         patch_invoke invocations.
9620         (check_for_static_method_reference): Fixed lang_printable_name
9621         invocation.
9622         (patch_invoke): Suppressed unused arguments and local variables.
9623         (lookup_method_invoke): Suppressed unused local variables.
9624         (qualify_ambiguous_name): Added default: in switch.
9625         (identical_subpath_p): Function removed.
9626         (patch_assignment): Suppressed unused local variables. Suppressed
9627         unnecessary if statement. Fixed lang_printable_name invocations.
9628         (try_builtin_assignconv): Fixed lang_printable_name invocations.
9629         (valid_ref_assignconv_cast_p): Parenthesis around
9630         expression. Suppressed unused local variables.
9631         (build_binop): Suppressed unused local variables. fixed
9632         lang_printable_name invocations.
9633         (string_constant_concatenation): Suppressed unused local
9634         variables.
9635         (patch_unaryop): Fixed lang_printable_name invocation.
9636         (patch_cast): Suppressed unnecessary argument. Fixed
9637         lang_printable_name invocation.
9638         (patch_array_ref): Fixed lang_printable_name invocation.
9639         (patch_newarray, patch_return, patch_if_else_statement): Likewise.
9640         (build_labeled_block): Suppressed unused argument.
9641         (generate_labeled_block): Fixed build_labeled_block invocation.
9642         (build_loop_body): Suppressed unused local variables.
9643         (patch_loop_statement): Likewise.
9644         (patch_exit): Fixed lang_printable_name invocation.
9645         (patch_switch_statement): Likewise.
9646         (case_identity): First argument marked unused.
9647         (patch_try_statement): Fixed lang_printable_name invocations.
9648         (patch_synchronized_statement, patch_throw_statement): Likewise.
9649         (check_thrown_exceptions): Fixed check_thrown_exceptions and
9650         lang_printable_name invocations.
9651         (check_thrown_exceptions_do): Suppressed unused argument.
9652
9653 1998-10-14  Tom Tromey  <tromey@cygnus.com>
9654
9655         * jcf-write.c (write_classfile): Add output class file as target.
9656         * lang-options.h: Added -MD, -MMD, -M, and -MM.
9657         * jcf.h: Added declarations for dependency-tracking functions.
9658         * lang-specs.h: Handle -M, -MM, MD, and -MMD.
9659         * lang.c (lang_decode_option): Recognize -MD and -MMD.
9660         (finish_parse): Call jcf_dependency_write.
9661         (dependency_tracking): New global.
9662         (DEPEND_SET_FILE): New define.
9663         (DEPEND_ENABLE): New define.
9664         (init_parse): Enable dependency tracking if required.
9665         Include "flags.h".
9666         * Makefile.in (JAVA_OBJS): Added jcf-depend.o.
9667         (../jcf-dump$(exeext)): Depend on and link with jcf-depend.o.
9668         (../gcjh$(exeext)): Likewise.
9669         (jcf-depend.o): New target.
9670         * Make-lang.in (JAVA_SRCS): Added jcf-depend.c.
9671         (GCJH_SOURCES): Likewise.
9672         * jcf-io.c (open_class): Call jcf_dependency_add_file.  Added
9673         dep_name argument.
9674         (find_classfile): Added dep_name argument.
9675         (find_class): Compute name of dependency.
9676         (open_in_zip): Call jcf_dependency_add_file.
9677         * gjavah.c (output_file): No longer global.
9678         (usage): Don't mention "gjavah".
9679         (help): Likewise.
9680         (java_no_argument): Likewise.
9681         (version): Likewise.
9682         (main): Recognize and handle -M family of options.
9683         (print_mangled_classname): Return is void.
9684         (process_file): Handle case where output is suppressed.
9685         (HANDLE_END_FIELD): Likewise.
9686         (HANDLE_METHOD): Likewise.
9687         * jcf-depend.c: New file.
9688
9689 Tue Oct 13 23:34:12 1998  Jeffrey A Law  (law@cygnus.com)
9690
9691         * java-tree.def: Add missing newline at EOF.
9692
9693 1998-10-13  Tom Tromey  <tromey@cygnus.com>
9694
9695         * jcf-dump.c (process_class): Use FATAL_EXIT_CODE, not -1.
9696         (main): Likewise.  Exit with SUCCESS_EXIT_CODE at end of
9697         function.
9698         Include <config.h> and "system.h".
9699         (disassemble_method): Undefine RET to avoid clash with
9700         config/i386/i386.h.
9701
9702 Tue Oct 13 03:50:28 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9703
9704         * decl.c (runtime_exception_type_node, error_exception_type_node):
9705         New global variables.
9706         (init_decl_processing): Initialized.
9707         * expr.c (java_lang_expand_expr): Set caught exception type to
9708         null if catch handler argument doesn't exit.
9709         * java-tree.def (SYNCHRONIZED_EXPR, THROW_EXPR): New Java specific
9710         tree codes.
9711         * java-tree.h (runtime_exception_type_node,
9712         error_exception_type_node): Global variables declared.
9713         (DECL_FUNCTION_THROWS): New macro.
9714         (DECL_FUNCTION_BODY): Modified comment.
9715         (DECL_SPECIFIC_COUNT): Likewise.
9716         (struct lang_decl): New field throws_list.
9717         (IS_UNCHECKED_EXPRESSION_P): New macro.
9718         * lex.c (java_lex): Generate location information for THROW_TK.
9719         * parse.h (PUSH_EXCEPTIONS, POP_EXCEPTIONS, IN_TRY_BLOCK_P,
9720         EXCEPTIONS_P): New macros.
9721         (enum jdep_code): New value JDEP_EXCEPTION.
9722         (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT,
9723         BUILD_ASSIGN_EXCEPTION_INFO, BUILD_THROW, SET_WFL_OPERATOR,
9724         PATCH_METHOD_RETURN_ERROR): New macros.
9725         (patch_method_invocation_stmt): Added new argument to prototype.
9726         (patch_synchronized_statement, patch_throw_statement,
9727         check_thrown_exceptions, check_thrown_exceptions_do,
9728         purge_unchecked_exceptions, check_throws_clauses): New function
9729         prototypes.
9730         * parse.y Fixed typo in keyword section.
9731         (throw:): Rule tagged <node>.
9732         (THROW_TK): Keyword tagged <operator>.
9733         (method_header:): Last argument to call to method_header passed
9734         from throws: rule.
9735         (throws:, class_type_list:, throw_statement:,
9736         synchronized_statement:, synchronized:): Defined actions.
9737         (method_header): New local variable current. Register exceptions
9738         from throws clause.
9739         (java_complete_tree): Complete and verify exceptions from throws
9740         clause.
9741         (complete_class_report_errors): Error message on exceptions not
9742         found
9743         (java_check_regular_methods): Fixed typo. Shortcut on private
9744         overriding methods. Changed error message on method
9745         redefinition. Check for throws clause compatibility.
9746         (check_throws_clauses): New function.
9747         (java_check_abstract_methods): Use DECL_NAME for wfl or current
9748         method. Changed error message on method redefinition.
9749         (currently_caught_type_list): New static variable.
9750         (java_complete_expand_methods): Purge unchecked exceptions from
9751         throws clause list. Call PUSH_EXCEPTIONS before walk and
9752         POP_EXCEPTIONS after.
9753         (resolve_qualified_expression_name): Pass new argument as NULL to
9754         patch_method_invocation_stmt.
9755         (patch_method_invocation_stmt): New argument ref_decl. Invoke
9756         PATCH_METHOD_RETURN_ERROR when returning with error. Reverse
9757         argument list when appropriate. Use new argument if non null to
9758         store selected method decl.
9759         (patch_invoke): Convert if necessary args of builtin types before
9760         forming CALL_EXPR. Argument list no longer reversed here.
9761         (invocation_mode): Treat final methods as static methods.
9762         (java_complete_tree): New cases for THROW_EXPR: and
9763         SYNCHRONIZED_EXPR:. Check thrown exceptions when completing
9764         function call.
9765         (complete_function_arguments): No more RECORD_TYPE
9766         conversion. Function parameter nodes no longer saved.
9767         (valid_ref_assignconv_cast_p): Avoid handling null type.
9768         (patch_binop): Fixed null constant reference handling.
9769         (build_try_statement): Use BUILD_ASSIGN_EXCEPTION_INFO and
9770         BUILD_THROW macros.
9771         (patch_try_statement): Fixed comments. Record caught types in
9772         list, push the list, expand try block and pop the list.
9773         (patch_synchronized_statement, patch_throw_statement,
9774         check_thrown_exceptions, check_thrown_exceptions_do,
9775         purge_unchecked_exceptions): New functions.
9776         * typeck.c (lookup_argument_method): Allow WFL in place of method
9777         DECL_NAME during method definition check
9778
9779 1998-10-09  Tom Tromey  <tromey@cygnus.com>
9780
9781         * gjavah.c (decode_signature_piece): New function.
9782         (print_c_decl): Use it.  Added `name_override' argument.
9783         (print_method_info): Use name_override argument to print_c_decl.
9784         (seen_fields): Removed.
9785         (print_field_info): Don't update seen_fields.
9786         (struct method_name): New structure.
9787         (method_name_list): New global.
9788         (print_method_info): Add new method to list of methods.
9789         (name_is_method_p): New function.
9790         (print_field_info): If field name has same name as method, then
9791         change field name.
9792         (process_file): Parse methods before fields.
9793         (field_pass): New global.
9794         (HANDLE_END_FIELD): Take field_pass into account.
9795
9796 Wed Oct  7 12:10:48 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9797
9798         * Makefile.in (keyword.h): Add -L KR-C -F ', 0' flags to gperf.
9799         (keyword.h): Regenerate using gperf 2.7.1 (19981006 egcs).
9800
9801 Sat Oct  3 13:29:46 1998  Anthony Green  <green@cygnus.com>
9802
9803         * jvspec.c: Fix bug in jvgenmain_spec patch.
9804
9805 Fri Oct  2 17:22:52 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9806
9807         * Makefile.in (lang.o:): Install dependency on java-tree.def.
9808         * decl.c (soft_exceptioninfo_call_node): New global variable.
9809         (init_decl_processing): Fixed indentation. soft_badarrayindex_node
9810         takes extra integer argument. soft_exceptioninfo_call_node
9811         initialized.
9812         * except.c (java_set_exception_lang_code): New function
9813         (method_init_exceptions): Called here.
9814         (prepare_eh_table_type): New function.
9815         (expand_end_java_handler): Called here.
9816         * expr.c (build_java_throw_out_of_bounds_exception): Now features
9817         one argument. Modified generation of call to
9818         soft_badarrayindex_node to use new argument.
9819         (build_java_arrayaccess): Pass faulty index value to
9820         build_java_throw_out_of_bounds_exception.
9821         (generate_name): New function.
9822         (java_lang_expand_expr): New local variables node, current,
9823         has_finally_p. Expand TRY_EXPR node.
9824         (process_jvm_instruction): Replace top of the stack with thrown
9825         object reference when entering exception handler.
9826         * java-tree.def (TRY_EXPR, CATCH_EXPR, FINALLY_EXPR): New Java
9827         specific tree codes.
9828         * java-tree.h (soft_exceptioninfo_call_node): Declaration of new
9829         global.
9830         (DECL_SPECIFIC_COUNT): New macro.
9831         (prepare_eh_table_type, java_set_exception_lang_code,
9832         generate_name): New function declarations.
9833         (match_java_method): Declaration deleted.
9834         (FINALLY_EXPR_LABEL, FINALLY_EXPR_BLOCK, CATCH_EXPR_GET_EXPR): New
9835         macros.
9836         * lex.c (TRY_TK, CATCH_TK): Generate location information.
9837         * parse.h (redefinition_error, refine_accessible_methods_list,
9838         can_cast_to_p): Function declaration removed.
9839         (classitf_redefinition_error, variable_redefinition_error,
9840         parse_jdk1_1_error, find_applicable_accessible_methods_list,
9841         find_most_specific_methods_list, argument_types_convertible,
9842         enter_a_block, valid_builtin_assignconv_identity_widening_p,
9843         valid_cast_to_p, valid_method_invocation_conversion_p,
9844         try_reference_assignconv, add_stmt_to_compound,
9845         build_jump_to_finally, build_tree_list, patch_try_statement,
9846         java_get_catch_block): New function declarations.
9847         * parse.y (string_buffer_type): Global variable deleted.
9848         (group_of_labels, catches, catch_clause, catch_clause_parameter,
9849         finally): Rules tagged <node>.
9850         (TRY_TK, CATCH_TK): Token tagged <operator>.
9851         (class_body_declaration:, class_member_declaration:,
9852         formal_parameter:, explicit_constructor_invocation:,
9853         interface_member_declaration:, constant_declaration:,
9854         primary_no_new_array:, class_instance_creation_expression:,
9855         array_creation_expression:): Issue error on unsuported JDK1.1
9856         features.
9857         (try_statement:, catches:, finally:): Define actions.
9858         (catch_clause_parameter): New rule.
9859         (catch_clause:): Use new rule catch_clause_parameter.
9860         (parse_jdk1_1_error): New function.
9861         (redefinition_error): Renamed classitf_redefinition_error.
9862         (variable_redefinition_error): New function.
9863         (check_class_interface_creation): Call
9864         classitf_redefinition_error.
9865         (java_complete_tree): Added error message on JDEP_TYPE: case.
9866         (complete_class_report_errors): Fixed indentation.
9867         (declare_local_variables): Call variable_redefinition_error.
9868         (source_end_java_method): Call java_set_exception_lang_code and
9869         emit_handlers where appropriate.
9870         (java_method_add_stmt): Call add_stmt_to_block.
9871         (add_stmt_to_block): New function.
9872         (lookup_method_invoke): Fixed outside comment. new local variable
9873         candicates.  Call find_applicable_accessible_methods_list and
9874         find_most_specific_methods_list when searching for a
9875         method. Modified error report to list possible candidates when
9876         applicable.
9877         (find_applicable_accessible_methods_list,
9878         find_most_specific_methods_list, argument_types_convertible): New
9879         function.
9880         (refine_accessible_methods_list): Function deleted.
9881         (java_complete_tree): Handle TRY_EXPR. ARRAY_REF handling: save
9882         expr (if applicable) before calling patch_array_ref.
9883         (build_expr_block): Fixed BLOCK_EXPR_BODY assignment.
9884         (enter_block): Fixed comment.
9885         (enter_a_block): New function.
9886         (patch_assignment): Reorganized. Call try_reference_assignconv for
9887         references. Call valid_cast_to_p instead of can_cast_to_p.
9888         (try_reference_assignconv,
9889         valid_builtin_assignconv_identity_widening_p): New functions.
9890         (valid_ref_assignconv_cast_p): Fixed inverted test on CLASS_FINAL.
9891         (valid_cast_to_p, valid_method_invocation_conversion_p): New
9892         functions.
9893         (build_string_concatenation): Don't resolve StringBuffer.
9894         (patch_cast): Fixed inverted arguments.
9895         (patch_array_ref): Code to save array expr deleted. Call
9896         valid_cast_to_p instead of can_cast_to_p.
9897         (generate_labeled_block): Call generate_name.
9898         (build_jump_to_finally, build_try_statement, java_get_catch_block,
9899         patch_try_statement): New functions.
9900         * typeck.c (match_java_method): Function deleted.
9901
9902 Fri Oct  2 13:48:36 1998  Anthony Green  <green@cygnus.com>
9903
9904         * jvspec.c: jvgenmain_spec uses different temporary file names.
9905
9906 Fri Oct  2 12:50:19 1998  Anthony Green  <green@cygnus.com>
9907
9908         * jvspec.c (lang_specific_driver): Fail if user specifies
9909         --main= when not linking.
9910
9911 Mon Sep 28 13:48:33 1998  Tom Tromey  <tromey@cygnus.com>
9912
9913         * class.c (make_class_data): Push value for `thread' field.
9914         * decl.c (init_decl_processing): Added `thread' field to class.
9915
9916         * class.c (add_field): Always make static fields externally
9917         visible.
9918
9919 Sat Sep 26 08:22:47 1998  Anthony Green  <green@cygnus.com>
9920
9921         * expr.c (build_java_athrow,
9922         build_java_throw_out_of_bounds_exception, expand_invoke,
9923         build_newarray, expand_java_multianewarray, build_java_monitor):
9924         Update comments to reflect _Jv_* function names.
9925
9926 Fri Sep 25 16:03:02 1998  Per Bothner  <bothner@cygnus.com>
9927
9928         * decl.c (complete_start_java_method):  DECL_RESULT is always promoted.
9929         * decl.c (start_java_method):  Handle PROMOTE_PROTOTYPES target macro.
9930         * parse.y (expand_start_java_method):  Likewise.
9931
9932 Thu Sep 24 12:20:35 1998  Per Bothner  <bothner@cygnus.com>
9933
9934         * expr.c (pop_arguments):  Handle PROMOTE_PROTOTYPES target macro.
9935
9936         * class.c (push_class):  IDENTIFIER_SIGNATURE_TYPE is now POINTER_TYPE.
9937         (add_field):  No longer need to convert from RECORD_TYPE to pointer,
9938         * expr.c:  Remove no-longer-needed calls to promote_type.
9939         * decl.c (give_name_to_locals):  Liekwise.
9940         * jcf-parse.c (get_class_constant):  Compensate for new signatures.
9941         * parse.y:  Add/remove promote_type calls as appropriate.
9942         * typeck.c (parse_signature_type):  Returns POINTER_TYPE for objects.
9943         (parse_signature_string):  Likewise.
9944         (build_java_array_type):  Fix for now signature convenions.
9945
9946         * lex.c (java_lex):  Fix (from Alex) for JC1_LITE problem.
9947
9948 Wed Sep 23 14:49:35 1998  Tom Tromey  <tromey@cygnus.com>
9949
9950         * class.c (init_class_processing): libjava function renamed to
9951         _Jv_RegisterClass.
9952
9953 Tue Sep 22 12:00:02 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9954
9955         * expr.c (java_lang_expand_expr): New case for SWITCH_EXPR.
9956         * java-tree.def: Fixed DEFTREECODE third argument.
9957         (UNARY_PLUS_EXPR, NEW_ARRAY_EXPR, NEW_CLASS_EXPR, THIS_EXPR,
9958         CASE_EXPR, DEFAULT_EXPR): New tree codes for Java.
9959         * java-tree.h: (IS_CRAFTED_STRING_BUFFER_P): New macro.
9960         (JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR,
9961         JAVA_THIS_EXPR): Now replaced by tree code definitions.
9962         (CALL_CONSTRUCTOR_P): Now uses NEW_CLASS_EXPR.
9963         * lang.c (java_tree_code_type, java_tree_code_length,
9964         java_tree_code_name): New arrays.
9965         (lang_init): Append Java tree node definitions to Gcc ones.
9966         * lex.c (expression_obstack): Declared as extern when JC1_LITE
9967         defined.
9968         (java_init_lex): Initialize wfl_append, wfl_string_buffer,
9969         wfl_to_string.
9970         (java_lex): Allow declaration of empty string constants. Retain
9971         location information on CASE_TK and DEFAULT_TK.
9972         * parse.h (JFLOAT_TYPE_P, JINTEGRAL_TYPE_P, JNUMERIC_TYPE_P,
9973         JPRIMITIVE_TYPE_P, JSTRING_TYPE_P, JSTRING_P, JREFERENCE_TYPE_P):
9974         Modified to be more robust.
9975         (BUILD_APPEND, BUILD_STRING_BUFFER): New macros.
9976         (build_new_invocation, try_builtin_assignconv,
9977         patch_switch_statement, string_constant_concatenation,
9978         build_string_concatenation, patch_string_cst, patch_string,
9979         java_expand_switch): New function declarations.
9980         * parse.y: Rules related to switch and EH tagged <node>.
9981         (label_id): Set to NULL_TREE
9982         (wfl_string_buffer, wfl_append, wfl_to_string): New static global
9983         tree nodes.
9984         (this_or_super:): Fixed indentation.
9985         (statement:, statement_nsi:, statement_without_trailing_substatement:,
9986         statement_expression:): Removed call to RULE on all sub-rules.
9987         (switch_expression:, switch_labels:): New rules.
9988         (switch_statement:, switch_block:, switch_block_statement_groups:,
9989         switch_block_statement_group:, switch_labels:, switch_label:):
9990         Defined actions.
9991         (throw_statement:, synchronized_statement:, try_statement:):
9992         Defined temporary actions.
9993         (class_instance_creation_expression:): Call
9994         build_new_invocation. Fixed indentation.
9995         (field_access): Fixed indentation.
9996         (method_invocation): Likewise.
9997         (make_qualified_primary): Use THIS_EXPR.
9998         (resolve_qualified_expression_name): Use NEW_CLASS_EXPR. When
9999         resolving from SUPER, set *type_found.
10000         (qualify_ambiguous_name): Use NEW_CLASS_EXPR.
10001         (java_complete_tree): Removed unused local variable `location'. Case
10002         for SWITCH_EXPR, sharing code with LOOP_EXPR. Use NEW_ARRAY_EXPR,
10003         NEW_CLASS_EXPR, UNARY_PLUS_EXPR and THIS_EXPR. New string handling
10004         on MODIFY_EXPR: and all binary operator tree code cases. Removed
10005         STRING_CST: case. default: checks for patchable strings.
10006         (complete_function_arguments): Transform string constant or
10007         crafted StringBuffer if necessary.
10008         (build_method_invocation): Fixed comments.
10009         (build_new_invocation): New function.
10010         (patch_assignment): Call try_builtin_assignconv to figure a valid
10011         assignment conversion between builtin types.
10012         (try_builtin_assignconv): New function.
10013         (build_binop): Use URSHIFT_EXPR directly to call build.
10014         (operator_string): Use UNARY_PLUS_EXPR.
10015         (patch_binop): Use UNARY_PLUS_EXPR. Handle string concatenation
10016         operator.
10017         (do_merge_string_cste, merge_string_cste,
10018         string_constant_concatenation, build_string_concatenation,
10019         patch_string, patch_string_cst): New function.
10020         (build_unary_op): Use UNARY_PLUS_EXPR and CONVERT_EXPR.
10021         (patch_unaryop): Likewise. New test of valid ++/-- operands.
10022         (build_newarray_node): Use NEW_ARRAY_EXPR.
10023         (build_this): Use THIS_EXPR.
10024         (build_return): Enable debug information on return statement.
10025         (build_if_else_statement): Likewise.
10026         (complete_labeled_statement): Fixed related comment.
10027         (build_loop_body): Fixed comment.
10028         (build_bc_statement): Enable debug information on break/continue
10029         statements.
10030         (patch_bc_statement): Fixed typos. Handle SWITCH statement
10031         context.
10032         (patch_switch_statement, case_identity, java_expand_switch): New
10033         functions.
10034
10035 Mon Sep 21 13:21:35 1998  Per Bothner  <bothner@cygnus.com>
10036
10037         * buffer.h (BUFFER_INIT):  New macro.
10038         * jcf-write.c (struct jcf_partial):  New type.  Put global stuff here.
10039         Pass (struct jcf_partial *state) to most functions.
10040         (jcf_block, jcf_relocation):  New types.
10041         Support labels, branches, conditionals, loops.
10042
10043 Mon Sep 21 15:08:48 1998  Tom Tromey  <tromey@cygnus.com>
10044
10045         * decl.c (INT_TYPE_SIZE): Define as BITS_PER_WORD if not defined.
10046
10047 Mon Sep 21 13:21:35 1998  Per Bothner  <bothner@cygnus.com>
10048
10049         * decl.c (integer_type_node):  Make it have INT_TYPE_SIZE.
10050         * verify.c (verify_jvm_instructions):  Use int_type_not (32 bits),
10051         not integer_type_node (INT_TYPE_SIZ bits).
10052
10053         * parse.y (patch_if_else_statement):  Accept promoted_boolean_type_node.
10054
10055         * jcf-reader.c (get_attribute):  New HANDLE_EXCEPTION_TABLE hook.
10056         * jcf-dump.c (print_exception_table):  New function.
10057         (disassemble_method):  Better handling of wide instructions.
10058         Make more robust for bad input.
10059
10060 Wed Sep 30 20:53:51 1998  Jeffrey A Law  (law@cygnus.com)
10061
10062         * jcf-write.c (OP2, OP4): Use "_i", not "_I" to avoid problems on
10063         FreeBSD.
10064
10065 Thu Sep 17 19:45:01 1998  Jeffrey A Law  (law@cygnus.com)
10066
10067         * Makefile.in (jcf-dump, jvgenmain): Link in memmove.o too.
10068
10069 Thu Sep 17 16:21:52 1998  Tom Tromey  <tromey@cygnus.com>
10070
10071         * Makefile.in ($(PARSE_H)): Removed target.
10072
10073 Thu Sep 17 01:57:07 1998  Jeffrey A Law  (law@cygnus.com)
10074
10075         * Makefile.in (JAVA_OBJS): Add memmove.o
10076         (memmove.o): New target & rules.
10077
10078 Tue Sep 15 23:21:55 1998  Tom Tromey  <tromey@cygnus.com>
10079
10080         * expr.c (expand_invoke): Don't generate a call to the class init
10081         code.
10082
10083 Mon Sep 14 10:14:47 1998  Jeffrey A Law  (law@cygnus.com)
10084
10085         * Makefile.in: Add many missing dependencies.
10086         * buffer.c, class.c, constants.c, decl.c: Use system.h and toplev.h
10087         as appropriate.
10088         * except.c, expr.c, jcf-io.c jcf-parse.c, jcf-write.c: Likewise.
10089         * jvgenmain.c lang.c mangle.c typeck.c verify.c: Likewise.
10090
10091 Fri Sep 11 14:05:21 1998  Per Bothner  <bothner@cygnus.com>
10092
10093         * decl.c (complete_start_java_method):  If method is static (and
10094         not private) call _Jv_InitClass.
10095         * expr.c (expand_invoke):  Don't call build_class_init.
10096
10097         * jvspec.c (jvgenmain_spec):  Fix spec for generated .o file.
10098
10099 Thu Sep 10 10:33:31 1998  Jeffrey A Law  (law@cygnus.com)
10100
10101         * Make-lang.in (GCJ): Define before using.
10102
10103 Wed Sep  9 21:23:10 1998  Jeffrey A Law  (law@cygnus.com)
10104
10105         * gjavah.c (java_no_argument): Renamed from no_argument to avoid
10106         losing due to namespace pollution in GNU getopt.h
10107
10108 Wed Sep  9 13:33:39 1998  Tom Tromey  <tromey@cygnus.com>
10109
10110         * Make-lang.in (java.all.build): Don't mention jvgenmain or gcjh.
10111         (java.all.cross): Likewise.
10112         (java.rest.encap): Likewise.
10113
10114 Tue Sep  8 10:34:05 1998  Jeffrey A Law  (law@cygnus.com)
10115
10116         * gjavah.c (print_class_decls): Fix thinko in arglist
10117         * jcv-io.c (find_classfile): Similarly.
10118
10119 Mon Sep  7 13:59:49 1998  Jeffrey A Law  (law@cygnus.com)
10120
10121         * Makefile.in (INCLUDES): Update for recent toplevel gcc changes.
10122
10123 Sat Sep  5 16:08:01 1998  Tom Tromey  <tromey@cygnus.com>
10124
10125         * Make-lang.in (java.maintainer-clean): Don't remove parse.h.
10126         (java.mostlyclean): Remove parse.c and parse-scan.c, not parse.h.
10127         * Makefile.in (PARSE_C): New macro.
10128         (PARSE_H): Likewise.
10129         (PARSE_SCAN_C): Likewise.
10130         ($(PARSE_C)): Target renamed from parse.c.
10131         ($(PARSE_SCAN_C)): Target renamed from parse-scan.c.
10132         (clean): Remove parse-scan.c as well.
10133         (parse.o): Depend on $(PARSE_C).
10134
10135 Sat Sep  5 08:48:40 1998  Anthony Green  <green@cygnus.com>
10136
10137         * README, license.terms: Removed.
10138
10139         * Make-lang.in, Makefile.in, class.c, config-lang.in, constants.c,
10140         decl.c, except.c, expr.c, gjavah.c, java-except.h, java-tree.h,
10141         javaop.def, javaop.h, jcf-dump.c, jcf-io.c, jcf-parse.c,
10142         jcf-reader.c, jcf-write.c, jcf.h, jvgenmain.c, jvspec.c,
10143         keyword.gperf, keyword.h, lang-options.h, lang-specs.h, lang.c,
10144         lex.c, lex.h, mangle.c, parse-scan.y, parse.h, parse.y, typeck.c,
10145         verify.c, zextract.c, zipfile.h: Fixed copyright assignment,
10146         and Java trademark attribution.
10147
10148 Fri Sep  4 10:42:05 1998  Tom Tromey  <tromey@cygnus.com>
10149
10150         * Makefile.in: Use gcjh, not gjavah.
10151         * config-lang.in (stagestuff): Use gcjh, not gjavah.
10152         * Make-lang.in: Changed gjavah to gcjh everywhere.
10153
10154 Thu Sep  3 18:04:09 1998  Per Bothner  <bothner@cygnus.com>
10155
10156         * gjavah.c:  Support new -prepend -add -append flags.
10157         (print_method_info):  Method is not virtual if class is final.
10158
10159 Thu Sep  3 12:03:53 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10160
10161         * jv-scan.c: Fixed copyright assignment.
10162         * keyword.gperf: Likewise.
10163         * keyword.h: Likewise.
10164         * lex.c: Fixed copyright assignment.
10165         (java_lex): Push unicode back when parsing '<'.
10166         * lex.h: Fixed copyright assignment.
10167         * parse-scan.y: Likewise.
10168         * parse.h: Fixed copyright assignment.
10169         (build_debugable_stmt, complete_for_loop): New function prototypes.
10170         * parse.y: Fixed copyright assignment.
10171         (for_statement:): Call complete_for_loop. Set EXIT_EXPR to be
10172         size_zero_node when completing a loop with no exit condition.
10173         (for_statement_nsi:): Define action.
10174         (for_init:, for_update:): Return size_zero_node when empty.
10175         (declare_local_variables): Call build_debugable_stmt.
10176         (build_debugable_stmt): New function.
10177         (build_loop_body): Build debugable statement around loop
10178         condition part.
10179         (complete_loop_body): Take into account the debugable statement
10180         around the EXIT_EXPR.
10181         (complete_loop_body): New function.
10182         (patch_exit_expr): Fixed condition inversion.
10183
10184 Wed Sep  2 11:53:58 1998  Tom Tromey  <tromey@cygnus.com>
10185
10186         * Make-lang.in (jvspec.o): Use GCC_THREAD_FILE to compute correct
10187         name of thread define.
10188         * jvspec.c (THREAD_NAME): New macro.
10189         (GCLIB): Likewise.
10190         (THREADLIB): Likewise.
10191         (lang_specific_driver): Recognize attempt to link with thread
10192         library or gc library.  Recognize -ljava on command line so it
10193         isn't linked against more than once.
10194
10195 Wed Sep  2 11:28:35 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10196
10197         * parse-scan.y (report_main_declaration): Name of the class
10198         containing `main' can be a qualified name.
10199
10200 Mon Aug 31 13:25:58 1998  Tom Tromey  <tromey@cygnus.com>
10201
10202         * config-lang.in: Changed gjavac to gjc everywhere.
10203         * Make-lang.in: Changed gjavac to gjc everywhere.
10204
10205 Thu Aug 27 02:28:27 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10206
10207         * Make-lang.in (JAVA_TARGET_INDEPENDENT_BIN_TOOLS): New variable.
10208         (java.install-common:): Loop over JAVA_TARGET_INDEPENDENT_BIN_TOOLS
10209         and install the files.
10210         * Makefile.in (JAVA_OBJS_LITE): New variable.
10211         (compiler:): Now include jv-scan as a dependency.
10212         (../jv-scan$(exeext), parse-scan.c): New targets.
10213         (../jcf-dump$(exeext)): Was jcf-dump$(exeext) before.
10214         * config-lang.in (compilers): Removed gcj, gjavah from the list.
10215         * jcf-parse.c (parse_source_file): Call java_layout_classes and
10216         check for errors even if parse_only.
10217         * lex.c (java_init_lex): Reorganized and skip parts if JC1_LITE is
10218         defined.
10219         (yylex): New function. Uses java_lex body.
10220         (java_lex): Removed commented out statement. Remove local variable
10221         literal. Use SET_LVAL_NODE_TYPE and SET_LVAL_NODE where
10222         appropriate.  Use macros FLOAT_TYPE_NODE, DOUBLE_TYPE_NODE,
10223         DCONST0, SET_FLOAT_HANDLER, SET_REAL_VALUE_ATOF,
10224         SET_LVAL_NODE_TYPE and GET_TYPE_PRECISION. Don't create STRING_CST
10225         if JC1_LITE is defined. Use BUILD_ID_WFL to build identifiers. Use
10226         SET_MODIFIER_CTX, SET_LVAL_NODE, BUILD_ID_WFL and GET_IDENTIFIER
10227         where appropriate.
10228         (java_lex_error): Empty if JC1_LITE is defined.
10229         (java_get_line_col): Return 0 if JC1_LITE is defined.
10230         * lex.h (JAVA_FLOAT_RANGE_ERROR, JAVA_INTEGRAL_RANGE_ERROR,
10231         SET_MODIFIER_CTX): Moved into the section containing the macros
10232         conditionally defined by JC1_LITE.
10233         (BUILD_OPERATOR,BUILD_OPERATOR2): Just return the TOKEN
10234         argument if JC1_LITE is defined.
10235         (HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT, REAL_VALUE_ATOF,
10236         REAL_VALUE_ISINF, REAL_VALUE_ISNAN): Preset to values if JC1_LITE
10237         is defined.
10238         (DCONST0, SET_FLOAT_HANDLER, GET_IDENTIFIER, SET_REAL_VALUE_ATOF,
10239         FLOAT_TYPE, DOUBLE_TYPE, SET_MODIFIER_CTX, GET_TYPE_PRECISION,
10240         SET_LVAL_NODE, SET_LVAL_NODE_TYPE, BUILD_ID_WFL): New macros, set
10241         to different values according to JC1_LITE.
10242         * parse.h (int_fits_type_p, stabilize_reference): Prototype not
10243         declared if JC1_LITE set.
10244         (jdep_code, typedef struct _jdep, typedef struct _jdeplist): Not
10245         defined if JC1_LITE not set.
10246         (struct parser_ctx): Reorganized and skip the jc1 front end part
10247         if JC1_LITE set.
10248         (java_layout_classes): New function definition.
10249         (java_push_parser_context, java_init_lex, yyparse, yylex,
10250         yyerror): Prototype always declared. All other static function
10251         prototypes declared only if JC1_LITE is not set.
10252         * parse.y (yyparse, yylex, yyerror): No longer declared here. Now
10253         declared in parse.h.
10254         (java_layout_classes): New function.
10255         (java_complete_expand_methods): No longer layout the class here.
10256         * parse-scan.y: New file.
10257         * jv-scan.c: New file.
10258
10259 Tue Aug 25 10:17:54 1998  Tom Tromey  <tromey@cygnus.com>
10260
10261         * gjavah.c (main): Handle -friend option.
10262         (friend_specs): New global.
10263         (generate_access): Handle friend_specs.
10264         (process_file): Likewise.
10265         (MAX_FRIENDS): New macro.
10266         (friend_count): New global.
10267         (print_cxx_classname): Added `prefix' argument.  Ignore arrays.
10268         Changed all callers.
10269
10270 Mon Aug 24 20:19:27 1998  Per Bothner  <bothner@cygnus.com>
10271
10272         * jcf-dump.c (process_class):  Move JCF_FINISH use to main,
10273         (main):  Handle processing all the entries of a named .zip archive.
10274         * jcf-io.c (jcf_trim_old_input):  New function.
10275         * jcf.h (GET_u2_le,GET_u4_le,JCF_readu2_le,JCF_readu4_le):  New macros.
10276
10277 Mon Aug 24 07:35:13 1998  Per Bothner  <bothner@cygnus.com>
10278
10279         * lang.c (flag_assume_compiled):  Make default be on.
10280
10281 Fri Aug 21 17:29:04 1998  Per Bothner  <bothner@cygnus.com>
10282
10283         * jcf-dump.c:  Add bunches of flags to control output more.
10284         (process_class):  New function;  support printing more than one class.
10285         (main): Support new --print-main and --javap flags.
10286         * jcf-reader.c (IGNORE_ATTRIBUTE):  New hook.
10287         * jcf.h (CPOOL_INDEX_IN_RANGE):  New macro.
10288
10289 Thu Aug 20 14:24:47 1998  Per Bothner  <bothner@cygnus.com>
10290
10291         Change mangling of dispatch table to match C++ vtable (w/thunks).
10292         * class.c (build_dtable_decl), java-tree.h:  New function.
10293         (make_class_data):  Call it.
10294         * decl.c (init_decl_processing):  Likewise.
10295
10296 Wed Aug 19 17:57:07 1998  Warren Levy  <warrenl@cygnus.com>
10297
10298         * decl.c (init_decl_processing): Use _Jv_NewObjectArray, not
10299         soft_anewarray; adjust args passed.
10300         * expr.c (build_anewarray): Adjust args for soft_anewarray_node to
10301         match _Jv_NewObjectArray.
10302
10303 Wed Aug 19 09:33:23 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10304
10305         * decl.c (push_labeled_block, pop_labeled_block): New functions.
10306         * expr.c (loopup_label): Call create_label_decl.
10307         (create_label_decl): New function.
10308         (java_lang_expand_expr): Call expand_start_bindings with argument
10309         set to zero.
10310         * java-tree.h Added space after PROTO in function declarations
10311         when necessary.
10312         (IS_FOR_LOOP_P, IS_BREAK_STMT_P): New macros.
10313         (create_label_decl, push_labeled_block): New function
10314         declarations.
10315         * lex.c (label_id): Initialize.
10316         (SUPER_TK, THIS_TK, RETURN_TK): Merged common actions in final
10317         switch.
10318         * parse.h Added space after PROTO in function declarations when
10319         necessary.
10320         (LOOP_EXPR_BODY_MAIN_BLOCK, LOOP_EXPR_BODY_UPDATE_BLOCK,
10321         LOOP_EXPR_BODY_CONDITION_EXPR, LOOP_EXPR_BODY_LABELED_BODY,
10322         LOOP_EXPR_BODY_BODY_EXPR, LOOP_HAS_LABEL_P, LOOP_HAS_LABEL_SKIP_P,
10323         PUSH_LABELED_BLOCK, POP_LABELED_BLOCK, PUSH_LOOP, POP_LOOP): New
10324         macros.
10325         (struct parser_ctxt): New fields current_loop,
10326         current_labeled_block.
10327         (build_if_else_statement, patch_if_else_statement,
10328         add_stmt_to_compound, patch_exit_expr, build_labeled_block,
10329         generate_labeled_block, complete_labeled_statement,
10330         build_bc_statement, patch_bc_statement, patch_loop_statement,
10331         build_new_loop, build_loop_body, complete_loop_body): New function
10332         declarations.
10333         * parse.y (java_warning_count): New global variable.
10334         (label_id): New static variable.
10335         (BREAK_TK, CONTINUE_TK): Token tagged <operator>.
10336         (block:): Return size_zero_node when block is empty.
10337         (empty_statement:): Return size_zero_node.
10338         (statement:): Implement supplemental action when for_statement: is
10339         reduced.
10340         (label_decl:): New rule.
10341         (labeled_statement:): Rewritten using label_decl. Actions
10342         implemented.
10343         (labeled_statement_nsi:): Likewise.
10344         (if_then_statement): Actions implemented.
10345         (while_expression): New rule.
10346         (while_statement:): Rewritten using while_expression. Actions
10347         implemented.
10348         (while_statement_nsi:): Likewise.
10349         (do_statement_begin:): New rule.
10350         (do_statement:): Rewritten using do_statement_begin. Actions
10351         implemented.
10352         (for_statement:): Rewritten using for_begin. Actions implemented.
10353         (for_statement_nsi:): Likewise.
10354         (for_header:, for_begin:): New rules.
10355         (for_init:): Actions implemented.
10356         (statement_expression_list:, break_statement:,
10357         continue_statement:): Likewise.
10358         (yyerror): Count number of issued warning(s).
10359         (java_report_errors): Report error(s) and/or warning(s).
10360         (java_complete_class): Use build_java_argument_signature to
10361         recompute completed method signature.
10362         (java_check_regular_methods): New locals method_wfl and aflags.
10363         Use method_wfl instead of lookup_cl during error reports. Fixed
10364         indentation and modified some error messages. Use
10365         lang_printable_name in method instead of the DECL_NAME. New code
10366         to issue warnings on methods not overriding corresponding methods
10367         private to a different package.
10368         (java_method_add_stmt): Call add_stmt_to_compound.
10369         (add_stmt_to_compound): New function.
10370         (java_complete_tree): Handle LABELED_BLOCK_EXPR, EXIT_BLOCK_EXPR,
10371         LOOP_EXPR, EXIT_EXPR and COND_EXPR.
10372         (build_if_else_statement, patch_if_else_statement,
10373         build_labeled_block, generate_labeled_block,
10374         complete_labeled_statement, build_new_loop, build_loop_body,
10375         complete_loop_body, patch_loop_statement, build_bc_statement,
10376         patch_bc_statement, patch_exit_expr): New functions.
10377         * typeck.c (build_java_signature): Build argument signature before
10378         enclosing it in between parenthesis.
10379
10380 Mon Aug 17 17:44:24 1998  Warren Levy  <warrenl@cygnus.com>
10381
10382         * Make-lang.in (JAVA_SRCS): Created for dependencies * Makefile.in
10383         (JAVA_OBJS): Added reminder comment
10384
10385 Thu Aug 13 10:01:45 1998  Nick Clifton  <nickc@cygnus.com>
10386
10387         * gjavah.c (D_NAN_MASK): Append LL to the constant to force it to
10388         be interpreted as a long long.
10389
10390 Thu Aug 13 14:34:07 1998  Warren Levy  <warrenl@cygnus.com>
10391
10392         * decl.c (init_decl_processing): Use _Jv_InitClass, not
10393         soft_initialise_class.  Use _Jv_NewMultiArray, not
10394         soft_multianewarray.  Use _Jv_ThrowBadArrayIndex, not
10395         soft_badarrayindex.  Use _Jv_CheckCast, not soft_checkcast.  Use
10396         _Jv_CheckArrayStore, not soft_checkarraystore.  Use
10397         _Jv_LookupInterfaceMethod, not soft_lookupinterfacemethod.
10398
10399 Wed Aug 12 14:23:13 1998  Per Bothner  <bothner@cygnus.com>
10400
10401         * decl.c, java-tree.h (this_identifier_node, super_identifier_node,
10402         length_identifier_node):  New global tree node constants.
10403         * parse.y (kw_super, kw_this, kw_length):  Removed globals.
10404         Replace uses by super_identifier_node etc.
10405         * lex.c (kw_super, kw_this, kw_length):  Don't initialize.
10406
10407         * parse.y (resolve_field_access):  Don't special-case ".length" if
10408         flag_emit_class_files.
10409         (patch_array_ref):  Leave as ARRAY_REF if flag_emit_class_files.
10410         * jcf-write.c (generate_bytecode_insns):  Handle ARRAY_REF opcode
10411         and ARRAY.length.
10412
10413 Tue Aug 11 11:31:55 1998  Per Bothner  <bothner@cygnus.com>
10414
10415         * decl.c (init_decl_processing): Remove unused method_type_node fields.
10416         * class.c (make_method_value):  Remove init for removed fields.
10417
10418         * class.c (layout_class):  Use build_java_argument_signature.
10419         * java-tree.h (TYPE_ARGUMENT_SIGNATURE):  New macro.
10420
10421         * typeck.c (push_java_argument_signature):  Removed.  Merged into ...
10422         (build_java_argument_signature):  Use TYPE_ARGUMENT_SIGNATURE cache.
10423         (build_java_signature):  Don't use push_java_argument_signature.
10424
10425         * typeck.c (lookup_argument_method):  New function.
10426         * parse.y (java_check_regular_methods):  Use lookup_argument_method
10427         instead of lookup_java_method2 followed by lookup_java_method.
10428
10429         * parse.y (check_method_redefinition):  Minor optimization.
10430
10431         * jcf-write.c (generate_bytecode_insns):  Handle RETURN_EXPR,
10432         MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, and RDIV_EXPR.
10433
10434 Mon Aug 10 09:57:15 1998  Tom Tromey  <tromey@cygnus.com>
10435
10436         * Make-lang.in (jc1$(exeext)): Don't depend on c-common.o or
10437         c-pragma.o.
10438
10439         * gjavah.c (java_float_finite): Use K&R-style definition.
10440         (java_double_finite): Likewise.
10441         (generate_access): Now returns void.  Changed all callers.
10442         (last_access_generated): Removed.
10443         (process_file): Only make a single pass over the .class file.
10444
10445 Wed Jul 29 17:50:23 1998  Per Bothner  <bothner@cygnus.com>
10446
10447         * class.c (get_dispatch_table):  Add extra dummy vtable entry,
10448         for compatibility for G++ (with -fvtable-thunks).
10449         * expr.c (build_invokevirtual):  Add one for extra dummy vtable entry.
10450
10451         * gjavah.c (process_file):  Use public inheritance for super-class.
10452
10453 Wed Jul 29 13:19:03 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10454
10455         * lex.c (java_init_lex): Initialize ctxp->package.
10456         * parse.h (struct parser_ctxt): package and package_len replaced
10457         by tree package, an identifier node. Field method_decl_list is
10458         gone. Fixed comments.
10459         (lookup_field_wrapper, merge_qualified_name, not_accessible,
10460         class_in_current_package): New function prototypes.
10461         * parse.y (array_type:): Set class loaded flag on primitive type
10462         arrays.
10463         (package_declaration:): Assign ctxp->package to the
10464         identifier node.
10465         (method_invocation:): Handle invocation of method qualified by
10466         `super'.
10467         (single_type_import_declaration:): Removed ambiguity check.
10468         (java_pop_parser_context): New local variable `next'. Reset and
10469         set IMPORT_CLASSFILE_NAME flags on current and previous import
10470         list.
10471         (java_accstring_lookup): Use new local macro COPY_RETURN.
10472         (lookup_field_wrapper): New function.
10473         (parser_qualified_classname): Use merge_qualified_name.
10474         (parser_check_super_interface): Broaden error message.
10475         (do_resolve_class): Check for qualified class name in the current
10476         compilation unit if appropriate.
10477         (process_imports): Check for already defined classes.
10478         (check_pkg_class_access): Got rid of call to
10479         get_access_flags_from_decl.
10480         (java_complete_expand_methods): Call safe_layout_class based on
10481         the current class size.
10482         (make_qualified_primary): Build a WFL qualification on primary if
10483         none exists.
10484         (merge_qualified_name): New function.
10485         (make_qualified_name): Use merge_qualified_name.
10486         (resolve_expression_name): Use safe_lookup_field.
10487         (resolve_field_access): Got rid of call to get_access_flags_from_decl.
10488         (resolve_qualified_expression_name): Likewise. Check on resolved
10489         element accessibility.
10490         (not_accessible_p, class_in_current_package): New functions.
10491         (maybe_access_field): Got rid of call to get_access_flags_from_decl.
10492         (patch_method_invocation_stmt): Merged common pieces. Check
10493         accessibility of invoked method.
10494         (check_for_static_method_reference): Add returned type in error
10495         message.
10496         (invocation_mode): Get rid of bogus check on PRIVATE methods.
10497         (refine_accessible_methods_list): Merged two conditions in test.
10498         (java_complete_class): Sanity check on stabilize_ref gone.
10499         * zextract.c (read_zip_archive): Cast lseek second argument to long.
10500
10501 Tue Jul 28 21:39:22 1998  Per Bothner  <bothner@cygnus.com>
10502
10503         * class.c (hashUtf8String):  Fix - use new JavaSoft specification.
10504
10505 Fri Jul 24 10:43:25 1998  Tom Tromey  <tromey@cygnus.com>
10506
10507         * gjavah.c (F_NAN): Removed.
10508         (F_NAN_MASK): New macro.
10509         (F_POSITIVE_INFINITY): Removed.
10510         (F_NEGATIVE_INFINITY): Likewise.
10511         (java_float_finite): Rewrote.
10512         (D_NAN_MASK): Renamed.
10513         (java_double_finite): Rewrote.
10514         (D_POSITIVE_INFINITY): Removed.
10515         (D_NEGATIVE_INFINITY): Likewise.
10516
10517         * jcf-dump.c (print_constant): [CONSTANT_Double, CONSTANT_Float]
10518         If verbose, print underlying representation of value in hex.
10519
10520 Fri Jul 24 14:14:32 1998  Per Bothner  <bothner@cygnus.com>
10521
10522         * buffer.h, buffer.c:  New files.
10523         * Makefile.in (JAVA_OBJS):  Add buffer.o.
10524
10525         Support locals variables and writing their debug entries to .class.
10526         * jcf-write.c:  Simplify some by user new buffer type.
10527         (vode_buffer_grow):  Removed.
10528         (struct localvar_info):  New type.
10529         (localsvars, localvartable):  New buffers.
10530         (localvar_alloc, localvar_free):  New functions.
10531         (generate_bytecode_insns):  Handle local variables.
10532         (generate_classfile):  Write LocalVariableTable attribute.
10533
10534 Fri Jul 24 13:46:59 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10535
10536         * jcf-io.c (open_in_zip): Check the zipfile magic number.
10537         * zipfile.h (ZIPMAGIC): New macro.
10538
10539 Fri Jul 24 10:43:25 1998  Tom Tromey  <tromey@cygnus.com>
10540
10541         * Makefile.in (gjavah.o): Updated dependencies.
10542         (jcf-dump.o): Likewise.
10543         (all.indirect): Use ../gjavah.
10544         (../gjavah$(exeext)): Likewise.
10545         (clean): Don't remove gjavah.
10546         (clean): Remove parse.c, not java/parse.c.
10547         * Make-lang.in (java): Added gjavah.
10548         (gjavah$(exeext)): New target.
10549         (GJAVAH_SOURCES): New macro.
10550         (java.all.build): Added gjavah.
10551         (java.all.cross): Likewise.
10552         (java.rest.encap): Likewise.
10553         * config-lang.in (compilers, stagestuff): Added gjavah.
10554
10555 Thu Jul 23 18:33:56 1998  Tom Tromey  <tromey@cygnus.com>
10556
10557         * gjavah.c (java_float_finite): New function.
10558         (java_double_finite): Likewise.
10559         (F_POSITIVE_INFINITY): New macro.
10560         (F_NEGATIVE_INFINITY): Likewise.
10561         (F_NAN): Likewise.
10562         (D_POSITIVE_INFINITY): Likewise.
10563         (D_NEGATIVE_INFINITY): Likewise.
10564         (D_NAN): Likewise.
10565         (print_field_info): Use java_float_finite and java_double_finite.
10566
10567 Thu Jul 23 15:28:24 1998  Per Bothner  <bothner@cygnus.com>
10568
10569         * parse.y (method_header):  Name "this" implicit argument.
10570
10571 Wed Jul 22 15:47:30 1998  Per Bothner  <bothner@cygnus.com>
10572
10573         * jcf-write.c:  Write out LineNumberTable attribute in .class file.
10574         (linenumber_buffer, linenumber_ptr, linenumber_limit):  New statics.
10575         (put_linenumber):  New function.
10576         (generate_bytecode_insns, generate_classfile):  Write line numbers.
10577
10578 Wed Jul 22 14:39:00 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10579
10580         * java-tree.h (CALL_EXPR_FROM_PRIMARY_P): Changed in PRIMARY_P.
10581         (lookup_name, build_known_method_ref, build_class_init,
10582         build_invokevirtual, invoke_build_dtable, match_java_method,
10583         build_field_ref, pushdecl_force_head, build_java_binop,
10584         binary_numeric_promotion, build_decl_no_layout,
10585         build_java_arrayaccess, build_newarray, build_anewarray,
10586         build_java_array_length_access, build_java_arraynull_check): New
10587         extern function prototypes.
10588         (JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR,
10589         JAVA_THIS_EXPR, CALL_CONSTRUCTOR_P): Macro definition moved in
10590         java-tree.h.
10591         * jcf-parse.c (init_outgoing_cpool): Set current_constant_pool_data_ref
10592         to NULL
10593         * jcf.h (jcf_out_of_synch): New extern function prototype.
10594         * parse.h: Static/global function implemented in parse.y
10595         prototyped and declarations moved at the end of the file.
10596         (DECL_P): Check that the argument isn't null.
10597         (JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR,
10598         JAVA_THIS_EXPR): No longer defined here. See java-tree.h
10599         (QUAL_DECL_TYPE): New macro.
10600         (PARAMS): Macro definition removed.
10601         * parse.y: (yyparse, yyerror): Use PROTO instead of PARAMS.
10602         (return_statement:): Call build_return.
10603         (field_access:): Call make_qualified_primary in sub rule.
10604         (method_invocation:): Build method invocation and call
10605         make_qualified_primary when processing primaries.
10606         (java_complete_class): Set IDENTIFIER_SIGNATURE_TYPE by calling
10607         get_type_from_signature.
10608         (java_check_regular_method): Extra integer 0 argument when calling
10609         lookup_java_method2.
10610         (lookup_java_interface_method2): Extra method DECL argument when
10611         calling lookup_java_interface_method2.
10612         (java_method_add_stmt): Set TREE_SIDE_EFFECTS on newly created
10613         COMPOUND_EXPR node.
10614         (java_complete_expand_method): Layout current class iff not
10615         already done. Don't process interface's methods.
10616         (java_complete_expand_method): Use super class only if it
10617         exists. Use current class otherwise.
10618         (make_qualified_primary): New function.
10619         (resolve_expression_name): Process qualified expression or
10620         expression from primary the same way.
10621         (resolve_expression_name): Two last arguments to
10622         resolve_field_access are now NULL_TREEs.
10623         (resolve_field_access): New variable is_static. Local field must
10624         be DECLs. is_static computed on field DECLs only. Append code in
10625         where_found to the field access if necessary. Use QUAL_DECL_TYPE
10626         to initialize field_type.
10627         (resolve_qualified_expression_name): New local variable,
10628         previous_call_static and is_static. Handle primaries with function
10629         calls, casts, array references and `this'. `super' now handled as
10630         `(super_class)this'. Use is_static to clarify boolean expressions.
10631         Added code to handle case where a proper handle is required to
10632         access a field. Use QUAL_DECL_TYPE where applicable.
10633         (maybe_access_field): New function.
10634         (patch_method_invocation_stmt): New arguments primary, where,
10635         is_static. Branch of the test on CALL_EXPR_FROM_PRIMARY_P
10636         deleted. Use `where' as a type to search from if specified. Check
10637         for static method reference where forbidden. Append primary or
10638         current_this to the argument list if not calling constructor nor
10639         static methods.
10640         (check_for_static_method_reference): New function.
10641         (patch_invoke): Layout the class on which new is done if
10642         necessary.
10643         (lookup_method_invoke): Changed format to report errors on
10644         methods.
10645         (qualify_ambiguous_name): New local variable this_found. Now
10646         handle things from primaries. Method call are considered
10647         expression names.
10648         (identical_subpath_p): NULL_TREE arguments to breakdown_qualified
10649         changed into NULLs.
10650         (not_initialized_as_it_should_p): Comply with the new DECL_P.
10651         (java_complete_tree): New case fo RETURN_EXPR. Process function
10652         call arguments in separate function.
10653         (complete_function_arguments): New function.
10654         (build_method_invocation): Don't use CALL_EXPR_FROM_PRIMARY_P
10655         anymore.
10656         (patch_assignment): Take the return function slot into account as
10657         a RHS. Distinguish assignment from a return.
10658         (valid_ref_assignconv_cast_p): Use build_java_argument_signature
10659         when checking methods in interfaces.
10660         (resolve_type_during_patch): NULL argument to unresolve_type_p
10661         instead of NULL_TREE.
10662         (patch_newarray): Fixed typo in comment.
10663         (buid_this): Build a WFL with `kw_this' instead of a FIELD_DECL.
10664         (build_return, patch_return): New functions.
10665         * typeck.c (lookup_java_constructor): Fixed typo in comment.
10666
10667 Tue Jul 21 12:10:04 1998  Per Bothner  <bothner@cygnus.com>
10668
10669         * constants.c (find_name_and_type_constant, find_fieldref_index,
10670         find_methodref_index):  New methods.
10671         * expr.c (build_invoke_non_interface):  If flag_emit_class_files,
10672         just return given method.  Also, rename to build_known_method_ref.
10673         (expand_invoke):  Rename call to build_invoke_non_interface.
10674         * java-tree.h, parse.h:  Update prototype.
10675         * parse.y, decl.c, jcf-parse.c:  Suppress calls to back-end functions
10676         (such as expand_expr_stmt) if flag_emit_class_files.
10677         * jcf-write.c (RESERVE, OP1, OP2, OP4, NOTE_PUSH, NOTE_POP,
10678         STACK_TARGET, IGNORE_TARGET):  New macros.
10679         (code_buffer, code_ptr, code_limit, code_S, code_SP_max):  New globals.
10680         (generate_bytecode_insn):  New function to generate method's bytecode.
10681         (generate_classfile):  Node generate Code attribute for a method.
10682         (code_buffer_grow, push_constant1, push_constant2, push_int_const,
10683         push_long_const, field_op, adjust_typed_op, maybe_wide):
10684         New functions used by generate_bytecode_insn.
10685
10686         * typeck.c (signature_include_return):  Remove variable.
10687         (push_java_argument_signature, build_java_argument_signature):  New.
10688         (build_java_signature):  Use push_java_argument_signature.
10689         * parse.y:  Use build_java_argument_signature instead of fiddling
10690         with signature_include_return.
10691
10692 Fri Jul 17 09:48:51 1998  Tom Tromey  <tromey@cygnus.com>
10693
10694         * gjavah.c (print_c_decl): Always generate JArray<>* for array
10695         types.
10696
10697         * Makefile.in (all.indirect): Added gjavah$(exeext).
10698         (gjavah$(exeext)): Added $(exeext).
10699         (clean): Likewise.
10700
10701 Thu Jul 16 15:29:20 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10702
10703         * class.c (layout_class): Call to java_layout_parsed_class replace
10704         by safe_layout_class.
10705         * expr.c (build_java_array_length_access): Removed static storage
10706         class in the function definition.
10707         (build_java_arraynull_check): Likewise.
10708         Also fixed typos in two comments.
10709         * lex.c (java_init_lex): Initialize static global kw_length.
10710         (java_lex): Use BUILD_OPERATOR on RETURN_TK.
10711         * lex.h (JAVA_FLOAT_RANGE_ERROR): Add extra argument to
10712         java_lex_error.
10713         (JAVA_INTEGRAL_RANGE_ERROR): Likewise.
10714         * parse.h (resolve_no_layout): New static function declaration.
10715         (get_identifier_in_static): Declaration removed.
10716         (java_layout_parsed_class): Function name declaration changed to
10717         safe_layout_class.
10718         (build_newarray_node, patch_newarray, resolve_type_during_patch,
10719         not_initialized_as_it_should_p, build_this): New static function
10720         declarations.
10721         (pushdecl_force_head, build_java_binop, int_fits_type_p,
10722         binary_numeric_promotion, stabilize_reference,
10723         build_decl_no_layout, build_java_arrayaccess): Extern function
10724         declarations moved into their own section.
10725         (build_newarray, build_anewarray, build_java_array_length_access,
10726         build_java_arraynull_check): New extern function declarations.
10727         (UNARY_PLUS_EXPR): Macro renamed into JAVA_UNARY_PLUS_EXPR.
10728         (JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR, JAVA_THIS_EXPR): New
10729         fake tree codes.
10730         (CALL_CONSTRUCTOR_P): New macro.
10731         * parse.y (kw_length): New static global tree node.
10732         (return_statement): Tagged <node>.
10733         (RETURN_TK): Tagged <operator>.
10734         (variable_declarator_id:): Build variable declaration with an
10735         empty initialization value if a syntax error was found in the
10736         initialization part of the variable declaration.
10737         (statement_without_trailing_substatement:): return_statement: now
10738         uses the default rule.
10739         (return_statement:): Temporarily fixed to return NULL_TREE.
10740         (primary_no_new_array:): Call build_this when THIS_TK was parsed.
10741         (class_instance_creation_expression:): Class creation rules now
10742         call build_method_invocation upon reduction.
10743         (array_creation_expression:): Rules call build_newarray_node upon
10744         reduction.
10745         (dim_exprs:): Build a list of dimension expressions.
10746         (dim_expr:): Store location of the OSB_TK in the dimension
10747         expression node.
10748         (method_invocation:): Added a new error rule.
10749         (build_unresolved_array_type): WFL argument may also be an array
10750         on a primitive type. Name of the argument changed to reflect this.
10751         (method_declarator): Insert argument type at the beginning of the
10752         argument type list and later reverse the list.
10753         (unresolved_type_p): Argument 'returned' may be optionally
10754         NULL_TREE.
10755         (java_layout_class_from_source): Function renamed
10756         safe_layout_class.
10757         (resolve_and_layout): Now call resolve_no_layout and
10758         safe_layout_class.
10759         (resolve_no_layout): New function.
10760         (purify_type_name): New function.
10761         (complete_class_report_errors): Call purify_type_name during error
10762         report on a type not found.
10763         (process_imports): error_found local variable doesn't need to be
10764         initialized to zero.
10765         (declare_local_variables): New local type_wfl. Fixed typo in error
10766         message. type_wfl assigned to unresolved type and used to register
10767         incomplete type. Build a WFL around the variable initialization
10768         statement so that debug info can be generated on it.
10769         (source_start_java_method): Reverse argument list after they've
10770         been processed.
10771         (current_this): New static global variable.
10772         (java_complete_expand_methods): Set current_this when appropriate.
10773         (resolve_expression_name): Build correct static and non static
10774         field access bearing a simple name.
10775         (resolve_field_access): Resolve the length field of arrays. Handle
10776         f.m() cases.
10777         (patch_method_invocation_stmt): Set the type of the method
10778         invocation to error_mark_node. This value is later overridden by a
10779         valid type, if any. Don't handle qualified constructor invocation
10780         as qualified method invocation. Call lookup_method_invoke with its
10781         new flag. It's no longer necessary to access the selected method
10782         as the value of a tree list. Handle constructor invocation.
10783         (patch_invoke): Reverse argument list when invoking non interface
10784         methods. Insert call to new as the first argument of the
10785         constructor.
10786         (invocation_mode): Return a INVOKE_STATIC is the invoked method is
10787         defined within a final class. Return INVOKE_STATIC if the invoked
10788         method is a constructor.
10789         (lookup_method_invoke): New lc argument is a flag to indicate a
10790         constructor lookup. Now handle constructor lookup. Choose the most
10791         specific method in case several were matching the invocation
10792         requirements. Return a method decl instead of a tree list featuring
10793         one single method decl element.
10794         (refine_accessible_methods_list): New lc flag argument to
10795         indicate that a constructor is being looked up.
10796         (not_initialized_as_it_should_p): New function.
10797         (java_complete_tree): Now process fake tree codes
10798         JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR and JAVA_THIS_EXPR. Call
10799         save_expr on resolved function call arguments. Case on
10800         UNARY_PLUS_EXPR changed into a case on JAVA_UNARY_PLUS_EXPR.
10801         (patch_assignment): LHS can be a field access expression. When
10802         dealing with reference, lhs_type is the promoted type of the
10803         rhs_type, not the RHS. Use not_initialized_as_it_should_p where
10804         applicable.
10805         (operator_string): JAVA_UNARY_PLUS_EXPR replaces UNARY_PLUS_EXPR.
10806         (patch_binop): Use not_initialized_as_it_should_p where
10807         applicable.
10808         (build_unaryop): JAVA_UNARY_PLUS_EXPR replaces UNARY_PLUS_EXPR.
10809         (patch_unaryop): Likewise. And use not_initialized_as_it_should_p
10810         where applicable.
10811         (resolve_type_during_patch): New function.
10812         (patch_cast): Call resolve_type_during_patch to resolve type and
10813         report error accordingly.
10814         (patch_array_ref): Use not_initialized_as_it_should_p where
10815         applicable. Array base expression is saved before being
10816         used. Promote the type of an array elements if it contains non
10817         builtin types.
10818         (build_newarray_node, patch_newarray, build_this): New functions.
10819
10820 Thu Jul 16 10:46:47 1998  Tom Tromey  <tromey@cygnus.com>
10821
10822         * gjavah.c (print_c_decl): UTF8_GET increments pointer; don't
10823         increment it in `for' statement.
10824         (print_field_info): If number is inf or nan, don't print it.
10825         (print_method_info): If method name is `delete', just ignore it.
10826         (print_c_decl): Special-case jstringArray.
10827
10828         * gjavah.c (help): New function.
10829         (no_argument): New function.
10830         (usage): Changed text.
10831         (main): Rewrote argument handling.  Now handles -v, --help,
10832         --version.
10833         (version): New function.
10834         (found_error): New global.
10835         (main): Return found_error.
10836         (generate_access): Set found_error.
10837         (print_c_decl): Likewise.
10838
10839 Wed Jul 15 10:36:27 1998  Tom Tromey  <tromey@cygnus.com>
10840
10841         * gjavah.c (print_c_decl): Don't print "," when examining field.
10842         Skip type name when looking at "[L" types.
10843         (process_file): Now static.
10844         (generate_access): Now returns int.
10845         (last_access_generated): New global.
10846         (process_file): Clear last_access_generated; make multiple passes
10847         over the class.
10848         (print_field_info): Just return if generate_access returns true.
10849         (print_method_info): Likewise.  Also, allow <init> functions to
10850         pass through.
10851         (print_c_decl): Added is_init argument.  Print constructors
10852         properly.
10853         (print_cxx_classname): Use UTF8_GET to extract characters from
10854         string.
10855         (print_base_classname): New function.
10856         (print_class_decls): New function.
10857         (process_file): Use it.
10858         (utf8_cmp): New function.
10859
10860 Mon Jul 13 14:21:47 1998  Nick Clifton  <nickc@cygnus.com>
10861
10862         * lang-options.h: Format changed to match changes in gcc/toplev.c
10863         to implement a --help option.
10864
10865 1998-07-10  Brendan Kehoe  <brendan@cygnus.com>
10866
10867         * decl.c (init_decl_processing): Revert change to dtable_type.
10868
10869 Thu Jul  9 18:22:12 1998  Per Bothner  <bothner@cygnus.com>
10870
10871         * java-tree.h (CLASS_P):  Changed DECL_LANG_FLAG_7 -> TYPE_LANG_FLAG_4.
10872
10873 1998-07-08  Brendan Kehoe  <brendan@cygnus.com>
10874
10875         * decl.c (init_decl_processing): Set CLASS_LOADED_P on dtable_type.
10876
10877         * lang.c (lang_init): Default flag_exceptions to 1, without
10878         checking to see if it's 2 first.
10879
10880 Wed Jul  8 03:01:32 1998  Jeffrey A Law  (law@cygnus.com)
10881
10882         * constants.c: Include "system.h".
10883         * decl.c: Likewise.
10884         * lang.c (flag_new_exceptions): Get via extern now.
10885         (lang_init_options): New functions.  Turn on flag_new_exceptions.
10886
10887 Tue Jul  7 12:56:48 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10888
10889         * lex.c (java_lex): Return 0 when we see an invalid character in
10890         the input.
10891
10892         * lex.c (java_read_char): Specify extra argument when calling
10893         java_lex_error.
10894         (java_read_unicode, java_parse_end_comment,
10895         java_parse_escape_sequence): Likewise,
10896         (java_lex): Specify extra argument when calling
10897         java_lex_error. Test that IDs are beginning with a legal character
10898         for IDs. Handle invalid characters with an error message and a
10899         call to java_lex_error.
10900         (java_lex_error): Adjust column position by new argument
10901         `forward'. Issue an error even if in the middle of reporting an
10902         other error.
10903
10904 1998-07-07  Brendan Kehoe  <brendan@cygnus.com>
10905
10906         * jcf-io.c (find_class): Zero out BUFFER before we use it, since
10907         we don't explicitly put a null pointer when we're copying it.
10908
10909 Tue Jul  7 09:38:38 1998  Tom Tromey  <tromey@cygnus.com>
10910
10911         * gjavah.c (print_cxx_classname): New function.
10912         (super_class_name): Likewise.
10913         (print_super_fields): Removed.
10914         (in_super): Removed.
10915         (print_field_info): Never generate #defines.
10916         (print_c_decl): Changed generated types to match JNI.  No longer
10917         print class name before method name.
10918         (print_method_info): Print "static" before static methods.
10919         Print "virtual" before non-final methods.
10920         (usage): Use exit(1), not exit(-1).
10921         (main): Likewise.
10922         (print_field_info): Use %.17g to print a double.
10923         (last_access): New globals.
10924         (process_file): Initialize last_access.
10925         (usage): Now static.
10926         (ACC_VISIBILITY): New define.
10927         (generate_access): New function.
10928         (print_field_info): Call it.
10929         (print_method_info): Likewise.  Also, generate information for all
10930         methods, not just native methods.  Return void.
10931         (print_c_decl): Return void.
10932         (print_field_info): Return void.
10933
10934 Thu Jul  2 16:53:16 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10935
10936         * Makefile.in (JAVABISONFLAGS): Specific flag for bison when
10937         processing the jc1 grammar file. Prefix bison functions and
10938         variables with java_.
10939         (parse.c): Dependencies on parse.h and lex.h
10940         * expr.c (build_java_arrayaccess): Function now global.
10941         * java-tree.h: Comment reorganized to carry on previous
10942         classification effort.
10943         (RESOLVE_EXPRESSION_NAME_P, RESOLVE_PACKAGE_NAME_P,
10944         RESOLVE_TYPE_NAME_P): New flags on WFLs.
10945         * jcf-parse.c (parse_source_file): java_parse_source_file renamed
10946         java_parse (new prefix java_ generated by bison).
10947         (java_layout_parsed_class, java_register_parsed_class): Function
10948         call removed.
10949         (yyparse): Removed unnecessary call to init_outgoing_cpool.
10950         * lex.c (static tree wfl_op): Variable deleted.
10951         (java_init_lex): Initialize kw_super and kw_this. Initialize more
10952         ctxp fields to NULL_TREE.
10953         (java_lex): No longer create WFL for operators. Filename caching
10954         mechanism deleted. Call BUILD_OPERATOR for `.', '(', '['. Strings
10955         created as STRING_CST and later expanded. Removed extra argument
10956         to BUILD_OPERATOR and BUILD_OPERATOR2. Build operators for THIS
10957         and SUPER.
10958         (build_wfl_node): Removed code in comments.
10959         * lex.h (BUILD_OPERATOR, BUILD_OPERATOR2): No longer build a WFL but
10960         store token and location data in the current bison token.
10961         * parse.h: Removed pre-processor based symbol prefixes hack. Moved
10962         static/extern function declaration at the beginning of the file.
10963         (struct qualification): Data structure definition deleted.
10964         (RESOLVE_CHAIN_REMAINDER): Macro definition deleted.
10965         (qualify_ambiguous_name): Function declaration modified. Function
10966         now returns nothing.
10967         (build_array_ref, patch_array_ref, make_qualified_name,
10968         resolve_qualified_expression_name, maybe_generate_clinit,
10969         resolve_field_access): New static function declarations.
10970         (build_java_arrayaccess): New extern function declaration.
10971         (enum { RESOLVE_EXPRESION_NAME...}): Enum deleted.
10972         (CALL_EXPR_PRIMARY): Macro deleted.
10973         (EXPR_WFL_QUALIFICATION, QUAL_WFL, QUAL_RESOLUTION): New macros.
10974         (struct parser_ctxt): Field initialized_final
10975         removed. non_static_initialized, static_initialized: New fields.
10976         * parse.y (static tree kw_super, static tree kw_this): New global
10977         static.
10978         (%union): tree wfl field of operator member replaced by int
10979         location. WFLs are non longer created for operators.
10980         (OSB_TK, DOT_TK, THIS_TK, SUPER_TK): Tagged <operator>.
10981         (qualified_name:): Now calls make_qualified_name to build the
10982         identifier.
10983         (type_declaration:): Consider generating <clinit> when class
10984         parsing completed.
10985         (variable_declarator:): Directly build an assignment node when the
10986         variable is initialized when declared.
10987         (this_or_super:): Build a WFL and set current location when THIS
10988         or SUPER are parsed.
10989         (expression_statement:): Wrap statement around a WFL.
10990         (primary_no_new_array:): Fixed typo. Changed value returned by
10991         THIS_TK because of its new type (temporary).
10992         (dim_exprs:): Temporary fix because of OSB_TK's new type.
10993         (field_access:): Build qualified name with SUPER.
10994         (method_invocation:): Fixed returned value because of SUPER's new
10995         type.
10996         (array_access:): Use OSB_TK location information.
10997         (post_increment_expression:, post_decrement_expression:,
10998         unary_expression:, pre_increment_expression:,
10999         pre_decrement_expression:, unary_expression_not_plus_minus:,
11000         cast_expression:, multiplicative_expression:,
11001         additive_expression:, shift_expression:, relational_expression:,
11002         equality_expression:, and_expression:, exclusive_or_expression:,
11003         inclusive_or_expression:, conditional_and_expression:,
11004         conditional_or_expression:, assignment:): Use new location/token
11005         information available on operators.
11006         (create_class): Set super_decl_type to NULL_TREE when processing
11007         java.lang.Object.
11008         (register_fields): Field initialization is now a MODIFY_EXPR
11009         node. Chain initialization code to the matching lists (according
11010         the the field declaration modifiers).
11011         (maybe_generate_clinit): New function.
11012         (method_header): Don't set method's DECL_NAME to a WFL when adding
11013         methods to java.lang.Object.
11014         (resolve_and_layout): Now can return NULL_TREE if the type
11015         resolution fails. Otherwise, return the class DECL instead of its
11016         TYPE.
11017         (check_method_redefinition): Don't patch method DECL_NAME if it
11018         belongs to java.lang.Object.
11019         (process_imports): Simply assign error_found to the value returned
11020         by check_pkg_class_access.
11021         (declare_local_variables): Don't use their init statements (if
11022         any) when parsing error were previously found. Reuse MODIFY_EXPR
11023         build during parsing as an init statement.
11024         (java_method_add_stmt): Now return the current method body.
11025         (java_layout_parsed_class, java_register_parsed_class): Functions
11026         removed.
11027         (java_complete_expand_methods): Initialize the constant pool on a
11028         per class basis. Layout the classes before expanding their method
11029         bodies. Don't try expand artificial constructor code if error were
11030         found. Make the classes data and register them if no error were
11031         found.
11032         (java_complete_expand_method): Retrieve an artificial constructor
11033         argument list before entering its body. Assign the top block to
11034         the artificial constructor function body and set types of declared
11035         blocks and compound statements to void. Walk method body if not an
11036         artificial constructor.
11037         (make_qualified_name, cut_identifier_in_qualified): New functions.
11038         (resolve_expression_name): Fixed comments. Save/restore the
11039         current class CLASS_LOADED_P flag value. Build non qualified
11040         static field access and handle qualified expression names.
11041         (resolve_field_access, resolve_qualified_expression_name): New
11042         functions.
11043         (patch_method_invocation_stmt): Use the new expression resolution
11044         scheme, calling resolve_field_access when the function call is
11045         resolved as an expression.
11046         (qualify_ambiguous_name): Function rewritten to work on qualified
11047         expression produced by make_qualified_name.
11048         (java_complete_tree): Promote type when function's argument are
11049         RECORD_TYPEs. While processing the MODIFY_EXPR case: don't patch
11050         the assignment to discover further errors if RHS is a expression
11051         name that fails to evaluate. Declare LHS initialized even though
11052         the assignment failed. Don't use the location variable and removed
11053         extra argument in patch function calls. Now handle the ARRAY_REF
11054         case and build internal string representation when STRING_CSTs are
11055         walked.
11056         (build_method_invocation): Don't wrap function call around a WFL.
11057         (build_assignment): Likewise. Use the operator location
11058         information.
11059         (patch_assignment): Handle array access LHSs. Handle error
11060         provenance, resulting in a better error report.
11061         (build_binop): Use op_location from operator as binop location
11062         information.
11063         (build_unaryop, build_incdec, build_cast): Likewise.
11064         (patch_binop): Extract location information from the node. Fixed
11065         typo in error message.
11066         (patch_unary_op): Extract location information from the node.
11067         (build_array_ref, patch_array_ref): New functions.
11068
11069 Wed Jul  1 13:11:36 1998  Tom Tromey  <tromey@cygnus.com>
11070
11071         * expr.c (expand_java_INSTANCEOF): Changed calling convention to
11072         match _Jv_IsInstanceOf.
11073         * decl.c (init_decl_processing): Use _Jv_NewArray, not
11074         soft_newarray.  Use _Jv_IsInstanceOf, not soft_instanceof.
11075
11076 Tue Jun 30 14:12:54 1998  Tom Tromey  <tromey@cygnus.com>
11077
11078         * decl.c (init_decl_processing): Functions are now named
11079         _Jv_MonitorEnter and _Jv_MonitorExit, and return jint.
11080
11081 Mon Jun 29 14:47:10 1998  Per Bothner  <bothner@cygnus.com>
11082
11083         * java-tree.h (load_class):  Add prototype.
11084         * class.c (is_compiled_class):  Add missing arg to load_class.
11085         * expr.c (expand_java_NEW):  Call load_class.
11086         * parse.y (process_import):  Removed bogus use of void return value.
11087
11088 Thu Jun 25 11:50:48 1998  Per Bothner  <bothner@cygnus.com>
11089
11090         * decl.c, java-tree.h (soft_athrow_node):  Renamed to soft_node.
11091         Function name is "_Jv_Throw" instead of "soft_athrow".
11092         * decl.c, java-tree.h (soft_new_node):  Renamed to alloc_object_node.
11093         Function name is "_Jv_AllocObject" instead of "soft_new".
11094         Takes an extra parameter (object size).
11095         * expr.c:  Update calls.
11096
11097 Wed Jun 24 13:59:02 1998  Per Bothner  <bothner@cygnus.com>
11098
11099         * lex.c (java_get_line_col):  Handle end-of-file.
11100         * except.c (expand_end_java_handler):  Handle null type (i.e. finally).
11101
11102 Wed Jun 24 09:22:34 EDT 1998  Andrew MacLeod  <amacleod@cygnus.com>
11103
11104         * lang.c (lang_init): Make -fexceptions the default.
11105         * except.c (maybe_start_try, maybe_end_try): Don't do anything if
11106         exception handling is not turned on.
11107
11108 Tue Jun 23 10:17:09 EDT 1998  Andrew MacLeod  <amacleod@cygnus.com>
11109
11110         * lang.c (flag_new_exceptions): Make this this default.
11111         * decl.c (end_java_method): Call emit_handlers.
11112         * except.c (method_init_exceptions): Set language code and version.
11113         (expand_start_java_handler): Enable exception, and call
11114         expand_eh_region_start.
11115         (expand_end_java_handler): Enable exception, and set up catch blocks.
11116         (emit_handlers): New routine to generate the saved handlers.
11117         * java-except.h (emit_handlers): Add prototype.
11118
11119 Fri Jun 12 11:31:24 1998  Per Bothner  <bothner@cygnus.com>
11120
11121         We used to have three different representations of the constant pool:
11122         the CPool structure, the tree_constant_pool, and the constructures
11123         used to build the Class object (which may need class and string
11124         constants) in compiled code.  None were appropriate for compiling
11125         to .class files, so I did a major overhaul.
11126
11127         First, the tree_constant_pool array was removed.  Things were
11128         modified to the CPool structure in the JCF could be used.
11129         Second, a "capacity" field was added to the CPool, and functions
11130         written to search for a matching constant, adding one if not found.
11131         The code that generated the Class object was changed to use a CPool.
11132         The actual TREE_LISTs used to build the CONSTRUCTORs used for
11133         the static Class object are now only in build_constants_constructor.
11134         Finally, I wrote code which can generate a .class file (including its
11135         constant pool) from the RECORD_TYPE of a class.  This is a big step
11136         on the way to compiling Java source into .class files.
11137
11138         * jcf-write.c:  New file. Writes out a RECORD_TYPE as a .class file.
11139         * Makefile.in (JAVA_OBJS):  Added jcf-write.o.
11140
11141         * java-tree.h (CPOOL_UTF, CONSTANT_ResolvedFlag,
11142         CONSTANT_ResolvedString, CONSTANT_ResolvedClass):  New macros.
11143         (NAME_AND_TYPE_NAME, NAME_AND_TYPE_SIGNATURE, COMPONENT_REF_NAME,
11144         COMPONENT_REF_NAME_AND_TYPE, COMPONENT_REF_SIGNATURE): Redefined.
11145         (COMPONENT_REF_CLASS):  Replaced by COMPONENT_REF_CLASS_INDEX.
11146         (lang_type):  Removed constant_pool field.
11147         * jcf.h (CPool):  Renamed size to count.  Added field capacity.
11148         (CPOO_COUNT, CPOOL_UINT, CPOOL_USHORT1, CPOOL_USHORT2,
11149         CPOOL_FINISH, CPOOL_INIT, CPOOL_REINIT):  New macros.
11150         Rewrite some of the old JCF_XXX in terms of CPOOL_XXX macros.
11151
11152         * constants.c (current_constant_pool_tags, current_constant_pool_data,
11153         current_constant_pool_length), java-tree.h: Replaced by outgoing_cpool.
11154         * constants.c (build_constants_constructor):  Use new outgoing_cpool.
11155         (set_constant_entry, find_constant1, find_constant2,
11156         find_class_constant, count_constant_pool_bytes, write_constant_pool,
11157         find_utf8_constant, find_class_or_string_constant):  New functions.
11158
11159         * jcf-parse.c (load_class):  Don't save/restore tree-constant_pool.
11160         (get_constant):  Use current_jcf.cpool instead of tree_constant_pool.
11161         (give_name_to_class, get_class_constant):  Likewise.
11162         * jcf-parse.c, java-tree.h (tree_constant_pool):  Removed.
11163         (get_name_and_type_constant, get_ref_constant):  Removed.
11164         * parse.h (parser_ctxt):  Remove field tree_constant_pool.
11165         * parse.y:  Don't save/restore tree_constant_pool.
11166         * verify.c (verify_jvm_instructions):  Update for new approach.
11167         * expr.c (expand_invoke, expand_java_field_op): Likewise.
11168
11169         * lang-options.h:  Added -femit-class-file, -femit-class-files.
11170         * lang.c (flag_emit_class_files), java-tree.h:  New flag.
11171         (lang_f_options):  Added "emit-class-file(s)".
11172
11173         * expr.c (build_java_arrayaccess):  Generate more efficient array
11174         bounds checking, by using unsigned compare.
11175
11176         * expr.c (expand_invoke):  Re-arrange error checks to make more robust.
11177
11178 Wed Jun 10 17:34:42 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11179
11180         * parse.h: New comment on the handling of unresolved type
11181         identifiers. JDEPs are now part of the jdep_code enum.
11182         (typedef struct jdep): Now use enum jdep_code or int, depending on
11183         availability. Both are narrowed down to an 8 bits bitfield.
11184         (CALL_EXPR_PRIMARY): Fixed comment.
11185
11186 Wed Jun 10 10:54:39 1998  Tom Tromey  <tromey@cygnus.com>
11187
11188         * Make-lang.in (java): Added gjavac and jvgenmain.
11189         (java.start.encap): Depend on gjavac.
11190         (java.rest.encap): Depend on jvgenmain.
11191
11192         * Make-lang.in (JAVA_INSTALL_NAME): Name is gjavac, not c++.
11193         (JAVA_CROSS_NAME): Likewise.
11194         (java.all.build): Depend on jvgenmain and gjavac.
11195         (java.all.cross): Depend on jvgenmain and gjavac-cross.
11196         (jvgenmain$(exeext)): New target.
11197         (java.install-common): Wrote.
11198         * config-lang.in (compilers, stagestuff): Added gjavac and
11199         jvgenmain.
11200
11201 Wed Jun 10 12:19:04 1998  Dave Brolley  <brolley@cygnus.com>
11202
11203         * lang.c (lang_decode_option): New argc/argv interface.
11204
11205 Tue Jun  9 18:12:46 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11206
11207         * ChangeLog: Fixed entries not compliant with the Gnu Coding Standard.
11208         * decl.c (build_decl_no_layout): New function.
11209         * expr.c (java_lang_expand_expr): Layout declarations found in
11210         blocks before they're pushed.
11211         * jcf-parse.c (load_class): Save current line when parsing class
11212         file.
11213         (parse_source_file): Register class before expanding their
11214         methods.
11215         * lang.c (put_decl_node): Produce `null' when `void *' is
11216         processed.
11217         * lex.c (static tree wfl_op): New static global, for error report
11218         on casts.
11219         (java_init_lex): wfl_operator and wfl_op initialized
11220         here. Filename caching added for wfl_op. Return wfl_op when `(' is
11221         parsed.
11222         * parse.h (build_unaryop, build_incdec, patch_unaryop, build_cast,
11223         patch_cast, valid_ref_assignconv_cast_p, can_cast_to_p,
11224         build_unresolved_array_type): New static function definitions.
11225         (build_decl_no_layout): New extern function declared.
11226         (OBSOLETE_MODIFIER_WARNING): Report error only if the WFL of the
11227         faulty modifier exists.
11228         (TYPE_INTERFACE_P, TYPE_CLASS_P): New macros.
11229         (ERROR_CAST_NEEDED_TO_INTEGRAL): Error message tuned.
11230         (UNARY_PLUS_EXPR): New fake operator.
11231         (struct parser_ctxt): New field osb_number.
11232         * parse.y (static tree wfl_operator): New static WFL for operator
11233         bound error messages.
11234         (DECR_TK, INCR_TK): Moved.
11235         (OP_TK): Tagged <operator>.
11236         (array_type:): Now call build_unresolved_array_type.
11237         (dim_expr:): Count the number of '[' seen.
11238         (post_increment_expression, post_decrement_expression,
11239         pre_increment_expression, pre_decrement_expression,
11240         unary_expression_not_plus_minus, unary_expression:): Actions are
11241         now building the corresponding unary expressions.
11242         (cast_expression:): Actions are now building cast expressions.
11243         (build_unresolved_array_type): New function.
11244         (create_interface): Reset the number of declared interfaces.
11245         (create_class): Likewise.
11246         (method_header): Methods declared within the scope of an interface
11247         are now implicitly set public and abstract.
11248         (java_complete_class): Variable's and parameter's type are patched
11249         with a promoted type.
11250         (declare_local_variables): Resolved non builtin types are promoted
11251         before being used to build a variable decl. Removed type patch
11252         posted on variable initialization statement.
11253         (source_start_java_method): Use build_decl_no_layout to build the
11254         decl of a parameter of incomplete type.
11255         (java_register_parsed_class): Process interfaces too. Call
11256         rest_of_decl_compilation on each processed class declarations.
11257         (java_complete_expand_methods): Don't attempt to expand things in
11258         interfaces.
11259         (java_complete_tree): Process CONVERT_EXPR, even though it always
11260         has a type. Propagate error_mark_node to node's type too. Promote
11261         method's call argument type and return error_mark_node if
11262         argument's completion didn't work. MODIFY_EXPR can have a WFL as a
11263         RHS. Fixed bug in the handling of bogus RHS of a fixed type. Now
11264         handle unary operator nodes.
11265         (build_assignment): Added comment.
11266         (print_int_node): New function.
11267         (patch_assignment): New second argument. New error handling. Use
11268         print_int_node. Handle references. Use can_cast_to_p to issue
11269         different error message according to the context and check upon
11270         the initialization of the RHS.
11271         (can_cast_to_p, valid_ref_assignconv_cast_p): New functions.
11272         (operator_string): Handle more operators.
11273         (patch_binop): No longer use a function static
11274         wfl_operator. Improved error message on shift distance.
11275         (build_unaryop, build_incdec, build_cast, patch_unaryop,
11276         patch_cast): New functions.
11277
11278 Fri Jun  5 18:03:07 1998  Per Bothner  <bothner@cygnus.com>
11279
11280         * jvspec.c:  New file.
11281         * Make-lang.in:  New rules to build gjavac from jvspec.c and ../gcc.c.
11282
11283         * java-tree.h (identifier_subst):  Add declaration.
11284
11285 Thu Jun  4 13:44:23 1998  Tom Tromey  <tromey@cygnus.com>
11286
11287         * jvgenmain.c (main): Generate call to JvRunMain.
11288
11289         * class.c (make_class_data): Push value for "sync_info" field.
11290         * decl.c (init_decl_processing): Push "sync_info" field.
11291
11292 Wed Jun  3 20:39:14 1998  Per Bothner  <bothner@cygnus.com>
11293
11294         * typeck.c (build_java_array_type):  Set TYPE_NAME to actual
11295         Java (source) name, not signature.
11296         Set TYPE_ALIGN to (at least) that of element_type.
11297
11298 Tue Jun  2 15:19:19 1998  Per Bothner  <bothner@cygnus.com>
11299
11300         * class.c:  Moved classname-mangling-rekated code to ...
11301         * mangle.c:  ... this new file.
11302         * jvgenmain.c:  New program (needs mangle.c) to generate main program.
11303         * Makefile.in:  Update for above changes.
11304
11305 Mon Jun  1 09:58:36 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11306
11307         * expr.c (truthvalue_conversion): Convert integer and floating
11308         point value to their truth value.
11309         * lex.c (java_lex): Handle the `null' literal.
11310         * parse.h (JREFERENCE_TYPE_P, DECL_P): New macros.
11311         (ERROR_CANT_CONVERT_TO_BOOLEAN, ERROR_CANT_CONVERT_TO_NUMERIC,
11312         ERROR_CAST_NEEDED_TO_INTEGRAL, ERROR_VARIABLE_NOT_INITIALIZED):
11313         New macros.
11314
11315         * parse.y: Reorganization/documentation on token declaration.
11316         (binop_lookup[]): New added new tree codes.
11317         (relational_expression): Build corresponding binary operators.
11318         (equality_expression, conditional_and_expression,
11319         conditional_or_expression): Likewise.
11320         (java_complete_class): Fix crash in debug message.
11321         (java_complete_tree): Check initialization of method call
11322         arguments. Further bogus node evaluation to detect more error
11323         during assignments. Handles more binary operators.
11324         (patch_assignment): Use DECL_P.
11325         (build_binop): Fix crash when using URSHIFT_EXPR, a Java only tree
11326         code.
11327         (operator_string): Handle more case. Compacted source.
11328         (patch_binop): Changed function comment. Checking for
11329         uninitialized first operand takes the compound assignment into
11330         account and uses DECL_P. Checking for uninitialized second operand
11331         delayed to routine's end. Use macros to issue type bound error
11332         messages and issue messages on both operands if their types are
11333         different. Force fixed type into node. Handle all binary
11334         operators.
11335
11336 Wed May 27 10:30:31 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11337
11338         * java-tree.h (COMPOUND_ASSIGN_P, INITIALIZED_P): New macros.
11339         * lex.c (java_lex): Use BUILD_OPERATOR and BUILD_OPERATOR2 to
11340         build operator node and return tokens.
11341         * lex.h (BUILD_OPERATOR, BUILD_OPERATOR2): New macros.
11342         * parse.h (java_complete_tree): Changed returned type in prototype.
11343         (build_method_invocation, build_assignment, patch_assignment,
11344         patch_binop): New static function declarations.
11345         (JFLOAT_TYPE_P, JNUMERIC_TYPE_P, JPRIMITIVE_TYPE_P, JSTRING_P,
11346         BUILD_EXPR_WFL): New macros.
11347         * parse.y (enum tree_code binop_lookup[]): New static for token to
11348         TREE_CODE lookup.
11349         (%union): Parser union has new sub-structure `operator'.
11350         (ASSIGN_TK, MULT_ASSIGN_TK, DIV_ASSIGN_TK, REM_ASSIGN_TK,
11351         PLUS_ASSIGN_TK, MINUS_ASSIGN_TK, LS_ASSIGN_TK, SRS_ASSIGN_TK,
11352         ZRS_ASSIGN_TK, AND_ASSIGN_TK, XOR_ASSIGN_TK, OR_ASSIGN_TK,
11353         ASSIGN_ANY_TK): Tokens tagged `operator'.
11354         (EQ_TK, GTE_TK, ZRS_TK, SRS_TK, GT_TK, LTE_TK, LS_TK, BOOL_AND_TK,
11355         AND_TK, BOOL_OR_TK, OR_TK, INCR_TK, PLUS_TK, DECR_TK, MINUS_TK,
11356         MULT_TK, DIV_TK, XOR_TK, REM_TK, NEQ_TK, NEG_TK, REL_QM_TK,
11357         REL_CL_TK, NOT_TK, LT_TK): Tokens tagged `operator'.
11358         (assignment_operator:): Rule tagged `operator'.
11359         (expression_statement:): Re-installed default rule.
11360         (method_invocation:): Sub rules call build_method_invocation.
11361         (postfix_expression:): Don't attempt to resolve name here. Just
11362         return an ID.
11363         (multiplicative_expression:): Sub-rules build corresponding binop
11364         expression node.
11365         (additive_expression:, shift_expression:, and_expression:,
11366         exclusive_or_expression:, inclusive_or_expression:): Likewise.
11367         (assignment:): Sub rule invoke build_assignment.
11368         (assignment_operator:): Default rules on sub rules.
11369         (force_error): Added documentation on this variable.
11370         (declare_local_variables): Build initialization calling
11371         build_assignment.
11372         (expand_start_java_method): Removed unused rtx declaration. Mark
11373         arguments as already initialized.
11374         (java_method_add_stmt): Type of built COMPOUND_EXPR set to NULL.
11375         (java_complete_expand_methods): Don't process next method if
11376         completion of the previous one triggered errors.
11377         (java_complete_expand_method): Call source_end_java_method if no
11378         error were found during completion.
11379         (resolve_expression_name): Use IDENTIFIER_LOCAL_VALUE to retrieve
11380         locals declaratilon. Handle names found within a class. Return
11381         error_mark_node when things aren't found.
11382         (patch_method_invocation_stmt): Return error_mark_node on failures.
11383         (patch_invoke): Removed unused local. Return the correct node.
11384         (java_complete_tree): Now returns a value. The BLOCK section binds
11385         local identifiers and the type of a BLOCK is now void. Assign the
11386         result of operand completion on COMPOUND_EXPR. Assign the
11387         encapsulated node of a WFL to the result of its completion, except
11388         when the node is an identifier. Now handle MODIFY_EXPR and several
11389         binary operators. Return error_mark_node on errors.
11390         (build_method_invocation, build_assignment, patch_assignment,
11391         build_binop, operator_string, patch_binop): New functions.
11392         * typeck.c (binary_numeric_promotion): New function.
11393
11394 Thu May 21 12:01:04 1998  Per Bothner  <bothner@cygnus.com>
11395
11396         * class.c (identifier_subst):  New convenience wrapper for ident_subst.
11397         Replace most uses of ident_subst by identifier_subst.
11398
11399         * class.c (push_class_static_dummy_field):  Removed function.
11400         (build_class_ref):  Find Class object decl by looking up "CNAME.class",
11401         instead of looking got "class" static field.  Create that decl here.
11402         (class_identifier_node):  Removed;  no longer needed.
11403         (init_class_processing):  Don't init class_identifier_node.
11404         * jcf-parse.c (jcf_parse):  Don't call push_class_static_dummy_field.
11405         Do nreverse 0 times (instead of twice) for Object and Class.
11406         * parse.y (java_layout_parsed_class): No push_class_static_dummy_field.
11407
11408 Wed May 20 16:35:04 1998  Per Bothner  <bothner@cygnus.com>
11409
11410         * jcf-parse.c (parse_class-file):  Set lino to smallest line number,
11411         while initializing linenumber_count and linenumber_table.
11412         Do it before init_function_start (which calls emit_line_note).
11413         * expr.c (expand_byte_code):  Don't need to clear lineno here.
11414
11415 Mon May 18 16:23:32 1998  Tom Tromey  <tromey@cygnus.com>
11416
11417         * class.c (append_gpp_mangled_type): If `qualifications' is >=9,
11418         then mangle number as _N_.
11419
11420         * class.c (mangle_class_field): New function.
11421         (build_class_ref): Set assembler name of class reference using
11422         mangle_class_field.
11423         (push_class_static_dummy_field): Likewise.
11424
11425 Sun May 17 12:52:35 1998  Michael Tiemann <tiemann@cygnus.com>
11426
11427         * parse.y (source_start_java_method): Use TREE_SET_CODE instead
11428         of assigning to TREE_CODE.  The latter method exploits a feature
11429         of GCC that is not ANSI compliant.
11430
11431 Thu May 12 13:44:27 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11432
11433         * decl.c (pushdecl_force_head): New function.
11434         (pushlevel): Removed conditional printf.
11435         (complete_start_java_method): Don't enter local variable scope if
11436         function is compiled from source code.
11437         * expr.c: parse.h now included
11438         (java_lang_expand_expr): New function.
11439         * jcf-io.c (find_class): Use SOURCE_FRONTEND_DEBUG instead of
11440         printf. Terminate buffer when doing directories.
11441         * jcf-parse.c (parse_source_file): Call lang_init_source before
11442         parsing and before code generation.
11443         * jcf.h (SOURCE_FRONTEND_DEBUG): Macro redefined to conditionally
11444         use printf if the macro is defined.
11445         * lang.c (lang_init): Install lang_expand_expr hook on
11446         java_lang_expand_expr.
11447         (java_dummy_print): New function.
11448         (lang_init_source): New function.
11449         * lex.c (java_lex): Remember location of an opening brace at the
11450         second nesting level.
11451         (java_is_eol): Unget character seen after a CR if it is EOF.
11452         * parse.h: Now includes lex.h
11453         (SOURCE_FRONTEND_DEBUG): Macro redefined to conditionally use
11454         printf if the macro is defined.
11455         (expand_start_java_method, build_expr_block, enter_block,
11456         exit_block, lookup_name_in_blocks, maybe_absorb_scoping_blocks):
11457         New static function declarations.
11458         (pushdecl_force_head): New extern function declaration.
11459         (INCOMPLETE_TYPE_P): New macro.
11460         (JDEP_PARM, JDEP_TYPE): New entries in JDEPs enum.
11461         (BLOCK_CHAIN_DECL, BLOCK_EXPR_DECLS, BLOCK_EXPR_BODY,
11462         BLOCK_EXPR_ORIGIN): New macros.
11463         (DECL_SOURCE_LINE_MERGE, DECL_SOURCE_LINE_FIRST,
11464         DECL_SOURCE_LINE_LAST): New macros.
11465         (struct parser_ctxt): Removed field current_method_decl, redundant
11466         with the field current_function_decl. Added fields
11467         first_ccb_indent1 and pending_block.
11468         * parse.y (method_body, literal, INT_LIT_TK, FP_LIT_TK,
11469         BOOL_LIT_TK, CHAR_LIT_TK, STRING_LIT_TK, NULL_TK, VOID_TK): Rules
11470         tagged <node>
11471         (SOURCE_FRONTEND_DEBUG): Used as macro accepting varargs.
11472         (compilation_unit:): Cosmetic on sub rule.
11473         (type_declaration:): Cosmetic on sub rules. Added an error rule.
11474         (variable_initializer:): Installed default rule on expression:.
11475         (method_declaration:): method_header: starts a new
11476         method. method_body: installs the function body, absorbs blocks
11477         emitted for temporary variable scopings, pops function's body block
11478         and merges function's last statement lineno in DECL_SOURCE_LINE.
11479         (method_body:): Installed default rules.
11480         (block:): Call enter_block when an opening brace is seen.  Absorb
11481         scoping blocks and call exit_block when a closing brace is seen.
11482         (block_statement:): Cosmetic changes.
11483         (method_invocation:): Create WFL around CALL_EXPR node.
11484         (patch_stage): Added comment around definition.
11485         (method_header): Try to use first_ccb_indent1 as the first line of
11486         the method, so BP debug info are emitted at the first opening
11487         brace of the function. If the function has no body, use the
11488         location of the function's name. Override currently defined method
11489         name with the matching WFL so we can point redefinition errors
11490         using the location where the function's name was declared.
11491         (check_abstract_method_header): Interprets DECL_NAME as an
11492         identifier or as a WFL, accordingly.
11493         (java_complete_class): New cases for JDEP_TYPE and JDEP_PARM.
11494         (check_method_redefinition): Use DECL_NAME as a WFL. Extract
11495         location and name information out of it and reinstall DECL_NAME to
11496         its original identifier node value.
11497         (lookup_cl): Use DECL_SOURCE_LINE_FIRST (first line of the
11498         function's source code).
11499         (read_import_dir): Test the value returned by find_class and issue
11500         a fatal accordingly.
11501         (declare_local_variables): Push a new block for the scope of the
11502         new variable(s) if code has been already generated at that nesting
11503         level. Pinpoint redefinition errors using the variable id
11504         WFLs. Generate initialization code if necessary. If the variable
11505         type is incomplete, register a patch on its decl.
11506         (source_start_java_method): Rewritten. Define a new block for the
11507         function's parameters. Build parameter decl out of function's
11508         arguments and register them for a patch if their types are
11509         incomplete.
11510         (expand_start_java_method): Includes the part of
11511         source_start_java_method that was pushing the parameter decls and
11512         completing the method start code.
11513         (source_end_java_method): Removed call the expand_end_bindings and
11514         poplevel (already taken care of). Reinstall function's arguments
11515         and get function's last line of code before calling
11516         expand_function_end.
11517         (java_method_add_stmt): New comment before the function's
11518         code. Complement the second operand of the current COMPOUND_EXPR
11519         if necessary.
11520         (java_complete_expand_methods): Don't generate debug info on line
11521         zero when expanding a generated constructor.
11522         (java_complete_expand_method): Set start and end line numbers for
11523         a artificially generated constructor to one and manually call
11524         enter_block and exit_block when defining it. For all methods:
11525         expand function's start calling the new expand_start_java_method
11526         and invoke java_complete_tree on the effective method's body, if
11527         any.
11528         (resolve_expression_name): Now use lookup_name_in_blocks to search
11529         local variable decls and print out an error when variables are
11530         undefined.
11531         (patch_method_invocation_stmt): Inserted comment before the
11532         function's code.
11533         (lookup_method_invoke): Chain method's arguments using chainon
11534         with the current arg list as a second argument. Inserted missing
11535         IDENTIFIER_POINTER when reporting an error on methods not found.
11536         (refine_accessible_methods_list): Don't retain constructors.
11537         (patch_arguments): Function removed.
11538         (java_complete_tree): Inserted comment before the function's
11539         code. New case for BLOCKs. Moved the WFL case a bit
11540         further. Complete function's arguments.
11541         (build_expr_block, enter_block, exit_block, lookup_name_in_blocks,
11542         maybe_absorb_scoping_blocks): New functions.
11543
11544 Mon Apr 27 10:50:05 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11545
11546         * jcf-io.c (find_class): Reset jcf->java_source after JCF_ZERO, if
11547         previously set.
11548         * jcf-parse.c (parse_source_file, java_error_count): New forward
11549         and extern declarations.
11550         (java_parse_abort_on_error): Macro moved.
11551         (jcf_parse_source): fatal called if fopen fails. Now calls
11552         parse_source_file.
11553         (parse_source_file): New parse_only parameter. Reflects the
11554         elimination of the second pass.
11555         (yyparse): parse_source_file called with argument set to 0.
11556         * jcf.h (JCF_ZERO): Sets java_source to zero.
11557         * lex.c (java_init_lex): pass argument is gone. Function modified
11558         to be called once during the analysis of a file.
11559         (java_unget_unicode): Fixed typo in fatal message.
11560         (java_get_line_col): Likewise.
11561         (java_lval): Likewise. String literals no longer built during
11562         second pass.
11563         * lex.h (JAVA_COLUMN_DELTA): Take the tabulation character into
11564         account.
11565         * parse.h (MODIFIER_WFL): New macro.
11566         (parse_check_super, parser_check_super_interface): Now return int.
11567         (parser_chain_incomplete_item, not_builtin_p,
11568         complete_method_decl): Declarations removed.
11569         (build_method_invocation_stmt, build_invoke): Renamed using the
11570         `patch' instead of `build'
11571         (register-incomplete_type, obtain_incomplete_type,
11572         java_complete_tree, java_complete_expand_method,
11573         unresolved_type_p, create_jdep_list): New function declarations.
11574         (IC_TYPE, IC_DEPEND, DEPEND_DECL, DEPEND_WFL, BEGIN_ONLY_PASS,
11575         END_ONLY_PASS, ELSE_ONLY_PASS): Macro deleted.
11576         (jdep): New typedef on new struct _jdep.
11577         (JDEP_DECL, JDEP_DECL_WFL, JDEP_KIND, JDEP_SOLV, JDEP_WFL,
11578         JDEP_MISC, JDEP_APPLY_PATCH, JDEP_GET_PATCH, JDEP_CHAIN,
11579         JDEP_TO_REVOLVE, JDEP_RESOLVED_DECL, JDEP_RESOLVED,
11580         JDEP_RESOLVED_P): New macros.
11581         (JDEP_NO_PATCH, JDEP_SUPER, JDEP_FIELD, JDEP_METHOD,
11582         JDEP_METHOD_RETURN, JDEP_METHOD_END, JDEP_INTERFACE,
11583         JDEP_VARIABLE): New enum values and jdep kinds.
11584         (jdeplist): New typedef on struct _jdeplist.
11585         (CLASSD_FIRST, CLASSD_LAST, CLASSD_CHAIN, JDEP_INSERT): New
11586         macros.
11587         (CALL_EXPR_PRIMARY): New macro.
11588         (struct parser_ctxt): Fields java_pass, current_method_decl,
11589         method_decl_list deleted. New field jdeplist.
11590         (INCOMPLETE_P): Macro deleted.
11591         * parse.y (single_type_import_declaration:): Removed pass switch.
11592         (type_import_on_demand_declaration): Likewise.
11593         (field_declaration:): Removed pass switch on all sub rules.
11594         (class_declaration:): Call the complete_class_decl removed on
11595         class_body rules.
11596         (method_declaration:): Removed second pass switch. No longer chain
11597         methods decl when method_header reduced.
11598         (method_header:): Sub rules no longer depend on pass switch.
11599         (method_declarator:): Likewise.
11600         (method_body:): Likewise.
11601         (abstract_method_declaration:): Likewise.
11602         (block_statement:): Likewise.
11603         (local_variable_declaration:): Likewise.
11604         (argument_list:): Likewise.
11605         (method_invocation:): Likewise. Call to build_method_invocation_stmt
11606         removed. Partial CLASS_EXPR tree node built instead.
11607         (postfix_expression:): Removed pass switch on all sub rules.
11608         (java_pop_parser_context): Free classd_list content.
11609         (yyerror): Call obstrack_grow0 to finalize error message.
11610         (check_class_interface_creation): Comment modified to reflect new
11611         returned value meaning. Removed second pass switch. Return 1 if an
11612         error was found, 0 otherwise. Adjust pointer on filename if a
11613         leading path separator was found.
11614         (maybe_create_class_interface_decl): Removed first pass switch
11615         when linking the class decl to the class_list. Install a new
11616         jdep_list for the class.
11617         (add_superinterfaces): List of unresolved interfaces is
11618         gone. Unresolved interfaces are directly added to the current
11619         dependencies list.
11620         (create_interface): Second pass shortcut removed.
11621         ctpx->modifier_ctx access through MODIFIER_WFL.
11622         (create_class): Second pass shortcut removed. Call to
11623         register_incomplete_type replaces the call to
11624         parser_chain_incomplete_item.
11625         (complete_class_decl): Function removed.
11626         (duplicate_declaration_error): New way of retrieving redeclared
11627         item type.
11628         (register_fields): Call to lookup_modifier_cl replaced by
11629         MODIFIER_WFL. New way of handling unresolved type, using
11630         unresolved_type_p and obtain_incomplete_type.
11631         register_incomplete_type replaces call to parser_chain_incomplete_item.
11632         (patch_stage): New static global variable.
11633         (method_header): New way of handling unresolved type, using
11634         unresolved_type_p and obtain_incomplete_type. patch_stage used to
11635         indicates that the method decl needs to be patched.
11636         (check_abstract_method_header): Call to lookup_modifier_cl
11637         replaced by MODIFIER_WFL.
11638         (method_declarator): Incomplete argument type are registered
11639         calling register_incomplete_type. Patch on the declared method is
11640         issued in that case.
11641         (unresolved_type_p): New function.
11642         (parser_check_super_interface): New comment to reflect function's
11643         modified returned type (int). Function and has a new argument
11644         this_wfl. Call to parse_error_context uses this_wfl instead of
11645         relying on lookup_cl.
11646         (parser_check_super): Comment reflects function's new returned
11647         type (int). Function returns non zero value on error.
11648         (create_jdep_list, reverse_jdep_list, obtain_incomplete_type,
11649         register_incomplete_type, jdep_resolve_class): New functions to
11650         handle incomplete types in declarations.
11651         (java_complete_class): Rewritten to work with the new incomplete
11652         type handling scheme.
11653         (complete_class_report_errors): Likewise.
11654         (complete_method_decl): Removed: it jobs is now handled by
11655         java_complete_class.
11656         (do_resolve_class): Class loaded in not already loaded and not
11657         found in Java source code.
11658         (java_check_regular_methods, java_check_abstract_methods): Don't
11659         call complete_method_decl anymore.
11660         (lookup_modifier_cl, not_builtin_p): Functions deleted.
11661         (read_import_dir): Got rid of the pass number dependency.
11662         (declare_local_variables): New handling of unresolved types (patch
11663         issued).
11664         (source_start_java_method): New parameter level. Function called
11665         with level set to 1 when argument types are potentially
11666         unresolved.  Called to complete the job with level set to 2 once
11667         types are complete.
11668         (source_end_java_method): Call to permanent_allocation
11669         removed. Waiting to be replaced by a more suitable obstack
11670         management.
11671         (java_complete_expand_methods, java_complete_expand_method,
11672         java_expand_finals): New functions.
11673         (build_method_invocation_stmt): Renamed
11674         patch_method_invocation_stmt. Extracts function call expression
11675         (wfl) and arguments (args) from CALL_EXPR tree operands.
11676         (build_invoke): Renamed patch_invoke. Fixed typo in fatal
11677         call. Patch the function and argument operand of the CALL_EXPR
11678         tree argument.
11679         (patch_argument, java_complete_tree): New functions.
11680
11681 Mon Apr 20 18:26:57 1998  Per Bothner  <bothner@cygnus.com>
11682
11683         Recover from missing fields and methods (i.e. error instead of fatal).
11684         * decl.c, java-tree.h (TYPE_identifier_node):  New global constant.
11685         * expr.c (expand_invoke):  Recover from missing method.
11686         (expand_java_field_op):  Recover from missing field.
11687         Inline references to java.lang.{Integer,Char,...}.TYPE.
11688         * typeck.c (get_type_from_signature), java-tree.h:  New function.
11689         * class.c (add_method):  Use get_type_from_signature.
11690         (build_class_ref):  Handle a class that was not found.
11691         * typeck.c (convert):  Handle conversion to pointers (for convenience).
11692         * verify.c (verify_jvm_instructions):  Use get_type_from_signature
11693         instead of lookup_field to handle missing fields.
11694
11695         * jcf-parse.c (process_zip_dir):  Set java_source.
11696
11697 1998-04-20  Brendan Kehoe  <brendan@cygnus.com>
11698
11699         * jcf-parse.c (set_source_filename): Use TYPE_NAME, not DECL_NAME.
11700
11701 Tue Apr 14 15:59:54 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11702
11703         * jcf-parse.c (load_class): Don't change input_filename before
11704         calling jcf_parse_source (but still do it before calling
11705         jcf_parse).
11706         (jcf_parse_source): Assign input_filename after having saved the
11707         parser context.
11708         * lex.c (java_init_lex): Chain a WFL node to the import on demand
11709         list. ctxp->modifier_ctx zeroed according to its new
11710         definition. ctxp->filename initialized. Removed
11711         JAVA_MODIFIER_CTX_UNMARK.
11712         (java_unget_unicode): Update the character based column position.
11713         (java_allocate_new_line): ref_count not used anymore. Always free
11714         ctxp->p_line. Initialize c_line->char_col to 0.
11715         (java_get_unicode): Update the character based column position.
11716         (java_lex): Use ctxp->elc to store current position in source
11717         file, at the beginning of the parsed token. Set modifier_ctx entry
11718         corresponding to the parse modifier to a WFL node. Return a WFL
11719         node when an identifier is parsed.
11720         (java_lex_error): Now uses ctxp->elc to store current position in
11721         source.
11722         (build_wfl_node, java_is_eol, java_get_line_col): New functions.
11723         * lex.h (build_wfl_node): New function definitions.
11724         (struct java_line): ref_count and next fields are gone. New field
11725         char_col.
11726         (JAVA_LINE_CHECK, JAVA_LINE_MARK, JAVA_LINE_CHAIN,
11727         JAVA_LINE_UNMARK, ID_NAME, ID_CL): Macro definitions deleted.
11728         (JAVA_COLUMN_DELTA): New macro.
11729         (java_lc): New typedef on new struct _java_lc.
11730         * parse.h (lookup_cl, lookup_modifier_cl): Changed returned types.
11731         (parse_error_context, parse_warning_context): Changed prototypes.
11732         (java_get_line_col): Added as an available global function.
11733         (JAVA_MODIFIER_CTX_UNMARK): Macro removed.
11734         (IC_DECL): Replaced by macro IC_TYPE
11735         (DEPEND_WFL): New macro.
11736         (THIS_MODIFIER_ONLY): Now works with WFL and only remembers the first
11737         wrong modifier.
11738         (exit_java_complete_class): Removed a commented out statement.
11739         (struct parser_ctxt): Added comments on fields. modifier_ctx is
11740         now an array of tree nodes. Deleted fields line_list and
11741         e_line. New field elc, to replace e_line.
11742         * parse.y (array_type:): Build WFL node.
11743         (qualified_name:): Build a single WFL node out of two. Retain
11744         the location information of the first node in the resulting node.
11745         (package_declaration:): Use package name as a WFL node
11746         (single_type_import_declaration:): Use imported name as a WFL node.
11747         (type_import_on_demand_declaration:): Use root of the imported
11748         packages as a WFL node.
11749         (field_declaration:): Removed unused local variable cl.
11750         (method_declaration:): Don't call JAVA_MODIFIER_CTX_UNMARK.
11751         (yyerror): New static elc. Removed static error_line, error_pos.
11752         New local code_from_source. Save ctxp->elc into elc at the first
11753         pass. Call java_get_line_col to get a string of the line where
11754         the error occurred.
11755         (debug_line): Removed static function.
11756         (parse_error_context, parse_warning_context): Parameter cl is now
11757         a WFL node. Use its value to initialize ctxp->elc.
11758         (redefinition_error): Parameter cl is now a WFL node.
11759         (parse_add_interface): New parameter wfl. No longer call
11760         lookup_cl, use wfl instead.
11761         (check_class_interface_creation): Parameter cl is now a WFL node.
11762         (maybe_create_class_interface_decl): Likewise.
11763         (add_superinterfaces): New function.
11764         (create_interface): Removed local cl, node, super_decl,
11765         super_decl_type.  Function now uses id as a WFL node. Better
11766         warning/error report on obsolete or forbidden mix of
11767         modifiers. Now calls add_superinterfaces to register interfaces.
11768         (create_class): Removed local cl, node. Local variable id is used
11769         as a WFL node. Better error report on forbidden modifier
11770         mix. Uses add_superinterfaces to register interfaces.
11771         (find_field): Argument cl is now a WFL node. Now store the WFL
11772         node of a fields that needs to be checked for their
11773         initialization.
11774         (method_header): Local variable node non longer used. Local
11775         variable id replaces cl.
11776         (check_modifiers_consistency): Local variable cl is now a WFL
11777         node.
11778         (method_declarator): Local variable cl replaced by parameter id.
11779         (parser_qualified_name): Now uses parameter name as a WFL node.
11780         (parser_check_super_interface): New parameter wfl, for achieve
11781         greater accuracy during error reports.
11782         (parser_chain_incomplete_item): New parameter named location. Used,
11783         along the decl, to construct the incomplete item node.
11784         (java_complete_class): resolve_class now uses WFL node extracted
11785         from the incomplete item node. Macro IC_TYPE replaces TREE_PURPOSE
11786         where appropriate.
11787         (complete_method_decl): Unresolved function's argument types are WFL.
11788         (resolve_class): Parameter cl is now a WFL node.
11789         (resolve_and_layout): Likewise.
11790         (do_resolve_class): Likewise. Try first to use cl and then do the
11791         lookup on the decl when calling check_pkg_class_access.
11792         (complete_class_report_errors): Use IC_TYPE in place of
11793         TREE_PURPOSE where appropriate. Use DEPEND_WFL on dependency
11794         instead of doing a lookup over the decl.
11795         (java_check_final): Use WFL info from field tree list.
11796         (lookup_cl): Rewritten and returns a statically defined WFL node.
11797         (lookup_modifier_cl): Now uses information from WFL nodes.
11798         (process_imports): Likewise.
11799         (read_import_dir): name and cl arguments replaced by a single WFL
11800         node. Function modified accordingly.
11801         (find_in_imports_on_demand): Now uses WFL node.
11802         (check_pkg_class_access): cl argument is now a WFL node.
11803         (declare_local_variables): Fixed to use WFL nodes.
11804         (resolve_expression_name): Likewise.
11805         (build_method_invocation_stmt): name_combo argument renamed
11806         wfl. Function modified to use WFL nodes.
11807         (build_invoke): cl used as a WFL node when calling build_expr_wfl.
11808         (lookup_method_invoke): cl is now a WFL node. Added missing
11809         IDENTIFIER_POINTER to class type decl name.
11810
11811 Tue Apr 14 15:23:29 1998  Dave Brolley  <brolley@cygnus.com>
11812
11813         * lang.c (init_parse): Now returns char* containing the filename.
11814
11815 Fri Apr 10 11:36:04 1998  Per Bothner  <bothner@cygnus.com>
11816
11817         * class.c (layout_class):  Mangle repeated arg types to match cc1plus.
11818
11819         * decl.c, java-tree.h (integer_four_node):  New INTEGER_CST node.
11820         * class.c (make_class_data):  If flag_assume_compiled, initial class
11821         state is CSTATE_PREPARED; make superclass and interfaces direct
11822         references, rather than constant pool indexes.
11823
11824 Thu Apr  9 16:10:56 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11825
11826         * parser.y: Include flags.h. Removed debug variable pl.
11827         (method_declaration:): Uses ctxp->parser_ccb_indent instead of pl.
11828         (block:): Likewise.
11829         (labeled_statement_nsi:): Generate debug info when reducing
11830         expression_statement:.
11831         (check_pkg_class_access): get_access_flags_from_decl invokation
11832         fixed for new CLASS_* flags location.
11833         (source_end_java_method): Save/restore parser context when
11834         entering/leaving this routine. Restore lineno to its right value
11835         before calling expand_end_bindings.
11836         (build_method_invocation_stmt): build_invoke called with the
11837         current line information.
11838         (build_invoke): New argument cl. Wrap the function call around a
11839         wfl node.
11840         (refine_accessible_methods_list): Changed comment, removed
11841         unnecessary code.
11842         * parse.h: Fixed typo in comments.
11843         (CLASS_OR_INTERFACE): Handle the new CLASS_* flags location.
11844         (JAVA_MAYBE_GENERATE_DEBUG_INFO): New macro.
11845         (struct parser_ctxt): New fields ccb_indent, last_ccb_indent1,
11846         parser_ccb_indent.
11847         * lex.c (java_lex): Record the last closing curly bracket of a
11848         function.
11849         * jcf-parse.c (jcf_parse_source): Now calls
11850         java_check_methods. Clarified comment, fixed typo.
11851
11852 1998-04-09  Dave Brolley  <brolley@cygnus.com>
11853
11854         * lang.c (init_parse): Expose for non USE_CPPLIB builds.
11855         (finish_parse): Expose for non USE_CPPLIB builds.
11856
11857 Wed Apr  8 13:06:23 1998  Jeffrey A Law  (law@cygnus.com)
11858
11859         * lang.c (lang_print_xnode): New function.
11860
11861 Fri Apr  3 13:22:41 1998  Per Bothner  <bothner@cygnus.com>
11862
11863         * decl.c (class_dtable_decl), java-tree.h:  New tree node.
11864         * class.c (get_dispatch_vector, get_dispatch_table):  New functions
11865         used to build a class's dispatch table.
11866         (make_class_data):  Generate dispatch table if flag_assume_compiled.
11867         Set dtable of class object to address of class_dtable_decl.
11868
11869         * decl.c (int_decl_processing):  Make soft_badarrayindex_node
11870         be volatile and have side effects - generates better code.
11871
11872         * class.c, expr.c, parse.y:  CLASS_INTERFACE, CLASS_FINAL, etc:
11873         These flags were defined for TYPE_DECLs, but used on RECORD_TYPEs.
11874
11875         * expr.c (expand_invoke):  If class is final, method is
11876         effectively final, so can call it directly.
11877
11878         * java-tree.h (TYPE_NVIRTUALS, TYPE_VTABLE):  New macros.
11879
11880         * Makefile.in, Make-lang.in:  Add missing $(exeext)s.
11881
11882 Thu Mar 19 16:59:16 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11883
11884         * parse.y (build_method_invocation_stmt): Removed extra argument
11885         to build_invoke.
11886
11887 Mon Mar 16 17:25:19 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11888
11889         * expr.c (dtable_indent): Now static global.
11890         (expand_invoke): Now call invoke_build_dtable and
11891         build_invokevirtual.
11892         (invoke_build_dtable, build_invokevirtual): New functions.
11893         * jcf-io.c (find_class): Defer issuing a warning by setting
11894         jcf->outofsynch to 1.
11895         * jcf-parse.c (jcf_out_of_synch): New function.
11896         (load_class): Test this_jcf.outofsynch flag and call
11897         jcf_out_of_synch accordingly.
11898         * jcf.h: (typedef struct JCF): New flag outofsynch. Fixed typo in
11899         comment indentation.
11900         * lex.c (java_get_unicode): Fixed code indentation.
11901         (java_lex): Create string literal. Fixed typo. Removed several
11902         premature obstack_free.
11903         * parse.h: New enums for name resolution and invocation mode.
11904         (struct qualification): New data structure.
11905         (RESOLVE_CHAIN_REMAINDER, BUILD_PTR_FROM_NAME): New macros.
11906         (do_resolve_class, build_method_invocation_stmt,
11907         breakdown_qualified, qualify_ambiguous_name, resolve_and_layout,
11908         debug_line, identical_subpath_p, invocation_mode,
11909         refine_accessible_methods_list, build_invoke,
11910         lookup_method_invoke): New functions declared.
11911         (build_invokevirtual, invoke_build_dtable, match_java_method,
11912         build_field_ref, jcf_out_of_synch): New references to external
11913         functions.
11914         (struct parse_ctxt): Removed artificial_constructor field.
11915         * parse.y: (array_type:): Type defined for this rule.
11916         (class_type:): Installed default rule for interface_type:.
11917         (array_type:): Now build Java array type.
11918         (qualified_name:): Now use obstack_grow0.
11919         (method_declaration:): Skip the artificial constructor added to
11920         the list, if any.
11921         (abstract_method_declaration:): Execute the code only during pass 1.
11922         (block:): Installed default rule in block_statements:.
11923         (block_statement:): Add the statement to the method during pass 2.
11924         (statement_expression): Installed default rule for
11925         method_invocation:.
11926         (argument_list:): Added code to build the argument list.
11927         (method_invocation:): Added call to create the method invocation
11928         node.
11929         (yyerror): Now use obstack_grow0. Removed bogus obstack_free.
11930         (debug_line): New function for debug.
11931         (complete_class_decl): No longer do something during pass 1.
11932         (method_header): Use BUILD_PTR_FROM_NAME.
11933         (parser_qualified_classname): Use obstack_grow0. Removed bogus
11934         obstack_free.
11935         (parser_chain_incomplete_item): Use BUILD_PTR_FROM_NAME. Modified
11936         function's main comment.
11937         (java_complete_class): Set CLASS_LOADED_P on all fixed incomplete
11938         classes.
11939         (complete_method_decl): Use BUILD_PTR_FROM_NAME and promote types.
11940         (resolve_class): Now works with arrays.
11941         (do_resolve_class, resolve_and_layout): New functions.
11942         (java_check_regular_methods): Reverse method list before and after
11943         having processed it. No longer set ctxp->artificial_constructor.
11944         (read_import_dir): Test jcf->outofsynch and call jcf_out_of_synch
11945         accordingly. Fixed typo in issued error message. Now use
11946         obstack_grow0.
11947         (find_in_imports_on_demand): Now use obstack_grow0.
11948         (declare_local_variables): Use BUILD_PTR_FROM_NAME.
11949         (source_end_java_method): Call expand_expr_stmt instead of
11950         expand_expr. Calls it before calling expand_function_end.
11951         (java_method_add_stmt): Do nothing if errors were found during
11952         parsing.
11953         (java_layout_parsed_class): Set CLASS_LOADED_P and fixed typo.
11954         (build_method_invocation_stmt, build_invoke, invocation_mode,
11955         lookup_method_invoke, refine_accessible_methods_list,
11956         qualify_ambiguous_name, breakdown_qualified, identical_subpath_p):
11957         New functions.
11958         * typeck.c (build_java_signature): Properly end method signature
11959         if return type skipped.
11960         (match_java_method): New function.
11961
11962 Mon Mar 16 10:40:47 1998  Per Bothner  <bothner@cygnus.com>
11963
11964         * jcf-io.c (find_classfile):  If USE_JCF_STDIO, fopen in binary mode.
11965
11966 Wed Feb 25 08:55:49 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11967
11968         * expr.c (build_invoke_non_interface): New function.
11969         (methods_ident, ncode_ident): Now static globals.
11970         (expand_invoke): Use build_invoke_non_interface.
11971         * java-tree.h (struct lang_decl): New field function_decl_body.
11972         (DECL_FUNCTION_BODY): New macro.
11973         * jcf-parse.c (jcf_parse_source): Deeper check before setting
11974         CLASS_FROM_SOURCE_P.
11975         (parse_source_file): Fixed typos. Call java_layout_parsed_class
11976         before starting pass 2. Call to java_generate_parsed_class replaced
11977         by java_register_parsed_class.
11978         * lex.c: Fixed typo in header. Some line width related formating.
11979         * lex.h: Some line width related formating.
11980         * parse.h (source_end_java_method, resolve_expression_name,
11981         complete_class_decl, maybe_create_class_interface_decl,
11982         check_class_interface_creation): New static function declarations.
11983         (java_layout_parsed_class, java_method_add_stmt): New function
11984         declarations.
11985         (struct parser_ctxt): Field mark_class_generate removed. New
11986         fields class_list and artificial_constructor.
11987         * parse.y: Fixed typo in header.
11988         (class_declaration:): Call complete_class_decl when class body
11989         parsed.
11990         (method_declaration:): Call source_end_java_method in pass 2 when
11991         the method body is defined.
11992         (postfix_expression:): Do expression name resolution on sub-rule
11993         name during pass 2.
11994         (create_class, create_interface): Merged common pieces.
11995         (check_class_interface_creation, maybe_create_class_interface_decl):
11996         New functions.
11997         (complete_class_decl): New function.
11998         (register_fields): Fixed line width related typo.
11999         (method_header): Correctly skip first argument when fixing
12000         argument line. Changed the loop.
12001         (java_check_circular_reference): Now use ctxp->class_list.
12002         (java_complete_class): Removed start/stop marking.
12003         (java_check_regular_methods): Now takes a class decl as an
12004         argument.  Add default constructor if none were encountered.
12005         (java_check_methods): Now use ctxp->class_list. Changed call to
12006         java_check_regular_methods.
12007         (source_start_java_method): Set DECL_ARG_TYPE for each function
12008         arguments.
12009         (source_end_java_method, java_method_add_stmt): New functions.
12010         (java_generate_parsed_class): No longer exists.
12011         (java_layout_parsed_class, java_register_parsed_class): New functions.
12012         (resolve_expression_name): New function.
12013
12014 Thu Feb 12 11:54:28 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12015
12016         * jcf-parse.c: (parse_source_file): Check on errors after init lex.
12017         * lex.c: (java_init_lex): Defer ctxp->java_pass initialization
12018         until pass initializations are done. Call read_import_dir with
12019         pass set to 0.
12020         * parse.h: (lookup_modifier_cl): New function declared.
12021         (INTERFACE_FIELD_MODIFIERS): New macro.
12022         (OBSOLETE_MODIFIER_WARNING): New macro.
12023         * parse.y: (register_fields): Class type and current field name in
12024         local variables. Check modifier(s) if adding field(s) to an interface.
12025         (check_abstract_method_header): Now use OBSOLETE_MODIFIER_WARNING
12026         and report errors using the faulty modifier line context.
12027         (lookup_modifier_cl): New function.
12028         (read_import_dir): Detect and report default import processing
12029         failure.
12030
12031 1998-02-11  Brendan Kehoe  <brendan@cygnus.com>
12032
12033         Add a pair of -fassume-compiled/-fno-assume-compiled options.
12034         * class.c (is_compiled_class): Return 1 after making sure it
12035         qualifies as loaded, if FLAG_ASSUME_COMPILED is set.
12036         * lang-options.h: Add -fassume-compiled/-fno-assume-compiled.
12037         * java-tree.h (flag_assume_compiled): Add decl.
12038         * lang.c (lang_f_options): Add the flag.
12039         (flag_assume_compiled): Add decl, default to 0.
12040
12041 Wed Feb 11 11:27:59 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12042
12043         * class.c (class_depth): Call to load_class uses extra VERBOSE arg.
12044         (is_compiled_class): Likewise.
12045         (layout_class): Likewise.
12046         (layout_class): Detect and lay out classes defined in source code.
12047         (interface_of_p, add_interface_do, may_add_interface): New
12048         function.
12049         (add_interface): Now use add_interface_do.
12050         (add_method_1): New function.
12051         (add_method): Now use add_method_1.
12052         (pushlevel): Debug message conditional to SOURCE_FRONTEND_DEBUG.
12053         (complete_start_java_method): New function.
12054         (start_java_mehod): Now call complete_start_java_method.
12055         * expr.c (lookup_field): Call to load_class uses extra VERBOSE arg.
12056         (expand_invoke): Likewise and fixed typo.
12057         *gjava.c: (print_super_field): Use new argument to find_class
12058         DO_CLASS_FILE.
12059         (main): Likewise.
12060         *java-tree.h: (CLASS_FROM_SOURCE_P): New flag on RECORD_TYPE.
12061         (IS_A_SINGLE_IMPORT_CLASSFILE_NAME_P, IS_A_CLASSFILE_NAME,
12062         QUALIFIED_P, IS_AN_IMPORT_ON_DEMAND_P): New flags on
12063         IDENTIFIER_NODE.
12064         (CLASS_COMPLETE_P): New flag on TYPE_DECL.
12065         (add_method_1, push_class): New prototypes.
12066         *jcf-dump.c: find_class now uses new DO_CLASS_FILE argument.
12067         *jcf-io.c: (open_in_zip): jcf now stores a pointer to the Zip
12068         directory where the class was found.
12069         (find_class): New argument DO_CLASS_FILE. Function find_class
12070         modified accordingly.
12071         *jcf-parse.c: (fix_class_path): New function.
12072         (load_class): Use new VERBOSE argument. load_class now finds and
12073         loads/parses .class/.java files. Save read_state of current_jcf
12074         if necessary.
12075         (java_parser_abort_on_error): New macro.
12076         (jcf_parse_source, parse_source_file): New function.
12077         (jcf_parse): Fixed typo.
12078         (yyparse): Call parse_source_file () only.
12079         (process_zip_dir): Fixed typo, fix zdir->filename_length when
12080         writing the real class name back in the zip directory entry.
12081         (find_in_current_zip): IDENTIFIER_CLASS_VALUE may be null.
12082         (jcf_figure_file_type): Fixed bogus alloc and bcopy.
12083         *jcf.h: (typedef struct JCF): New fields java_source and zipd.
12084         (find_class): Prototype fixed.
12085         *lex.c: Added 1998 time stamp.
12086         Removed all static global variables, moved into the parser
12087         context data structure.. Now include unistd.h if SEEK_SET not
12088         defined.
12089         (java_init_lex): Rewritten.
12090         (java_sneak_unicode): Modified current unicode access in current line.
12091         (java_unget_unicode): Likewise.
12092         (java_allocate_new_line): New allocation management.
12093         (java_read_char): Modified access and storage of unget_utf8_value.
12094         New way of processing current unicode.
12095         (java_store_unicode, java_read_unicode): Fixed typo in declaration.
12096         (java_get_unicode): Now use the parser context.
12097         (java_lineterminator): Likewise.
12098         (java_lex): Now used java_lval argument (pointer to YYSTYPE), part
12099         of the reentrant parser implementation. Function now use the
12100         parser context data structure and java_lval. Fixed production of
12101         the float and double constant "out of range" error message. Fixed
12102         obstack use. Return integer value when hitting a modifier. Now
12103         return type for TRUE, FALSE and other predefined types. Return
12104         identifier as a TREE_LIST list containing the current line context
12105         as the TREE_VALUE sub-node.
12106         (java_unicode_2_utf8): Fixed typo in declaration.
12107         (java_lex_error): Now use the parser context data structure.
12108         *lex.h: Added 1998 time stamp.
12109         (struct java_line): New fields ref_count and next.
12110         (JAVA_LINE_CHECK, JAVA_LINE_MARK, JAVA_LINE_CHAIN,
12111         JAVA_LINE_UNMARK, ID_NAME, ID_CL): New macros.
12112         (JAVA_FLOAT_RANGE_ERROR, JAVA_INTEGRAL_RANGE_ERROR, UNGETC): Fixed.
12113         *parse.h: Added 1998 time stamp.
12114         (java_parse_source_file): Renamed from parse_source_file.
12115         (YYERROR_NOW, YYNOT_TWICE): Fixed.
12116         (CLASS_MODIFIERS, FIELD_MODIFIERS, METHOD_MODIFIERS,
12117         INTERFACE_MODIFIER, INTERFACE_METHOD_MODIFIERS,
12118         JAVA_MODIFIER_CTX_UNMARK, IC_DECL, IC_DEPEND, DEPEND_DECL,
12119         THIS_MODIFIER_ONLY, ABSTRACT_CHECK, BEGIN_ONLY_PASS,
12120         END_ONLY_PASS, ELSE_ONLY_PASS, exit_java_complete_class,
12121         CLASS_OR_INTERFACE, INCOMPLETE_P): New macros.
12122         (struct parser_ctxt): New data structure to keep the parser context.
12123         *parse.y: Added 1998 time stamp, got rid of static global variables.
12124         (java_error_count, ctxp): New global variables.
12125         (%union): New value field.
12126         (numeric_type, integral_type): Rules removed.
12127         (primitive_type): Rule defined to handle integral, float, double and
12128         boolean types.
12129         (qualified_name, package_declaration,
12130         single_type_import_declaration, type_import_on_demand_declaration,
12131         modifiers, class_declaration, super, interfaces,
12132         interface_type_list, class_body, field_declaration,
12133         field_declaration, variable_declarators, variable_declarator,
12134         variable_declarator_id, method_declaration, method_header,
12135         formal_parameter_list, formal_parameter, method_body, block,
12136         static, interface_declaration, extends_interfaces,
12137         abstract_method_declaration, local_variable_declarators): Rules now
12138         define actions.
12139         (force_error, do_warning): New global statics.
12140         (push_parser_context, parser_context_save_global,
12141         parser_context_restore_global, pop_parser_context): New functions.
12142         (yyerror): Now uses the global parser context. Fixed use of obstack.
12143         (parse_error, parse_error_context, parse_warning_context,
12144         java_accstring_lookup, redefinition_error, check_modifiers,
12145         parser_add_interface, create_interface, create_class, find_field,
12146         duplicate_declaration_error, register_fields, method_header,
12147         check_modifiers_consistency, check_abstract_method_header,
12148         method_declarator, parser_qualified_classname,
12149         parser_check_super_interface, parser_check_super,
12150         parser_chain_incomplete_item, java_check_circular_reference,
12151         layout_class_from_source, java_complete_class,
12152         complete_method_decl, resolve_class, complete_class_report_errors,
12153         java_check_final, check_method_redefinition,
12154         java_check_regular_methods, java_check_abstract_methods,
12155         java_check_methods, lookup_java_interface_method2,
12156         lookup_java_method2, lookup_cl, find_name_in_single_imports,
12157         process_imports, find_in_imports, read_import_entry,
12158         read_import_dir, find_in_imports_on_demand,
12159         check_pkg_class_access, not_builtin_p, declare_local_variables,
12160         source_start_java_method, java_generate_parsed_class): New
12161         functions.
12162         *typeck.c: (signature_include_return): New global variable.
12163         (build_java_signature): Use SIGNATURE_INCLUDE_RETURN figure whether
12164         to add the function returned type in the signature.
12165
12166 1998-02-09  Brendan Kehoe  <brendan@cygnus.com>
12167
12168         * jcf-io.c (open_in_zip): Use strncmp and LEN.
12169
12170 Thu Jan 29 16:12:13 1998  Dave Brolley  <brolley@cygnus.com>
12171
12172         * Make-lang.in (java.info): Added.
12173         (java.install-info): Added
12174
12175 1998-01-27  Brendan Kehoe  <brendan@cygnus.com>
12176
12177         * Makefile.in (clean): Also remove java/parse.c.
12178
12179 1998-01-26  Brendan Kehoe  <brendan@cygnus.com>
12180
12181         Add a pair of -fbounds-check/-fno-bounds-check options.
12182         * lang.c (lang_decode_option): Add code to grok arguments.
12183         (flag_bounds_check): Add decl.
12184         (lang_f_options): New array w/ the option in it.
12185         * java-tree.h (flag_bounds_check): Add decl.
12186         * lang-options.h: New file.
12187         * expr.c (build_java_arrayaccess): Use flag_bounds_check instead
12188         of a static macro value.
12189         (JAVA_ARRAY_EXCEPTION): Delete macro.
12190
12191 Fri Jan 23 14:19:47 1998  Per Bothner  <bothner@cygnus.com>
12192
12193         * typeck.c (build_java_array_type):  Fix two bugs in previous change.
12194         * expr.c (build_anewarray):  Add missing promote_type.
12195
12196 Thu Jan 22 17:43:45 1998  Per Bothner  <bothner@cygnus.com>
12197
12198         Add array types with known length to optimize bounds checking.
12199         * typeck.c (build_java_array_type):  Take length parameter.
12200         (java_array_type_length, build_prim_array_type):  New functions.
12201         * java-tree.h:  Update for new functions.
12202         * expr.c, typeck.c, verify.c: Update build_java_array_type calls.
12203         * class.c:  Use build_prim_array_type.
12204         * expr.c (can_widen_reference_to):  Handle known-length array types.
12205         (verify_jvm_instructions):  Keep track of integer push instructions
12206         followed by newarray/anewarray, so we can build known-length arrays.
12207         (JAVA_ARRAY_DATA_OFFSET):  Replace by ...
12208         (java_array_data_offset):  New function.
12209         (build_java_array_length_access):  New function.  Optimize if constant.
12210         (build_java_arrayaccess):  Constant fold bounds check.
12211         (expand_java_newarray, expand_java_anewarray):  Replaced by ...
12212         (build_newarray, build_anewarray):  New functions.
12213         (ARRAY_NEW_NUM, ARRAY_NEW_PTR):  Use build_{a,}newarray.
12214         * verify.c (merge_types):  Handle known-lengh array types.
12215
12216 Mon Jan 19 13:09:25 1998  Per Bothner  <bothner@cygnus.com>
12217
12218         * expr.c (expand_byte_code):  Fix performace bug, which caused
12219         searching linenumber_table to be linear rather than constant.
12220
12221 Fri Dec 12 19:18:42 1997  Per Bothner  <bothner@cygnus.com>
12222
12223         * Makefile.in (BISON, BISONFLAGS):  Add missing macros.
12224
12225         * decl.c, java-tree.h (soft_fmod_node):  New global.
12226         * decl.c (init_decl_processing):  Define __builtin_fmod.
12227         * expr.c (build_java_binop):  Implement TRUNC_MOD_EXPR for REAL_TYPE
12228         using __builtin_fmod.
12229
12230 Thu Dec  4 13:22:59 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12231
12232         * keyword.h: New file, output of keyword.gperf as processed by
12233         gperf.
12234         * lex.c (java_lex_init): Initialize java_error_flag.
12235         * parse.c (YYERROR_NOW): Uses java_error_flag.
12236         * parse.y: New static java_error_flag. Useless definition of
12237         buffer_error gone.
12238         * parse.y (java_error): Portable error recovery using
12239         java_error_flag (not yet completely tuned).
12240
12241 1997-12-04  Brendan Kehoe  <brendan@lisa.cygnus.com>
12242
12243         * Makefile.in (parse.c): Use $(srcdir) for parse.y.
12244
12245 Wed Dec  3 18:37:42 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12246
12247         * Makefile.in: (JAVA_OBJS): New object jcf-parse.o.
12248         (parse.c, lex.c, keyword.h): New rules for Java source code
12249         front-end.
12250         * parse.c: Renamed into jcf-parse.c.
12251         * jcf-parse.c (yyparse): Invoke the parser to process Java source code.
12252         * keyword.gperf: New file, Java keywords.
12253         * parse.y: New file, Java language grammar.
12254         * parse.h: New file, Java language grammar definitions.
12255         * lex.c: New file, Java language lexer.
12256         * lex.h: New file, Java language lexer definitions.
12257
12258 Wed Dec  3 17:00:17 1997  Per Bothner  <bothner@cygnus.com>
12259
12260         * decl.c (clinit_identifier_node), java-tree.h:  New global.
12261         * java-tree.h (IS_METHOD_INIT_P, IS_METHOD_CLINIT_P):  Removed.
12262         * verify.c (verify_jvm_instructions):  Inline use of removed macros.
12263         * expr.c (expand_java_field_op):  Check for invalid assignment
12264         to final field.
12265
12266         * jcf-reader.c (get_attribute):  Test for wrong attribute length.
12267
12268 Mon Oct 27 17:46:36 1997  Per Bothner  <bothner@cygnus.com>
12269
12270         * verify.c (verify_jvm_instructions):  When processing a handler,
12271         attempt to set the current_subr to the right value.
12272         (More complicated code combines Sep 17 and Oct 22 versions.)
12273
12274 Fri Oct 24 11:36:54 1997  Per Bothner  <bothner@cygnus.com>
12275
12276         * class.c (push_class):  Figure out (guess) name of source file.
12277         * parse.c  (set_source_filename):  Set DECL_SOURCE_FILE of class decl.
12278         (give_name_to_class):  Don't guess source name;  use DECL_SOURCE_FILE.
12279         (parse_class_file):  Change return type from int to void.
12280         Call debug_start_source_file/debug_end_source_file.
12281
12282         * expr.c (build_java_binop):  Fix masking 2nd operand.
12283         * decl.c (init_decl_processing):  Set sizetype first.
12284
12285 Wed Oct 22 19:39:05 1997  Per Bothner  <bothner@cygnus.com>
12286
12287         * verify.c (verify_jvm_instructions):  Don't set current_subr to NULL.
12288         (Revert Sep 17 change.)
12289
12290 Tue Oct 21 15:09:02 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12291
12292         * parse.c (process_zip_dir): Skip ZIP entries not bearing the
12293         .class extension in their name and fix thing so we don't process
12294         them parse_zip_file_entries().
12295         (parse_zip_file_entries): Cleaned unused local variables.
12296
12297 Mon Oct 20 14:52:42 1997  Per Bothner  <bothner@cygnus.com>
12298
12299         * expr.c (can_widen_reference_to):  Allows equal array element types.
12300         (expand_byte_code):  PRE_RET must expand OPERAND_VALUE (to get index).
12301         * jcf-dump.c (RET):  Get (and print) index.
12302
12303         * verify.c (verify_jvm_instructions case OPCODE_anewarray):
12304         Promote element type to POINTER_TYPE.
12305
12306 Mon Oct 20 13:40:41 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12307
12308         * jcf-reader.c, parse.c: (parse_zip_file, process_zip_dir,
12309         find_in_current_zip, jcf_figure_file_type): Moved from
12310         jcf-reader.c to parse.c.
12311         * zextract.c: (read_zip_archive): takes file_comment_length possible
12312         field into account.
12313
12314 Mon Oct 20 11:45:06 1997  Per Bothner  <bothner@cygnus.com>
12315
12316         * verify.c (verify_jvm_instructions):  Var can also be promoted to int.
12317
12318         * verify.c (merge_types):  Handle array types even better ...
12319
12320 Fri Oct 17 15:56:37 1997  Per Bothner  <bothner@cygnus.com>
12321
12322         * expr.c (java_stack_pop):  Fix use of NULL_TREE for TYPE_SECOND.
12323
12324         * java-tree.h (PUSH_FIELD):  Set DECL_ARTIFICIAL.
12325         * class.c (make_class_data):  Don't build fields_decl if no fields.
12326         When building fields_decl, skip if DECL_ARTIFICIAL.
12327
12328         * expr.c (java_stack_swap):  Update stack_type_map.
12329         * verify.c (merge_types):  Handle array types better.
12330
12331 Wed Oct 15 18:09:45 1997  Per Bothner  <bothner@cygnus.com>
12332
12333         * class.c (add_field):  Don't promote short integral fields to
12334         int any more (unless JAVA_PROMOTE_TO_INT), since Kaffe doesn't.
12335         * expr.c (push_value):  Promote and convert short integral values.
12336
12337         * decl.c, java-tree.h (integer_two_node):  New constant node.
12338         * verify.c (merge_types):  Check for TYPE_RETURN_ADDR.
12339
12340 Wed Oct 15 17:04:50 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12341
12342         * class.c (append_gpp_mangled_type): Use function argument
12343         unpromoted type to generate mangled name.
12344
12345 Mon Oct 13 16:52:55 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12346
12347         * constants.c (build_constant_data_ref): Now uses current_class
12348         instead of main_class.
12349         (build_constants_constructor): Now uses current_class instead of
12350         main_class.
12351         * zipfile.h: (struct ZipFileCache): Now defined here. Declaration
12352         of the global variable SeepZipFiles done here.
12353         * zextract.c (read_zip_archive): extra_field optional field taken
12354         into account while computing the position of the class file in the
12355         archive.
12356         * verify.c (verify_jvm_instructions): Use current_jcf to search
12357         the constant pool.
12358         * parse.c (load_class): First search for the class to load in the
12359         current zip file. Saves current_jcf (restored before returning
12360         from that function). Don't call JCF_FINISH in the class was found
12361         in the current ZIP file.
12362         (jcf_parse): If the class was found in the current ZIP file, save
12363         its tree_constant_pool (for later reuse).
12364         (parse_class_file): New function. Process each method defined in
12365         the current class and record the class as to be later registered.
12366         (yyparse): Rewritten. Figure the type of the current file and switch
12367         accordingly.
12368         * lang.c: New global variable current_jcf.
12369         (lang_init): Removed compiling_from_source test (done later, in
12370         yyparse). Removed call the jcf_parse ().
12371         * jcf.h (JCF_ZIP, JCF_CLASS, JCF_SOURCE): New defined values.
12372         (typedef struct JCF): New fields seen_in_zip (to mark a class found
12373         in the current ZIP file) and zip_offset (offset to the class data in
12374         the current zip file).
12375         * jcf-reader.c: zipfile.h included.
12376         localToFile: New ZipFileCache static global variable
12377         (parse_zip_file_entries): New function. Browse the current ZIP
12378         file directory and process each class found.
12379         (process_zip_dir): New function. Register each class found in the
12380         ZIP file directory. The class aren't parsed but a valid JCF is
12381         link to each of them.
12382         (find_in_current_zip): New function. Search for a class in the
12383         current ZIP file directory. If found, prepare the class so that it
12384         can be loaded.
12385         (jcf_figure_file_type): New function. Examine the file structure
12386         to figure a class file, a ZIP file. If none of these categories are
12387         matched, a source file is assumed.
12388         * jcf-io.c: Removed definition of ZipFileCache (moved in zipfile.h).
12389         SeenZipFile: New global variable.
12390         (open_in_zip): Use zipmember's length to accelerate the search for
12391         a member. If zipmember was NULL and zip file successfully read,
12392         return 0.
12393         * java-tree.h: New global variable current_jcf declared.  Added
12394         declaration for current_constant_pool_tags, current_constant_pool_data,
12395         current_constant_pool_length, current_constant_pool_data_ref.
12396         (struct lang_type): Augmented with two fields. struct JCF *jcf (to
12397         store the JCF of classes seen in a zip file) and tree *constant_pool
12398         (to save a loaded class constant pool). current_class declared here.
12399         * expr.c (expand_invoke): Use current_jcf instead of main_jcf to
12400         retrieve method_ref_constant.
12401         (PUSHC): java_push_constant_from_pool now uses current_jcf.
12402         (OBJECT): get_class_constant now uses current_jcf.
12403         (ARRAY_NEW_PTR): get_class_constant now uses current_jcf.
12404         (ARRAY_NEW_MULTI): get_class_constant now uses current_jcf.
12405         (expand_invoke): Now uses current_class instead of main_class
12406         (build_class_init): Now uses current_class instead of main_class
12407         * class.c: New static global variable registered_class.
12408         (register_class): New function.
12409         (emit_register_class): Modified to use registered_class instead of
12410         main_class
12411         (is_compiled_class): Now take into account class seen in the archive.
12412
12413 Mon Oct  6 12:03:23 1997  Per Bothner  <bothner@cygnus.com>
12414
12415         * except.h:  Renamed to: java-except.h.
12416         * parse.c, except.c, expr.c, verify.c:  Update #include accordingly.
12417         * except.c:  Add semi-working (commented out) implementation.
12418
12419         * expr.c (expand_iinc):  Add needed flush_quick_stack.
12420         * parse.c (set_source_filename):  New function.
12421         (give_name_to_class):  Set input_filename from package.classname.java.
12422
12423         * jcf-io.c (find_class):  Don't look first in ".".
12424
12425 Wed Oct  1 11:26:10 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12426
12427         * zextract.c (read_zip_archive): Now takes into account the
12428         extra_field field.
12429         * expr.c (can_widen_reference_to): Modified to handle sub-interfaces.
12430
12431 Sat Sep 20 12:44:28 1997  Per Bothner  <bothner@cygnus.com>
12432
12433         * constants.c, java-tree.h (build_internal_class_name):  New function.
12434         (alloc_class_constant):  Re-implement using build_internal_class_name.
12435         * class.c (make_class_data):  Likewise.
12436         * class.c (hashUtf8String):  Make hash algorithm match String.hashCode.
12437
12438 Wed Sep 17 13:15:23 1997  Per Bothner  <bothner@cygnus.com>
12439
12440         * verify.c (verify_jvm_instructions):  Temporarily set current_subr
12441         to NULL before pushing an exception handler target.
12442
12443         * expr.c (flush_quick_stack):  Save from low stack indexes to high.
12444         (java_stack_swap, java_stack_dup):  Re-write to be safe from
12445         clobbering registers.
12446         (build_class_init):  New function.
12447
12448 Wed Sep 17 11:02:41 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12449
12450         * typeck.c (build_java_array_type): Temporary use
12451         permanent_obstack to create the array 'length' field.
12452         * expr.c (lookup_label): Temporay use permanent_obstack to create
12453         label if not found.
12454         * class.c (push_super_field): Tempory use permanent_obstack.
12455
12456 Mon Sep 15 11:33:31 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12457
12458         * typeck.c (type_for_mode): Now handles double_type_node and
12459         float_type_node.
12460         * verify.c (verify_jvm_instructions): The instruction following
12461         the wide bytecode is checked. OPCODE_ret added to the list of
12462         wide.
12463
12464 Thu Sep 11 19:45:18 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12465
12466         * class.c (make_class): Temporary use permanent_obstack. Set the
12467         class CLASS_P field to 1.
12468         (push_class): Temporary use permanent_obstack.
12469         (set_super_info): Temporary use permanent_obstack.
12470         (add_method): Temporary use permanent_obstack, set
12471         METHOD_TRANSIENT().
12472         (add_field): Temporary use permanent_obstack. Sets
12473         FIELD_VOLATILE() and FIELD_TRANSIENT().
12474         (build_class_ref): Temporary use permanent_obstack if the class
12475         isn't compiled.
12476         (build_static_field_ref): Temporary use permanent_obstack when
12477         creating field's rtl.
12478         (get_access_flags_from_decl): Handle ACC_VOLATILE, ACC_TRANSIENT,
12479         ACC_SYNCHRONIZED, ACC_NATIVE, ACC_ABSTRACT flags for methods
12480         and fields. Function finalized, as far as flag handling.
12481         (push_class_static_dummy_field): Temporary use permanent_obstack.
12482         (emit_register_class): Force generation of class registration at
12483         -O3 or deeper.
12484         * decl.c (end_java_method): Call permanent_allocation() before
12485         returning.
12486         * expr.c (can_widen_reference_to): Added comment to interface
12487         handling, fixed typo.
12488         (lookup_field): Now uses CLASS_P() to correct FIXME
12489         (expand_invoke): Verification on public && !static &&
12490         !abstract moved into soft_lookupinterfacemethod (kaffe).
12491         Use Object class dtable if objectref is an array when expanding
12492         invokeinterface.
12493         (java_push_constant_from_pool): Temporary use permanent_obstack
12494         for CONSTANT_string
12495         * parse.c (get_ref_constant): Temporary use permanent_obstack to
12496         create constant references.
12497         (get_constant): Temporary use permanent_obstack to create constant.
12498         (load_class): Temporary use permanent_obstack to load class.
12499         (jcf_parse): Temporary use permanent_obstack to perform class
12500         layout.
12501         * typeck.c: (parse_signature_string): Temporary use permanent_obstack.
12502         (build_java_signature): Temporary use permanent_obstack.
12503         * verify.c: (verify_jvm_instruction): removed unnecessary verification
12504         on ACC_SUPER flag.
12505         * java-tree.h (METHOD_NATIVE, METHOD_TRANSIENT): Defined.
12506         (FIELD_VOLATILE, FIELD_TRANSIENT): Defined.
12507         (CLASS_P): Defined
12508
12509 Thu Sep 11 11:57:32 1997  Per Bothner  <bothner@cygnus.com>
12510
12511         * class.c (append_gpp_mangled_type):  Fix typo.
12512         (emit_register_class):  Use main_class to get class object, rather
12513         than looking for no-longer-existing static decl starting with _CL.
12514         * typeck.c (parse_signature_type):  Promote array element type
12515         if it is a RECORD_TYPE.
12516
12517 Wed Sep 10 16:09:23 1997  Per Bothner  <bothner@cygnus.com>
12518
12519         * class.c (push_class_static_dummy_field):  New function.
12520         (mangle_static_field):  New. Do G++-style mangling of static fields.
12521         (layout_class):  Mandle static fields here, not in add_field.
12522         (build_class_ref):  The class object is now a dummy static field.
12523         * decl.c (find_local_variable):  Look for best, instead of first match.
12524         * expr.c (push_type):  Always promote_type, not just for RECORD_TYPE.
12525         (build_java_athrow):  Don't check here if exception is Throwable.
12526         * java-tree.h (TYPE_UNSET):  Renamed to TYPE_UNKNOWN.
12527         (TYPE_USED):  Removed.  No longer used ...
12528         * parse.c (jcf_parse):  Call push_class_static_dummy_field.
12529         * verify.c (push_pending_label):  New function.
12530         (push_pending_block):  Renamed to check_pending_block.
12531         (merge_types):  Remove unneeded suuport for TYPE_UNUSED.
12532         (verify_jvm_instructions):  Only reset prev_eh_ranges (to force
12533         re-checking possible handlers) after a store (less wasted work).
12534         Check for null handler (finally) before calling add_handler.
12535         Various changes to (finally?) correctly handle try/finally.
12536
12537 1997-09-09  Brendan Kehoe  <brendan@lisa.cygnus.com>
12538
12539         * class.c: Include stdio.h.
12540
12541 Thu Sep  4 21:30:55 1997  Per Bothner  <bothner@cygnus.com>
12542
12543         * expr.c (expand_invoke):  Use COMPOUND_EXPR (and TREE_SIDE_EFFECTS)
12544         to make sure class is initialized before static/special invoke.
12545
12546         * verify.c (verify_jvm_instructions):  On a store instruction,
12547         call find_local_variable to force pre-allocation of decl and rtx.
12548         * decl.c (push_jvm_slot):  Set DECL_REGISTER on stack slots.
12549
12550 Wed Sep  3 16:13:23 1997  Per Bothner  <bothner@cygnus.com>
12551
12552         * class.c (build_class_ref):   Strip off "promoted_" if need be.
12553         (make_field_value): Call build_java_signature when needed.
12554         (layout_class):  Don't make_function_rtl if METHOD_ABSTRACT.
12555         * expr.c (build_java_athrow):  Don't push_value of exception.
12556         (build_java_binop):  Implement COMPARE_L_EXPR and COMPARE_G_EXPR to
12557         match specification of [fd]cmp[lg] for NaNs.
12558         (expand_byte_code):  Add support for exception handler ranges.
12559         * except.c:  Add skeleton for EH code-generation.
12560         * verify.c (merge_types):  Treat all promoted integral types as equal.
12561         * constants.c (build_constants_constructor):  To force creation of
12562         current_constant_pool_data_ref, call build_constant_data_ref.
12563
12564         * javaop.def (lload):  Fix typo.
12565         * jcf-dump.c (main):  Clear filename to prevent possibly-bad free.
12566
12567 Tue Sep  2 17:37:25 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
12568
12569         * parse.c: Don't include function.h.
12570
12571 Wed Aug 27 18:33:04 1997  Per Bothner  <bothner@cygnus.com>
12572
12573         * except.[ch]:  New files.
12574         * Makefile.in (JAVA_OBJS):  Add except.o
12575         * expr.c:  Temporary warning about unimplemented exceptions.
12576         * verify.c:  Verify exception handlers.
12577
12578         * jcf-dump.c (disassemble_method):  Print exception table.
12579
12580 Wed Aug 27 13:26:58 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12581
12582         * expr.c (verify_jvm_instructions): Started a thorough
12583         verification of invoke* bytecodes.
12584         (expand_byte_code): flush quick stack if PC is the target of a
12585         branch.  and undef RET (conflicting with config/i386/i386.h).
12586         (expand_java_arrayload): Fixed bogus cast, when Boolean type is
12587         used.
12588         (expand_invoke): Now handles invokeinterface and do more
12589         verification according to the bytecode.
12590         (lookup_field): Don't try to load the class if processing
12591         dtable_type.
12592         (can_widen_reference_to): Now handles interfaces.
12593         * decl.c (init_decl_processing): New global variable
12594         soft_lookupinterfacemethod_node, declared in java-tree.h.
12595         Call set_super_info on string_type_node.
12596         * java-tree.h (CLASS_INTERFACE, CLASS_ABSTRACT, CLASS_SUPER): Now
12597         defined.
12598         * class.c (set_super_info): Fills the CLASS_* flags according to
12599         access_flags.
12600         (get_access_flags_from_decl): Handles all class flags.
12601
12602 Tue Aug 26 18:54:34 1997  Per Bothner  <bothner@cygnus.com>
12603
12604         * class.c (add_method):  Zero out newly-allocated DECL_LANG_SPECIFIC.
12605         * parse.c (yyparse):  Check for abstract method, and missing code.
12606         * expr.c (expand_byte_code):  Change interface.
12607         * lang.c (put_decl_node):  Print promoted types prettier.
12608         * verify.c (verify_jvm_instruction):  Change interface.
12609         Partial support for scanning exception table.
12610         For load instructions, handle promoted integral types.
12611
12612 Thu Aug 21 13:48:01 1997  Per Bothner  <bothner@cygnus.com>
12613
12614         * verify.c:  New file, with contents moved from expr.c.
12615         * expr.c:  Bunch of stuff (mostly verification) moved to verify.c.
12616         * typeck.c (is_array_type_p):  Moved here from expr.c.
12617         * java-tree.h:  Add some now-needed function declarations.
12618         * Makefile.in (JAVA_OBJS): Added verify.o.
12619
12620 Wed Aug 20 14:34:34 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12621
12622         * class.c (add_method): Sets the METHOD_SYNCHRONIZED flag, sets the
12623         METHOD_ABSTRACT flag.
12624
12625         * java-tree.h (METHOD_SYNCHRONIZED): Set to DECL_LANG_FLAG_4.
12626         (IS_METHOD_CLINIT_P, IS_METHOD_INIT_P): New macros.
12627         (METHOD_ABSTRACT): Set to DECL_LANG_FLAG_5
12628
12629         * decl.c (soft_monitorenter_node, soft_monitorexit_node): New global
12630         variables.
12631         (start_java_method): Hook for SYNCHRONIZED methods.
12632
12633         * expr.c (build_java_jsr, build_java_ret): New functions
12634         (JSR,PRE): New macros
12635         (PRE_TABLE_SWITCH, PRE_LOOKUP_SWITCH): Fixed and secured.
12636         (verify_jvm_instructions): tableswitch, lookupswitch,
12637         monitorenter, monitorexit, goto_w: verified.
12638         (LOOKUP_SWITCH, TABLE_SWITCH): Fixed generation of default: label
12639         (build_java_monitor): New function.
12640         (MONITOR_OPERATION): Modified to call build_java_monitor()
12641         (verify_jvm_instructions): Started a thorough verification of
12642         invoke* bytecodes.
12643
12644 Tue Aug 19 13:35:49 1997  Per Bothner  <bothner@cygnus.com>
12645
12646         Support verification of jsr/ret subroutines (used for try/finally).
12647         * decl.c (return_address_type_node):  New type node.
12648         * java-tree.h (LABEL_RETURN_LABEL, LABEL_RETURN_TYPE_STATE,
12649         RETURN_MAP_ADJUSTED, LABEL_RETURN_LABELS, LABEL_IN_SUBR,
12650         LABEL_SUBR_START, LABEL_SUBR_CONTEXT, BCODE_VERIFIED):  New macros.
12651         (TYPE_UNSET, TYPE_SECOND, TYPE_NULL, TYPE_RETURN_ADDR, TYPE_UNUSED,
12652         TYPE_USED):  New macros for special types in type_map.
12653
12654         * java-tree.h (BCODE_JUMP_TARGET):  Renamed to BCODE_TARGET.
12655         (BCODE_BACKWARDS_TARGET, CODE_FORWARDS_TARGET):  Replaced by
12656         BCODE_JUMP_TARGET.
12657         * expr.c (expand_byte_code):  Fix logic to warn of unused instructions.
12658
12659         * expr.c (can_widen_reference_to):  New function.
12660         (pop_type):  Use it.
12661         (merge_type_state):  Support handling start of subroutine.
12662         (push_pending_block):  Return char* error message, instead of calling
12663         fatal on an error.  Also handle subroutines.
12664         (verify_jvm_instructions):  Handle errors from push_poending_block.
12665         Support jsr and ret instructions.
12666
12667 Tue Aug 19 13:33:36 1997  Per Bothner  <bothner@cygnus.com>
12668
12669         * jcf-io.c (find_classfile):  Fix thinko.
12670         * jcf-dump.c:  Add CONVERT2 (to match changed javaop.def).
12671
12672 Tue Aug 12 20:14:45 1997  Jason Merrill  <jason@yorick.cygnus.com>
12673
12674         * Makefile.in (BISON): Remove.
12675
12676 Thu Aug  7 23:08:24 1997  Per Bothner  <bothner@cygnus.com>
12677
12678         * Makefile.in:  Convert to autoconf.
12679         * config-lang.in (outputs):  Added java/Makefile.
12680
12681         * Make-lang.in, lang-specs.h, config-lang.in, Makefile.in:
12682         Rename cc1java to jc1.
12683
12684         * lang.c (init_parse, finihs_parse):  New functions #ifdef USE_CPPLIB.
12685         * Makefile.in (INTERNAL_CFLAGS):  Add @extra_c_flags.
12686
12687         * class.c (class_depth):  Do load_class if needed.
12688
12689         Mostly better verification.
12690         * decl.c (pushdecl):  Set TYPE_STUB_DECL for a type.
12691         (init_decl_processing):  Change return type of soft_checkcast.
12692         * expr.c (expand_java_CHECKCAST):  Do push_value of the "casted" value.
12693         * lang.c (put_decl_string, put_decl_node, lang_printable_name,
12694         lang_print_error):  New functions.
12695         (lang_init):  Set global hook print_error_function to lang_print_error.
12696         * expr.c:  In the type_map ptr_type_node is only used for null now.
12697         (pop_type, merge_types):  Hence ptr_type_node matches any reference.
12698         (merge_types):  Dererence pointer to record types before comparing.
12699         (decode_newarray_type, merge_types):  On error just return NULL.
12700         (build_java_binop):  Add preliminary implementation (with warning)
12701         for COMPARE_L_EXPR and COMPARE_G_EXPR (i.e. [fd]cmp[lg]).
12702         (lookup_label):  Set DECL_IGNORED_P (for dwarf2out).
12703         (expand_compare, expand_java_goto, expand_java_call):  Don't
12704         push_pending_block, since that only makes sense when verifying.
12705         (merge_type_state):  Different return codes.
12706         (push_pending_block):  A block may need to be verified more than once.
12707         (expand_byte_code):  Warn about unused code at code generation time.
12708         (verify_jvm_instruction):  Changed logic, since code may need to be
12709         re-verified if type-state has changed.  Also, better error handling.
12710         Implement acmpeq, acmpne, pop, pop2, swap, checkcast, instanceof.
12711         Improve newarray, anewarray, ?aload, athrow,
12712         * java-tree.h (LABEL_CHANGED):  New macro.
12713
12714 Tue Aug  5 12:21:27 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12715
12716         * decl.c (soft_athrow_node): New global variable initialized.
12717         * javaop.def (i2b, i2c, i2s): Invoke CONVERT2
12718         * typeck.c (convert): Added support for REAL_TYPE.
12719         (convert_to_char): New function.
12720         (convert): Handle CHAR_TYPE.
12721         * expr.c (expand_java_arraystore): Modified because CHAR/BYTE/BOOLEAN/
12722         SHORT now expect INT but store as CHAR/BYTE/BOOLEAN/SHORT.
12723         (expand_java_arrayload): CHAR/BYTE/BOOLEAN/SHORT now convert result to
12724         promoted type.
12725         (verify_jvm_instructions): Added break a the end of bogus unop: label.
12726         (OPCODE_<b|c|s>astore): Pop an int operand from the type stack
12727         (OPCODE_<b|c|s>astore): Push the promoted type onto the stack
12728         (process_jvm_instruction): New macro CONVERT2 for i2c, i2s and i2b.
12729         (JAVA_ARRAY_LENGTH_OFFSET, JAVA_ARRAY_DATA_OFFSET): Modified
12730         to Use The Right Things.
12731         (pop_type): Accept CHAR/BYTE/BOOLEAN/SHORT promoted type as
12732         compatible with INT. BOOLEAN is made equivalent to BYTE.
12733         (OPCODE_athrow, OPCODE_aconst_null, OPCODE_ifnull,
12734         OPCODE_ifnonnull): Now supported.
12735         (build_java_athrow): New function.
12736
12737 Mon Aug  4 15:46:45 1997  Per Bothner  <bothner@cygnus.com>
12738
12739         Rename method name <init> to match G++ (and fix mangling).
12740         * class.c (layout_class):  Replace method name of <init> by class name.
12741         (make_method_value):  Do inverse renaming of constructor from <init>.
12742         * java-tree.h (DECL_CONSTRUCTOR_P):  New macro.
12743         * typeck.c (lookup_java_constructor):  New function.
12744         * expr.c (expand_invoke):  If method_name is <init>, call
12745         lookup_java_constructor to find constructor.
12746
12747         * parse.c (get_constant):  Handle CONSTANT_Float and CONSTANT_Double.
12748
12749 Fri Aug  1 11:37:09 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12750
12751         * parse.c (get_class_constant): Modified to handle array "classes"
12752         * typeck.c (set_local_type): Bug fixed when filling type_map[] with
12753         wide type.
12754         (convert): Modified to handle real type.
12755         * java-tree.h (soft_badarrayindex_node, soft_anewarray_node,
12756         soft_multianewarray, soft_newarray_node, soft_throw_node): New global
12757         variables declared.
12758         * decl.c (soft_badarrayindex_node, soft_anewarray_node,
12759         soft_multianewarray, soft_newarray_node, soft_throw_node): New
12760         global variables initialized.
12761         (find_local_variable): Handles the case of a pointer
12762         (end_java_method): Restore the use of one more scope
12763         * expr.c (build_java_arraynull_check, build_java_arrayaccess,
12764         build_java_array_length_access, expand_java_arrayload,
12765         expand_java_arraystore, expand_java_array_length,
12766         expand_java_multianewarray, expand_java_anewarray,
12767         build_java_check_indexed_type, is_array_type_p,
12768         build_java_throw_out_of_bound_exception): New functions.
12769         (STORE_INTERNAL): Now forces type of the decl to be type of the value.
12770         (OPCODE_arraylength, OPCODE_newarray, OPCODE_<t>astore,
12771         OPCODE_<t>aload): Implemented code for verification.
12772         (ARRAY_STORE, ARRAY_LOAD, ARRAY_LENGTH, ARRAY_NEW_PTR, ARRAY_NEW_NUM
12773         ARRAY_NEW_MULTI): Macro defined.
12774         (CONVERT): Modified to invoke convert().
12775         (case OPCODE_aload2): Fixed index typo from 2 to 1.
12776
12777 Thu Jul 31 12:48:18 1997  Per Bothner  <bothner@cygnus.com>
12778
12779         * class.c (push_class):  Set DECL_ARTIFICIAL (for dbxout.c).
12780         (build_class_ref, is_compiled_class):  Handle pointer-to-record types.
12781         (make_class_data):  Field name needs '/' as package prefix.
12782         * expr.c (type_stack_dup, java_stack_dup):  Fix fencepost errors.
12783
12784 Fri Jul 25 11:44:21 1997  Per Bothner  <bothner@cygnus.com>
12785
12786         Implement debug information for local variables.
12787         * java-tree.h (DECL_CODE_LENGTH, DECL_ARG_SLOT_COUNT,
12788         DECL_LOCAL_SLOT_NUMBER, DECL_LOCAL_START_PC, DECL_LOCAL_END_PC,
12789         DECL_LOCAL_SLOT_CHAIN):  New macros.
12790         (struct lang_decl_var):  New type.
12791         * parse.c (give_name_to_locals):  Move to decl.c.
12792         * decl.c (give_name_to_locals):  Re-written to Do The Right Thing.
12793         (start_java_method):  Re-write parameter handling.
12794         (pending_local_decls):  New global variable.
12795         (push_jvm_slot, maybe_pushlevels, maybe_poplevels):  New functions.
12796         (find_local_variable):  Accept pc so we can skips decls not in range.
12797         (struct binding_level):  Add end_pc field.
12798         * expr.c (expand_byte_code): Call maybe_pushlevels and maybe_poplevels.
12799         (various):  Change so current pc gets passed to find_local_variable.
12800
12801         * decl.c (init_decl_processing):  Re-arrange fields in
12802         class_type_node and and method_type_node to match kaffe 0.9.1.
12803         * class.c (make_method_value, make_class_data):  Update
12804         initializations to match.
12805
12806 Wed Jul 16 17:17:50 1997  Per Bothner  <bothner@cygnus.com>
12807
12808         * class.c (unicode_mangling_length, emit_unicode_mangled_name,
12809         append_gpp_mangled_name, append_gpp_mangled_type):  New functions.
12810         (push_super_field):  New function.
12811         (make_class_data):  Handle inheritance of class static initializer.
12812         (layout_class):  New name mangling.
12813         * constants.c (build_constant_data_ref):  Init type of data array
12814         to a one-element array.
12815         (build_constants_constructor):  Set DECL_SIZE from complete array type.
12816         * decl.c:  Rename class_type, object_type etc to class_type_node,
12817         object_type_node etc.  Make former inherit from latter.
12818         * expr.c (expand_invoke):  Add cast of function address.
12819         * java-tree.h (TYPE_ARRAY_ELEMENT, PUSH_SUPER_VALUE):  New.
12820         * parse.c (yyparse):  Don't call layout_class here.
12821         * typeck.c (build_java_array_type):  Set TYPE_ARRAY_ELEMENT.
12822
12823 Sat Jun 14 12:06:57 1997  Per Bothner  <bothner@cygnus.com>
12824
12825         * decl.c, class.c:  Update method type to match latest Kaffe snapshot.
12826         * constants.c (lookup_name_constant):  Renamed to alloc_name_constant.
12827         (alloc_class_constant):  New.
12828         * expr.c (expand_invoke):  Make sure method's class is initialized.
12829         * class.c (interits_from_p, emit_register_class):  New functions.
12830         * parse.c (yyparse):  Call emit_register_class.
12831
12832 Mon Jun  9 18:08:06 1997  Per Bothner  <bothner@cygnus.com>
12833
12834         * constants.c:  New file, to handle constant pool.
12835         * Makefile.in (JAVA_OBJS):  Add constants.o.
12836         * decl.c (init_decl_processing):  Update, fix, finish various structs.
12837         (pushdecl_top_level):  New.
12838         * parse.c (layout_class):  Moved to class.c.
12839         * expr.c (java_push_constant_from_pool):  New function.
12840         * class.c (build_class_ref):  Make work fully
12841         (make_class_data):  Emit super-class, constant pool, interface vector.
12842
12843 Tue Jun  3 10:14:31 1997  Per Bothner  <bothner@cygnus.com>
12844
12845         java-tree.h (DECL_SIGNATURE, BCODE_EMITTED):  Remove.
12846         (LABEL_VERIFIED, BCODE_EXCEPTION_TARGET, TYPE_ARRAY_P):  New.
12847         * class.c (class_depth):  New function.
12848         (lookup_named_class):  Replaced by new function lookup_class.
12849         * decl.c (object_type_node, string_type_node):  New.
12850         Remove various types that we no longer need.
12851         * expr.c (verify_jvm_instructions):  New separate verifier pass.
12852         (push_type, pop_type):  New functions for verifier.
12853         (type_stack_dup, pop_argument_types, merge_types):  Likewise.
12854         (expand_byte_code):  Simplify, since we assume already verified.
12855         (expand_invoke):  Now mostly works.
12856         * javaop.def:  Rename ldc1->ldc, ldc2->ldc_w, ldc2w->ldc2_w.
12857         * lang.c (main_class):  Move to parse.c.  Don't make_class yet.
12858         * parse.c:  Wait to allocate class object until we know its name.
12859         (layout_class):  Calculate DECL_VINDEX for each virtual method.
12860         * typeck.c (get_array_type):  Rename to ...
12861         (build_java_array_type):  ... and provide working implementation.
12862         (build_java_signature):  New function - build Java signature of type.
12863         (set_java_signature):  New function - cache signature with type.
12864         (lookup_java_method):  New function.
12865
12866 Tue May  6 22:08:24 1997  Per Bothner  <bothner@deneb.cygnus.com>
12867
12868         * class.c (ident_subst):  Take extra SUFFIX parameter.
12869         (add_field):  Set DECL_ASSEMBLER_NAME of static fields;  more.
12870         (set_constant_value, build_static_field_ref, is_compiled_class):  New.
12871         (build_class_ref):  Actually implement.
12872         * decl.c, java-tree.h:  Renamed some xx_type to xx_type_node.
12873         * decl.c (builtin_function):  New.
12874         (init_decl_processing):  Update for current Kaffe.  Declare some
12875         builtin Kaffe functions.
12876         * expr.c (build_address_of):  New.
12877         (expand_java_NEW, expand_java_INSTANCEOF, expand_java_CHECKCAST):
12878         Renamed (from expand_java_new etc), and added working implementations.
12879         (build_field_ref):  Now also handle static fields.
12880         (expand_invoke):  Implement invokestatic, and start implement rest.
12881         * java-opcodes.h:  Use javaop.def to avoid duplicated list.
12882         * javaop.def:  Rename invokevirt -> invokevirtual.
12883         * lang.c (use_handles):  Removed.
12884         * parse.c:  Add support for ConstantValue attribute.
12885         Handle nested loading of a class.  (JPOOL_UTF):  New.
12886
12887 Tue Mar 11 20:11:05 1997  Per Bothner  <bothner@deneb.cygnus.com>
12888
12889         * expr.c (expand_java_pushc):  Support #ifndef REAL_ARITHMETIC case.
12890
12891 Thu Feb 27 14:24:29 1997  Per Bothner  <bothner@deneb.cygnus.com>
12892
12893         * Make-lang.in (java.install-man):  New empty rule.
12894         * typeck.c (set_local_type):  New function.
12895         * expr.c (STORE_INTERNAL):  Call find_local_variable,
12896         not find_stack_slot.  Call set_local_type.
12897
12898 Wed Feb 12 16:11:05 1997  Per Bothner  <bothner@kalessin.cygnus.com>
12899
12900         * java-tree.h:  Various new macros for constructing RECORD_TYPEs,
12901         and building RECORD_TYPE CONSTRUCTORs.
12902         Also support for creating Utf8Const objects from an INDETIFIER_NODE.
12903
12904         * lang.c (use_handles):  Change the default to 0.
12905         * decl.c:  Define and build class_type, field_type, utf8const_type.
12906         * class.c (make_class_data, make_field_value,
12907         get_access_flags_from_decl, build_class_ref, build_utf8_ref,
12908         hashUtf8String, strLengthUtf8, mangled_classname:
12909         Functions to build reflective data structures.
12910         * parse.c (yyparse):  Call make_class_data.
12911
12912         * jcf-io.c (open_class, find_classfile):  New functions.
12913         * jcf-dump.c:  Support reading classfile from explicitly-named
12914         class file (without CLASSPATH searching).
12915
12916 Thu Oct 24 14:10:16 1996  Per Bothner  <bothner@deneb.cygnus.com>
12917
12918         * jcf-reader.c:  Add parameter list to HANDLE_CONSTANT_Utf8.
12919         * parse.c (JPOOL_UTF_LENGTH, JPOOL_UTF_DATA, HANDLE_CONSTANT_Utf8):
12920         Override jcf-reader macros so CONSTANT_Utf8 becomes tree node here.
12921         (get_constant):  Now trivial for CONSTANT_Utf8.
12922
12923         * jcf.h:  Make NEW_CPOOL the default.
12924         * jcf.h, jcf-reader.c, parse.c:  Remove support for !NEW_CPOOL.
12925
12926 Thu Oct 24 13:52:45 1996  Per Bothner  <bothner@deneb.cygnus.com>
12927
12928         New directory.