OSDN Git Service

* mangle.c (find_compression_record_match): Don't match compression
[pf3gnuchains/gcc-fork.git] / gcc / java / ChangeLog
1 2001-10-29  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
2
3         * mangle.c (find_compression_record_match): Don't match compression
4         records for package name elements unless they occur at the start of
5         the name. Fix for PR java/4717.
6
7 2001-10-25  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
8
9         * expr.c (expand_java_field_op): Don't special-case references to
10         java.lang.PRIMTYPE.TYPE.
11         (build_primtype_type_ref): Removed.
12         * java-tree.h (build_primtype_type_ref): Remove prototype.
13         * parse.y (maybe_build_primttype_type_ref): Removed.
14         (complete_function_arguments): Don't special-case references to
15         java.lang.PRIMTYPE.TYPE.
16         (patch_assignment): Likewise.
17         (array_constructor_check_entry): Likewise.
18
19 2001-10-24  Alexandre Petit-Bianco  <apbianco@redhat.com>
20
21         * mangle.c (static tree compression_table): Fixed leading comment.
22         * parse.h (struct parser_ctxt): Fixed field comment.
23         * parse.y (check_pkg_class_access): New prototype, fixed leading
24         comment, new parameter used to emit error only if passed as true.
25         (parse_check_super): Pass extra argument to check_pkg_class_access.
26         (do_resolve_class): Likewise.
27         (process_imports): Likewise.
28         (read_import_dir): Fixed indentation.
29         (find_in_imports_on_demand): New local class_type_name. Local
30         node_to_use deleted. while loop changed into for loop. Report
31         multiple definition only for accessible classes. Improved error
32         message.
33         (start_complete_expand_method): Local `ptr' removed. DECL_ARGUMENTS
34         assigned to parameter list, fixed indentation. while loop changed
35         into for loop, restore TREE_CHAIN on local `tem' before the next
36         iteration.
37
38 Tue Oct 23 14:02:17 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
39
40         * lang.c (lang_get_alias_set): Deleted.
41
42 2001-10-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
43
44         * gjavah.c (jni_print_char): Fix thinko in last change.
45
46         * gjavah.c (jni_print_char, decode_signature_piece): Use
47         safe-ctype macros and/or fold extra calls into fewer ones.
48         * lex.c (java_read_unicode, java_lex): Likewise.
49         * lex.h (JAVA_START_CHAR_P, JAVA_PART_CHAR_P, JAVA_ASCII_DIGIT,
50         JAVA_ASCII_HEXDIGIT, JAVA_ASCII_LETTER): Likewise.
51         * mangle_name.c (append_unicode_mangled_name,
52         unicode_mangling_length): Likewise.
53
54 2001-10-17  Richard Henderson  <rth@redhat.com>
55
56         * Make-lang.in (java/lang.o): Depend on langhooks.h.
57
58 2001-10-15  Alexandre Petit-Bianco  <apbianco@redhat.com>
59
60         * lang.c (langhooks.h): Included.
61         (LANG_HOOKS_INIT): Redefined.
62         (LANG_HOOKS_INIT_OPTIONS): Likewise.
63         (LANG_HOOKS_DECODE_OPTION): Likewise.
64         (struct lang_hooks lang_hooks): New initialization.
65
66 2001-10-11  Per Bothner  <per@bothner.com>
67
68         * parse.y (patch_synchronized_statement):  Use a TRY_FINALLY_EXPR
69         rather than a CLEANUP_POINT_EXPR/WITH_CLEANUP_EXPR pair.
70         The former is simpler, and jcf-write.c handles it better.
71         (java_complete_lhs):  No longer need to handle CLEANUP_POINT_EXPR
72         or WITH_CLEANUP_EXPR.
73         * jcf-write.c:  Revert Alex's change from 2000-10-18.  It is no
74         longer needed, as we already handle empty TRY_FINALLY_EXPR bodies fine.
75
76         * parse.y (patch_if_else_statement):  If the condition is constant,
77         optimize away the test.
78
79 2001-10-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
80
81         * parse.y (patch_cast): Call patch_string on the first operand of
82         the incoming node, update it if necessary. Fixes PR java/4510.
83
84 2001-10-09  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
85
86         * parse.y (find_as_inner_class): Don't disregard the enclosing scope
87         when name qualifier matches a package name.
88
89 2001-10-08  Tom Tromey  <tromey@redhat.com>
90
91         Fix for PR java/4489:
92         * jcf-write.c (generate_bytecode_insns) [SWITCH_EXPR]: Always
93         force a new label when computing `body_block'.
94
95 2001-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
96
97         * jcf-io.c (format_uint): Const-ify.
98         * lang.c (java_tree_code_type, java_tree_code_length): Likewise.
99         * lex.c (java_get_line_col): Likewise.
100         * parse.y (build_incdec): Likewise.
101
102 2001-10-05  Alexandre Petit-Bianco  <apbianco@redhat.com>
103
104         * parse.y (register_incomplete_type): Set JDEP_SUPER to be given
105         a NULL enclosing context if appropriate. Fixes PR java/4466.
106
107 2001-10-03  Alexandre Petit-Bianco  <apbianco@redhat.com>
108
109         * parse.y (patch_assignment): Use lvalue's original TYPE when
110         building the final COMPOUND_EXPR.
111         (try_reference_assignconv): Fixed leading comment.
112
113 2001-09-26  Alexandre Petit-Bianco  <apbianco@redhat.com>
114
115         * parse.y (check_final_variable_indirect_assignment): For
116         COMPOUND_EXPR, return only if finals were found initialized
117         properly, if not, keep on checking.
118         (check_final_variable_global_assignment_flag): New local
119         error_found, set when appropriate and used to decide whether to
120         report uninitialized finals. Fixed typo in comment.
121
122 2001-09-22  Alexandre Petit-Bianco  <apbianco@redhat.com>
123
124         * decl.c (init_decl_processing): Fixed typo in predef_filenames
125         last three initializations. Fixes PR java/4360.
126
127 2001-09-21  Richard Henderson  <rth@redhat.com>
128
129         * class.c (get_dispatch_table): Handle function descriptors.
130         (build_dtable_decl): Likewise.
131         * expr.c (build_invokevirtual): Likewise.
132
133 2001-09-20  Alexandre Petit-Bianco  <apbianco@redhat.com>
134
135         * parse.y (patch_method_invocation): Build class initialization
136         when static finals are used to qualify method invocation.
137         Fixes PR java/4366.
138
139 2001-09-19  Alexandre Petit-Bianco  <apbianco@redhat.com>
140
141         * parse.h: (WFL_STRIP_BRACKET): Re-written using
142         build_type_name_from_array_name.
143         (STRING_STRIP_BRACKETS): New macro.
144         * parse.y (build_type_name_from_array_name): New function.
145         (array_creation_expression:): Accumulate []s instead of [s.
146         (cast_expression:): Accumulate []s instead of [s after cast type
147         name.
148         (build_array_from_name): Local string deleted, use
149         build_type_name_from_array_name.
150         (build_unresolved_array_type): Accumulate []s instead of [s after
151         type name.
152         (register_fields): Fixed comment.
153         (resolve_class): Local name, base deleted, new locals tname and
154         array_dims. Use build_type_name_from_array_name. Use array_dims to
155         build array type.
156         (purify_type_name): Use STRING_STRIP_BRACKETS.
157
158 2001-09-18  Andreas Jaeger  <aj@suse.de>
159
160         * parse.y: Use VA_OPEN/VA_CLOSE/VA_FIXEDARG throughout.
161         * jv-scan.c: Likewise.
162
163 2001-09-17  Alexandre Petit-Bianco  <apbianco@redhat.com>
164
165         * parse.y (patch_method_invocation): Inner class creation context
166         check not enforced within constructors. Fixes PR java/1873.
167
168 2001-09-16  Tom Tromey  <tromey@redhat.com>
169
170         * jcf-write.c (generate_bytecode_insns) [SWITCH_EXPR]: Call
171         NOTE_PUSH for single-case push.  Fixes PR java/4189.
172
173 2001-09-13  Alexandre Petit-Bianco  <apbianco@redhat.com>
174
175         * java-tree.h (TYPE_IMPORT_LIST): New macro.
176         (TYPE_IMPORT_DEMAND_LIST): Likewise.
177         (struct lang_type): New fields import_list and import_demand_list.
178         * parse.y (java_complete_class): Initialize TYPE_IMPORT_LIST and
179         TYPE_IMPORT_DEMAND_LIST with ctxp counterparts.
180         (do_resolve_class): New local saved_enclosing_type, initialized,
181         passed as parameter to find_in_imports and find_in_imports_on_demand.
182         (find_in_imports): Added paramater enclosing_type, use its
183         TYPE_IMPORT_LIST when applicable.
184         (find_in_imports_on_demand): Added parameter enclosing_type, use
185         its TYPE_IMPORT_DEMAND_LIST when applicable. Reorganized locals
186         declaration and initialization.
187         (fold_constant_for_init): Switch/restore current_class to the
188         appropriate context.
189
190 2001-09-13  Mark Mitchell  <mark@codesourcery.com>
191
192         * verify.c (verify_jvm_instructions): Fix typo.
193
194 2001-09-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
195
196         * expr.c (expand_invoke): Const-ification.
197         * parse.y (patch_method_invocation): Likewise.
198
199 2001-09-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
200
201         * gjavah.c (cxx_keywords): Const-ification.
202         * keyword.gperf (java_keyword): Likewise.
203         * lang.c (java_tree_code_name): Likewise.
204         * lex.c (cxx_keywords): Likewise.
205         * parse.y (java_parser_context_suspend, merge_string_cste): Likewise.
206
207 2001-09-11  Richard Henderson  <rth@redhat.com>
208
209         * parse.h (ctxp_for_generation): Mark extern.
210
211 2001-09-10  Richard Henderson  <rth@redhat.com>
212
213         * class.c (build_class_ref): Set DECL_EXTERNAL before make_decl_rtl.
214
215 2001-09-07  Matt Kraai  <kraai@alumni.carnegiemellon.edu>
216
217         * typeck.c (java_array_type_length, build_prim_array_type):
218         Represent empty arrays by NULL index.
219
220 2001-09-06  Alexandre Petit-Bianco  <apbianco@redhat.com>
221
222         * java-tree.h (compile_resource_file): Grouped with other prototypes.
223         * jvspec.c (lang_specific_driver): Removed unused local `ptr.'
224
225 2001-09-06  Anthony Green  <green@redhat.com>
226
227         * class.c (O_BINARY): Define if necessary.
228         (registerResource_libfunc): Declare.
229         (init_class_processing): Initilize registerResource_libfunc.
230         (compile_resource_file): New function.
231         * java-tree.h (resource_name): Declare.
232         (compile_resource_file): Declare.
233         * jcf-parse.c (yyparse): Handle compiling java resource files.
234         * lang.c (java_decode_option): Handle -fcompile-resource option.
235         * jvspec.c (lang_specific_driver): Handle -R flag for compiling
236         resource files.
237         * gcj.texi (Code Generation): Add documentation for -R flag.
238
239 2001-09-05 Alexandre Petit-Bianco  <apbianco@redhat.com>
240
241         * jcf-write.c (generate_classfile): Issue an error in case of
242         field/initial value mismatch.
243         * parse.y (analyze_clinit_body): Keep <clinit> if an array is
244         being initialized and we're generating bytecode.
245         (java_complete_lhs): In MODIFY_EXPR section: added comments,
246         set DECL_INITIAL properly when appropriate.
247         Fixes PR java/4230
248         Fixes PR java/4204
249
250 2001-09-01  Per Bothner  <per@bothner.com>
251
252         * parse.y (maybe_yank_clinit):  A field without an initializer is not
253         relevant.  All initializers except static final and constant require
254         <clinit>, regardless of flag_emit_class_files.
255
256 2001-08-31  Per Bothner  <per@bothner.com>
257
258         * class.c (set_constant_value):  When not emiting class files, then a
259         String ConstantValue is a utf8const_ptr_type.
260
261 2001-08-30  Per Bothner  <per@bothner.com>
262
263         * jcf-write.c (generate_classfile):  Check that field is primitive
264         or string before emitting ConstantValue attribute.
265
266 2001-08-30  Per Bothner  <per@bothner.com>
267
268         * parse.y (resolve_qualified_expression_name):  If creating a
269         COMPOUND_EXPR, set it's type correctly.
270
271 2001-08-30  Per Bothner  <per@bothner.com>
272
273         * jcf-io.c (open_class):  Set filename field.
274
275         * jcf-parse,c (parse_class_file):  Set current_function_decl
276         for better error message when Code attribute is missing.
277
278         * lang.c (put_decl_node, lang_print_error):  Re-arrange for
279         better diagnostics, especially for constructors.
280
281 2001-08-30  Per Bothner  <per@bothner.com>
282
283         * jcf-write.c (generate_classfile):  Don't write ConstantValue
284         attribute if field is not final, for compatibility with jdk.
285
286         * jcf-write.c (generate_classfile):  Convert ConstantValue values
287         to correct type.  Work-around for front-end bug.
288         * class.c (set_constant_value):  Error if constant has wrong type.
289
290 2001-08-30  Per Bothner  <per@bothner.com>
291
292         * jcf-dump.c (print_constant):  Fix fencepost error so "Float" and
293         "Double" are printed at verbosity 1.
294
295         * jcf-dump.c (main):  Disable flag_print_attributes if --javap.
296
297         * jcf-dump.c (SPECIAL_IINC):  Remove unneeded casts to long.
298
299 2001-08-30  Alexandre Petit-Bianco  <apbianco@redhat.com>
300
301         * parse.y (patch_assignment): Don't verify final re-assignment here.
302         (java_complete_lhs): Verify assignments to finals calling
303         patch_assignment. Verify re-assignments to finals before calling
304         patch_assignment.
305
306 2001-08-29  Alexandre Petit-Bianco  <apbianco@redhat.com>
307
308         * parse.y (java_complete_lhs): Allow final locals in CASE_EXPRs.
309         Fixes PR java/1413
310
311 2001-08-28  Alexandre Petit-Bianco  <apbianco@redhat.com>
312
313         * lex.c (java_lex): new local found_hex_digits. Set and then used
314         in test to reject invalid hexadecimal numbers.
315         * parse.y (java_complete_tree): Prevent unwanted cast with
316         initialized floating point finals.
317         (patch_binop): Emit a warning when detecting a division by zero,
318         mark result not constant, don't simplify non integer division.
319
320 2001-08-28  Per Bothner  <per@bothner.com>
321
322         * jcf-write.c  (generate_bytecode_insns):  For increments and
323         decrements just recurse to push constant.  Improvement on Mark's patch.
324
325 2001-08-28  Mark Mitchell  <mark@codesourcery.com>
326
327         * jcf-write.c (generate_bytecode_insns): Generate an integer to
328         real conversion for increments and decrements of reals.
329
330 2001-08-27  Alexandre Petit-Bianco  <apbianco@redhat.com>
331
332         * parse.y (resolve_qualified_expression_name): Handle unresolved
333         qualified expressions, prevent numerical qualifiers, fixed typo.
334         Fixes PR java/4141
335
336 2001-08-24  Alexandre Petit-Bianco  <apbianco@redhat.com>
337
338         * parse.y (check_deprecation): Handle TYPE_DECL in a special case,
339         don't report anything but deprecated class when marked so. Handle
340         VAR_DECL.
341         (patch_method_invocation): Check deprecation on methods and types.
342         (patch_binop): code becomes an enum tree_code, added default: to
343         switch to handle that. Detect division by zero, try to fold and
344         return before using a subroutine.
345
346 2001-08-23  Alexandre Petit-Bianco  <apbianco@redhat.com>
347
348         * jcf-parse.c (yyparse): Set magic to 0, don't issue error for a
349         file smaller than 4 bytes.
350         * parse.y (check_inner_circular_reference): New function.
351         (check_circular_reference): Likewise.
352         (array_initializer:): Accept {,}.
353         (java_check_circular_reference): Rewritten using
354         check_circular_reference and check_inner_circular_reference.
355         (java_complete_expand_method): Unconditionally save and restore
356         the unpurged exception list.
357         (build_dot_class_method_invocation): Unmangle signature parameter.
358
359 2001-08-21  Tom Tromey  <tromey@redhat.com>
360
361         * decl.c (init_decl_processing): Add `throws' field to method
362         descriptor.
363         * class.c (make_method_value): Compute `throws' field for method.
364
365 2001-08-22  Alexandre Petit-Bianco  <apbianco@redhat.com>
366
367         * parse.y (resolve_inner_class): Keep local_enclosing to NULL if
368         circularity is detected.
369         (ctors_unchecked_throws_clause_p): Fixed leading comment.
370
371 2001-08-17  Richard Henderson  <rth@redhat.com>
372
373         * class.c (emit_register_classes): Add align parameter to
374         call to assemble_integer.
375
376 2001-08-16  Alexandre Petit-Bianco  <apbianco@redhat.com>
377
378         * jcf-parse.c (load_class): New locals saved and class_loaded. If
379         loading a class_or_name fails, try considering an innerclass name
380         and load the enclosing context.
381         * parse.y (resolve_inner_class): New function.
382         (find_as_inner_class): Added leading comment.
383         (register_incomplete_type): Keep the current context as enclosing
384         context for JDEP_FIELD dependencies.
385         (do_resolve_class): Locals new_class_decl and super initialized to
386         NULL. Call resolve_inner_class, explore the enclosing context
387         superclass if necessary.
388         Fixes PR java/4007
389
390 2001-08-16  Tom Tromey  <tromey@redhat.com>
391
392         * jcf-dump.c (main): Updated for change to jcf_path_seal.
393         * gjavah.c (main): Updated for change to jcf_path_seal.
394         * lang.c (version_flag): New global.
395         (java_decode_option): Recognize `-version'.
396         (java_init): Update for change to jcf_path_seal.
397         * jcf.h (jcf_path_seal): Added `print' argument.
398         * jcf-path.c (jcf_path_seal): Added `print' argument.
399
400 2001-08-13  Zack Weinberg  <zackw@panix.com>
401
402         * Make-lang.in (java/decl.o): Update dependencies.
403         * decl.c: Include libfuncs.h, don't include toplev.h.
404
405 2001-08-12  Alexandre Petit-Bianco  <apbianco@redhat.com>
406
407         * decl.c (init_decl_processing): exception_type_node,
408         class_not_found_type_node, and no_class_def_found_type_node
409         initialized. predef_filenames augmented accordingly.
410         instinit_identifier_node initialized.
411         * java-tree.def (INSTANCE_INITIALIZERS_EXPR): Entry removed.
412         * java-tree.h (enum java_tree_index): New entries
413         JTI_EXCEPTION_TYPE_NODE, JTI_CLASS_NOT_FOUND_TYPE_NODE,
414         JTI_NO_CLASS_DEF_FOUND_TYPE_NODE, JTI_INSTINIT_IDENTIFIER_NODE.
415         (exception_type_node): New macro.
416         (class_not_found_type_node): Likewise.
417         (no_class_def_found_type_node): Likewise.
418         (instinit_identifier_node): Likewise.
419         (PREDEF_FILENAMES_SIZE): Adjusted.
420         (TYPE_HAS_FINAL_VARIABLE): Fixed typo.
421         (struct lang_type): Fixed typo in bitfield name.
422         (DECL_INSTINIT_P): New macro.
423         (ID_INSTINIT_P): Likewise.
424         * jcf-write.c (generate_classfile): instinit$ bears the Synthetic
425         attribute.
426         * parse.y (encapsulate_with_try_catch): New function.
427         (generate_instinit): Likewise.
428         (build_instinit_invocation): Likewise.
429         (ctors_unchecked_throws_clause_p): Likewise.
430         (add_instance_initializer): Deleted.
431         (build_instance_initializer): Likewise.
432         (in_instance_initializer): Likewise.
433         (check_method_redefinition): instinit$ not to be verified.
434         (java_complete_expand_methods): Generate instinit$, simplified code.
435         (build_dot_class_method): Eliminated unnecessary locals. Use
436         encapsulate_with_try_catch, removed unnecessary code.
437         (fix_constructors): New local iii. Use build_instinit_invocation.
438         (patch_method_invocation): Added comment.
439         (maybe_use_access_method): Don't consider instinit$.
440         (find_applicable_accessible_methods_list): Shorten the search for
441         instinit$ too.
442         (java_complete_lhs): case INSTANCE_INITIALIZERS_EXPR removed.
443         (patch_return): Use DECL_INSTINIT_P instead of in_instance_initializer.
444         (patch_throw_statement): Likewise. Fixed typo.
445
446 2001-08-12  David Edelsohn  <edelsohn@gnu.org>
447
448         Revert:
449         2001-08-02  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
450         * jvspec.c (jvgenmain_spec): Cannot use %umain, breaks
451         ASM_FINAL_SPEC.
452         (lang_specific_pre_link): Use set_input to set input_filename.
453         Append `main' here.
454         * jvgenmain.c (usage): Append literal `main' to CLASSNAME.
455         (main): Fix definition.
456         Strip `main' from classname.
457         Fixes PR java/227.
458
459 2001-08-11  Zack Weinberg  <zackw@panix.com>
460
461         * lex.h: Don't include setjmp.h.  Don't define
462         SET_FLOAT_HANDLER or prototype set_float_handler.
463
464 2001-08-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
465
466         * expr.c (java_lang_expand_expr): Call `expand_end_bindings' and
467         `poplevel' in the right order.
468
469 2001-08-09  Richard Henderson  <rth@redhat.com>
470
471         * Make-lang.in (class.o): Depend on TARGET_H.
472         * class.c (emit_register_classes): Use target hooks instead of
473         assemble_constructor and assemble_destructor.
474
475 2001-08-08  Alexandre Petit-Bianco  <apbianco@redhat.com>
476
477         * check-init.c (flags.h): Include
478         (check_init): Don't report uninitialized static class
479         initialization flags, don't free bit index when doing static class
480         initialization optimization.
481         (check_for_initialization): Return type changed to `unsigned int.'
482         (attach_initialized_static_class): New function.
483         * class.c (add_method_1): Create the initialized static class
484         table if necessary.
485         (finish_class): Always emit deferred inline methods.
486         * decl.c (emit_init_test_initialization): Moved to expr.c
487         (complete_start_java_method): Don't traverse
488         DECL_FUNCTION_INIT_TEST_TABLE.
489         (lang_mark_tree): Mark hash tables in function decls.
490         * expr.c (emit_init_test_initialization): Moved from decl.c.
491         (build_class_init): Create LAG_DECL_SPECIFIC for the static class
492         initialization flag, set DECL_CONTEXT and
493         LOCAL_CLASS_INITIALIZATION_FLAG.
494         (java_lang_expand_expr): Emit initialization code for static class
495         initialized flags when entering block, if necessary.
496         * gcj.texi (-fno-optimize-static-class-initialization): Documented.
497         * java-tree.h (flag_optimize_sci): New global variable declaration.
498         (DECL_FUNCTION_INITIALIZED_CLASS_TABLE): New macro.
499         (DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND): Likewise.
500         (LOCAL_FINAL_P): Fixed typo in comment.
501         (FINAL_VARIABLE_P): Likewise.
502         (LOCAL_CLASS_INITIALIZATIO_FLAG): New macro.
503         (LOCAL_CLASS_INITIALIZATIO_FLAG_P): Likewise.
504         (struct lang_decl): New fields `ict', `smic' and `cif.'
505         (check_for_initialization): New returned value for global.
506         (attach_initialized_static_class): New global function.
507         (STATIC_CLASS_INIT_OPT_P): New macro.
508         * lang-options.h (-fno-optimize-static-class-initialization): New flag.
509         * lang.c (java_decode_option): Handle
510         `-fno-optimize-static-class-initialization'
511         * parse.y (start_complete_expand_method): New function.
512         (java_expand_method_bodies): Likewise.
513         (attach_init_test_initialization_flags): Likewise.
514         (adjust_init_test_initialization): Likewise.
515         (emit_test_initialization): Likewise.
516         (java_complete_expand_methods): Nullify abstract and native method
517         bodies.
518         (java_complete_expand_method): New locals `fbody', `block_body'
519         and `exception_copy.' Reorganized: directly return on empty method
520         bodies, call `start_complete_expand_method', remember definitely
521         initialized static class in function, don't expand method bodies.
522         (java_expand_classes): Call `java_expand_method_bodies' before
523         `finish_class' when compiling to native.
524         (resolve_expression_name): Use `orig' after building outer class
525         field access.
526         (patch_invoke): Remember static method invokations.
527
528 2001-08-06  Richard Henderson  <rth@redhat.com>
529
530         * class.c (emit_register_classes): Pass a symbol_ref and priority
531         to assemble_constructor.
532
533 2001-08-02  Alexandre Petit-Bianco  <apbianco@redhat.com>
534
535         * java-tree.h (all_class_filename): New macro.
536         (enum java_tree_index): New enum `JTI_ALL_CLASS_FILENAME.'
537         (BUILD_FILENAME_IDENTIFIER_NODE): Fixed leading comment. Link
538         newly created IDENTIFIER_NODE to `all_class_filename.'
539
540 2001-08-01  Jeff Sturm  <jsturm@one-point.com>
541
542         * java-tree.h (BUILD_FILENAME_IDENTIFIER_NODE):
543         Use ggc_add_tree_root to register roots.
544
545 2001-07-31  Alexandre Petit-Bianco  <apbianco@redhat.com>
546
547         * check-init.c (check_init): WITH_CLEANUP_EXPR node to use its
548         second operand calling check_init.
549         * decl.c (complete_start_java_method): Swaped second and third
550         arguments while creating WITH_CLEANUP_EXPR node.
551         * jcf-write.c (generate_bytecode_insns): Use second operand
552         instead of third when handling WITH_CLEANUP_EXPR.
553         * parse.y (java_complete_lhs): Expand second operand of
554         WITH_CLEANUP_EXPR nodes.
555         (patch_synchronized_statement): Swaped second and third arguments
556         while creating WITH_CLEANUP_EXPR node.
557
558 2001-07-18  Alexandre Petit-Bianco  <apbianco@redhat.com>
559
560         * parse.y (create_interface): Avoid cyclic inheritance report when
561         syntax error encountered during class definition.
562         Fixes PR java/2956
563
564 2001-08-02  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
565
566         * jvspec.c (jvgenmain_spec): Cannot use %umain, breaks
567         ASM_FINAL_SPEC.
568         (lang_specific_pre_link): Use set_input to set input_filename.
569         Append `main' here.
570         * jvgenmain.c (usage): Append literal `main' to CLASSNAME.
571         (main): Fix definition.
572         Strip `main' from classname.
573         Fixes PR java/227.
574
575 2001-07-18  Tom Tromey  <tromey@redhat.com>
576
577         For PR java/2812:
578         * lex.h: Use HAVE_ICONV, not HAVE_ICONV_H.
579         * lex.c (java_new_lexer): Use ICONV_CONST.
580         (java_read_char): Likewise.
581         * Make-lang.in (jc1$(exeext)): Link against LIBICONV.
582         (jv-scan$(exeext)): Likewise.
583
584 2001-07-17  Alexandre Petit-Bianco  <apbianco@redhat.com>
585
586         * parse.h (INTERFACE_INNER_MODIFIERS): Disallow `private.'
587         * parse.y (check_class_interface_creation): Allow `private' if the
588         enclosing is not an interface.
589         (create_interface): Interface tagged public if the enclosing
590         context is an interface.
591         (create_class): Class tagged public if the enclosing context
592         is an interface.
593         Fixes PR java/2959
594
595 2001-07-17  Alexandre Petit-Bianco  <apbianco@redhat.com>
596
597         * class.c (push_class): Set DECL_SIZE to `integer_zero_node.'
598         Fixes PR java/2665
599
600 2001-07-14  Tim Josling  <tej@melbpc.org.au>
601
602         * check-init.c (check_init): Remove references to EXPON_EXPR.
603
604 2001-07-13  Alexandre Petit-Bianco  <apbianco@redhat.com>
605
606         * parse.y (java_complete_lsh): Set CAN_COMPLETE_NORMALLY and unset
607         TREE_CONSTANT_OVERFLOW of CASE_EXPR value.
608         Fixes PR java/3602
609
610 2001-07-13  Tom Tromey  <tromey@redhat.com>
611
612         * jvspec.c (jvgenmain_spec): Remove -ffilelist-file from cc1
613         invocation.
614
615 2001-07-12  Alexandre Petit-Bianco  <apbianco@redhat.com>
616
617         * parse.y (patch_method_invocation): Don't override primary if one
618         is already provided, but let this$<n> be built. Fixed comment.
619
620 2001-07-12  Alexandre Petit-Bianco  <apbianco@redhat.com>
621
622         * parse.y (empty_statement:): Report empty statement error only
623         when found at class declaration level.
624         Fixes PR java/3635
625
626 2001-07-12  Tom Tromey  <tromey@redhat.com>
627
628         * expr.c (expand_load_internal): New function.
629         (LOAD_INTERNAL): Use it.
630
631 2001-07-11  Alexandre Petit-Bianco  <apbianco@redhat.com>
632
633         * parse.y (verify_constructor_super): Compare anonymous class ctor
634         args with `valid_method_invocation_conversion_p.'
635         Fixes PR java/3285
636
637 2001-07-10  Alexandre Petit-Bianco  <apbianco@redhat.com>
638
639         * lang-specs.h: Forbit the use if `-femit-class-file{s}' without
640         `-fsyntax-only.' Fixes PR java/3248
641
642 2001-07-10  Alexandre Petit-Bianco  <apbianco@redhat.com>
643
644         * jcf-io.c (find_class): Clarified error message. Fixes PR java/2603
645
646 2001-07-10  Alexandre Petit-Bianco  <apbianco@redhat.com>
647
648         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): No `this' is fine if the
649         current function is static. Fixes PR java/1970
650
651 2001-07-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
652
653         * parse.y (patch_method_invocation): Add enclosing context to ctor
654         calls if necessary. Fixes PR java/2953
655
656 2001-07-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
657
658         * parse.y (resolve_package): Abort if qualified expression member
659         isn't right.
660         (qualify_ambiguous_name): Don't qualify as type if `this' in use.
661         Fixes PR java/1391
662
663 2001-07-07  Zack Weinberg  <zackw@stanford.edu>
664
665         * verify.c: Don't use // comments.
666
667 2001-07-05  Tom Tromey  <tromey@redhat.com>
668
669         * lang.c (flag_assume_compiled): Removed.
670         * java-tree.h (flag_assume_compiled): Removed.
671         * lang-options.h: Removed -ffile-list-file, -fuse-boehm-gc,
672         -fhash-synchronization, -fuse-divide-subroutine,
673         -fcheck-references, -femit-class-file, -femit-class-files,
674         -fassume-compiled.  Updated --encoding information.  Changed
675         -foutput-class-dir to `-d'.
676
677 2001-07-04  Daniel Berlin  <dan@cgsoftware.com>
678
679         * jcf-parse.c (parse_class_file): Add lineno parameter to
680         debug_start_source_file call.
681
682 2001-07-04  Joseph S. Myers  <jsm28@cam.ac.uk>
683
684         * gcj.texi: Use gpl.texi.
685         * Make-lang.in ($(srcdir)/java/gcj.info, java/gcj.dvi): Update
686         dependencies and use doc/include in search path.
687
688 2001-07-03  Jeff Sturm  <jsturm@one-point.com>
689
690         * parse.y (fix_constructors): Test if a CALL_EXPR invokes
691         `this'.  If so, don't build instance initializers.
692
693 2001-07-03  Alexandre Petit-Bianco  <apbianco@redhat.com>
694
695         * parse.y (resolve_expression_name): Improved error message for
696         inner class cases. Fixes PR java/1958
697
698 2001-06-28  Gabriel Dos Reis  <gdr@codesourcery.com>
699
700         * lang.c: #include diagnostic.h
701         (lang_print_error): Add a `diagnostic_context *' parameter.
702         (java_dummy_print): Likewise.
703         * Make-lang.in (JAVA_LEX_C): Depend on diagnostic.h
704
705 2001-06-27  Alexandre Petit-Bianco  <apbianco@redhat.com>
706
707         * jcf-parse.c (gcc_mark_jcf): Test for a finished JCF.
708         * jcf.h (typedef struct JCF): New bitfield `finished.'
709         (JCF_FINISH): Set `finished.'
710         (JCF_ZERO): Reset `finished.'
711         Fixes PR java/2633
712
713 2001-06-27  Alexandre Petit-Bianco  <apbianco@redhat.com>
714
715         * parse.y (class_body_declaration:): Don't install empty instance
716         initializers.
717         Fixes PR java/1314
718
719 2001-06-27  Alexandre Petit-Bianco  <apbianco@redhat.com>
720
721         * class.c (set_super_info): Call `set_class_decl_access_flags.'
722         (set_class_decl_access_flags): New function.
723         * java-tree.h (set_class_decl_access_flags): New prototype.
724         * jcf-parse.c (handle_innerclass_attribute): Read and set access flags.
725         (parse_class_file): New local `decl_max_locals.' Take wide types
726         into account to compute DECL_MAX_LOCALS.
727         * parse.y (type_import_on_demand_declaration:): Ignore duplicate
728         imports on demand.
729
730 2001-06-22  Jan van Male  <jan.vanmale@fenk.wau.nl>
731
732         * zipfile.h: Use GCC_JCF_H instead of JCF_H.
733
734 2001-06-20  Alexandre Petit-Bianco  <apbianco@redhat.com>
735
736         * class.c (java_hash_tree_node): Fixed indentation in leading comment.
737         * parse.y (do_resolve_class): Moved comments out to leading comment
738         section. Removed local `start', New local `_ht' and
739         `circularity_hash.'  Record `enclosing' in hash table and search
740         it to detect circularity.  Use `enclosing' as an argument to
741         `lookup_cl.' Free the hash table when done.
742
743 2001-06-19  Tom Tromey  <tromey@redhat.com>
744
745         * lex.c (java_read_char): Disallow invalid and overlong
746         sequences.  Fixes PR java/2319.
747
748 2001-06-05  Jeff Sturm  <jsturm@one-point.com>
749
750         * decl.c (create_primitive_vtable): Don't call make_decl_rtl.
751
752 2001-06-04  Alexandre Petit-Bianco  <apbianco@redhat.com>
753
754         * expr.c (force_evaluation_order): Match wrapped ctor calls, locate
755         arguments accordingly.
756
757 2001-06-02  Joseph S. Myers  <jsm28@cam.ac.uk>
758
759         * gcj.texi: Move contents to just after title page.
760
761 2001-06-01  Alexandre Petit-Bianco  <apbianco@redhat.com>
762
763         * parse.y (type_literals:): Use `build_incomplete_class_ref' with
764         builtin type.
765         (patch_incomplete_class_ref): Build the class ref, build the class
766         init if necessary, complete the tree.
767         Fixes PR java/2605
768
769 2001-05-31  Alexandre Petit-Bianco  <apbianco@redhat.com>
770
771         * parse.y (lookup_field_wrapper): Test `name' code.
772         (resolve_qualified_expression_name): Test `qual_wfl' code.
773         (qualify_ambiguous_name): Handle `CONVERT_EXPR', fixe indentation,
774         handle `qual_wfl' by code.
775         (maybe_build_primttype_type_ref): Test `wfl' code.
776
777 2001-05-23  Theodore Papadopoulo  <Theodore.Papadopoulo@sophia.inria.fr>
778
779         * Make-lang.in ($(srcdir)/java/gcj.info): Added dependencies on
780         fdl.texi.
781         (java/gcj.dvi): Use TEXI2DVI instead of custom tex calls.  Create
782         the dvi file in the java directory.
783
784 2001-05-25  Sam TH  <sam@uchicago.edu>
785
786         * gen-table.pl javaop.h jcf.h lex.h,
787         parse.h: Fix header include guards.
788
789 2001-05-23  Joseph S. Myers  <jsm28@cam.ac.uk>
790
791         * jv-scan.c (version): Update copyright year.
792
793 2001-05-21  Per Bothner  <per@bothner.com>
794
795         * jcf-parse.c (read_class):  If class is from .class or .zip file
796         and it's already been read, don't push/pop parser context.
797
798 2001-05-18  Per Bothner  <per@bothner.com>
799
800         * jvspec.c (lang_specific_pre_link):  Re-arrange the linker
801         command line so the jvgenmain-generated main program comes first.
802
803 2001-05-15  Tom Tromey  <tromey@redhat.com>
804
805         * class.c (build_utf8_ref): Don't generate identifier based on
806         utf8const contents.
807
808 2001-05-12  Richard Henderson  <rth@redhat.com>
809
810         * java-tree.def (JAVA_EXC_OBJ_EXPR): New.
811         * expr.c (java_lang_expand_expr): Expand it.
812         (process_jvm_instruction): Build JAVA_EXC_OBJ_EXPR instead of
813         calling build_exception_object_ref.
814         * parse.y (catch_clause_parameter): Likewise.
815         (build_dot_class_method): Likewise.
816         (try_reference_assignconv): Likewise.
817         * check-init.c (check_init): Check JAVA_EXC_OBJ_EXPR not EXC_PTR_EXPR.
818         * jcf-write.c (generate_bytecode_insns): Likewise.
819
820 2001-05-07  Alexandre Petit-Bianco  <apbianco@redhat.com>
821
822         * parse.y (build_unresolved_array_type): Set
823         EXPR_WFL_QUALIFICATION on the newly created wfl.
824         Fixes PR java/2538. Fixes PR java/2535.
825
826 2001-05-07  Alexandre Petit-Bianco  <apbianco@redhat.com>
827
828         * parse.y (fix_constructors): Removed unnecessary assignment to
829         local. Moved assignment to `this$<n>', fixed comments and
830         indentation.
831         (build_wfl_wrap): Fixed indentation.
832         Fixes PR java/2598, java/2579 and java/2658.
833
834 2001-05-03  Mo DeJong  <mdejong@redhat.com>
835
836         * lex.c (java_new_lexer): Call iconv_close on temp handle used to
837         check for byte swap.
838
839 2000-05-02  Jeff Sturm  <jsturm@one-point.com>
840
841         * expr.c (build_class_init): Move MODIFY_EXPR
842         outside of COND_EXPR.  Remove variable `call'.
843
844 2001-05-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
845
846         * decl.c: NULL_PTR -> NULL.
847         * jcf-write.c: Likewise.
848
849 2001-05-01  Tom Tromey  <tromey@redhat.com>
850
851         * Make-lang.in ($(srcdir)/java/gcj.info): Added `-I..'.
852         (java/gcj.dvi): Added $(srcdir) to TEXINPUTS.
853         * gcj.texi: Updated copyright text.  Include fdl.texi.
854         (Top): Link to new node.
855
856 2001-05-01  Per Bothner  <per@bothner.com>
857
858         * parse.h (REGISTER_IMPORT):  Use tree_cons instead of chainon.
859
860 2001-05-01  Per Bothner  <per@bothner.com>
861
862         * parse.y (java_pop_parser_context):  The TREE_VALUE of a link in the
863         import_list contains the name, not the TREE_PURPOSE.
864
865 2001-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
866
867         * jcf-io.c (read_zip_member): Cast to long in comparison with
868         signed value.
869
870         * jvspec.c (lang_specific_driver): Initialize variables.
871
872         * mangle.c (find_compression_record_match): Likewise.
873
874         * typeck.c (build_null_signature): Provide static prototype.  Mark
875         parameter with ATTRIBUTE_UNUSED.
876
877         * verify.c (verify_jvm_instructions): Initialize variable.
878
879 2001-04-27  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
880
881         * parse.y (do_resolve_class): Check for cyclic inheritance during
882         inner class resolution.
883
884 2001-04-27  Per Bothner  <per@bothner.com>
885
886         * parse.y (java_expand_classes):  Don't change ctxp_for_generation
887         while iterating, since that could cause gc to lose stuff.
888
889 2001-04-26  Per Bothner  <per@bothner.com>
890
891         Fix method search wrt scope of inner classes to match JLS2.
892         * typeck.c (build_null_signature):  New static function.
893         (has_method):  New function.  Uses build_null_signature and lookup_do.
894         * java-tree.h (has_method):  New declaration.
895         * parse.y (find_applicable_accessible_methods_list):  Do not search
896         context of inner classes here.
897         (patch_method_invocation):  Search scope, ie. current and outer clases,
898         for method matching simple name, to find class.
899
900 2001-04-26  Per Bothner  <per@bothner.com>
901
902         * jcf-write.c (generate_bytecode_insns case SWITCH_EXPR):
903         Fix thinko:  If a single case, use if_icmpeq, not ifeq.
904
905         * constants.c (find_methodref_with_class_index):  New function.
906         (find_methodref_index):  Use find_methodref_with_class_index.
907         * java-tree.h (find_methodref_with_class_index):  New declaration.
908         * jcf-write.c (generate_bytecode_insns case CALL_EXPR):  Don't change
909         DECL_CONTEXT, instead use new find_methodref_with_class_index function.
910         If context changed from interface to class, don't use invokeinterface.
911
912 2001-04-25  Per Bothner  <per@bothner.com>
913
914         * verify.c (verify_jvm_instructions):  For field instructions,
915         check that field index is valid.  For invoke instructions, check that
916         method index is valid.
917
918 2001-04-25  Alexandre Oliva  <aoliva@redhat.com>
919
920         * config-lang.in (target_libs): Copy from $libgcj_saved.
921
922 2001-04-25  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
923
924         * decl.c (init_decl_processing): Add new class "protectionDomain"
925         field.
926         * class.c (make_class_data): Set initial value for "protectionDomain".
927
928 2001-04-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
929
930         * jvspec.c (lang_specific_driver): Fix memory allocation
931         deficit, by using concat in lieu of xmalloc/sprintf.
932
933 2001-04-20  Per Bothner  <per@bothner.com>
934
935         Fixes to compile multiple .class files at once.
936         * decl.c (init_decl_processing):  Don't set CLASS_LOADED_P.
937         * java-tree.h (CLASS_PARSED_P):  New macro.
938         (CLASS_LOADED_P):  Re-define to use TYPE_SIZE and CLASS_PARSED_P.
939         * jcf-parse.c (jcf_parse_source):  Inline into read_class.
940         (read_class):  Avoid some code duplication.
941         Don't call JCF_FINISH for a .class file - might be needed later.
942         (jcf_parse):  Don't call layout_class here.  Check/set CLASS_PARSED_P
943         rather than CLASS_LOADED_P, since latter implies class laid out.
944         (yyparse):  Do layout_class and JCF_FINISh here instead, in pass 2.
945         * parse.y:  Don't need to set CLASS_LOADED_P for array types.
946
947 2001-04-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
948
949         * Make-lang.in (java/boehm.o): Depend on toplev.h.
950
951         * boehm.c: Include toplev.h.
952
953 2001-04-06  Tom Tromey  <tromey@redhat.com>
954             Alexandre Petit-Bianco  <apbianco@redhat.com>
955
956         Fix for PR gcj/1404 and PR gcj/2332:
957         * parse.y (build_array_from_name): If we use the type_wfl then
958         accumulate dimensions from the original type as well.
959         (build_unresolved_array_type): Don't modify TYPE_OR_WFL in place.
960
961 2001-04-06  Tom Tromey  <tromey@redhat.com>
962
963         * parse.y (analyze_clinit_body): Return true if the second operand
964         of a METHOD_EXPR is nonzero.
965
966 2001-04-06  Tom Tromey  <tromey@redhat.com>
967
968         * Make-lang.in ($(srcdir)/java/parse-scan.c): Run bison from build
969         directory.
970         ($(srcdir)/java/parse.c): Likewise.
971
972 2001-04-05  Alexandre Petit-Bianco  <apbianco@redhat.com>
973
974         * gcj.texi: Use `which-gcj' instead of `which-g77.'
975         (version-gcc): Initialized.
976         (which-gcj): Likewise.
977
978 2001-04-04  Alexandre Petit-Bianco  <apbianco@redhat.com>
979
980         * java-tree.h (struct lang_decl): New macro
981         `DECL_FIXED_CONSTRUCTOR_P.' New field `fixed_ctor.'
982         * parse.y (build_instance_initializer): New function.
983         (add_instance_initializer): Use it.
984         (java_fix_constructors): Set `current_class' before fix pass.
985         (fix_constructors): Just return if already fixed. Move `super()'
986         invokation ahead. Use `build_instance_initializer.'
987         Fixes PR java/1315.
988
989 2001-04-04  Alexandre Petit-Bianco  <apbianco@redhat.com>
990
991         * parse.y (resolve_qualified_expression_name): Pass field's
992         DECL_CONTEXT to `not_accessible_p.'
993         (not_accessible_p): Changed parameters order in `inherits_from_p'
994         invokation.
995
996 2001-03-27  Andrew Haley  <aph@cambridge.redhat.com>
997
998         * lang-options.h: Add flag_check_references.
999
1000 2001-04-04  Per Bothner  <per@bothner.com>
1001
1002         * java-tree.h (CONSTANT_VALUE_P):  New macro.
1003         * jcf-write.c (generate_classfile):  Use CONSTANT_VALUE_P.
1004         * parse.y (maybe_build_class_init_for_field):  New static function.
1005         (resolve_expression_name, resolve_field_access):  Use
1006         maybe_build_class_init_for_field instead of build_class_init
1007         This does not do the init if the field is compile-time-constant.
1008         (resolve_field_access):  Simplify.
1009
1010         * parse.y (fold_constant_for_init):  Merge test into switch.
1011
1012 2001-04-03  Zack Weinberg  <zackw@stanford.edu>
1013
1014         * Make-lang.in (buffer.o, check-init.o, class.o): Don't depend
1015         on gansidecl.h.
1016         * buffer.c, jvgenmain.c: Don't include gansidecl.h.
1017
1018 2001-04-02  Zack Weinberg  <zackw@stanford.edu>
1019
1020         * expr.c (pop_type_0): Save the result of the first
1021         lang_printable_name call in a scratch buffer, so it
1022         won't be clobbered by the second call.
1023
1024 2001-03-30  Alexandre Petit-Bianco  <apbianco@redhat.com>
1025
1026         * parse-scan.y (array_type:): Rewritten.
1027         (type_declaration:): `empty_statement' replaces `SC_TK.'
1028         (class_member_declaration:): `empty statement' added.
1029         (method_body:): Simplified.
1030         (static_initializer:): Likewise.
1031         (primary_no_new_array:): Use `type_literals.'
1032         (type_literals:): New rule.
1033         (dims:): Set and update `bracket_count.'
1034         Fixes PR java/1074. Fixes PR java/2412.
1035
1036 2001-03-28  Hans Boehm  <boehm@acm.org>
1037
1038         * boehm.c (PROCEDURE_OBJECT_DESCRIPTOR): Set to use `build_int_2.'
1039         (get_boehm_type_descriptor): Set type on returned value to be a
1040         pointer length integer.
1041
1042 2001-03-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1043
1044         * expr.c (pop_type_0): Call `concat' rather than building the
1045         string manually.
1046         (pop_type): Add format specifier in call to `error'.
1047
1048         * parse.y (patch_method_invocation): Avoid casting away
1049         const-ness.
1050
1051 2001-03-28  Jeffrey Oldham  <oldham@codesourcery.com>
1052
1053         * jvgenmain.c (do_mangle_classname): End string constant with '\0'.
1054
1055 2001-03-28  Richard Henderson  <rth@redhat.com>
1056
1057         IA-64 ABI Exception Handling:
1058         * Make-lang.in (except.o): Don't depend on eh-common.h.
1059         * check-init.c (check_init): Handle EXC_PTR_EXPR.
1060         * decl.c (init_decl_processing) [throw_node]: No _Jv_Sjlj_Throw.
1061         [soft_exceptioninfo_call_node]: Remove.
1062         [eh_personality_libfunc, lang_eh_runtime_type]: New.
1063         (end_java_method): No emit_handlers.
1064         * except.c (java_set_exception_lang_code): Remove.
1065         (method_init_exceptions): Don't call it.
1066         (prepare_eh_table_type): No CATCH_ALL_TYPE.
1067         (build_exception_object_ref): New.
1068         (expand_end_java_handler): Update for except.h name changes.
1069         (emit_handlers, expand_resume_after_catch): Remove.
1070         * expr.c (java_lang_expand_expr): Update for except.h name changes.
1071         (process_jvm_instruction): Use build_exception_object_ref.
1072         * java-tree.h (JTI_SOFT_EXCEPTIONINFO_CALL_NODE): Remove.
1073         (soft_exceptioninfo_call_node): Remove.
1074         (build_exception_object_ref): Declare.
1075         * jcf-write.c (generate_bytecode_insns) [CALL_EXPR]: No
1076         soft_exceptioninfo_call_node.  Move processing ...
1077         [EXC_PTR_EXPR]: ... here.
1078         * parse.h (BUILD_ASSIGN_EXCEPTION_INFO): Remove dead code.
1079         * parse.y (catch_clause_parameter): Use build_exception_object_ref.
1080         (source_end_java_method): No java_set_exception_lang_code or
1081         emit_handlers.
1082         (build_dot_class_method): Use build_exception_object_ref.
1083         (try_reference_assignconv): Check EXC_PTR_EXPR not
1084         soft_exceptioninfo_call_node.
1085
1086 2001-03-28  Richard Henderson  <rth@redhat.com>
1087
1088         * java-tree.h (throw_node): Define as a single member of
1089         java_global_trees instead of a separate array.
1090         (JTI_THROW_NODE): New.
1091         * decl.c (throw_node): Don't declare.
1092         (init_decl_processing): Init a scalar throw_node.
1093         Don't register it for gc.
1094         * check-init.c (check_init): Reference scalar throw_node.
1095         * expr.c (build_java_athrow): Likewise.
1096         * jcf-write.c (generate_bytecode_insns): Likewise.
1097         * parse.h (BUILD_THROW): Likewise.
1098
1099 2001-03-28  Richard Henderson  <rth@redhat.com>
1100
1101         * decl.c (end_java_method): Do not save and restore
1102         flag_non_call_exceptions.
1103         * parse.y (source_end_java_method): Likewise.
1104         * lang.c (flag_exceptions): Don't declare.
1105         (java_init_options): Set flag_non_call_exceptions.  Set
1106         flag_exceptions here ...
1107         (java_init): ... not here.
1108
1109 2001-03-27  Richard Henderson  <rth@redhat.com>
1110
1111         * expr.c, parse.h: Use USING_SJLJ_EXCEPTIONS instead of
1112         exceptions_via_longjmp.
1113
1114         * lang.c (flag_new_exceptions): Don't declare it.
1115         (java_init_options): Or set it.
1116
1117 2001-03-27  Richard Henderson  <rth@redhat.com>
1118
1119         * decl.c (end_java_method): Rename asynchronous_exceptions to
1120         flag_non_call_exceptions.
1121         * parse.y (source_end_java_method): Likewise.
1122
1123 2001-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1124
1125         * Make-lang.in: Depend on $(SYSTEM_H), not system.h.
1126
1127 2001-03-26  Mark Mitchell  <mark@codesourcery.com>
1128
1129         * parse.h (DECL_END_SOURCE_LINE): Don't rely on DECL_FRAME_SIZE.
1130
1131 2001-03-26  Alexandre Petit-Bianco  <apbianco@redhat.com>
1132
1133         * parse.y (find_as_inner_class): Follow current package
1134         indications not to mistakingly load an unrelated class.
1135
1136 2001-03-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1137
1138         * constants.c (PUTN): Use memcpy, not bcopy.
1139
1140         * lex.c (java_read_char): Use memmove, not bcopy.
1141
1142         * parse.y (java_parser_context_resume): Use memcpy, not bcopy.
1143
1144 2001-03-23  Per Bothner  <per@bothner.com>
1145
1146         * verify.c (verify_jvm_instructions):  Replace 3 pop_type by POP_TYPE
1147         macro for better error pin-pointing.
1148         * java-tree.h:  Fix typo in comment.
1149
1150         * jcf-write.c (generate_bytecode_insns):  Changes to TRY_FINALLY_EXPR.
1151         Don't include jsr/goto in exception range.
1152         Check if start and end of exception range are the same (also TRY_EXPR).
1153         Don't emit jsr after try_block if CAN_COMPLETE_NORMALLY is false.
1154         However, do emit the following goto even if try_block is empty.
1155         Defer freeing exception_decl until after the finalizer, to make
1156         sure the local isn't reused in the finalizer.  Fixes PR java/1208.
1157
1158         * parse.y (java_complete_lhs):  If the try-clause is empty, just
1159         return the finally-clause and vice versa.
1160
1161 2001-03-23  Alexandre Petit-Bianco  <apbianco@redhat.com>
1162
1163         * gcj.texi (Input Options): documented the check for attribute
1164         `gnu.gcc.gccj-compiled' and the `-fforce-classes-archive-check' flag.
1165         * java-tree.h (flag_force_classes_archive_check): Declared extern.
1166         * jcf-parse.c (HANDLE_GCJCOMPILED_ATTRIBUTE): New macro.
1167         (jcf_parse): Check for the right classes archive if necessary.
1168         * jcf-reader.c (get_attribute): Define `MATCH_ATTRIBUTE' and use it.
1169         (jcf_parse_fields): Fixed indentation.
1170         * jcf-write.c (append_gcj_attribute): New function.
1171         (generate_classfile): Compute the attribute count, invoke
1172         `append_gcj_attribute'.
1173         * jcf.h (typedef struct JCF): `seen_in_zip' and `java_source'
1174         turned into bit fields. New bit field `right_zip.'
1175         (JCF_ZERO): Set `right_zip' to zero.
1176         * lang-options.h (-fforce-classes-archive-check): Added flag.
1177         * lang.c (flag_force_classes_archive_check): New flag.
1178         (lang_f_options): New entry `force-classes-archive-check.'
1179         Fixes PR java/1213.
1180
1181 2001-02-07  Andrew Haley  <aph@redhat.com>
1182
1183         * gcj.texi (Configure-time Options): Add -fcheck-references.
1184         * expr.c (build_java_indirect_ref): New function.
1185         (java_check_reference): New function.
1186         (build_java_array_length_access): Use build_java_indirect_ref to
1187         check for null references.
1188         (build_java_arrayaccess): Likewise.
1189         (build_get_class): Likewise.
1190         (build_field_ref): Likewise.
1191         (invoke_build_dtable): Likewise.
1192         (build_invokeinterface): Likewise.
1193         * lang.c (lang_f_options): Add flag_check_references.
1194         * jvspec.c (jvgenmain_spec): Add flag_check_references.
1195         * java-tree.h (flag_check_references): New variable.
1196         * lang.c (flag_check_references): Likewise.
1197         * parse.y (patch_invoke): Use java_check_reference.
1198         (patch_assignment): Allow for extra nesting in
1199         _Jv_CheckArrayStore.
1200
1201 2001-03-23  Bryce McKinlay  <bryce@albatross.co.nz>
1202
1203         * gjavah.c (cxx_keywords): Update from the definitive list in cp/lex.c.
1204         * lex.c (cxx_keywords): Likewise.
1205
1206 2001-03-21  Alexandre Petit-Bianco  <apbianco@redhat.com>
1207
1208         * parse.y (qualify_ambiguous_name): Broaden `length'
1209         recognition. Help MODIFY_EXPR be resolved as expression names.
1210         Fixes PR java/2066. Fixes PR java/2400.
1211
1212 2001-03-21  Bryce McKinlay  <bryce@albatross.co.nz>
1213
1214         * gjavah.c (process_file): Mark interface definitions with
1215         "__attribute__ ((java_interface))".
1216
1217 2001-03-21  Alexandre Petit-Bianco  <apbianco@redhat.com>
1218
1219         * class.c (layout_class): Fixed push_super_field's second
1220         argument. Fixes PR java/2333.
1221         (jdep_resolve_class): Reset TYPE_SIZE if `error_mark_node', it's
1222         too early to lay innerclasses out.
1223
1224 2001-03-20  Tom Tromey  <tromey@redhat.com>
1225             Alexandre Petit-Bianco <apbianco@redhat.com>
1226
1227         * parse.y (patch_assignment): Handle the case of a SAVE_EXPR
1228         inside an array reference. Insertion of the array store check
1229         rewritten. Fixes PR java/2299.
1230
1231 2001-03-20  Tom Tromey  <tromey@redhat.com>
1232
1233         * lex.c (java_read_unicode): Only accept leading `u's.
1234
1235 2001-03-20  Tom Tromey  <tromey@redhat.com>
1236
1237         * jcf-parse.c (read_class): Initialize `class'.
1238
1239 2001-03-20  Matt Kraai  <kraai@alumni.carnegiemellon.edu>
1240
1241         * jcf_parse.c (jcf_parse): Eliminate unused variable.
1242
1243 2001-03-19  Mark Mitchell  <mark@codesourcery.com>
1244
1245         * class.c (build_class_ref): Use SET_DECL_ASSEMBLER_NAME.
1246         (layout_class): Likewise.
1247         (layout_class_method): Likewise.
1248         (emit_register_classes): Likewise.
1249         * decl.c (builtin_function): Likewise.
1250         (give_name_to_locals): Likewise.
1251
1252 2001-03-19  Per Bothner  <per@bothner.com>
1253
1254         * jcf-parse.c (load_inner_classes):  Check CLASS_LOADED_P
1255         before trying to load an inner class.
1256
1257         Fixes to process to command-line .class files in two passes.
1258         * java-tree.h (JAVA_FILE_P, CLASS_FILE_P, ZIP_FILE_P):  New flags.
1259         (CLASS_FROM_CURRENTLY_COMPILED_SOURCE_P):  Rename to ..
1260         (CLASS_FROM_CURRENTLY_COMPILED_P):  ... because it is more general now.
1261         * class.c (is_compiled_class):  Fix for renamed flag.
1262         * parse.y (maybe_create_class_interface_decl):  Likewise.
1263         * jcf-parse.c (yyparse):  Also set if compiling .class files.
1264         * jcf-parse.c (read_class);  Read current_class.
1265         (jcf_parse):  Make static.
1266         (load_inner_classes):  New function, with code moved from jcf_parse,
1267         because we need to inner classes after the command-line files are read.
1268         (yyparse):  Set finput to NULL when it doesn't need to be closed.
1269         Reduce use of main_jcf (basically only for archive) and
1270         use finput instead of main_jcf->read_state.
1271         Inline jcf_figure_file_type into yyparse.
1272         Set JAVA_FILE_P, CLASS_FILE_P, or ZIP_FILE_P on filename list name.
1273         Defer load_inner_classes and parse_class_file to a second pass,
1274         after we've correctly mapped command-line .clas fiels to classes.
1275         (jcf_figure_file_type):  Removed.
1276         * jcf.h (JCF_ZIP, JCF_CLASS, JCF_SOURCE):  Removed flags.
1277         (JCF_ZERO):  Also clear zipd field.
1278         * zipfile.h:  Conditionalize on JCF_H insread of JCF_ZIP.
1279
1280 2001-03-18  Matt Kraai  <kraai@alumni.carnegiemellon.edu>
1281
1282         * jcf-parse.c (yyparse): Change ch from char * to char.
1283
1284 2001-03-19  Per Bothner  <per@bothner.com>
1285
1286         * jvspec.c (lang_specific_driver):  Check for .zip and .jar files.
1287         Add constructed filelist-file at end, following -xjava.  Thus any .o
1288         and library files are not affected by the -xjava.  Also wrap
1289         explicit @FILE with -xjava and -xnone.
1290
1291 2001-03-19  Andrew Haley  <aph@cambridge.redhat.com>
1292
1293         * class.c (build_static_field_ref): Call make_decl_rtl() after
1294         setting the DECL_EXTERNAL flag.
1295
1296 2001-03-17  Per Bothner  <per@bothner.com>
1297
1298         * decl.c (clear_binding_level):  Fix initializer (broke 03-15).
1299
1300         * jcf-write.c (generate_bytecode_insns):  Handle emitting iinc
1301         when result is is needed (target is STACK_TARGET).
1302
1303         * parse.h (JDEP_SOLV):  Removed.
1304         * parse.y (register_incomplete_type):  Use JDEP_TO_RESOLVE instead.
1305
1306         * parse.y (incomplete_class_list): Removed.
1307         (obtain_incomplete_type): Don't use or set incomplete_class_list.
1308         It doesn't work if resolve_class changes the name of an array type
1309         that is on the list and then someone else looks for the modified name.
1310         Also, seems liable to break when compiling multiple source files at
1311         once.  So the simplest is to just remove incomplete_class_list -
1312         it is only a minor space win and it is not even clear it saves time.
1313
1314         * parse.y (resolve_class):  Remove unneeded promote_type.
1315
1316 2001-03-15  Per Bothner  <per@bothner.com>
1317
1318         * java-tree.h (BLOCK_IS_IMPLICIT):  New flag.
1319         * parse.h (BLOCK_EXPR_ORIGIN):  Removed macro.
1320         * parse.y (declare_local_variables, maybe_absorb_scoping_blocks):
1321         Use BLOCK_IS_IMPLICIT rather than BLOCK_EXPR_ORIGIN.
1322
1323         * jcf-parse.c (yyparse):  Set/reset input_filename for source file.
1324         * parse.y (java_expand_classes):  Likewise.
1325
1326         * parse.y (expand_start_java_method):  Was only called once and had a
1327         misleading name, so inline in caller java_complete_expand_method.
1328         (enter_a_block):  Likewise inline in enter_block and remove.
1329
1330         Remove junk from when gcc/java was created (by copying from C/C++).
1331         * decl.c (keep_next_level_flag, keep_next_if_subblocks):  Remove.
1332         (struct binding_level):  Remove fields keep, keep_if_subblocks,
1333         more_cleanups_ok, have_cleanups (which have never been used).
1334         (pushlevel, poplevel):  Remove related useless code.
1335
1336         * class.c (make_class_data):  The class_dtable_decl (i.e. the
1337         vtable for Class) should be external, except when compiling Class.
1338
1339         * jvspec.c (lang_specific_driver):  Fix -C handling.
1340         Check -save-temps to see if temp @FILE should be deleted.
1341         Follow-up to/fix for February 16 patch.
1342
1343         * verify.c (verify_jvm_instructions):  Better error msgs for dup.
1344         (type_stack_dup):  Remove no-longer neded error check.
1345
1346 2001-03-15  Bryce McKinlay  <bryce@albatross.co.nz>
1347
1348         * mangle.c (mangle_record_type): Rename 'from_pointer' argument
1349         to 'for_pointer'. If this type is for a pointer (argument) mangling,
1350         don't surround the element with 'N..E' if the type name is
1351         unqualified.
1352
1353 2001-03-14  Mark Mitchell  <mark@codesourcery.com>
1354
1355         * class.c (build_static_field_ref): Use COPY_DECL_RTL,
1356         DECL_RTL_SET_P, etc.
1357         (make_method_value): Likewise.
1358         (get_dispatch_table): Likewise.
1359
1360         * decl.c (push_jvm_slot): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
1361
1362 2001-03-07  Tom Tromey  <tromey@redhat.com>
1363
1364         * config-lang.in (lang_requires): Define.
1365
1366 2001-03-07  Brad Lucier  <lucier@math.purdue.edu>
1367
1368         * typeck.c (convert): Check flag_unsafe_math_optimizations,
1369         not flag_fast_math.
1370
1371 2001-03-05  Per Bothner  <per@bothner.com>
1372
1373         Fix a problem where rest_of_decl_compilation applied to
1374         class_dtable_decl causes problems because it was done too early,
1375         before output file was opened.
1376         * decl.c (init_decl_processing):  Remove init of class_dtable_decl.
1377         * class.c (class_dtable_decl):  Add macro - element of class_roots.
1378         (make_class_data):  Define class_dtable_decl.
1379         * java-tree.h (JTI_CLASS_DTABLE_DECL, class_dtable_decl):  Removed.
1380
1381 2001-03-01  Zack Weinberg  <zackw@stanford.edu>
1382
1383         * java/class.c, java/decl.c, java/java-tree.h: Replace all
1384         uses of 'boolean' with 'bool'.
1385
1386 2001-03-01  Zack Weinberg  <zackw@stanford.edu>
1387
1388         * lang-specs.h: Add zero initializer for cpp_spec field to all
1389         array elements.
1390
1391 2001-02-16  Per Bothner  <per@bothner.com>
1392
1393         Handle compiling multiple input files at once, and @FILE syntax.
1394         * gcj.texi:  Updated documentation to match.
1395         * java-tree.h (flag_filelist_file, init_src_parse):  New declarations.
1396         * jcf-parse.c (parse_source_file):  Split into ...
1397         (parse_source_file_1):  New function - and:
1398         (parse_source_file_2):  New function.
1399         (yyparse):  On -ffilelist-file, open and scan named file.
1400         On first pass over files, only do parse_source_file_1.
1401         A new second pass calls parse_source_file_2 for each file to compile.
1402         (init_jcf_parse):  Call init_src_parse.
1403         * jvspec.c (INDIRECT_FILE_ARG):  New flag.
1404         (lang_specific_driver):  Support @FILELIST-FILE syntax, as well
1405         as multiple input file combined in one compilation.
1406         * lang-options.h:  Add -ffilelist-file
1407         * lang.c (flag_filelist_file):  New flag variable.
1408         (lang_f_options):  Handle -ffilelist-file.
1409         * lex.c (java_init_lex): Don't clear ctxp->incomplete_class.
1410         * parse.h (struct parse_ctxt):  Remove fields incomplete_class and
1411         gclass_list - use global fields of src_parse_roots instead.
1412         * parse.y (src_parse_roots):  New array.
1413         (incomplete_class_list, gclass_list):  New macros.
1414         (push_parser_context, java_pop_parser_context,
1415         java_parser_context_resume):  Don't fiddle with deleted fields.
1416         (various):  Use incomplete_class gclass_list and global macros
1417         instead of parse_ctxt fields - the lists are global.
1418         (init_src_parse):  New function.
1419
1420 Fri Feb 23 15:28:39 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
1421
1422         * decl.c (set_block): Set NAMES and BLOCKS from BLOCK.
1423
1424 2001-02-20  Alexandre Petit-Bianco  <apbianco@redhat.com>
1425
1426         * parse.y (check_inner_class_access): Moved declaration of local
1427         `enclosing_decl_type' to the right location.
1428
1429 2001-02-19  Bryce McKinlay  <bryce@albatross.co.nz>
1430
1431         * parse.y (parser_check_super_interface): Don't call
1432         check_pkg_class_access for an inner interface.
1433         (parser_check_super): Don't call check_pkg_class_access for inner
1434         class.
1435         (do_resolve_class): Simplify enclosing type loop. Don't call
1436         check_pkg_class_access if CL and DECL are not set.
1437         (find_in_imports_on_demand): Set DECL if class_type needed to be
1438         loaded. Don't call check_pkg_class_access for an inner class.
1439         (check_inner_class_access): Rewritten to implement member access
1440         rules as per spec 6.6.1.
1441         (check_pkg_class_access): Handle the empty package correctly.
1442         (in_same_package): New function. Determine if two classes are in the
1443         same package.
1444
1445 2001-02-18  Bryce McKinlay  <bryce@albatross.co.nz>
1446
1447         * typeck.c (build_java_array_type): Don't try to poke a public `clone'
1448         method into array types.
1449         * parse.y (patch_method_invocation): Bypass access check on clone call
1450         to array instance.
1451
1452 2001-02-15  Alexandre Petit-Bianco  <apbianco@redhat.com>
1453
1454         * expr.c (build_instanceof): Check for arrays when trying fold to
1455         false.
1456
1457 2001-02-15  Jim Meyering  <meyering@lucent.com>
1458
1459         * Make-lang.in (java.install-common): Depend on `installdirs'.
1460         (java.install-info): Likewise.
1461
1462 2001-02-15  Bryce McKinlay  <bryce@albatross.co.nz>
1463
1464         * Make-lang.in (jvspec.o): Modify rule to match that of cp/g++spec.o.
1465
1466 2001-02-14  Tom Tromey  <tromey@redhat.com>
1467             Alexandre Petit-Bianco  <apbianco@cygnus.com>
1468
1469         Fix for PR java/1261.
1470         * typeck.c (build_java_array_type): Add public `clone' method to
1471         arrays.
1472         * parse.y (resolve_qualified_expression_name): Use current_class
1473         when checking for inaccessibility.
1474         (patch_method_invocation): Fixed error message when accessibility
1475         denied.  Added `from_super' argument.
1476
1477 2001-02-14  Alexandre Petit-Bianco  <apbianco@redhat.com>
1478
1479         * parse.y (resolve_class): Don't build a fake decl. Use the one
1480         already built.
1481         * typeck.c (build_java_array_type): Build and assign decl to array
1482         type.
1483
1484 2001-02-14  Alexandre Petit-Bianco  <apbianco@redhat.com>
1485
1486         * parse.y (not_accessible_p): Changed leading comment. Added extra
1487         `where' argument. Use it to enforce protected access rules.
1488         (resolve_qualified_expression_name): Added extra argument to
1489         not_accessible_p.
1490         (patch_method_invocation): Use argument `primary' to provide
1491         not_accessible_p with an extra argument.
1492         (lookup_method_invoke): Added extra argument to not_accessible_p.
1493         (search_applicable_method_list): Likewise.
1494
1495 2001-02-13  Alexandre Petit-Bianco  <apbianco@redhat.com>
1496
1497         * parse.y (resolve_qualified_expression_name): Try to resolve as
1498         an inner class access only if `decl' is a TYPE_DECL.
1499
1500 2001-02-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1501
1502         * decl.c (classdollar_identifier_node): Initialize.
1503         * java-tree.h (enum java_tree_index): New entry
1504         `JTI_CLASSDOLLAR_IDENTIFIER_NODE.'
1505         (classdollar_identifier_node): New macro.
1506         (ID_CLASSDOLLAR_P): Likewise.
1507         * parse.y (build_dot_class_method): Use `classdollar_identifier_node.'
1508         (build_dot_class_method_invocation): Likewise.
1509         (find_applicable_accessible_methods_list): `class$' can't be
1510         inherited.
1511
1512 2001-02-09  Raja R Harinath  <harinath@cs.umn.edu>
1513
1514         * Make-lang.in (java/mangle_name.o): Add 'make' prereqs.
1515
1516 2001-02-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
1517
1518         * Manke-lang.in (JVGENMAIN_OBJS): Added `errors.o'
1519         * jvgenmain.c (error): Reversed 2001-02-09 patch. `error' is now
1520         gone.
1521
1522 2001-02-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
1523
1524         * mangle_name (append_unicode_mangled_name): Emit `_' or `U'
1525         outside of the `__U' sequence too.
1526         (unicode_mangling_length): Count `_' or `U' outside of the `__U'
1527         sequence too.
1528
1529 2001-02-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
1530
1531         * jvgenmain.c (error): Reversed 2001-02-01 deletion.
1532
1533 2001-02-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1534
1535         * Make-lang.in (JAVA_OBJS): Added java/mangle_name.o
1536         (JVGENMAIN_OBJS): Likewise.
1537         * java-tree.h (append_gpp_mangled_name): New prototype.
1538         * jcf-parse.c (ggc_mark_jcf): Argument now `void *.'
1539         Removed cast calling `gcc_add_root.'
1540         * jvgenmain.c (mangle_obstack): New global, initialized.
1541         (main): Use it.
1542         (do_mangle_class): Constify local `ptr.'
1543         Removed macro `MANGLE_NAME.' Removed cast in `for.' Call
1544         append_gpp_mangle_name and update `count' if necessary.
1545         Use `mangle_obstack.'
1546         * mangle.c (append_unicode_mangled_name): Removed.
1547         (append_gpp_mangled_name): Likewise.
1548         (unicode_mangling_length): Likewise.
1549         (mangle_member_name): Return type set to `void.'
1550         (mangle_field_decl): Don't append `U' in escaped names.
1551         (mangle_method_decl): Likewise.
1552         (mangle_member_name): Just use `append_gpp_mangled_name.'
1553         * mangle_name.c: New file.
1554
1555 2001-02-07  Per Bothner  <per@bothner.com>
1556
1557         * check-init.c (check_init):  Fix TRY_FINALLY_EXPR logic.
1558
1559         * check-init.c (check_init):  Don't call done_alternative after
1560         processing loop code, as a LOOP_EXPR never terminates normally.
1561
1562 2001-02-08  Joseph S. Myers  <jsm28@cam.ac.uk>
1563
1564         * gcj.texi: Change sources.redhat.com reference to gcc.gnu.org.
1565
1566 2001-02-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1567
1568         * jcf-parse.c (HANDLE_SYNTHETIC_ATTRIBUTE): Don't handle field
1569         DECLs.
1570
1571 2001-02-06  Tom Tromey  <tromey@redhat.com>
1572
1573         * lex.c (java_new_lexer): Longer error message.
1574
1575 2001-02-05  Jeff Sturm  <jeff.sturm@commerceone.com>
1576             Alexandre Petit-Bianco  <apbianco@cygnus.com>
1577
1578         * typeck.c (build_prim_array_type): Added leading comment.
1579         (build_java_array_type): Moved locals out of
1580         block. Always create the `data' field, fixed alignment to match
1581         C++.
1582
1583 2001-02-04  Tom Tromey  <tromey@redhat.com>
1584
1585         * expr.c (java_lang_expand_expr): Don't bother recomputing
1586         `length'.  Use rest_of_decl_compilation, not make_decl_rtl.
1587         Fixes PR java/1866.
1588
1589 2001-02-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1590
1591         * parse.y (process_imports): Save the original name of the import
1592         for better error report.
1593
1594 2001-02-04  Bryce McKinlay  <bryce@albatross.co.nz>
1595
1596         * Make-lang.in (jvspec.o): Add DRIVER_DEFINES to the list
1597         of macros used when compiling jvspec.c.
1598         * jvspec.c (lang_specific_driver): Link with the shared
1599         libgcc by default.
1600
1601 Sun Feb  4 15:52:44 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
1602
1603         * check-init.c (check_init): Call internal_error instead of fatal.
1604         * expr.c (java_lang_expand_expr): Likewise.
1605         * jcf-parse.c (get_constant): Likewise.
1606         * mangle.c (java_mangle_decl): Likewise.
1607         * parse.y (make_nested_class_name, java_complete_lhs): Likewise.
1608         (operator_string): Likewise.
1609         * check-init.c (check_init): Call abort instead of fatal.
1610         * class.c (build_class_ref): Likewise.
1611         * constants.c (write_constant_pool): Likewise.
1612         * decl.c (start_java_method): Likewise.
1613         * expr.c (push_type, java_stack_pop, java_stack_swap): Likewise.
1614         (java_stack_dup, encode_newarray_type): Likewise.
1615         (build_java_array_length_access): Likewise.
1616         (build_java_check_indexed_type, expand_java_pushc): Likewise.
1617         (build_java_soft_divmod, build_invokeinterface): Likewise.
1618         * java-tree.h (INNER_CLASS_P): Likewise.
1619         * jcf-parse.c (parse_signature, get_name_constant): Likewise.
1620         (give_name_to_class, get_class_constant): Likewise.
1621         * jcf-write.c (CHECK_PUT, CHECK_OP, get_access_flags): Likewise.
1622         (find_constant_index, generate_bytecode_conditional): Likewise.
1623         (generate_bytecode_insns, perform_relocations): Likewise.
1624         * lex.c (java_unget_unicode, java_lex): Likewise.
1625         * mangle.c (mangle_type, mangle_record_type): Likewise.
1626         (mangle_pointer_type, mangle_array_type, init_mangling): Likewise.
1627         (finish_mangling): Likewise.
1628         * parse.h (MARK_FINAL_PARMS): Likewise.
1629         * parse.y (pop_current_osb, unreachable_stmt_error): Likewise.
1630         (obtain_incomplete_type, java_complete_class): Likewise.
1631         (java_check_regular_methods, java_complete_expand_method): Likewise.
1632         (cut_identifier_in_qualified, check_deprecation): Likewise.
1633         (patch_invoke, find_applicable_accessible_methods_list): Likewise.
1634         (java_complete_lhs, lookup_name_in_blocks): Likewise.
1635         (check_final_variable_indirect_assignment, build_unaryop): Likewise.
1636         * typeck.c (set_local_type, parse_signature_type): Likewise.
1637         (parse_signature_string, build_java_signature): Likewise;
1638         (set_java_signature): Likewise.
1639         * verify.c (type_stack_dup, CHECK_PC_IN_RANGE): Likewise.
1640         * class.c (add_method): Call fatal_error instead of fatal.
1641         (build_static_field_ref): Likewise.
1642         * expr.c (build_known_method_ref, expand_invoke): Likewise.
1643         * jcf-parse.c (get_constant, jcf_parse): Likewise.
1644         * lex.c (java_new_new_lexer): Likewise.
1645         * jv-scan.c (main): Likewise.
1646         (fatal_error): Renamed from fatal.
1647         * jcf-parse.c (yyparse): Call fatal_io_error instead of
1648         pfatal_with_name.
1649         * jcf-parse.c (jcf_parse_source): Call fatal_io_error, not fatal.
1650         (yyparse): Likewise.
1651         * jcf-write.c (make_class_file_name, write_classfile): Likewise.
1652         * lex.c (java_get_line_col): Likewise.
1653         * jcf-parse.c (load_class): Make errors non-fatal.
1654         * lex.c (byteswap_init, need_byteswap): Only #ifdef HAVE_ICONV.
1655
1656 2001-02-01  Bryce McKinlay  <bryce@albatross.co.nz>
1657
1658         * jvgenmain.c (class_mangling_suffix): Remove unused string.
1659         (error): Remove unused function.
1660         (main): Don't use "__attribute__ alias" on generated class symbol.
1661
1662 2001-01-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1663
1664         * jcf-parse.c (init_jcf_parse): Added cast to ggc_add_root's last
1665         argument.
1666         * parse.y (finish_method_declaration): Code accounting for WFLed
1667         method DECL_NAMEs deleted.
1668         (check_abstract_method_definitions): Likewise.
1669         (resolve_type_during_patch): Layout resolved type.
1670         * typeck.c (lookup_do): Removed unused local.
1671
1672 2001-01-30  Bryce McKinlay  <bryce@albatross.co.nz>
1673
1674         * java-tree.h: Remove JTI_INTEGER_NEGATIVE_ONE_NODE.
1675         * decl.c (init_decl_processing): Use integer_minus_one_node, not
1676         integer_negative_one_node.
1677         * expr.c (build_java_binop): Likewise.
1678
1679 2001-01-24  Jeff Sturm  <jeff.sturm@commerceone.com>
1680
1681         * zextract.c (read_zip_archive): Read file_offset before writing
1682         zipd and consequently clobbering the header contents.
1683
1684 2001-01-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1685
1686         * Make-lang.in: Remove all dependencies on defaults.h.
1687         * decl.c: Don't include defaults.h.
1688         * expr.c: Likewise.
1689         * parse.y: Likewise.
1690
1691 2001-01-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1692
1693         * ChangeLog (2001-01-21): Fixed typo.
1694         * class.c (layout_class_method): Code accounting for WFLed
1695         method DECL_NAMEs deleted.
1696         * constant.c (find_methodref_index): Likewise.
1697         * decl.c (lang_mark_tree): Mark `wfl' field in struct lang_decl.
1698         * java-tree.h (DECL_FUNCTION_WFL): New macro.
1699         (struct lang_decl): New field `wfl'.
1700         (java_get_real_method_name): Prototype deleted.
1701         * mangle.c (mangle_method_decl): Code accounting for WFLed
1702         method DECL_NAMEs deleted.
1703         * parse.h (GET_METHOD_NAME): Macro deleted.
1704         * parse.y (reset_method_name): Deleted.
1705         (method_header): Set DECL_FUNCTION_WFL.
1706         (check_abstract_method_header): Code accounting for WFLed method
1707         DECL_NAMEs deleted.
1708         (java_get_real_method_name): Deleted.
1709         (check_method_redefinition): Code accounting for WFLed method
1710         DECL_NAMEs deleted. Use DECL_FUNCTION_WFL.
1711         (java_check_regular_methods): Likewise.
1712         (java_check_abstract_methods): Likewise.
1713         (java_expand_classes): Don't call `reset_method_name.'
1714         (search_applicable_method_list): Use DECL_NAMEs instead of
1715         GET_METHOD_NAME.
1716         * typeck.c (lookup_do): Code accounting for WFLed method
1717         DECL_NAMEs deleted.
1718
1719 2001-01-25  Richard Earnshaw  <rearnsha@arm.com>
1720
1721         * lex.c (java_read_char): Check for EOF from getc first.
1722
1723 2001-01-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1724
1725         * class.c (layout_class): Don't lay the superclass out if it's
1726         already being laid out.
1727         * jcf-parse.c (handle_innerclass_attribute): New function.
1728         (HANDLE_INNERCLASSES_ATTRIBUTE): Invoke
1729         handle_innerclasses_attribute.
1730         (jcf_parse): Don't load an innerclasses if it's already being
1731         laid out.
1732         * jcf-write.c (append_innerclass_attribute_entry): Static
1733         `anonymous_name' and its initialization deleted. `ocii' and `ini'
1734         to be zero for anonymous classes.
1735
1736 2001-01-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1737
1738         * class.c (set_constant_value): Set DECL_FIELD_FINAL_IUD if
1739         necessary.
1740         * jcf-parse.c (set_source_filename): Use
1741         MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC if necessary.
1742
1743 2001-01-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1744
1745         * expr.c (build_jni_stub): Set DECL_CONTEXT on `meth_var' so it
1746         gets a unique asm name.
1747
1748 2001-01-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1749
1750         * jcf-parse.c (HANDLE_END_METHODS): Nullify current_method.
1751         (HANDLE_START_FIELD): Invoke MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC
1752         if necessary.
1753         (HANDLE_SYNTHETIC_ATTRIBUTE): New macro.
1754         * jcf-reader.c (get_attribute): Handle `Synthetic' attribute.
1755         * parse.y (lookup_package_type_and_set_next): Deleted.
1756         (resolve_package): Removed unnecessary code.
1757         (find_applicable_accessible_methods_list): `finit$' can't be
1758         inherited.
1759         * verify.c (pop_argument_types): Added missing prototype.
1760
1761 2001-01-23  Bryce McKinlay  <bryce@albatross.co.nz>
1762
1763         * config-lang.in: Disable java by default.
1764
1765 2001-01-23  Tom Tromey  <tromey@redhat.com>
1766
1767         * gcj.texi (Copying): New node.
1768         Added copyright information.
1769
1770 2001-01-21  Per Bothner  <per@bothner.com>
1771
1772         Various fixes to allow compiling a compressed .jar/.zip archive.
1773         * zipfile.h (struct ZipFileCache):  Replace by struct ZipFile.
1774         (struct ZipFile):  Add fields name and next (from  ZipFileCache).
1775         (struct ZipDirectory):  New field zipf points to owning ZipFile.
1776         * jcf.h (struct ZipDirectory):  Add forward declaration.
1777         (struct JCF):   Declare zipd field to have type struct ZipDirectory.
1778         Remove seen_in_zip and zip_offset fields.
1779         (JCF_SEEN_IN_ZIP):  New macro.
1780         * zextract.c (read_zip_archive):  Set ZipDirectory's zipf field.
1781         * jcf-io.c:  Change all ZipFileCache to ZipFile.
1782         (read_zip_member):  New function.
1783         (open_in_zip):  Call read_zip_member.
1784         * jcf-parse.c (find_in_current_zip):  Remove function.
1785         (read_class):  Merge in find_in_current_zip functionality.
1786         Call read_zip_member if needed.
1787         (parse_zip_file_entries):  Use read_zip_member.
1788         (process_zip_dir):  Update for removed and added JCF fields.
1789         (jcf_figure_file_type):  Re-use, don't copy initial ZipFile struct.
1790
1791 2001-01-21  Per Bothner  <per@bothner.com>
1792
1793         Minor optimization of static ggc roots.
1794         * jcf-parse.c (parse_roots):  New static field.
1795         (current_field, current_method, current_file_list):  Replace by macros
1796         naming fields of parse_roots.
1797         (init_jcf_parse):  Combine 3 ggc_add_tree_root calls to 1.
1798         * class.c (class_roots):  New static field.
1799         (registered_class, fields_ident, info_ident, class_list):
1800         New macros naming fields of parse_roots.
1801         (build_static_field_ref):  Don't register roots here.
1802         (layout_class):  Static field list replaced by macro class_list.
1803         (init_class_processing):  Call ggc_add_tree_root for 4 roots.
1804         Initialize fields_ident and info_ident here.
1805
1806 2001-01-21  Per Bothner  <per@bothner.com>
1807
1808         * jcf-parse.c (ggc_mark_jcf):  New function.
1809         (init_jcf_parse):  Register current_jcf as ggc root.
1810
1811 2001-01-21  Per Bothner  <per@bothner.com>
1812
1813         * lang.c (put_decl_node):  Print method's name.
1814
1815 2001-01-21  Per Bothner  <per@bothner.com>
1816
1817         * verify.c (VERIFICATION_ERROR_WITH_INDEX):  New macro.
1818         (verify_jvm_instructions):  Use it, for better error messages on loads.
1819
1820 2001-01-21  Per Bothner  <per@bothner.com>
1821
1822         * verify.c (merge_type_state):  Still may have to merge even if
1823         LABEL_VERIFIED (label).
1824
1825 2001-01-21  Per Bothner  <per@bothner.com>
1826
1827         * parse.y (method_header):  Don't set the DECL_NAME of a FUNCTION_DECL
1828         to a EXPR_WITH_FILE_LOCATION - that is just too fragile and wrong.
1829
1830 2001-01-19  Per Bothner  <per@bothner.com>
1831
1832         * expr.c (pop_type_0):  Only return object_ptr_type_node on mismatch
1833         if expeting an interface type.  Refines Tom's change of 2000-09-12.
1834
1835 2001-01-18  Per Bothner  <per@bothner.com>
1836
1837         * gcj.texi (Input Options): Mention .java files.
1838
1839 2001-01-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1840
1841         * lang-options.h (-Wunsupported-jdk11): Removed.
1842         * lang.c (flag_not_overriding): Deleted.
1843         (flag_static_local_jdk1_1): Likewise.
1844         (lang_W_options): Removed "unsupported-jdk11" entry.
1845         * parse.y (java_check_methods): Removed dead code.
1846
1847 2001-01-17  Tom Tromey  <tromey@redhat.com>
1848
1849         Changes suggested by Per Bothner:
1850         * gcj.texi (Input Options): Don't mention input files.
1851         (Code Generation): Updated --main information.
1852         (Invoking jcf-dump): Mention that --javap is incomplete.
1853         From Alexandre Petit-Bianco:
1854         (Warnings): Don't mention -Wunsupported-jdk11.
1855         My stuff:
1856         (Compatibility): Mention JDK 1.2-ness of libraries.
1857         (Resources): Mention resources used when writing gcj.
1858
1859 2001-01-17  Tom Tromey  <tromey@redhat.com>
1860
1861         * gcj.texi: New file.
1862         * Make-lang.in ($(srcdir)/java/gcj.info): New target.
1863         (java.info): Depend on gcj.info.
1864         (java/gcj.dvi): New target.
1865         (java.dvi): Depend on gcj.dvi.
1866         (java.install-info): Wrote.
1867
1868 2001-01-16  Jeff Sturm  <jeff.sturm@appnet.com>
1869
1870         * expr.c (java_lang_expand_expr): Use TREE_SYMBOL_REFERENCED after
1871         having called make_decl_rtl.
1872
1873 2001-01-14  Per Bothner  <per@bothner.com>
1874
1875         Various patches to emit better messages on verification errors.
1876         * expr.c (push_type_0):  Return error indication on stack overflow,
1877         instead of callinfg fatal.
1878         (push_type):  Now just call push_type_0 (nd fatal on overflow).
1879         (pop_type_0):  Return detailed error message (in a char** argument).
1880         (pop_type):  If pop_type_0 fails, print error message.
1881         (pop_argument_types):  Moved to verify.c.
1882         * verify.c (pop_argument_types):  Moved from expr.c.
1883         Return a (possible) error message, rather than void.
1884         (POP_TYPE, POP_TYPE_CONV, PUSH_TYPE, PUSH_PENDING):  New macros.
1885         (verify_jvm_instruction):  Use new macros, improving error messages.
1886         For case OPCODE_astore use object_ptr_type_node.
1887         * java-tree.h (TYPE_UNDERFLOW, TYPE_UNEXPECTED):  New macros.
1888         (pop_type_0, push_type_0, pop_argument_types):  Update accordingly.
1889
1890         * parse.y (java_complete_lhs case EXPR_WITH_FILE_LOCATION): If body is
1891         constant, return body without wrapper.  (Improves constant folding.)
1892         * lex.c (build_wfl_node):  Clear TREE_TYPE from returned node.
1893
1894 2001-01-13  Per Bothner  <per@bothner.com>
1895
1896         * expr.c (expand_java_field_op):  Assigning to a final field outside
1897         an initializer does not violate JVM spec, so should be warning, not
1898         error.  (Sun's verifier does not complain - though MicroSoft's does.)
1899
1900 2001-01-12  Joseph S. Myers  <jsm28@cam.ac.uk>
1901
1902         * gjavah.c (version), jcf-dump.c (version): Update copyright year
1903         to 2001.
1904
1905 2001-01-11  Bryce McKinlay  <bryce@albatross.co.nz>
1906
1907         * parse.y (resolve_expression_name): Permit instance variables from
1908         enclosing context in super constructor call.
1909         (resolve_qualified_expression_name): Permit enclosing class's qualified
1910         "this" in super constructor call.
1911
1912 2001-01-10  Mark Mitchell  <mark@codesourcery.com>
1913
1914         * class.c (build_utf8_ref): Remove last argument in call to
1915         make_decl_rtl; use make_function_rtl instead of make_decl_rtl.
1916         (build_class_ref): Likewise.
1917         (build_static_field_ref): Likewise.
1918         (get_dispatch_table): Likewise.
1919         (layout_class_method): Likewise.
1920         (emit_register_classes): Likewise.
1921         * constants.c (build_constant_data_ref): Likewise.
1922         * decl.c (builtin_function): Likewise.
1923         (create_primitive_vtable): Likewise.
1924         * expr.c (build_known_method_def): Likewise.
1925         (build_jni_stub): Likewise.
1926         (java_lang_expand_expr): Likewise.
1927
1928 2001-01-10  Tom Tromey  <tromey@redhat.com>
1929
1930         * jvspec.c (jvgenmain_spec): Omit -fencoding from cc1 invocation.
1931
1932 2001-01-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1933
1934         * java-tree.h (lang_printable_name_wls): New prototype.
1935         * lang.c (put_decl_name): Removed dead code. Use DECL_CONTEXT
1936         rather than `current_class' to print type name. Don't prepend type
1937         names when printing constructor names.
1938         (lang_printable_name_wls): New function.
1939         * jcf-parse.c (jcf_parse_source): Pass NULL `file' argument to
1940         `build_expr_wfl', alway set EXPR_WFL_FILENAME_NODE.
1941         * parse.y (patch_method_invocation): Message tuned for constructors.
1942         (not_accessible_p): Grant `private' access from within
1943         enclosing contexts.
1944
1945 2001-01-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
1946
1947         All files with updated copyright when applicable.
1948         * Make-lang.in (JVGENMAIN_OBS): Removed java/mangle.o.
1949         * class.c (mangle_class_field): Function removed.
1950         (append_gpp_mangled_type, mangle_static_field, mangle_field): Likewise.
1951         (utf8_cmp, cxx_keyword_p): Moved to lex.c.
1952         (build_class_ref): Call `java_mangle_class_field' instead of
1953         `mangle_class_field.'
1954         (build_dtable_decl): Rewritten to call `java_mangle_vtable.'
1955         (layout_class): Call `java_mangle_decl' instead of
1956         `mangle_static_field.'
1957         (cxx_keywords): Initialized static array moved to `lex.c.'
1958         (layout_class_method): Changed leading comment. Simplified to
1959         call `java_mangle_decl.' Local `ptr' moved in for loop body.
1960         * decl.c (lang_mark_tree): Mark field `package_list.'
1961         * java-tree.h (TYPE_PACKAGE_LIST): New macro.
1962         (struct lang_type): New field `package_list.'
1963         (unicode_mangling_length): Prototype removed.
1964         (append_gpp_mangled_name, append_gpp_mangled_classtype,
1965         emit_unicode_mangled_name): Likewise.
1966         (cxx_keyword_p): New prototype.
1967         (java_mangle_decl, java_mangle_class_field,
1968         java_mangle_class_field_from_string, java_mangle_vtable): Likewise.
1969         * jcf-parse.c (jcf_parse_source): Constify `file' argument to
1970         `build_expr_wfl.'
1971         * jvgenmain.c (main_method_prefix): Global variable removed.
1972         (main_method_suffix): Likewise.
1973         (do_mangle_classname): New function.
1974         (main): Call it. Format changed to accomodate new mangling scheme.
1975         * lex.c: (utf8_cmp): Conditionally prototyped.
1976         (cxx_keywords): Moved from class.c, conditionally defined.
1977         (utf8_cmp, cxx_keyword_p): Likewise.
1978         * mangle.c (obstack.h, ggc.h): Included.
1979         (mangle_field_decl): New function.
1980         (mangle_method_decl, mangle_type, mangle_pointer_type,
1981         mangle_array_type, mangle_record_type,
1982         find_compression_pointer_match, find_compression_array_match,
1983         find_compression_record_match,
1984         find_compression_array_template_match, set_type_package_list,
1985         entry_match_pointer_p, emit_compression_string, init_mangling,
1986         finish_mangling, compression_table_add, mangle_member_name): Likewise.
1987         (mangle_obstack): New global.
1988         (MANGLE_RAW_STRING): New macro.
1989         (unicode_mangling_length): Turned static.
1990         (append_unicode_mangled_name): Renamed from
1991         `emit_unicode_mangled_name.'  Turned static. `mangle_obstack'
1992         replaces `obstack', removed from the parameter list.
1993         (append_gpp_mangled_name): Turned static. `mangle_obstack'
1994         replaces parameter `obstack', removed from the parameter list. Call
1995         `append_unicode_mangled_name' instead of `emit_unicode_mangled_name.
1996         (append_gpp_mangled_classtype): Removed.
1997         (compression_table, compression_next): New static variables.
1998         * parse.y (temporary_obstack): Extern declaration removed.
1999
2000 2001-01-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2001
2002         * parse.y (patch_binop): Compute missing type in error situations.
2003
2004 2001-01-05  Bryce McKinlay  <bryce@albatross.co.nz>
2005
2006         * class.c (make_class_data): Push initial value for "arrayclass".
2007         * decl.c (init_decl_processing): Add new class field "arrayclass".
2008
2009 2001-01-05  Bryce McKinlay  <bryce@albatross.co.nz>
2010
2011         From patha@softlab.ericsson.se:
2012         * parse.y (switch_label): Use build, not build1, to construct
2013         DEFAULT_EXPR.
2014
2015 2001-01-04  Neil Booth  <neil@daikokuya.demon.co.uk>
2016
2017         * lang.c (lang_decode_option): Change -MA to -MP.
2018         * jcf-depend.c (jcf_dependency_add_target, jcf_dependency_set_target):
2019         Update to new prototype; do quote targets.
2020         (jcf_dependency_write): Update.
2021
2022 2000-12-22  Bryce McKinlay  <bryce@albatross.co.nz>
2023
2024         Shorten primitive array allocation path:
2025         * decl.c (init_decl_processing): Use _Jv_NewPrimArray not _Jv_NewArray
2026         to create new primitive arrays.
2027         * expr.c (build_newarray): If generating native code, call
2028         soft_newarray_node with a reference to the primitive TYPE identifier
2029         instead of type_value.
2030
2031 2000-12-17  Bryce McKinlay  <bryce@albatross.co.nz>
2032
2033         Fix for PRs gcj/312 and gcj/253:
2034         * parse.y (valid_ref_assignconv_cast_p): Load classes for source and
2035         dest if they arn't already.
2036         * class.c (layout_class): Call maybe_layout_super_class on
2037         superinterfaces also, but only if compiling from bytecode.
2038
2039         Fix for PR gcj/373:
2040         * parse.y (create_class): Set ACC_STATIC if class is declared in an
2041         interface.
2042
2043 2000-12-15  Tom Tromey  <tromey@redhat.com>
2044
2045         * jcf-parse.c (jcf_parse_source): Set wfl_operator if not already
2046         set.
2047
2048 2000-12-14  Andrew Haley  <aph@redhat.com>
2049
2050         * boehm.c (mark_reference_fields): Change test to correctly detect
2051         bitmap overflow.
2052
2053 2000-12-15  Andreas Jaeger  <aj@suse.de>
2054
2055         * config-lang.in (lang_dirs): Added.
2056
2057 2000-12-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2058
2059         * parse.y (end_artificial_method_body): Fixed undefined behavior.
2060         Credits go to rth for finding it.
2061
2062 2000-12-13  Mike Stump  <mrs@wrs.com>
2063
2064         * parse.y (check_static_final_variable_assignment_flag): Fix spelling.
2065
2066 2000-11-07  Tom Tromey  <tromey@cygnus.com>
2067
2068         * Make-lang.in (JAVA_LEX_C): Added chartables.h.
2069         * lex.c (java_ignorable_control_p): Removed.
2070         (java_letter_or_digit_p): Removed.
2071         (java_start_char_p): New function.
2072         (java_read_char): Return `int', not `unicode_t'.  Changed
2073         callers.
2074         (java_read_unicode): Likewise.
2075         (java_read_unicode_collapsing_terminators): Likewise.
2076         (java_get_unicode): Likewise.
2077         (java_new_lexer): Initialize hit_eof.
2078         (java_parse_end_comment): Take `int' argument.
2079         (java_parse_doc_section): Likewise.
2080         (java_parse_escape_sequence): Don't allow backlash-newline.
2081         Return `int'.
2082         * lex.h (JAVA_DIGIT_P): Removed.
2083         (_JAVA_LETTER_OR_DIGIT_P): Removed.
2084         (_JAVA_IDENTIFIER_IGNORABLE): Removed.
2085         (JAVA_START_CHAR_P): Renamed from JAVA_ID_CHAR_P.
2086         (JAVA_PART_CHAR_P): New macro.
2087         (UEOF): Now -1.
2088         (JAVA_CHAR_ERROR): Now -2.
2089         (java_lexer): New field `hit_eof'.
2090         * chartables.h: New file.
2091         * gen-table.pl: new file.
2092
2093 2000-11-20  Tom Tromey  <tromey@cygnus.com>
2094             Alexandre Petit-Bianco  <apbianco@cygnus.com>
2095
2096         * parse.y (java_complete_lhs): Only allow compound assignment of
2097         reference type if type is String.
2098
2099 2000-12-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2100
2101         * Make-lang.in (java/jcf-path.o:): libgcj.jar replaces libgcj.zip.
2102         jcf-path.c: Likewise.
2103
2104 2000-12-09  Anthony Green  <green@redhat.com>
2105
2106         * zipfile.h (ZipDirectory): Declare size, uncompressed_size,
2107         filestart and filename_length as int values.
2108
2109 2000-12-07  Mo DeJong  <mdejong@redhat.com>
2110
2111         * jcf-io.c (find_class): Correct the logic that tests to see if a
2112         .java file is newer than its .class file. The compiler was
2113         incorrectly printing a warning when file mod times were equal.
2114
2115 2000-12-07  Zack Weinberg  <zack@wolery.stanford.edu>
2116
2117         * jvgenmain.c: Use ISPRINT not isascii.
2118
2119 2000-12-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2120
2121         * parse.y (end_artificial_method_body): Fixed typo.
2122
2123 2000-12-04  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2124
2125         * parse.y (patch_method_invocation): Pick the correct enclosing
2126         context when creating inner class instances.
2127         Fixes gcj/332.
2128
2129 2000-11-26  Joseph S. Myers  <jsm28@cam.ac.uk>
2130
2131         * gjavah.c (version), jcf-dump.c (version), jv-scan.c (version):
2132         Update copyright year to 2000.
2133
2134 2000-11-23  Anthony Green  <green@redhat.com>
2135
2136         * jcf-parse.c (init_jcf_parse): Register current_file_list root.
2137         Move current_file_list out of yyparse and make it static.
2138
2139         * expr.c: Declare quick_stack and tree_list_free_list as static
2140         (init_expr_processing): Register quick_stack and
2141         tree_list_free_list roots.
2142
2143 2000-11-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2144
2145         * parse.y (build_outer_field_access): New local `decl_ctx', use
2146         it. Check for field's context and current class immediate outer
2147         context inheritance.
2148         (outer_field_access_p): Consider fields inherited from the last
2149         enclosing context.
2150         (build_access_to_thisn): Stop at the last enclosing context if
2151         necessary.
2152         Fixes gcj/367.
2153
2154 Thu Nov 23 02:19:14 2000  J"orn Rennecke <amylaar@redhat.com>
2155
2156         * Make-lang.in (jvspec.o): Depend on $(CONFIG_H).
2157
2158 2000-11-22  Bryce McKinlay  <bryce@albatross.co.nz>
2159
2160         * jcf-parse.c (get_constant): Call UT8_CHAR_LENGTH on `utf8', not the
2161         scratch buffer.
2162
2163 2000-11-20  Tom Tromey  <tromey@cygnus.com>
2164
2165         * jv-scan.c (help): Document --complexity.
2166         (options): Added --complexity.
2167         (flag_complexity): New global.
2168         (main): Call `report'.
2169         * parse-scan.y (complexity): New global.
2170         (if_then_statement, if_then_else_statement,
2171         if_then_else_statement_nsi, switch_block_statement_group,
2172         while_expression, do_statement, for_begin, continue_statement,
2173         throw_statement, catch_clause, finally, method_invocation,
2174         conditional_and_expression, conditional_or_expression,
2175         conditional_expression): Update complexity.
2176         (reset_report): Reset complexity.
2177         (report): New function.
2178
2179 2000-11-20  Tom Tromey  <tromey@cygnus.com>
2180
2181         * lex.c (yylex): Added STRICT_TK case.
2182         * parse.y (STRICT_TK): Added.
2183         * parse-scan.y (STRICT_TK): Added.
2184         * Make-lang.in ($(srcdir)/java/keyword.h): Added missing `\' and
2185         `;'.  Use 4, not 3, with -k option.  Correctly rename resulting
2186         file.
2187         * keyword.h: Rebuilt.
2188         * keyword.gperf (strictfp): Added.
2189
2190 2000-11-20  Tom Tromey  <tromey@cygnus.com>
2191
2192         * lex.c (yylex): Recognize floating point constants with leading
2193         0.
2194
2195 2000-11-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2196
2197         * java-tree.h (cyclic_inheritance_report): Constify.
2198         * parse.y (cyclic_inheritance_report): Likewise.
2199
2200 2000-11-17  Zack Weinberg  <zack@wolery.stanford.edu>
2201
2202         * parse.y (goal): Remove call to ggc_add_string_root.
2203
2204 2000-11-16  Zack Weinberg  <zack@wolery.stanford.edu>
2205
2206         * jcf-parse.c (get_constant), parse.y (do_merge_string_cste):
2207         Create string in scratch buffer, then pass to build_string.
2208
2209 2000-11-13  Joseph S. Myers  <jsm28@cam.ac.uk>
2210
2211         * parse.y (issue_warning_error_from_context): Add
2212         ATTRIBUTE_PRINTF.
2213
2214 2000-11-11  Anthony Green  <green@redhat.com>
2215
2216         * jcf-parse.c (process_zip_dir): Add finput parameter.
2217         (jcf_figure_file_type): Call process_zip_dir with appropriate
2218         argument.
2219
2220 2000-11-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2221
2222         * decl.c (copy_lang_decl): Use memcpy, not bcopy.
2223         * jcf-parse.c (jcf_figure_file_type): Likewise.
2224
2225 2000-11-09  Joseph S. Myers  <jsm28@cam.ac.uk>
2226
2227         * parse.y (create_new_parser_context): Use memset () instead of
2228         bzero ().
2229
2230 2000-11-08  Tom Tromey  <tromey@cygnus.com>
2231
2232         * gjavah.c (process_file): Only include gcj/cni.h when generating
2233         CNI stubs.
2234
2235 2000-11-07  Joseph S. Myers  <jsm28@cam.ac.uk>
2236
2237         * expr.c (note_instructions), jcf-io.c (find_class), jcf-parse.c
2238         (init_outgoing_cpool), lex.c (java_init_lex): Use memset ()
2239         instead of bzero ().
2240
2241 2000-11-05  Tom Tromey  <tromey@cygnus.com>
2242
2243         * lex.h (JAVA_FLOAT_RANGE_ERROR): Typo fix.
2244         * lex.c (IS_ZERO): New define.
2245         (java_perform_atof): Error on floating point underflow.
2246
2247 2000-11-04  Tom Tromey  <tromey@cygnus.com>
2248
2249         * lex.c (java_parse_escape_sequence): Only read two octal
2250         characters if the first one is greater than 3.  Don't allow
2251         "octal" numbers to include the digits 8 or 9.
2252
2253 2000-11-05  Joseph S. Myers  <jsm28@cam.ac.uk>
2254
2255         * Make-lang.in (java.distdir): Remove.
2256
2257 2000-11-03  Tom Tromey  <tromey@cygnus.com>
2258
2259         * Make-lang.in (java.dvi): New target.
2260         Partial fix for PR other/567.
2261
2262         * lang-options.h: Mention -Wout-of-date.
2263         * jcf-dump.c (flag_newer): New global.
2264         * gjavah.c (flag_newer): New global.
2265         * jcf-io.c (find_class): Only warn when flag_newer set.
2266         * lang.c (flag_newer): New global.
2267         (struct string_option): New declaration.
2268         (lang_W_options): New global.
2269         (process_option_with_no): New function.
2270         (lang_decode_option): Use it.
2271
2272         * class.c (cxx_keyword_p): Accept keywords with trailing `$'s.
2273         * gjavah.c (cxx_keyword_subst): Handle any number of trailing
2274         `$'.
2275
2276         * lex.h (_JAVA_IDENTIFIER_IGNORABLE): New macro.
2277         (JAVA_ID_CHAR_P): Also try java_ignorable_control_p.
2278         * lex.c (java_read_unicode): Removed `term_context' argument.
2279         Recognize any number of `u' in `\u'.
2280         (java_read_unicode_collapsing_terminators): New function.
2281         (java_get_unicode): Use it.
2282         (java_lineterminator): Removed.
2283         (yylex): Produce error if character literal is newline or single
2284         quote.  Return if eof found in middle of `//' comment.  EOF in
2285         `//' comment is only an error if pedantic.
2286         (java_ignorable_control_p): New function.
2287         (java_parse_end_comment): Return if eof found in middle of
2288         comment.
2289         Include flags.h.
2290         * jv-scan.c (pedantic): New global.
2291
2292 2000-10-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2293
2294         * parse.y (outer_field_access_p): Inherited fields aren't
2295         consider outer fields.
2296         (maybe_build_thisn_access_method): Use
2297         PURE_INNER_CLASS_TYPE_P instead of INNER_CLASS_TYPE_P.
2298         (resolve_expression_name): Trigger an error if a static field
2299         is being accessed as an outer field.
2300
2301 2000-10-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2302
2303         * Make-lang.in (LIBGCJ_ZIP_FILE): Define with `$(prefix)'.
2304         Fixes gcj/365.
2305
2306 2000-10-27  Zack Weinberg  <zack@wolery.stanford.edu>
2307
2308         * Make-lang.in: Move all build rules here from Makefile.in,
2309         adapt to new context.  Wrap all rules that change the current
2310         directory in parentheses.  Expunge all references to $(P).
2311         When one command depends on another and they're run all at
2312         once, use && to separate them, not ;.  Add OUTPUT_OPTION to
2313         all object-file generation rules.  Delete obsolete variables.
2314
2315         * Makefile.in: Delete.
2316         * config-lang.in: Delete outputs= line.
2317
2318 2000-10-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2319
2320         * parse.y (patch_method_invocation): NULLify this_arg when already
2321         inserted.
2322         (maybe_use_access_method): Handle call to methods unrelated to the
2323         current class. Fixed comment.
2324         Fixes gcj/361.
2325
2326 2000-10-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2327
2328        * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Check inherited type in
2329        scope.
2330
2331 2000-10-24  Tom Tromey  <tromey@cygnus.com>
2332
2333         * lex.c (java_new_lexer): Initialize new fields.  Work around
2334         broken iconv() implementations.
2335         (java_read_char): Swap bytes if required.  Use fallback decoder if
2336         required.
2337         (byteswap_init, need_byteswap): New globals.
2338         (java_destroy_lexer): Only close iconv handle if it is in use.
2339         * lex.h (java_lexer): New fields read_anything, byte_swap,
2340         use_fallback.
2341         Made out_buffer unsigned.
2342
2343 2000-10-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2344
2345         * parse.y (register_incomplete_type): Include JDEP_FIELD as a case
2346         where an enclosing context can be set on the jdep.
2347         (do_resolve_class): Fixed identation.
2348
2349 2000-10-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2350
2351         * gjavah.c (NEED_PEEK_ATTRIBUTE, NEED_SKIP_ATTRIBUTE): Define
2352
2353         * jcf-reader.c (peek_attribute, skip_attribute): Only define
2354         when requested.
2355
2356         * parse.h (yyerror): If JC1_LITE, mark with ATTRIBUTE_NORETURN.
2357
2358         * verify.c (CHECK_PC_IN_RANGE): Cast result of stmt-expr to void.
2359
2360 2000-10-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2361
2362         * jcf-write.c (OP1): Update `last_bc'.
2363         (struct jcf_block): Fixed indentation and typo in comments.  New
2364         field `last_bc'.
2365         (generate_bytecode_insns): Insert `nop' if `jsr' immediately
2366         follows `monitorenter'.
2367         * parse.y (patch_synchronized_statement): New local `tmp'. Call
2368         `patch_string'.
2369         Fixes gcj/232.
2370
2371 2000-10-16  Tom Tromey  <tromey@cygnus.com>
2372
2373         * jvspec.c (lang_specific_driver): Recognize -MF and -MT.
2374         * lang-specs.h: Added %{MA}, %{MF*}, %{MT*}.
2375         * lang-options.h: Added -MA, -MT, -MF..
2376         * lang.c (lang_decode_option): Recognize -MA, -MT, -MF.
2377         (DEPEND_TARGET_SET): New macro.
2378         (DEPEND_FILE_ALREADY_SET): Likewise.
2379         (init_parse): Handle new flags.
2380         * jcf.h (jcf_dependency_print_dummies): Declare.
2381         * Make-lang.in (s-java): Added mkdeps.o.
2382         * Makefile.in (BACKEND): Added mkdeps.o.
2383         (../gcjh$(exeext)): Added mkdeps.o.
2384         (../jcf-dump$(exeext)): Added mkdeps.o.
2385         * jcf-depend.c: Include mkdeps.h.
2386         (struct entry, dependencies, targets, MAX_OUTPUT_COLUMNS,
2387         add_entry): Removed.
2388         (jcf_dependency_reset): Rewrote.
2389         (dependencies): New global.
2390         (jcf_dependency_set_target): Rewrote.
2391         (jcf_dependency_add_target): Likewise.
2392         (jcf_dependency_add_file): Likewise.
2393         (munge): Removed.
2394         (print_ents): Removed.
2395         (jcf_dependency_write): Rewrote.
2396         (print_dummies): New global.
2397         (jcf_dependency_print_dummies): New function
2398         (jcf_dependency_write): Call deps_dummy_targets if required.
2399
2400 2000-10-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2401
2402         * gjavah.c (add_class_decl): Removed unused variables `tname',
2403         `tlen' and `name_index'.
2404         * java-tree.h (BUILD_FILENAME_IDENTIFIER_NODE): New macro.
2405         * jcf-parse.c (jcf_parse_source): Use it and set EXPR_WFL_FILENAME
2406         in `wfl_operator' with value.
2407         (yyparse): Use BUILD_FILENAME_IDENTIFIER_NODE.
2408         (jcf_figure_file_type): Fixed identation.
2409         * lex.c (java_get_line_col): Use EOF. Tuned `^' placement.
2410         * parse.y (analyze_clinit_body): New function.
2411         (static_initializer:): Reset `current_static_block'.
2412         (java_parser_context_restore_global): Set EXPR_WFL_FIILENAME_NODE in
2413         `wfl_operator' with new value.
2414         (lookup_cl): Use EXPR_WFL_FILENAME.
2415         (maybe_yank_clinit): Handle bogus <clinit> bodies, call
2416         analyze_clinit_body.
2417         (build_outer_field_access): Access to this$<n> built from
2418         current_class, not its outer context.
2419         (build_access_to_thisn): Fixed leading comment. Tidied things up.
2420         (resolve_qualified_expression_name): Handle `T.this' and `T.this.f()'.
2421         (patch_method_invocation): Use `is_static_flag' when already
2422         initialized.
2423         (patch_newarray): Removed assignment in ternary operator.
2424
2425 2000-10-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2426
2427         * except.c (free_eh_ranges): Don't free `whole_range'.
2428
2429 2000-10-15  Anthony Green  <green@redhat.com>
2430
2431         * decl.c (init_decl_processing): Call init_class_processing before
2432         anything else.
2433
2434 2000-10-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2435
2436         * check-init.c (check_init): Fixed leading comment. Use
2437         LOCAL_FINAL_P.
2438         * decl.c (push_jvm_slot): Use MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC.
2439         (give_name_to_locals): Likewise.
2440         (lang_mark_tree): Handle FIELD_DECL. Register `am' and `wfl'
2441         fields in lang_decl_var.
2442         * java-tree.h (DECL_FUNCTION_SYNTHETIC_CTOR,
2443         DECL_FUNCTION_ALL_FINAL_INITIALIZED): New macros.
2444         (FIELD_INNER_ACCESS): Removed ugly cast, macro rewritten.
2445         (FIELD_INNER_ACCESS_P, DECL_FIELD_FINAL_IUD, DECL_FIELD_FINAL_LIIC,
2446         DECL_FIELD_FINAL_IERR, DECL_FIELD_FINAL_WFL): New macros.
2447         (LOCAL_FINAL): Rewritten.
2448         (LOCAL_FINAL_P, FINAL_VARIABLE_P, CLASS_FINAL_VARIABLE_P
2449         MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC): New macros.
2450         (struct lang_decl): Fixed comments. Added `synthetic_ctor' and
2451         `init_final' fields.
2452         (struct lang_decl_var): Fixed leading comment. Added `am', `wfl',
2453         `final_uid', `final_liic', `final_ierr' and `local_final' fields.
2454         (TYPE_HAS_FINAL_VARIABLE): New macro.
2455         (struct lang_type): Added `afv' field.
2456         * parse.y (check_static_final_variable_assignment_flag): New function.
2457         (reset_static_final_variable_assignment_flag): Likewise.
2458         (check_final_variable_local_assignment_flag): Likewise.
2459         (reset_final_variable_local_assignment_flag): Likewise.
2460         (check_final_variable_indirect_assignment): Likewise.
2461         (check_final_variable_global_assignment_flag): Likewise.
2462         (add_inner_class_fields): Use LOCAL_FINAL_P.
2463         (register_fields): Handle local finals and final variables.
2464         (craft_constructor): Set DECL_FUNCTION_SYNTHETIC_CTOR.
2465         (declare_local_variables): Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC.
2466         (source_start_java_method): Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC
2467         on local finals.
2468         (java_complete_expand_methods): Loop to set
2469         TYPE_HAS_FINAL_VARIABLE. Call
2470         `reset_final_variable_local_assignment_flag' and
2471         `check_final_variable_local_assignment_flag' accordingly before
2472         and after constructor expansion. Call
2473         `reset_static_final_variable_assignment_flag'
2474         before expanding <clinit> and after call
2475         `check_static_final_variable_assignment_flag' if the
2476         current_class isn't an interface. After all methods have been
2477         expanded, call `check_final_variable_global_assignment_flag' and
2478         `check_static_final_variable_assignment_flag' if the current class
2479         is an interface.
2480         (maybe_yank_clinit): Fixed typo in comment.
2481         (build_outer_field_access_methods): Removed old sanity check. Use
2482         FIELD_INNER_ACCESS_P. Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC.
2483         Don't create access methods for finals.
2484         (resolve_field_access): Use `CLASS_FINAL_VARIABLE_P'.
2485         (java_complete_tree): Likewise. Reset DECL_FIELD_FINAL_IUD if
2486         existing DECL_INIT has been processed.
2487         (java_complete_lhs): Likewise.
2488         (check_final_assignment): Filter input on `lvalue''s TREE_CODE.
2489         Test for COMPONENT_REF to get to the FIELD_DECL. Implemented new
2490         logic.
2491         (patch_assignment): Use LOCAL_FINAL_P.
2492         (fold_constant_for_init): Reset DECL_FIELD_FINAL_IUD if
2493         DECL_INITIAL is nullified.
2494         Fixes gcj/163.
2495
2496 2000-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2497
2498         * Make-lang.in (parse.c, parse-scan.c): Create atomically.
2499
2500         * Makefile.in (parse.c, parse-scan.c): Likewise.
2501
2502 2000-10-12  Mark Mitchell  <mark@codesourcery.com>
2503
2504         * class.c (temporary_obstack): Remove.
2505         (make_class): Don't mess with obstascks.
2506         (push_class): Likewise.
2507         (set_super_info): Likewise.
2508         (add_method_1): Likewise.
2509         (add_method): Likewise.
2510         (add_field): Likewise.
2511         (build_utf8_ref): Likewise.
2512         (build_class_ref): Likewise.
2513         (build_static_field_ref): Likewise.
2514         (finish_class): Likewise.
2515         (push_super_field): Likewise.
2516         (layout_class): Likewise.
2517         (layout_class_methods): Likewise.
2518         (init_class_processing): Likewise.
2519         * constants.c (get_tag_node): Likewise.
2520         (build_constant_data_ref): Likewise.
2521         * decl.c (ggc_p): Remove.
2522         (copy_lang_decl): Use ggc_alloc.
2523         (complete_start_java_method): Don't mess with obstacks.
2524         (start_java_method): Likewise.
2525         (end_java_method): Likewise.
2526         * except.c (link_handler): Use xmalloc.
2527         (free_eh_ranges): New function.
2528         (method_init_exceptions): Use it.
2529         (add_handler): Use xmalloc.
2530         (expand_start_java_handler): Don't mess with obstacks.
2531         (prepare_eh_table_type): Likewise.
2532         (expand_end_java_handler): Likewise.
2533         * expr.c (push_value): Likewise.
2534         (create_label_decl): Likewise.
2535         (build_jni_stub): Likewise.
2536         (java_lang_expand_expr): Likewise.
2537         (note_instructions): Use xrealloc.
2538         (java_push_constant_from_pool): Don't mess with obstacks.
2539         (process_jvm_instruction): Likewise.
2540         * java-tree.h (cyclic_inheritance_report): Remove duplicate
2541         declaration.
2542         * jcf-parse.c (get_constant): Don't mess with obstacks.
2543         (read_class): Likewise.
2544         (jcf_parse): Likewise.
2545         * lex.c (expresion_obstack): Remove.
2546         (java_lex): Don't use obstack_free.
2547         * parse.h (exit_java_complete_class): Don't mess with obstacks.
2548         (MANGLE_OUTER_LOCAL_VARIABLE_NAME): Adjust.
2549         (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID): Likewise.
2550         (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_STRING): Likewise.
2551         * parse.y (gaol): Add more GC roots.
2552         (add_inner_class_fields): Adjust calls to MANGLE_* macros.
2553         (lookup_field_wrapper): Likewise.
2554         (obtain_incomplete_type): Don't mess with obstacks.
2555         (build_alias_initializer_paramter_list): Adjust calls to MANGLE_*
2556         macros.
2557         (craft_constructor): Don't mess with obstacks.
2558         (safe_layout_class): Likewise.
2559         (java_complete_class): Likewise.
2560         (source_end_java_method): Likewise.
2561         (build_outer_field_access_methods): Likewise.
2562         (build_outer_method_access_method): Likewise.
2563         (maybe_build_thisn_access_method): Likewise.
2564         (build_dot_class_method_invocation): Likewise.
2565         (java_complete_tree): Likewise.
2566         (java_complete_lhs): Likewise.
2567         (do_merge_string_cste): Likewise.
2568         (patch_string_cst): Likewise.
2569         (array_constructor_check_entry): Likewise.
2570         * typeck.c (build_java_array_type): Likewise.
2571         (parse_signature_string): Likewise.
2572         (build_java_signature): Likewise.
2573
2574 2000-10-12  Tom Tromey  <tromey@cygnus.com>
2575
2576         Fix for PR gcj/356:
2577         * gjavah.c (add_class_decl): Don't special-case inner classes.
2578         (add_namelet): Likewise.
2579
2580 2000-10-11  Rodney Brown  <RodneyBrown@mynd.com>
2581
2582         * java-tree.h: Constify current_encoding.
2583         * lang.c: Constify current_encoding.
2584
2585 2000-10-10  Jeff Sturm  <jeff.sturm@appnet.com>
2586
2587         * jvgenmain.c (class_mangling_suffix): Omit `.'.
2588         (main): Use `$' when NO_DOLLAR_IN_LABEL is not set, otherwise `.'.
2589
2590 2000-10-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2591
2592         * expr.c (java_lang_expand_expr): Reinstall 1999-08-14 Anthony's
2593         patch. Fixes gcj/340.
2594
2595 2000-10-10  Tom Tromey  <tromey@cygnus.com>
2596
2597         * lex.c (java_new_lexer): Initialize out_first and out_last
2598         fields.
2599         * lex.h (java_lexer): Added out_buffer, out_first, out_last.
2600
2601 2000-10-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2602
2603         * parse.y (pop_current_osb): New function.
2604         (array_type:): Use `dims:', changed actions
2605         accordingly. Suggested by Anthony Green.
2606         (array_creation_expression:): Used pop_current_osb.
2607         (cast_expression:): Likewise.
2608         (search_applicable_method_list): Fixed indentation.
2609
2610 2000-10-08  Anthony Green  <green@redhat.com>
2611
2612         * parse.y (array_type_literal): Remove production.
2613         (type_literals): Refer to array_type, not array_type_literal.
2614
2615 2000-10-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2616
2617         Patch contributed by Corey Minyard.
2618         * decl.c (check_local_named_variable): New function.
2619         (tree check_local_unnamed_variable): Likewise.
2620         (find_local_variable): Splitted. Call check_local_{un}named_variable.
2621
2622 2000-10-07  Anthony Green  <green@redhat.com>
2623
2624         * class.c (layout_class): Handle case where superclass can't be
2625         layed out yet.
2626
2627 2000-10-07  Joseph S. Myers  <jsm28@cam.ac.uk>
2628
2629         * Makefile.in (keyword.h): Refer to GNU FTP site for updated
2630         gperf.
2631
2632 2000-10-05  Tom Tromey  <tromey@cygnus.com>
2633
2634         * jvspec.c (jvgenmain_spec): Added `-fdollars-in-identifiers'.
2635         * jvgenmain.c (class_mangling_prefix): Removed.
2636         (class_mangling_suffix): New global.
2637         (main): Use it.
2638         * gjavah.c (cxx_keyword_subst): Mangle C++ keywords by appending
2639         `$'.
2640         (print_method_info): Handle overrides for static and final
2641         methods.
2642         (process_file): Generate declaration for class object field.
2643         * class.c (cxx_keywords): New array.
2644         (utf8_cmp): New function.
2645         (cxx_keyword_p): New function.
2646         (layout_class_method): Mangle C++ keywords by appending `$'.
2647         (mangle_field): New function.
2648         (mangle_class_field): Use mangle_field.  Mangle class name as
2649         `class$'.
2650         (mangle_static_field): Use mangle_field.
2651
2652 Tue Oct  3 13:44:37 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2653
2654         * decl.c (find_local_variable): Removed uncessary type check and
2655         fixed range check typo. From Corey Minyard.
2656
2657 Wed Sep 13 16:06:52 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2658
2659         * decl.c (give_name_to_locals): New local `code_offset'. Call
2660         `maybe_adjust_start_pc'.
2661         * expr.c (note_instructions): New function.
2662         (expand_byte_code): Don't collect insn starts here.
2663         (peek_opcode_at_pc): New function.
2664         (maybe_adjust_start_pc): Likewise.
2665         * java-tree.h (maybe_adjust_start_pc): Declare.
2666         (note_instructions): Likewise.
2667         * jcf-parse.c (parse_class_file): Call `note_instructions'.
2668
2669 Wed Sep 13 11:50:35 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2670
2671         * parse.y (field_access:): Fixed indentation.
2672         (qualify_ambiguous_name): Properly qualify `this.a[b].c'.
2673
2674 2000-09-07  Tom Tromey  <tromey@cygnus.com>
2675
2676         Fix for PR gcj/307:
2677         * parse.y (patch_binop): Use JNUMERIC_TYPE_P, not
2678         JPRIMITIVE_TYPE_P, for arithmetic operators.
2679         (patch_method_invocation): Indentation fix.
2680         (try_builtin_assignconv): Handle boolean specially.  Fixed typo.
2681         (valid_builtin_assignconv_identity_widening_p): Handle boolean.
2682         (do_unary_numeric_promotion): Cleaned up code.
2683         (valid_cast_to_p): Handle boolean correctly.
2684
2685 2000-09-27  Tom Tromey  <tromey@cygnus.com>
2686
2687         * lex.c (java_read_unicode): Reset bs_count when finished with
2688         `\u' sequence.
2689
2690 2000-10-01  Mark Mitchell  <mark@codesourcery.com>
2691
2692         Convert to GC.
2693         * Make-lang.in (s-java): Don't depend on ggc-callbacks.o.
2694         * Makefile.in (BACKEND): Don't include ggc-callbacks.o.
2695         (typeck.o): Depend on ggc.h.
2696         * class.c (add_method_1): Use GC functions for allocation.
2697         (init_class_processing): Register roots.
2698         * decl.c (ggc_p): Set to 1.
2699         (pending_local_decls): Make it static.
2700         (push_jvm_slot): Use GC functions for allocation.
2701         (init_decl_processing): Register roots.
2702         (give_name_to_locals): Use GC functions for allocation.
2703         (lang_mark_tree): New function.
2704         * java-tree.h (MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Use GC
2705         functions for allocation.
2706         * jcf-parse.c (jcf_parse_source): Use ggc_strdup.
2707         * lex.c (java_lex): Use build_string, rather than replicating it
2708         inline.
2709         * parse.y (goal): Add more roots.
2710         (mark_parser_ctxt): New function.
2711         * typeck.c: Include ggc.h.
2712
2713 2000-09-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2714
2715         * parse.y (maybe_yank_clinit): Also keep <clinit> if its body
2716         contains something else than MODIFY_EXPR.
2717
2718 2000-09-23  Mark Mitchell  <mark@codesourcery.com>
2719
2720         * Make-lang.in (JAVA_SRCS): Include java-tree.h.
2721         * Makefile.in (parse.o): Depend on ggc.h.
2722         (class.o): Likewise.
2723         (constants.o): Likewise.
2724         (decl.o): Likewise.
2725         (expr.o): Likewise.
2726         (jcf-parse.o): Likewise.
2727         (jcf-write.o): Likewise.
2728         (mangle.o): Likewise.
2729         * class.c: Include ggc.h.
2730         (build_static_field_ref): Register GC roots.
2731         (layout_class): Likewise.
2732         (init_class_processing): Likewise.
2733         * constants.c: Include ggc.h.
2734         (current_constant_pool_data_ref): Remove.
2735         (tag_nodes): Move it to ...
2736         (get_tag_node): ... here.  Register GC roots.
2737         * decl.c: Include ggc.h.  Remove many global tree definitions.
2738         (throw_node): Define.
2739         (java_global_trees): Likewise.
2740         (predef_filenames): Make the size a constant.
2741         (init_decl_processing): Adjust accordingly.
2742         (init_decl_processing): Call init_jcf_parse.  Register GC roots.
2743         * expr.c: Include ggc.h.
2744         (init_expr_processing): Register GC roots.
2745         (build_invokeinterface): Likewise.
2746         * java-tree.h: Replace extern tree declarations with macros.
2747         (java_global_trees): New variable.
2748         (java_tree_index): New enumeration.
2749         (init_jcf_parse): Declare.
2750         * jcf-parse.c: Include ggc.h.
2751         (current_class): Remove declaration.
2752         (main_class): Likewise.
2753         (all_class_list): Likewise.
2754         (predefined_filename_p): Adjust for constant size of
2755         predef_filenames.
2756         (init_jcf_parse): New function.
2757         * jcf-write.c: Include ggc.h.
2758         (generate_classfile): Register GC roots.
2759         (append_synthetic_attribute): Likewise.
2760         (append_innerclass_attribute_entry): Likewise.
2761         * lang.c: Include ggc.h.
2762         (lang_print_error): Register GC roots.
2763         * parse.h (struct parser_ctxt): Rename fields to avoid conflicts
2764         with macros.
2765         * parse.y: Include ggc.h.
2766         (wfl_operator): Remove.
2767         (goal): Register GC roots.
2768         (java_pop_parser_context): Adjust for new field names.
2769         (java_parser_context_save_global): Likewse.
2770         (java_parser_context_restore_global): Likewise.
2771         (java_parser_context_suspend): Likewise.
2772         (java_parser_context_resume): Likewise.
2773         (verify_constructor_circularity): Register GC roots.
2774         (lookup_cl): Likewise.
2775         (java_reorder_fields): Likewise.
2776         (build_current_this): Likewise.
2777         (class_in_current_package): Likewise.
2778         (argument_types_convertible): Likewise.
2779         (patch_cast): Rename wfl_op parameter to avoid macro conflicts.
2780
2781 2000-09-14  Tom Tromey  <tromey@cygnus.com>
2782
2783         * lex.h: Use HAVE_ICONV_H, not HAVE_ICONV.
2784
2785 2000-09-13  Tom Tromey  <tromey@cygnus.com>
2786
2787         * jcf-parse.c: Include <locale.h>.
2788         * jv-scan.c: Include <locale.h>.
2789
2790 2000-09-12  Tom Tromey  <tromey@cygnus.com>
2791
2792         * expr.c (pop_type_0): Return `Object' if trying to merge two
2793         interface types.
2794         * verify.c (merge_types): Don't return `TYPE_UNKNOWN' for
2795         interface types; `Object' is always a valid supertype.
2796
2797 2000-09-12  Tom Tromey  <tromey@cygnus.com>
2798
2799         Fix for PR gcj/33:
2800         * jv-scan.c (help): Document --encoding.
2801         (options): Added `encoding' entry.
2802         (OPT_ENCODING): New define.
2803         (main): Handle --encoding.
2804         Include <langinfo.h> if nl_langinfo exists.
2805         * lang-options.h: Document --classpath, --CLASSPATH, --main, and
2806         --encoding.
2807         * jcf-parse.c Include <langinfo.h> if we have nl_langinfo.
2808         (parse_source_file): Correctly call java_init_lex.  Added `finput'
2809         argument.  Use nl_langinfo to determine default encoding.
2810         * java-tree.h (current_encoding): Declare.
2811         * parse.y (java_parser_context_restore_global): Don't restore
2812         `finput'.
2813         (java_parser_context_save_global): Don't set `finput' field.
2814         (java_pop_parser_context): Don't restore `finput'.  Free old lexer
2815         if required.
2816         * lang.c (current_encoding): New global.
2817         (lang_decode_option): Recognize `-fencoding='.
2818         (finish_parse): Don't close finput.
2819         * parse.h (struct parser_ctxt): Removed `finput' and
2820         `unget_utf8_value' fields.  Added `lexer' field.
2821         (java_init_lex): Fixed declaration.
2822         * lex.c (java_new_lexer): New function.
2823         (java_destroy_lexer): Likewise.
2824         (java_read_char): Added `lex' argument.  Handle iconv case.
2825         (java_read_unicode): Added `lex' argument.  Count backslashes in
2826         lexer structure.
2827         (java_init_lex): Added `finput' and `encoding' arguments.  Set
2828         `lexer' field in ctxp.
2829         (BAD_UTF8_VALUE): Removed.
2830         (java_lex): Handle seeing UEOF in the middle of a string literal.
2831         * lex.h: Include <iconv.h> if HAVE_ICONV defined.
2832         (java_lexer): New structure.
2833         (UNGETC): Removed.
2834         (GETC): Removed.
2835         (DEFAULT_ENCODING): New define.
2836         (java_destroy_lexer): Declare.
2837
2838 2000-09-12  Tom Tromey  <tromey@cygnus.com>
2839
2840         Fix for PR gcj/343:
2841         * lex.c (java_init_lex): Initialize java_io_serializable.
2842         * parse.y (java_io_serializable): New global.
2843         (valid_ref_assignconv_cast_p): An array can be cast to
2844         serializable.
2845
2846 2000-09-10  Zack Weinberg  <zack@wolery.cumb.org>
2847
2848         * decl.c, expr.c: Include defaults.h if not already included.
2849         Don't define the *_TYPE_SIZE macros.
2850
2851 2000-09-09  Geoffrey Keating  <geoffk@cygnus.com>
2852
2853         * typeck.c (build_java_array_type): Correct first parameter
2854         in ADJUST_FIELD_ALIGN invocation.
2855
2856 2000-09-06  Tom Tromey  <tromey@cygnus.com>
2857
2858         * lang-specs.h: Also recognize `-femit-class-files'.
2859
2860 2000-09-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2861
2862         * verify.c (merge_types): Load the types to merge if necessary.
2863
2864 2000-09-02  Anthony Green  <green@redhat.com>
2865
2866         * jcf-io.c: Include zlib.h.
2867         (open_in_zip): Read compressed class file archives.
2868         * zipfile.h (ZipDirectory): Add uncompressed_size and
2869         compression_method fields.
2870         * zextract.c (read_zip_archive): Collect file compression info.
2871
2872 2000-08-15  Bryce McKinlay  <bryce@albatross.co.nz>
2873
2874         * parse.y (do_resolve_class): Also explore superclasses of
2875         intermediate enclosing contexts when searching for inner classes.
2876
2877 2000-08-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2878
2879         * parse.y (variable_declarator_id:): Better error message.
2880         (expression_statement:): Use YYNOT_TWICE.
2881         (cast_expression:): Likewise.
2882         (assignment:): Likewise.
2883
2884 2000-08-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2885
2886         * parse.y (do_merge_string_cste): New locals. Create new
2887         STRING_CSTs each time, use memcpy. Fixes gcj/311.
2888
2889 2000-08-07  Hans Boehm  <boehm@acm.org>
2890
2891         * boehm.c (mark_reference_fields): Set marking bits for all words in
2892         a multiple-word record.
2893         (get_boehm_type_descriptor): Use the procedure marking descriptor for
2894         java.lang.Class.
2895
2896 2000-08-31  Mike Stump  <mrs@wrs.com>
2897
2898         * Make-lang.in (jc1$(exeext), gcjh$(exeext), jv-scan$(exeext),
2899         jcf-dump$(exeext)): Make parallel safe.
2900
2901 2000-08-29  Zack Weinberg  <zack@wolery.cumb.org>
2902
2903         * jcf-parse.c (set_source_filename): Constify a char *.
2904         * jcf-write.c (append_innerclasses_attribute,
2905         make_class_file_name): Constify a char *.  Don't recycle a
2906         variable for an unrelated purpose.
2907         * parse.y: (build_alias_initializer_parameter_list): Constify a char *.
2908         (breakdown_qualified): Do not modify IDENTIFIER_POINTER strings.
2909
2910 2000-08-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2911
2912         * expr.c (can_widen_reference_to): Fixed indentation.
2913         * java-tree.h (CLASS_METHOD_CHECKED_P): Added leading comment.
2914         * parse.y: `finit$' replaces `$finit$' in comments.
2915         (try_builtin_assignconv): Fixed leading comment.
2916
2917 2000-08-25  Greg McGary  <greg@mcgary.org>
2918
2919         * gjavah.c (cxx_keyword_subst): Use ARRAY_SIZE.
2920
2921 2000-08-24  Greg McGary  <greg@mcgary.org>
2922
2923         * lang.c (lang_decode_option): Use ARRAY_SIZE.
2924         * parse.y (BINOP_LOOKUP): Likewise.
2925
2926 2000-08-22  Andrew Haley  <aph@cygnus.com>
2927
2928         * javaop.h (WORD_TO_INT): Mask lower 32 bits of a jword before
2929         sign extending. Fixes gcj/321.
2930         * jcf-parse.c (get_constant): Mask lower 32 bits of a jint before
2931         combining to make a jlong. Fixes gcj/321.
2932
2933 2000-08-21  Nix  <nix@esperi.demon.co.uk>
2934
2935         * lang-specs.h: Do not process -o or run the assembler if
2936         -fsyntax-only.
2937
2938 2000-08-16  Andrew Haley  <aph@cygnus.com>
2939
2940         * typeck.c (build_java_array_type): Rewrite code to do array
2941         alignment.  Take into account back-end macros when aligning array
2942         data.  Remove setting of TYPE_USER_ALIGN; Java doesn't allow the
2943         user to set alignment. Fixes gcj/252 and 160.
2944
2945 2000-08-09  Tom Tromey  <tromey@cygnus.com>
2946
2947         * parse.y (check_abstract_method_definitions): Now return `int'.
2948         Check implemented interfaces.  Fixes PR gcj/305.
2949
2950         * parse.y (patch_switch_statement): Disallow `long' in switch
2951         expressions.  Fixes PR gcj/310.
2952
2953 2000-08-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2954
2955         * decl.c (finit_leg_identifier_node): New global.
2956         (init_decl_processing): Use `finit$' to initialize
2957         finit_identifier_node. Use `$finit$' to initialize
2958         finit_leg_identifier_node.
2959         * expr.c (expand_java_field_op): Use ID_FINIT_P.
2960         * java-tree.h (finit_identifier_node): Changed attached comment.
2961         (finit_leg_identifier_node): New declaration.
2962         (ID_FINIT_P): Take finit_identifier_node and
2963         finit_leg_identifier_node into account. This is a backward
2964         compatibility hack.
2965
2966 2000-08-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2967
2968         * jcf-write.c (generate_bytecode_conditional): Re-installed lost
2969         Jan 6 2000 patch.
2970         (generate_bytecode_insns): Check `nargs' before emitting it.
2971         * verify.c (merge_type_state): Fixed typo.
2972         * ChangeLog: Fixed typo in some jcf-write.c entries mentioning
2973         generate_bytecode_{conditional,insns}.
2974
2975 Sun Aug 13 09:41:49 2000  Anthony Green  <green@redhat.com>
2976
2977         * check-init.c (check_init): Add case for BIT_FIELD_REF (required
2978         for -pg builds).
2979
2980 2000-08-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
2981
2982         * class.c (maybe_layout_super_class): Fixed indentation.
2983         * java-tree.h (CLASS_METHOD_CHECKED_P): New macro.
2984         (java_check_methods): New function declaration.
2985         * jcf-parse.c (get_constant): Let `char_len' go up to 3. Use `str'
2986         instead of `str_ptr'.
2987         * jcf-write.c (generate_bytecode_insns): Emit number the of args
2988         of a `invokeinterface' at the right time.
2989         * parse.h (WFL_STRIP_BRACKET): New macro.
2990         (SET_TYPE_FOR_RESOLUTION): Use it.
2991         * parse.y (build_unresolved_array_type): Reuse `type_or_wfl'.
2992         (check_class_interface_creation): Don't check for cross package
2993         innerclass name clashes.
2994         (method_header): Behave properly if MDECL is `error_mark_node'.
2995         (method_declarator): Return `error_mark_node' if bogus current
2996         class.
2997         (resolve_class): Apply WFL_STRIP_BRACKET on `cl' if necessary.
2998         (resolve_and_layout): New local `decl_type', set and used. Call
2999         java_check_methods.
3000         (java_check_methods): New method.
3001         (java_layout_classes): Use it.
3002         (resolve_qualified_expression_name): No EH check necessary in
3003         access$<n>.
3004         (java_complete_lhs): Use VAR_DECL's DECL_INITIAL when evaluating
3005         `case' statement.
3006         (patch_assignment): Set DECL_INITIAL on integral final local.
3007
3008 2000-08-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3009
3010         * java-tree.h (flag_extraneous_semicolon): New extern.
3011         * lang-options.h: (-Wextraneous-semicolon): New option.
3012         * lang.c (flag_redundant): Fixed typo in leading comment.
3013         (flag_extraneous_semicolon): New global.
3014         (lang_decode_option): Set `flag_extraneous_semicolon' when
3015         -Wall. Decode `-Wextraneous-semicolon'.
3016         * parse.y (type_declaration:): Removed `SC_TK' hack, added
3017         `empty_statement' rule.
3018         (class_body_declaration): Likewise.
3019         (method_body:): Accept `;' as a method body.
3020         (static_initializer:): Removed `SC_TK' hack.
3021         (constructor_block_end:): Likewise.
3022         (empty_statement:): Report deprecated empty declaration. Fixes
3023         gcj/295
3024
3025 2000-08-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3026
3027         * parse.y (build_dot_class_method_invocation): Changed parameter
3028         name to `type'. Build signature from `type' and convert it to a
3029         STRING_CST if it's an array.
3030         (patch_incomplete_class_ref): `build_dot_class_method_invocation'
3031         to use `ref_type' directly.
3032
3033 Sun Aug  6 00:47:24 2000  Ovidiu Predescu  <ovidiu@cup.hp.com>
3034
3035         * lang-options.h: Added a comma after the last element to avoid
3036         syntax errors when other languages define additional options.
3037
3038 2000-08-04  Zack Weinberg  <zack@wolery.cumb.org>
3039
3040         * Make-lang.in (jc1, jv-scan): Depend on $(BACKEND), not stamp-objlist.
3041         * Makefile.in: Add BACKEND; delete OBJS, OBJDEPS.
3042         (jc1): Link with $(BACKEND).
3043         (jv-scan): Depend on version.o, not all of $(OBJS) or $(BACKEND).
3044
3045 2000-08-02  Zack Weinberg  <zack@wolery.cumb.org>
3046
3047         * jvspec.c: Adjust type of second argument to
3048         lang_specific_driver, and update code as necessary.
3049
3050         * class.c (build_dtable_decl): Initialize dummy.
3051
3052 2000-08-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3053
3054         * parse.y (maybe_yank_clinit): When generating bytecode: non empty
3055         method bodies not to rule out discarding `<clinit>'; don't use
3056         <clinit> to initialize static fields with constant initializers.
3057
3058 2000-08-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3059
3060         * gjavah.c (print_method_info): Added `synth' parameter. Skip
3061         synthetic methods.
3062         (method_synthetic): New global.
3063         (HANDLE_METHOD): Recognize synthetic method and tell
3064         `print_method_info' about it.
3065         (HANDLE_END_METHOD): Do not issue an additional `;\n' if we're
3066         processing a synthetic method.
3067         * jcf-reader.c (skip_attribute): New function.
3068         ( skip_attribute): Likewise.
3069
3070 2000-08-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3071
3072         * parse.y (build_outer_field_access): Fixed comments.
3073         (fix_constructors): Emit the initialization of this$<n> before
3074         calling $finit$.
3075         (resolve_qualified_expression_name): Build an access to `decl' if
3076         necessary.
3077
3078 2000-07-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3079
3080         * parse-scan.y (curent_class): Non longer const.
3081         (inner_qualifier, inner_qualifier_length): Deleted.
3082         (current_class_length): New global.
3083         (bracket_count): Fixed typo in leading comment.
3084         (anonymous_count): New global.
3085         (class_instance_creation_expression:): Handle anonymous classes.
3086         (anonymous_class_creation:): New rule.
3087         (push_class_context): Rewritten.
3088         (pop_class_context): Likewise.
3089         (INNER_QUALIFIER): Macro deleted.
3090         (report_class_declaration): call `push_class_context' when
3091         entering the function. `fprintf' format modified not to use
3092         INNER_QUALIFIER.
3093         (report_class_declaration): Assign `package_name' and
3094         `current_class' to NULL separatly.
3095
3096 2000-07-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3097
3098         * expr.c (build_invokeinterface): Call layout_class_methods on
3099         target interface.
3100
3101 2000-07-27  Tom Tromey  <tromey@cygnus.com>
3102             Anthony Green  <green@cygnus.com>
3103             Alexandre Petit-Bianco  <apbianco@cygnus.com>
3104
3105         * class.c (make_class_data): Create vtable for abstract classes.
3106         (get_dispatch_table): Changed to cope with abstract classes.
3107
3108 2000-07-27  Tom Tromey  <tromey@cygnus.com>
3109
3110         * parse.y (patch_method_invocation): Don't reverse the argument
3111         list when dealing with anonymous class constructors. Fixed typo in
3112         comment.
3113
3114 2000-07-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3115
3116         * parse.y (build_alias_initializer_parameter_list): Reverse
3117         crafted list when building aliases for anonymous class
3118         constructors.
3119
3120 2000-07-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3121
3122         * parse.y (jdep_resolve_class): Don't bother checking potential
3123         innerclass access if `decl' is NULL.
3124         (find_in_imports_on_demand): TREE_PURPOSE of `import' contains the
3125         WFL.
3126
3127 2000-07-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3128
3129         * parse.c: Remove (again.)
3130
3131 2000-07-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3132
3133         * parse.y (find_as_inner_class): Removed 2000-07-19 patches.
3134         * jcf-parse.c (HANDLE_INNERCLASSES_ATTRIBUTE): Local `decl' moved
3135         outside the `if' statement, alias to innerclass removed, `decl'
3136         used to mark the class complete.
3137
3138 2000-07-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3139
3140         * parse.y (simple_name:): Fixed typo in error message.
3141
3142 2000-07-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3143
3144         * parse.y (java_complete_lhs): LOOP_EXPR:, SWITCH_EXPR: the node
3145         or its first operand can be error marks.
3146
3147 2000-07-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3148
3149         * parse.h (SET_TYPE_FOR_RESOLUTION): Use GET_CPC.
3150         * parse.y (method_header): Likewise.
3151
3152 2000-07-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3153
3154         * parse.y (process_imports): Consider that one might be trying to
3155         import an innerclass. Fixes gcj/254
3156
3157 2000-07-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3158
3159         * parse.y (find_as_inner_class): Handle the case where the
3160         enclosing context of an innerclass has been loaded as bytecode.
3161
3162 2000-07-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3163
3164         * parse.y (simple_name:): Reject `$' in type names.
3165         (resolve_type_during_patch): Use `type' as a second
3166         argument to resolve_no_layout. Fixes gcj/257.
3167
3168 2000-07-18  Bryce McKinlay  <bryce@albatross.co.nz>
3169
3170         * parse.y (find_most_specific_methods_list): Select the only
3171         non-abstract method even if max has been set.
3172         Fixes gcj/285, gcj/298.
3173
3174 2000-07-18  Jeff Sturm  <jeff.sturm@appnet.com>
3175
3176         * lang-specs.h: Added %(jc1) to java compiler options.
3177
3178 2000-07-14  Zack Weinberg  <zack@wolery.cumb.org>
3179
3180         * .cvsignore: New file.
3181
3182 2000-07-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3183
3184         * parse.y (not_accessible_p): Access granted to innerclasses
3185         (indirectly) extending the reference type. Fixes gcj/249.
3186
3187 2000-07-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3188
3189         * parse.y (patch_method_invocation): Fixed comment.
3190         (maybe_use_access_method): Build this$<n>s to the context of the
3191         target method, or a type that extends it. Fixes gcj/242.
3192
3193 2000-07-13  Mark Mitchell  <mark@codesourcery.com>
3194
3195         * parse.c: Remove.
3196
3197 2000-07-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3198
3199         * parse.y (fold_constant_for_init): Avoid bullish conversion.
3200
3201 2000-07-13  Tom Tromey  <tromey@cygnus.com>
3202
3203         * lang-specs.h: Added %{I*}.
3204
3205 2000-07-13  Zack Weinberg  <zack@wolery.cumb.org>
3206
3207         * lang-specs.h: Use the new named specs.  Remove unnecessary braces.
3208
3209 2000-07-12  Mark Mitchell  <mark@codesourcery.com>
3210
3211         * parse-scan.c: Remove.
3212
3213 2000-07-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3214
3215         * class.c (set_super_info): Handled protected inner classes.
3216         (common_enclosing_context_p): Bail early if arguments aren't both
3217         inner classes.
3218         (get_access_flags_from_decl): Handle private and protected inner
3219         classes.
3220         * java-tree.h (TYPE_PROTECTED_INNER_CLASS): New macro.
3221         (CLASS_PROTECTED): Likewise.
3222         (struct lang_type): New bitfield `poic'.
3223         * parse.y (jdep_resolve_class): Call check_inner_class_access on
3224         inner classes only.
3225         (check_inner_class_access): Renamed arguments, added
3226         comments. Handles protected inner classes (fixes gcj/225)
3227         (not_accessible_p): Fixed comments. Avoid handling inner classes.
3228
3229 2000-07-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3230
3231         * parse.y (resolve_qualified_expression_name): Verify qualified
3232         access to `this'. Fixes gcj/239.
3233
3234 2000-07-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3235
3236         * jcf-write.c (generate_classfile): Don't install ConstantValue
3237         for null pointers.
3238
3239 2000-07-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3240
3241         * parse.y (resolve_qualified_expression_name): Handle inner class
3242         access. Fixes gcj/256.
3243
3244 2000-07-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3245
3246         * jcf-write.c (generate_classfile): Properly install the
3247         ConstantValue attribute and the initial value constant pool index
3248         on string constants.
3249         * parse.y (java_complete_lhs): Keep DECL_INITIAL when emitting
3250         class files.
3251
3252 2000-07-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3253
3254         * parse.h (BUILD_PTR_FROM_NAME): Surround with a do/while
3255         construct.
3256         * parse.y (find_as_inner_class): Fixed typo.
3257         (do_resolve_class): Explore enclosing contexts when searching for
3258         innerclasses. Removed curly brackets around BUILD_PTR_FROM_NAME.
3259         (check_inner_class_access): Check `decl' which can be null in case
3260         of previous errors.
3261
3262 2000-07-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3263
3264         * java-tree.h (java_debug_context): Declared `extern'.
3265         (safe_layout_class): Likewise.
3266         * parse.y (resolve_field_access): Field must be `static' in order
3267         to be replaced by its initial value. Added comments.
3268         (find_applicable_accessible_methods_list): Fixed typo.
3269         (find_most_specific_methods_list): Methods found in innerclasses
3270         take over methods founds in the enclosing contexts.
3271         (java_complete_tree): Loosen restrictions on the type of DECLs
3272         that can be replaced by their initialization values.
3273         (valid_ref_assignconv_cast_p): Removed call to `enclosing_context_p'.
3274
3275 2000-07-05  Tom Tromey  <tromey@cygnus.com>
3276
3277         * Make-lang.in (PARSE_DIR): New macro.
3278         (PARSE_RELDIR): Likewise.
3279         (PARSE_C): Likewise.
3280         (PARSE_SCAN_C): Likewise.
3281         ($(PARSE_C)): New target.
3282         ($(PARSE_SCAN_C)): Likewise.
3283         (SET_BISON): New macro.
3284         (BISONFLAGS): Likewise.
3285         (JAVABISONFLAGS): Likewise.
3286
3287 2000-07-02  Bryce McKinlay  <bryce@albatross.co.nz>
3288
3289         * gjavah.c (HANDLE_METHOD): Call print_method_info with a NULL stream
3290         argument on the first pass for CNI as well as JNI.
3291         (print_method_info): Set up method name on the first pass only.
3292
3293 2000-07-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3294
3295         * parse.y (parser_qualified_classname): Removed parameter
3296         `is_static'.
3297         (create_interface): Removed first passed parameter to
3298         parser_qualified_classname.
3299         (create_class): Likewise. Don't install alias on static
3300         innerclasses. Fixes gcj/275.
3301
3302 2000-07-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3303
3304         * parse.y (maybe_generate_pre_expand_clinit): Don't build a
3305         debugable statement with empty_stmt_node. Fixes gcj/272
3306
3307 2000-07-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3308
3309         * expr.c (build_instanceof): Layout type after it's loaded. Fixes
3310         gcj/271.
3311
3312 2000-06-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3313
3314         * jcf-write.c (push_long_const): Appropriately cast short negative
3315         constant to jword.
3316
3317 2000-06-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3318
3319         * parse.y (verify_constructor_super): Use loop variable
3320         `m_arg_type' initialized with `mdecl_arg_type'.
3321
3322 2000-06-29  Tom Tromey  <tromey@cygnus.com>
3323
3324         * parse.y (resolve_field_access): Handle case where `type_found'
3325         is NULL.
3326
3327 2000-06-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3328
3329         * expr.c (lookup_field): The same field can be found through two
3330         different interface. Don't declare it ambiguous in that case.
3331
3332 2000-06-27  Tom Tromey  <tromey@cygnus.com>
3333
3334         * lex.c (java_lineterminator): Don't recognize \r after \n.  If \r
3335         follows \r, then unget it at a lower level.
3336
3337 2000-06-26  Tom Tromey  <tromey@cygnus.com>
3338
3339         * parse.y (resolve_field_access): Pass decl, not DECL_INITIAL, to
3340         java_complete_tree.
3341
3342 2000-06-25  Tom Tromey  <tromey@cygnus.com>
3343
3344         * parse.y (for_statement): Wrap expression in a WFL if it is a
3345         constant.  For PR gcj/268.
3346
3347 2000-06-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3348
3349         * parse.y (do_resolve_class): Minor optimiztion in the package
3350         list search. Removed unnecessary test and return statement.
3351         (valid_ref_assignconv_cast_p): Order of arguments to
3352         enclosing_context_p fixed.
3353
3354 2000-06-24  Tom Tromey  <tromey@cygnus.com>
3355
3356         * expr.c (lookup_field): Print error and return error_mark_node if
3357         field reference is ambiguous.
3358
3359         * parse.y (check_abstract_method_definitions): Also check if
3360         `other_method' is abstract.
3361
3362 2000-06-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3363
3364         * class.c (set_super_info): Handle ACC_PRIVATE for (inner)
3365         classes.
3366         * java-tree.h (TYPE_PRIVATE_INNER_CLASS): New macro.
3367         (struct lang_type): New field `pic'.
3368         (CLASS_PRIVATE): New macro.
3369         * parse.y (check_inner_class_access): New function.
3370         (jdep_resolve_class): Call it.
3371
3372 2000-06-23  Tom Tromey  <tromey@cygnus.com>
3373
3374         * parse.y (patch_incomplete_class_ref): Initialize the returned
3375         class.  For PR gcj/260.
3376
3377 2000-06-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3378
3379         * except.c (prepare_eh_table_type): Use `CATCH_ALL_TYPE'.
3380
3381 2000-06-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3382
3383         * check-init.c (ENABLE_JC1_CHECKING): Replaces ENABLE_CHECKING for
3384         Java specific checks.
3385         * expr.c (build_instanceof): CLASS_INTERFACE and CLASS_FINAL usage
3386         screened by DECL_P.
3387         * java-tree.def (CASE_EXPR): Marked 'e'.
3388         (DEFAULT_EXPR): Likewise.
3389         * jcf-parse.c (set_source_filename): CLASS_COMPLETE_P usage
3390         screened by DECL_P.
3391         * jcf-write.c (ENABLE_JC1_CHECKING): Replaces ENABLE_CHECKING for
3392         Java specific checks.
3393         (generate_bytecode_insns): Test try_block for BLOCK before using
3394         BLOCK_EXPR_BODY.
3395         * parse.y (build_wfl_wrap): Added `location' argument. Set
3396         EXPR_WFL_LINECOL accordingly.
3397         (dim_expr:): Wrap constants with WFLs.
3398         (method_declarator): Use TREE_TYPE not TYPE_NAME on GET_CPC.
3399         (resolve_package): Check for `stmt' not being a BLOCK before
3400         building a debuggable statement with it.
3401         (make_qualified_primary): Added extra parameter to build_wfl_wrap
3402         invocation.
3403         (resolve_field_access): Make sure `decl' is a DECL before treating
3404         it as such.
3405         (maybe_build_primttype_type_ref): Make sure `wfl''s node is an
3406         IDENTIFIER_NODE before treating it as such.
3407         (patch_new_array_init): Make sure `elt' is a TREE_LIST before
3408         treating it as such.
3409         (find_applicable_accessible_methods_list): CLASS_INTERFACE macro
3410         to be applied only on non array types.
3411
3412 2000-06-16  Per Bothner  <per@bothner.com>
3413
3414         * java-tree.h (LABEL_RETURN_LABELS, LABEL_PENDING_CHAIN):  Don't
3415         define in terms of DECL_RESULT, as that fails when --enable-checking.
3416
3417 2000-06-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3418
3419         * jcf-write.c (CHECK_PUT): Add static prototype.  Make pointer
3420         types the same in comparison.
3421         (CHECK_OP): Add static prototype.
3422
3423 2000-06-13  Jakub Jelinek  <jakub@redhat.com>
3424
3425         * typeck.c (build_java_array_type): Set TYPE_USER_ALIGN.
3426         * parse.y (java_complete_class): Set DECL_USER_ALIGN.
3427         * parse.c: Rebuilt.
3428
3429 2000-06-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3430
3431         * decl.c (create_primitive_vtable): Prototype.
3432
3433         * jcf-write.c (generate_bytecode_insns): Initialize variable
3434         `saved_context'.
3435
3436         * lang.c (lang_get_alias_set): Mark parameter with ATTRIBUTE_UNUSED.
3437
3438 2000-06-09  Bryce McKinlay  <bryce@albatross.co.nz>
3439
3440         * parse.y (find_applicable_accessible_methods_list): Use a hashtable
3441         to track searched classes, and do not search the same class more than
3442         once. Call find_applicable_accessible_methods_list on immediate
3443         superclass, instead of search_applicable_method_list on all ancestors.
3444         Fix for PR gcj/238.
3445
3446 2000-06-09  Bryce McKinlay  <bryce@albatross.co.nz>
3447
3448         * parse.y (register_fields): Permit static fields in inner classes
3449         if they are final. Fix for PR gcj/255.
3450
3451 2000-06-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3452
3453         * parse.h (REGISTER_IMPORT): Use `chainon' to link new entries.
3454         * parse.y (find_in_imports): Returned type changed to void,
3455         leading comment fixed.
3456         (register_package): New function.
3457         (qualify_and_find): Likewise.
3458         (package_declaration:): Use `register_package'.
3459         (single_type_import_declaration:): Removed local variable
3460         `node'. Added missing `;' for consistency.
3461         (type_import_on_demand_declaration:): Use `chainon' to link new
3462         entries.
3463         (lookup_field_wrapper): Lookup local variables defined in outer
3464         contexts first.
3465         (java_complete_class): Don't reverse the list of imported on demand.
3466         (do_resolve_class): Reorganized. Removed local variable
3467         `original_name'. Call `qualify_and_find' with the current package
3468         name, invoke `find_in_imports_on_demand' right after. Call
3469         `qualify_and_find' with the packages we've seen so far. Fixed
3470         operations numbering in comments.
3471         (java_expand_class): Don't reverse `package_list'.
3472         (find_most_specific_methods_list): New local variables `abstract'
3473         and `candidates'. Use them to pick the right method.
3474
3475 Tue Jun  6 11:39:05 2000  Tom Tromey  <tromey@ferrule.cygnus.com>
3476
3477         * parse.y (check_modifiers_consistency): Don't subtract out
3478         `PUBLIC_TK' from argument to THIS_MODIFIER_ONLY.
3479
3480 2000-06-04  Philipp Thomas  <pthomas@suse.de>
3481
3482         * Makefile.in (INTLLIBS): New.
3483         (LIBS): Add above.
3484         (DEPLIBS): Ditto.
3485
3486 Fri Jun  2 16:48:55 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3487
3488         * class.c (get_dispatch_table): Build the vtable dummy entry list
3489         element with a null purpose. Fixed leading comment.
3490         (build_dtable_decl): Build an accurate dtable type when appropriate
3491         and use it.
3492
3493 2000-06-02  Richard Henderson  <rth@cygnus.com>
3494
3495         * lang.c (lang_get_alias_set): New.
3496
3497 2000-05-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3498
3499         * parse.y (resolve_field_access): Complete the DECL_INITIAL tree
3500         before using it as the accessed field.
3501
3502 2000-05-31  Tom Tromey  <tromey@cygnus.com>
3503
3504         * java-tree.h (boolean_array_vtable, byte_array_vtable,
3505         char_array_vtable, short_array_vtable, int_array_vtable,
3506         long_array_vtable, float_array_vtable, double_array_vtable):
3507         Declare.
3508         * expr.c (get_primitive_array_vtable): New function.
3509         (create_primitive_vtable): New function.
3510         (java_lang_expand_expr): Enable code to statically generate
3511         arrays.
3512         * decl.c (init_decl_processing): Create primitive vtables.
3513         (boolean_array_vtable, byte_array_vtable, char_array_vtable,
3514         short_array_vtable, int_array_vtable, long_array_vtable,
3515         float_array_vtable, double_array_vtable): Define.
3516
3517 2000-05-26  Zack Weinberg  <zack@wolery.cumb.org>
3518
3519         * java/parse.y (find_applicable_accessible_methods_list):
3520         Don't add an uninitialized value to the list.
3521
3522 2000-05-25  Tom Tromey  <tromey@cygnus.com>
3523
3524         * parse.y (resolve_field_access): Don't check DECL_LANG_SPECIFIC
3525         when trying to see if field's class should be initialized.  Always
3526         initialize field's declaring class, not qualified class.
3527         For PR gcj/162.
3528
3529         * parse.y (array_constructor_check_entry): Pass `wfl_value', not
3530         `wfl_operator', to maybe_build_primttype_type_ref.
3531         Fixes PR gcj/235.
3532
3533 2000-05-23  Bryce McKinlay  <bryce@albatross.co.nz>
3534
3535        * parse.y (patch_method_invocation): Don't try to lookup methods
3536        in primitive types.
3537
3538 2000-05-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3539
3540         * parse.y (resolve_field_access): Call the appropriate <clinit>
3541         before accessing the length of a static array. Craft a decl for
3542         the field while its time. Fixes PR gcj/129.
3543
3544 2000-05-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3545
3546         * parse.y (resolve_package): Correctly set `*next' (was off by
3547         one.)
3548         (resolve_qualified_expression_name): Fixed comment.
3549
3550 Thu Apr 27 17:47:34 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3551
3552         * jcf-parse.c (jcf_parse_source): Reset current_class and
3553         current_function_decl to NULL before parsing a new file.
3554
3555 Thu Apr 27 17:25:33 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3556
3557         * parse.y (block_end:): If the collected block doesn't feature a
3558         statement, insert an empty statement.
3559
3560 2000-04-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3561
3562         * parse.y (maybe_yank_clinit): New function.
3563         (maybe_generate_pre_expand_clinit): Always link <clinit> at the
3564         end of the list of methods belonging to a class.
3565         (java_complete_expand_method): Check whether <clinit> is really
3566         necessary and expand it accordingly.
3567
3568 2000-04-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3569
3570         * parse.y (fold_constant_for_init): Let VAR_DECL and FIELD_DECL be
3571         processed by the method's switch statement.
3572
3573 2000-05-19  Tom Tromey  <tromey@cygnus.com>
3574
3575         * java-tree.h: Added init state enum.
3576         * decl.c (emit_init_test_initialization): Initialize class
3577         initialization check variable by looking at class' state.
3578
3579 2000-05-19  Tom Tromey  <tromey@cygnus.com>
3580
3581         * java-tree.h (build_instanceof): Declare.
3582         (build_get_class): Declare.
3583         * parse.y (patch_binop): Use build_instanceof.
3584         * expr.c (build_instanceof): New function.  If class is final,
3585         don't make a function call.
3586         (expand_java_INSTANCEOF): Use it.
3587         (build_get_class): New function.
3588
3589 2000-05-18  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>
3590
3591         * jcf-write.c (generate_classfile): Scan the source_file for
3592         slashes with the right pointer variable.
3593
3594 Wed May 17 17:27:44 2000  Andrew Cagney  <cagney@b1.cygnus.com>
3595
3596         * lang.c (lang_decode_option): Update -Wunused flags by calling
3597         set_Wunused.
3598         * decl.c (poplevel): Replace warn_unused with warn_unused_label.
3599
3600 2000-05-09  Zack Weinberg  <zack@wolery.cumb.org>
3601
3602         * check_init.c (check_init): Constify local char *.
3603         * class.c (push_class): Constify local char *.
3604         * java_tree.h: Update prototypes.
3605         * jcf-io.c (open_class): Constify filename parameter and
3606         return value.
3607         (find_class): Remove redundant string copy.  Cast return from
3608         open_class.
3609         * jcf-parse.c (read_class, parse_class_file, yyparse):
3610         Constify local char *.
3611         * jcf-write.c (generate_bytecode_insns, generate_classfile):
3612         Constify local char *.
3613         * jcf.h (JCF): Constify filename and classname.
3614         (JCF_FINISH): Cast args to FREE to char * when appropriate.
3615         * lang.c (init_parse): Constify parameter and return value.
3616         * lex.c (java_get_line_col): Constify filename parameter.
3617         * parse.h: Constify parser_ctxt.filename.  Update prototypes.
3618         * parse.y (java_parser_context_suspend,
3619         issue_warning_error_from_context, safe_layout_class): Constify
3620         local char *.
3621         * parse.c: Regenerate.
3622
3623 2000-05-08  Tom Tromey  <tromey@cygnus.com>
3624
3625         * expr.c (build_jni_stub): Cache the result of
3626         _Jv_LookupJNIMethod.
3627
3628 2000-05-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3629
3630         * decl.c (predef_filenames_size): Now 7.
3631         (predef_filenames): New seventh entry.
3632
3633 2000-05-04  Tom Tromey  <tromey@cygnus.com>
3634
3635         * boehm.c (mark_reference_fields): Don't mark RawData fields.
3636         Keep track of when we've seen a reference field after a
3637         non-reference field.
3638         (get_boehm_type_descriptor): Handle case where we see
3639         non-reference fields but no trailing reference field.
3640         * decl.c (rawdata_ptr_type_node): Define.
3641         (init_decl_processing): Initialize rawdata_ptr_type_node.
3642         * java-tree.h (rawdata_ptr_type_node): Declare.
3643
3644 2000-05-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3645
3646         * jcf-dump.c (SPECIAL_IINC): Ensure arguments match format
3647         specifiers in calls to fprintf.
3648
3649 2000-05-03  Andrew Haley  <aph@cygnus.com>
3650
3651         * expr.c (build_java_jsr): Use emit_jump, not expand_goto.
3652
3653         * javaop.h (WORD_TO_INT): New function.
3654         (IMMEDIATE_s4): Use WORD_TO_INT.
3655         * jcf.h (JPOOL_INT): Ditto.
3656
3657         * gjavah.c (decode_signature_piece): Don't treat `$' as namespace
3658         separator.
3659
3660 2000-04-19  Tom Tromey  <tromey@cygnus.com>
3661
3662         * class.c (add_method_1): Set both DECL_EXTERNAL and METHOD_NATIVE
3663         on native function.
3664         * jcf-parse.c (parse_class_file): Call build_jni_stub for native
3665         JNI methods.
3666         * expr.c (build_jni_stub): New function.
3667         * lang-specs.h: -fjni and -femit-class-file are incompatible.
3668         * parse.c: Rebuilt.
3669         * parse.y (java_complete_expand_methods): Expand a native method
3670         and call build_jni_stub if -fjni given.
3671         * lang-options.h: Document -fjni.
3672         * lang.c (flag_jni): New global.
3673         (lang_f_options): Added `jni' entry.
3674         * java-tree.h (soft_lookupjnimethod_node,
3675         soft_getjnienvnewframe_node, soft_jnipopsystemframe_node):
3676         Declare.
3677         (flag_jni): Declare.
3678         (build_jni_stub): Declare.
3679         (struct lang_decl): Added `native' flag.
3680         (METHOD_NATIVE): Redefined to use `native' field of lang specific
3681         structure.
3682         * decl.c (soft_lookupjnimethod_node, soft_getjnienvnewframe_node,
3683         soft_jnipopsystemframe_node): New globals.
3684         (init_decl_processing): Set them.  _Jv_InitClass only takes one
3685         argument.
3686
3687         * java-tree.def: Put into `C' mode.
3688
3689 2000-04-27  Tom Tromey  <tromey@cygnus.com>
3690
3691         Fix for PR gcj/2:
3692         * expr.c (expand_invoke): Generate check to see if object pointer
3693         is null in nonvirtual invocation case.
3694         * java-tree.h (soft_nullpointer_node): Declare.
3695         * decl.c (soft_nullpointer_node): New global.
3696         (init_decl_processing): Initialize soft_nullpointer_node.
3697         * parse.y (invocation_mode): Return INVOKE_NONVIRTUAL for `final'
3698         or `private' methods.
3699         (patch_invoke): Handle INVOKE_NONVIRTUAL case.
3700
3701 Wed Apr 26 14:29:33 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3702
3703         * decl.c (complete_start_java_method): Don't call _Jv_InitClass
3704         from <clinit>
3705
3706 2000-04-26  Tom Tromey  <tromey@cygnus.com>
3707
3708         * zextract.c (find_zip_file_start): New function.
3709         (read_zip_archive): Use it.
3710
3711 2000-04-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3712
3713         * parse.y (register_incomplete_type): Handle JDEP_ANONYMOUS.
3714
3715 2000-04-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3716
3717         * class.c (common_enclosing_context_p): New function.
3718         * java-tree.h (common_enclosing_context_p): Added prototype.
3719         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Relaxed test to allow
3720         classes sharing an outer context with the current instance.
3721         * parse.y (build_access_to_thisn): Fixed leading comment.
3722         (verify_constructor_super): New local `supper_inner'. Skip
3723         enclosing context argument in the case of inner class constructors.
3724         (patch_method_invocation): Insert proper context as second
3725         parameter to pure inner class constructor super invocations.
3726
3727 Mon Apr 24 14:59:36 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3728
3729         * parse.y (end_class_declaration): Reset the interface number
3730         counter.
3731
3732 2000-04-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3733
3734         * parse.y (source_start_java_method): Deleted unnecessary code.
3735         (patch_method_invocation): Fixed comment.
3736
3737 2000-04-24  Robert Lipe <robertlipe@usa.net>
3738
3739         * parse.h (_jdep): Member `kind' now ENUM_BITFIELD.
3740
3741 2000-04-23  Tom Tromey  <tromey@cygnus.com>
3742
3743         * boehm.c (mark_reference_fields): Use int_byte_position.
3744
3745 2000-04-22  Tom Tromey  <tromey@cygnus.com>
3746
3747         * boehm.c (mark_reference_fields): Only call byte_position on
3748         non-static fields.
3749
3750 2000-04-22  Tom Tromey  <tromey@cygnus.com>
3751
3752         * boehm.c (mark_reference_fields): Added `last_view_index'
3753         argument.  Use DECL_FIELD_OFFSET to determine field's offset.
3754
3755 Thu Apr 20 17:41:28 2000  Mo DeJong  <mdejong@cygnus.com>
3756
3757         * parse.h (INTERFACE_INNER_MODIFIERS): New macro.
3758         * parse.y (check_class_interface_creation): Fixed comments. Select
3759         permitted modifiers for (inner) interfaces. Changed error message
3760         to report rejected modifiers used with local classes.
3761
3762 2000-04-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3763
3764         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Immediate inner classes
3765         of directly inherited type considered in scope.
3766         * parse.y (do_resolve_class): Search inherited classes for inner
3767         classes.
3768
3769 2000-04-20  Tom Tromey  <tromey@cygnus.com>
3770
3771         * parse.y (not_accessible_p): Use member's class, not current
3772         class, when doing inheritance check for protected reference.
3773         Fixes PR gcj/124.
3774
3775 Thu Apr 20 18:20:58 2000  Jason Schroeder  <shrode@subnature.com>
3776
3777         * jcf-dump.c (SPECIAL_IINC): Fixed typo printing iinc instruction.
3778
3779 2000-04-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3780
3781         * parse.y (lookup_field_wrapper): Search for final local aliases.
3782         (resolve_expression_name): Let lookup_field_wrapper search for
3783         final local aliases. Force the value of `name' if one is found.
3784         (qualify_ambiguous_name): CONVERT_EXPR is enough to now we have
3785         an expression name. Fixed comments.
3786
3787 2000-04-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3788
3789         * parse.y (yyerror): `msg' can be null, don't use it in that case.
3790
3791 2000-04-19  Tom Tromey  <tromey@cygnus.com>
3792
3793         * gjavah.c (cxx_keyword_subst): Avoid potential infinite loop.
3794
3795 2000-04-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3796
3797         * parse.y (maybe_make_nested_class_name): Use `obstack_grow0'.
3798
3799 2000-04-18  Tom Tromey  <tromey@cygnus.com>
3800
3801         PR gcj/211:
3802         * gjavah.c (utf8_cmp): Changed return value.
3803         (cxx_keyword_subst): Handle all C++ keywords.  Allocate new return
3804         result.
3805         (cxx_keywords): New global.
3806         (get_field_name): Handle new result of cxx_keyword_subst.
3807         (print_method_info): Likewise.
3808
3809 2000-04-17  Bryce McKinlay  <bryce@albatross.co.nz>
3810
3811         * gjavah.c (print_name_for_stub_or_jni): Don't prefix method names
3812         with a newline, for CNI.
3813         (print_stub_or_jni): Print a space or newline before method name for
3814         CNI as well as JNI.
3815         (print_cxx_classname): Don't write leading "::" in CNI stub method.
3816         (process_file): Include gcj/cni.h if generating CNI stubs.
3817
3818 2000-04-16  Tom Tromey  <tromey@cygnus.com>
3819
3820         * gjavah.c (decompile_method): Use print_field_name.
3821         Fixes PR gcj/205.
3822
3823 2000-04-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3824
3825         * parse.y (java_expand_classes): Reverse the package list once.
3826         (java_complete_lhs): PLUS_EXPR: don't try rhs and lhs at string
3827         reduction.
3828         (patch_binop): New temp `cn'. Call patch_string on LHS/RHS of
3829         the `==' and `!=' operators.
3830
3831 2000-04-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3832
3833         * jcf-write.c (generate_bytecode_insns): At invokation time,
3834         always relate an interface method to the type of its selector.
3835
3836 2000-04-05  Tom Tromey  <tromey@cygnus.com>
3837
3838         Fix for PR gcj/2:
3839         * expr.c (expand_invoke): Generate check to see if object pointer
3840         is null in nonvirtual invocation case.
3841         * java-tree.h (soft_nullpointer_node): Declare.
3842         * decl.c (soft_nullpointer_node): New global.
3843         (init_decl_processing): Initialize soft_nullpointer_node.
3844         * parse.y (invocation_mode): Return INVOKE_NONVIRTUAL for `final'
3845         or `private' methods.
3846         (patch_invoke): Handle INVOKE_NONVIRTUAL case.
3847
3848 2000-04-05  Tom Tromey  <tromey@cygnus.com>
3849
3850         Fix for PR gcj/140:
3851         * parse.y (check_final_assignment): Recognize assignments to the
3852         `length' field of an array when generating class files.
3853
3854 2000-04-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3855
3856         * class.c (decl_hash): Prototype removed.
3857         (decl_compare): Likewise.
3858
3859 2000-04-05  Tom Tromey  <tromey@cygnus.com>
3860
3861         * parse.h (THIS_MODIFIER_ONLY): Changed meaning of `v' parameter.
3862         * parse.y (check_modifiers_consistency): Check for final/volatile
3863         clash.  Fixes PR gcj/164.
3864
3865 2000-04-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3866
3867         * class.c: (java_hash_hash_tree_node): Renamed from `decl_hash',
3868         made global.
3869         (java_hash_compare_tree_node): Renamed from `decl_compare, made
3870         global.
3871         (add_method_1): Use `java_hash_hash_tree_node' and
3872         `java_hash_compare_tree_node'.
3873         * java-tree.h: (java_hash_hash_tree_node): Prototyped.
3874         (java_hash_compare_tree_node): Likewise.
3875         * parse.y (find_applicable_accessible_methods_list): Create,
3876         delete and use a hash table to remember already searched interfaces.
3877
3878 2000-04-03  Matt Welsh  <mdw@cs.berkeley.edu>
3879
3880         * jcf-depend.c (add_entry): Fixed bug where list was always replaced
3881         with latest entry.
3882
3883 2000-04-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3884
3885         * boehm.c (mark_reference_fields, set_bit): Prototype.
3886         (set_bit): Un-ANSI-fy definition.
3887
3888         * class.c (init_test_hash_newfunc, decl_hash, decl_compare):
3889         Prototype.
3890
3891         * decl.c (emit_init_test_initialization): Likewise.
3892
3893         * gjavah.c (jni_print_char): Likewise.
3894
3895         * parse.y (create_new_parser_context): Likewise.
3896
3897 Thu Mar 30 15:26:56 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3898
3899         * expr.c (java_lang_expand_expr): Added Anthony's Thu Jan 6 2000
3900         patch missing hunk. Fixed indentation.
3901
3902 2000-03-30  Tom Tromey  <tromey@cygnus.com>
3903
3904         * gjavah.c (D_NAN_MASK): Only define as word-reversed when
3905         HOST_FLOAT_WORDS_BIG_ENDIAN and HOST_WORDS_BIG_ENDIAN disagree.
3906
3907 2000-03-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3908
3909         * parse-scan.y (pop_class_context): Reset `inner_qualifier_length'
3910         when negative *before* using it as an array index.
3911         * ChangeLog: Fixed typo.
3912
3913 2000-03-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3914
3915         * parse-scan.y (pop_class_context): Reset `inner_qualifier_length'
3916         to 0 when it reaches -1.
3917
3918 2000-03-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3919
3920         * jcf-parse.c (get_constant): Properly cast `num' during the
3921         invocation of `add_double'.
3922         * jcf-write.c (push_long_const): Properly cast `lo' before
3923         comparing it to short bounds.
3924         * parse-scan.y (interface_declaration:): Rule re-arrange so that
3925         `interface_body:' is reduced after the current interface is
3926         pushed.
3927
3928 2000-03-26  Tom Tromey  <tromey@cygnus.com>
3929
3930         * jvspec.c (jvgenmain_spec): Add `%{<...}' construct for each
3931         Java-specific `-f' option.
3932
3933 Sun Mar 26 11:37:55 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
3934
3935         * decl.c (init_decl_processing): Only call initialize_sizetypes once.
3936         Adjust order of making types.
3937         Make bitsize_*_node values.
3938
3939 Sat Mar 25 09:12:10 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
3940
3941         * class.c (make_field_value): Use byte_position.
3942         * expr.c (JAVA_ARRAY_LENGTH_OFFSET): Use byte_position.
3943         (java_array_data_offset): Likewise.
3944         * java-tree.h (MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Add case to
3945         bzero call.
3946
3947 2000-03-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3948
3949         * parse.y (check_abstract_method_definitions): New local
3950         `end_type_reached'. Make sure we also consider `end_type'.
3951         (java_check_abstract_method_definitions): Make sure we eventually
3952         consider `java.lang.Object'.
3953         (maybe_use_access_method): Don't use access method if not in the
3954         context of a pure inner class or if the method's context is right.
3955         (find_applicable_accessible_methods_list): New static flag
3956         `object_done'. Don't search abstract classes as interfaces. Fixed
3957         indentation. Fixed the `java.lang.Object' only search. Search
3958         class interface(s) first, then fully search enclosing contexts.
3959         (find_most_specific_methods_list): Pick the closest candidate when
3960         they're all abstract.
3961
3962 Mon Mar 20 08:58:51 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3963
3964         * jcf-write.c (generate_bytecode_insns): TRY_FINALLY_EXPR:
3965         properly initialize `finished_label'. Don't emit gotos for empty
3966         try statements.
3967
3968 2000-03-19  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
3969
3970         * except.c (emit_handlers): Clear catch_clauses_last.
3971
3972 2000-03-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3973
3974         * parse.y (check_method_types_complete): New function.
3975         (create_class): Reset anonymous class counter only when seeing an
3976         non inner classe.
3977         (java_complete_class): JDEP_METHOD: Don't recompute signature
3978         if incomplete.
3979
3980 2000-03-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>
3981
3982         * class.c (build_static_ref): Fixed indentation in comment.
3983         * java-tree.def (TRY_EXPR): Fixed typo in name.
3984         (CLASS_LITERAL): Likewise.
3985         * java-tree.h: (TYPE_DOT_CLASS): New macro.
3986         (struct lang_type): New field `dot_class'.
3987         * jcf-write.c (generate_bytecode_insns): Fixed error message.
3988         (generate_classfile): Method `class$' is synthetic.
3989         * parse.y (build_do_class_method): New function.
3990         (build_dot_class_method_invocation): Likewise.
3991         (java_complete_expand_methods): Expand TYPE_DOT_CLASS if necessary.
3992         (resolve_qualified_expression_name): Handle CLASS_LITERAL.
3993         (qualify_ambiguous_name): Likewise.
3994         (patch_incomplete_class_ref): Invoke synthetic method if necessary.
3995         (build_try_statement): Fixed leading comment.
3996
3997 Fri Mar 17 08:09:14 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
3998
3999         * class.c (make_field_value): Properly handle sizes.
4000         (get_dispatch_vector): Use tree_low_cst and host_integerp.
4001         (layout_class_method): Count using trees.
4002         * decl.c (push_promoted_type): Set TYPE_{MIN,MAX}_VALUE with copy_node.
4003         * expr.c (java_array_data_offset): Use int_bit_position.
4004         (build_newarray, build_anewarray): Use host_integerp and tree_low_cst.
4005         (build_invokevirtual): Use tree_low_cst and do computations with trees.
4006
4007 2000-03-16  Tom Tromey  <tromey@cygnus.com>
4008
4009         * lang.c (flag_hash_synchronization): New global.
4010         (lang_f_options): Added `hash-synchronization'.
4011         * lang-options.h: Mention -fhash-synchronization.
4012         * java-tree.h (flag_hash_synchronization): Declare.
4013         * expr.c (java_lang_expand_expr): Only push `sync_info' value when
4014         hash table synchronization is disabled.
4015         * decl.c (init_decl_processing): Only push `sync_info' value when
4016         hash table synchronization is disabled.
4017         * class.c (make_class_data): Only push `sync_info' field when hash
4018         table synchronization is disabled.  Removed dead code.
4019
4020 2000-03-16  Tom Tromey  <tromey@cygnus.com>
4021
4022         * lang.c (lang_decode_option): Enable -Wunused when -Wall given.
4023
4024 2000-03-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4025
4026         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Disregard anonymous
4027         classes.
4028         * parse.y (patch_method_invocation): Handle anonymous classes
4029         creation in static context.
4030
4031 2000-03-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4032
4033         * parse.h (INNER_ENCLOSING_SCOPE_CHECK): New macro.
4034         * parse.y (resolve_qualified_expression_name): Use it.
4035         (patch_method_invocation): Likewise.
4036
4037 2000-03-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4038
4039         * parse.y (register_incomplete_type): JDEP_ENCLOSING set
4040         depending on the type of dependency which dictates what the
4041         current class is.
4042         (unresolved_type_p): Resolved types limited to the current class.
4043
4044 2000-03-15  Tom Tromey  <tromey@cygnus.com>
4045
4046         * decl.c (init_decl_processing): Set type of `sync_info' to be
4047         pointer to Object.
4048
4049         * boehm.c (get_boehm_type_descriptor): Correctly compute `bits'.
4050         Correctly compute bit number for current slot.  Zero `high' and
4051         `low' in DS_LENGTH case.  Don't skip inherited fields.  Use
4052         mark_reference_fields.
4053         (mark_reference_fields): New function.
4054
4055 Tue Mar 14 17:15:41 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4056
4057         * parse.y (register_incomplete_type): Fixed initialization of
4058         JDEP_ENCLOSING.
4059
4060 2000-02-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4061
4062         * parse-scan.y (inner_qualifier, inner_qualifier_length): New
4063         static globals.
4064         (push_class_context, pop_class_context): New function.
4065         (class_body:): Call pop_class_context.
4066         (interface_body:): Likewise.
4067         (INNER_QUALIFIER): New macro.
4068         (report_class_declaration): Changed output format and use
4069         INNER_QUALIFIER. Call push_class_context.
4070
4071 2000-02-14  Andrew Haley  <aph@cygnus.com>
4072
4073         * check-init.c (check_init): Add new cases for unary and binary
4074         tree nodes.
4075
4076 2000-03-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4077
4078         * parse.y (resolve_package): Set `next' once a type name has been
4079         progressively discovered.
4080         (resolve_qualified_expression_name): Propagate resolution only if
4081         there are remaining qualifiers. Take into account `q' might have
4082         been cleared after re-qualification.
4083         * parse.y (patch_method_invocation): New local `resolved'.
4084         Section dealing with qualified expression rewritten to use
4085         resolve_field_access.
4086
4087 Mon Mar 13 12:21:13 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4088
4089         * parse.h (PUSH_CPC): Fixed indentation.
4090         (DEBUG_CPC): New macro.
4091         (SET_CPC_INITIALIZER_STMT, SET_CPC_STATIC_INITIALIZER_STMT,
4092         SET_CPC_INSTANCE_INITIALIZER_STMT): New macros.
4093         * parse.y (class_body_declaration:): Use
4094         SET_CPC_INSTANCE_INITIALIZER_STMT.
4095         (method_declaration:): Check for null current_function_decl.
4096         (static_initializer:): Use SET_CPC_STATIC_INITIALIZER_STMT.
4097         (java_parser_context_pop_initialized_field): Better handling of
4098         empty lists.
4099         (maybe_make_nested_class_name): Mark nested class name as
4100         qualified when necessary.
4101         (end_class_declaration): Don't call java_parse_context_resume when
4102         one or more error occured.
4103         (add_inner_class_fields): Use SET_CPC_INITIALIZER_STMT.
4104         (register_fields): Use SET_CPC_STATIC_INITIALIZER_STMT and
4105         SET_CPC_INITIALIZER_STMT.
4106         (method_header): Check for inner classes declaring static methods.
4107         (resolve_qualified_expression_name): Handle situation where `this'
4108         is implied.
4109
4110 Mon Mar 13 11:36:51 2000  Hans Boehm <boehm@acm.org>
4111
4112         * typeck.c (build_prim_array_type): Correctly set the high word too.
4113
4114 2000-03-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4115
4116         * parse.y (java_complete_expand_methods): Leave <clinit> out of
4117         ordinary methods.
4118         (maybe_generate_pre_expand_clinit): Put <clinit> at the end of the
4119         list of methods for interfaces.
4120
4121 2000-03-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4122
4123         * parse.y (qualify_ambiguous_name): Properly handle expressions
4124         using `null'.
4125
4126 2000-03-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4127
4128         * parse.y (check_final_assignment): Extended to process
4129         COMPOUND_EXPR.
4130         (patch_assignment): Have check_final_assignment called only once.
4131
4132 2000-03-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4133
4134         * java-tree.h (IS_INIT_CHECKED): New flag.
4135         * check-init.c (check_init): Test and set IS_INIT_CHECKED.
4136         * parse.y (patch_string): Call force_evaluation_order on the
4137         completed string concatenation tree.
4138         * expr.c (force_evaluation_order): Call force_evaluation_order on
4139         function's arguments too.
4140
4141 Mon Mar  6 18:07:07 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
4142
4143         * decl.c (emit_init_test_initialization): Mark KEY as unused.
4144         * expr.c (build_newarray): Cast TREE_INT_CST_LOW to HOST_WIDE_INT.
4145         (build_anewarray): Likewise.
4146         * parse.y (patch_newarray): Likewise.
4147         * parse.c: Regenerated.
4148
4149 2000-03-06  Bryce McKinlay  <bryce@albatross.co.nz>
4150
4151         * decl.c (init_decl_processing): Added new class fields `depth',
4152         `ancestors', and `idt' to class_type_node. Use
4153         _Jv_LookupInterfaceMethodIdx for soft_lookupinterfacemthod_node.
4154         * class.c (make_class_data): Push initial values for new fields.
4155         * java-tree.h: Updated prototype for `build_invokeinterface'.
4156         * expr.c (build_invokeinterface): Changed parameters to accept
4157         `method' tree. Calculate index of `method' in its declaring
4158         interface. Build call to _Jv_LookupInterfaceMethodIdx.
4159         (expand_invoke): Call `build_invokeinterface' with new parameters.
4160         * parse.y (patch_invoke): Call `build_invokeinterface' with new
4161         parameters.
4162
4163 2000-03-06  Bryce McKinlay <bryce@albatross.co.nz>
4164
4165         * typeck.c (lookup_do): Search superinterfaces first
4166         when looking up an interface method. From Godmar Back
4167         <gback@cs.utah.edu>
4168
4169 2000-03-06  Tom Tromey  <tromey@cygnus.com>
4170
4171         * Make-lang.in (JAVA_SRCS): Added boehm.c, lex.c.
4172
4173 2000-03-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4174
4175         * java-tree.h (lookup_argument_method2): Declared.
4176         (safe_layout_class): Prototype moved from parse.h.
4177         * parse.h (safe_layout_class): Prototype moved to java-tree.h.
4178         * parse.y (java_check_regular_methods): Local `super_class' gone.
4179         Call lookup_argument_method2 instead of lookup_argument_method.
4180         Perform modifier match for methods found declared in implemented
4181         interfaces. Fixed indentation problem. Overriding/hiding error
4182         report to take place only for methods found in classes.
4183         * typeck.c (lookup_argument_method): Changed leading
4184         comment. Re-written by calling lookup_do.
4185         (lookup_argument_method2): New function.
4186         (lookup_java_method): Re-written by calling lookup_do.
4187         (lookup_do): New function.
4188
4189 Thu Mar  2 15:18:33 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4190
4191         * check-init.c (check_init): Removed dead code. Handle (blank)
4192         final variables.
4193         * parse.y (declare_local_variables): New local `final_p', set it
4194         and use it to initialize LOCAL_FINAL.
4195         (check_final_assignment): Only check FIELD_DECLs.
4196
4197 2000-02-17  Tom Tromey  <tromey@cygnus.com>
4198
4199         * Makefile.in (JAVA_OBJS): Added boehm.o.
4200         (boehm.o): New target.
4201         * Make-lang.in (JAVA_SRCS): Added boehm.c.
4202         * java-tree.h (flag_use_boehm_gc): Declare.
4203         (get_boehm_type_descriptor): Declare.
4204         * lang.c (lang_f_options): Added `use-boehm-gc'.
4205         (flag_use_boehm_gc): New global.
4206         * lang-options.h: Added -fuse-boehm-gc.
4207         * boehm.c: New file.
4208         * class.c (get_dispatch_table): If class uses a Boehm type
4209         descriptor, put it in the vtable.
4210         (make_class_data): Removed dead code.
4211
4212 2000-03-03  Per Bothner  <per@bothner.com>
4213
4214         * decl.c (init_decl_processing):  Initialize sizetype properly.
4215
4216 2000-03-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4217
4218         * java-tree.h (LOCAL_CLASS_P): New flag usage and macro.
4219         (PURE_INNER_CLASS_DECL_P, PURE_INNER_CLASS_TYPE_P): New macros.
4220         * jcf-dump.c (HANDLE_INNERCLASSES_ATTRIBUTE): New macro.
4221         * jcf-parse.c (HANDLE_INNERCLASSES_ATTRIBUTE): Likewise.
4222         (jcf_parse): New local `current'. Load innerclasses seen in outer
4223         context being processed.
4224         * jcf-reader.c (HANDLE_INNERCLASSES_ATTRIBUTE): New macro.
4225         * jcf-write.c (append_innerclasses_attribute): New function.
4226         (append_innerclasses_attribute_entry): Likewise.
4227         (get_access_flags): Handle static classes. Set anonymous and local
4228         classes to be private.
4229         (generate_classfile): Attribute count adjusted. Call
4230         append_innerclasses_attribute.
4231         * parse.h (SKIP_THIS_AND_ARTIFICIAL_PARMS): Use
4232         PURE_INNER_CLASS_TYPE_P.
4233         * parse.y (parser_qualified_classname): New parameter `is_static',
4234         produce non qualified name accordingly.
4235         (block_statement:): Set LOCAL_CLASS_P when declaring local class.
4236         (create_interface): Added argument to parser_qualified_classname.
4237         (create_class): Added argument to parser_qualified_classname. Setup
4238         alias for top level classes. Use PURE_INNER_CLASS_DECP_P.
4239         (add_inner_class_fields): Fixed indentation.
4240         (method_declarator): Use PURE_INNER_CLASS_DECP_P.
4241         (method_declarator): Fixed typo in comment.
4242         (craft_constructor): Use PURE_INNER_CLASS_DECP_P.
4243         (build_current_thisn): Likewise.
4244         (patch_method_invocation): Likewise.
4245
4246 2000-03-01  Martin von Loewis  <loewis@informatik.hu-berlin.de>
4247
4248         * decl.c (current_function_decl): Move to toplev.c.
4249
4250 Mon Feb 28 08:20:42 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
4251
4252         * java-tree.h (LABEL_PC): Relect name changes in ../tree.h.
4253         (DECL_BIT_INDEX): Use underlying representation.
4254         * parse.h (DECL_INHERITED_SOURCE_LINE): Likewise.
4255
4256 Sun Feb 27 16:40:33 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
4257
4258         * expr.c (build_java_ret): Pass proper type to size_binop.
4259
4260 2000-02-25  Anthony Green  <green@cygnus.com>
4261
4262         * expr.c (build_class_init): Mark the decl to be ignored by
4263         check_init.
4264         * java-tree.h (DECL_BIT_INDEX): Move definition from check-init.c
4265         * check-init.c: Move DECL_BIT_INDEX to java-tree.h
4266         * class.c (init_test_hash_newfunc): New function.
4267         (decl_hash): New function.
4268         (decl_compare): New function.
4269         * decl.c (emit_init_test_initialization): New function.
4270         (complete_start_java_method): Traverse the init test hashtable,
4271         calling emit_init_test_initialization.
4272         (always_initialize_class_p): Define.
4273         * expr.c (build_class_init): Use initialization tests when
4274         emitting class initialization code.
4275         (always_initialize_class_p): Declare.
4276         * jcf-parse.c (parse_class_file): Set always_initialize_class_p to
4277         1.
4278         * java-tree.h: Include hash.h.
4279         (DECL_FUNCTION_INIT_TEST_TABLE): Define.
4280         (struct lang_decl): Add init_test_table field.
4281         (init_test_hash_entry): Define.
4282
4283 Fri Feb 25 18:41:31 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4284
4285         * gjavah.c (main): Avoid using `argi' to report unimplemented
4286         options.
4287
4288 Fri Feb 25 18:47:25 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4289
4290         * jcf-write.c (generate_bytecode_insns): TRY_FINALLY_EXPR:
4291         initialize locals to avoid warnings. Local `exception_type' moved
4292         into if statement.
4293
4294 Fri Feb 25 18:00:37 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4295
4296         * parse.y (resolve_expression_name): Use `orig' as a second
4297         argument to resolve_field_access.
4298         (resolve_field_access): Removed unnecessary code when dealing with
4299         static fields.
4300
4301 Wed Feb 23 17:41:50 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4302
4303         * class.c (push_super_field): Don't push the field twice.
4304         * jcf-parse.c (parse_source_file): Call java_reorder_fields.
4305         * parse.h (java_reorder_fields): Prototyped.
4306         * parse.y (java_reorder_fields): New function.
4307         (java_layout_class): Simplified not to worry about re-ordering.
4308
4309 2000-02-23  Tom Tromey  <tromey@cygnus.com>
4310
4311         * gjavah.c (print_name): In JNI case, correctly quote string.
4312         (print_method_info): Don't handle overrides in JNI mode.
4313
4314 2000-02-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4315
4316         * parse.y (init_decl_processing): `_Jv_IsInstanceOf' returned
4317         value type set to `boolean_type_node'.
4318
4319 Mon Jan 18 14:30:09 2000  Joerg Brunsmann  <joerg.brunsmann@fernuni-hagen.de>
4320
4321         * jcf-dump.c (main): Test for correct condition after
4322         output file creation.
4323
4324 2000-02-19  Anthony Green  <green@cygnus.com>
4325
4326         * jcf-depend.c (add_entry): Fix test for first list entry.
4327
4328 Sat Feb 19 18:43:13 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
4329
4330         * class.c (build_class_ref, push_super_field): Set DECL_SIZE_UNIT.
4331         * constants.c (build_constants_constructor): Likewise.
4332
4333 2000-02-19  Anthony Green  <green@cygnus.com>
4334
4335         * jcf-depend.c (add_entry): Add entries to the end of the list.
4336
4337 Wed Nov 03 02:16:00 PST 1999  Pekka Nikander  <pekka.nikander@hut.fi>
4338
4339         * decl.c (INT_TYPE_SIZE): Define if necessary.
4340         (expand_java_return): Handle the case of a native integer smaller
4341         than a JVM integer.
4342
4343 2000-02-18  Martin von Loewis  <loewis@informatik.hu-berlin.de>
4344
4345         * gjavah.c (help): Use GCCBUGURL.
4346         * jv-scan.c (help): Likewise.
4347         * jcf-dump.c (help): Likewise.
4348
4349 Thu Feb 17 14:30:37 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4350
4351         * jcf-write.c (generate_bytecode_insns): Don't generate empty
4352         `finally' clauses.
4353
4354 Thu Feb 17 13:20:58 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4355
4356         * jcf-parse.c (load_class): Call `fatal' if no file containing
4357         the target class are found.
4358
4359 2000-02-16  Zack Weinberg  <zack@wolery.cumb.org>
4360
4361         * Makefile.in (PARSE_C, PARSE_SCAN_C): Move dependencies on
4362         lex.c, lex.h, and PARSE_H to...
4363         (parse.o, parse-scan.o): ...here, respectively.
4364
4365         * lex.c: Split out code that may trigger SIGFPE from yylex()
4366         to its own function.
4367         * lex.h (JAVA_FLOAT_RANGE_ERROR): Don't set value.
4368
4369 2000-02-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4370
4371         * Make-lang.in (jvspec.o): Depend on $(GCC_H), not gcc.h.
4372
4373 2000-02-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4374
4375         * parse.y (outer_field_access_p): Stop in time when outer contexts
4376         are exhausted.
4377         (resolve_qualified_expression_name): Properly qualify *everything*
4378         after a package.type to be resoled as expression names.
4379         (find_applicable_accessible_methods_list): Save/restore `class' to
4380         isolate it from a possible outer context search.
4381
4382 2000-02-15  Tom Tromey  <tromey@cygnus.com>
4383
4384         * gjavah.c (jni_print_char): New function.
4385         (print_full_cxx_name): Use it.
4386         (decode_signature_piece): Likewise.
4387         (print_cxx_classname): Likewise.
4388
4389 2000-02-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4390
4391         * Makefile.in (jv-scan, jcf-dump, gcjh): Depend on and link with
4392         version.o.
4393         (jcf-dump.o, gjavah.o, jv-scan.o): Depend on version.h.
4394
4395         * gjavah.c: Include version.h.
4396
4397         * jcf-dump.c: Likewise.
4398
4399         * jv-scan.c: Likewise.
4400
4401 Sat Feb 12 04:34:04 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4402
4403         * parse.y (outer_field_access_fix): First parameter now a tree
4404         node. Check for assignement to final. First argument to
4405         build_outer_field_access_fix modified to accomodate prototype.
4406         (build_outer_field_access): Don't check for assignment to final
4407         here.
4408         (java_complete_lhs): MODIFY_EXPR case: Check for `error_mark_node'
4409         possibly returned by outer_field_access_fix. Changed
4410         outer_field_access_fix's first argument.
4411         (check_final_assignment): $finit$'s context is OK.
4412         (patch_unaryop): Use node instead of its line/column value when
4413         calling outer_field_access_fix.
4414
4415 Fri Feb 11 17:38:26 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4416
4417         * parse.y (interface_declaration:): No longer tagged
4418         <node>. Re-installed default action.
4419         (class_member_declaration:): Handle inner interfaces.
4420         (interface_member_declaration): Handle inner interfaces and
4421         classes.
4422         (create_interface): Push error if one seen. Suspend parsing
4423         context when processing an inner interface.
4424         (register_fields): Inner class static field limitations not to
4425         apply to inner interfaces.
4426
4427 Thu Feb 10 22:07:35 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4428
4429         * jcf-parse.c (load_class): Update `java_error_count' when a
4430         class' file can't be found.
4431         (parse.y): Avoid (byte)code generation when errors seen.
4432
4433 Thu Feb 10 20:10:43 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4434
4435         * parse.y (java_complete_lhs): Handle TRUNC_DIV_EXPR. Ensure `fatal'
4436         decodes a valid node.
4437         (patch_binop): Handle TRUNC_DIV_EXPR.
4438
4439 Thu Feb 10 16:04:26 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4440
4441         * parse.y (resolve_package): New local `acc'. Try to progressively
4442         build and guess a package and type name.
4443
4444 Thu Feb 10 12:52:09 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4445
4446         * parse.y (find_applicable_accessible_methods_list): Load and
4447         layout the search class if necessary.
4448         (java_complete_tree): Keep to original type of the folded initial
4449         value.
4450
4451 2000-02-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4452
4453         * class.c (layout_class): Set and test CLASS_BEING_LAIDOUT.
4454         Generate error message if circularity is detected. New static
4455         local `list'.
4456         * java-tree.h (CLASS_BEING_LAIDOUT): New flag usage, new macro.  *
4457         * jcf-write.c (generate_bytecode_insns): Very simply handle
4458         SAVE_EXPR.
4459         * parse.y (java_check_circular_reference): Use
4460         `cyclic_inheritance_report' during report, if necessary.
4461         (java_complete_lhs): fixed comment with `THROW_EXPR:' case. Avoid
4462         walking NEW_ARRAY_INIT twice.
4463
4464 2000-02-09  Tom Tromey  <tromey@cygnus.com>
4465
4466         * parse.y (check_class_interface_creation): Allow inner classes to
4467         be `private' or `protected', check modifiers' consistency. Prevent
4468         block local classes from bearing any modifiers.
4469
4470 2000-02-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4471
4472         * except.c (check_start_handlers): Re-add prototype lost in last
4473         patch.
4474         (maybe_start_try): Remove excess argument to `check_start_handlers'.
4475
4476 2000-02-09  Andrew Haley  <aph@cygnus.com>
4477
4478         * decl.c (clear_binding_level): Remove excess initializer.
4479         (maybe_poplevels): Remove unused variable.
4480         (force_poplevels): Ditto.
4481         (struct binding_level): Add comment.
4482
4483 2000-02-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4484
4485         * jcf-write.c (generate_classfile): Don't consider
4486         pre-initialization with reference value (use <clinit> instead.)
4487         * parse.y (java_fix_constructors): No generated constructor for
4488         interfaces.
4489         (build_outer_field_access): Removed debug message.
4490         (outer_field_expanded_access_p): Adapted to bytecode generation.
4491         (build_outer_field_access_method): Use fix_method_argument_names.
4492         (build_outer_method_access_method): Fixed indentation. Added
4493         comment. Handle access method generation for static and also void
4494         methods.
4495         (build_access_to_thisn): Inserted debug message.
4496         (maybe_build_thisn_access_method): Use fix_method_argument_names.
4497         (resolve_qualified_expression_name): Fixed comment.
4498         (not_accessible_p): Adapted to bytecode generation. Added comment.
4499         (patch_method_invocation): Added comment.
4500         (maybe_use_access_method): Fixed leading comment. Handle static
4501         methods.
4502         (java_complete_lhs): Don't shortcut handling of initialized upon
4503         declaration String type static fields when generating bytecode.
4504         (patch_unaryop): Handle outer field access when generating
4505         bytecode.
4506
4507 Thu Feb  3 20:23:19 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4508
4509         * java-tree.h (FIELD_THISN): New macro.
4510         * jcf-write.c (append_synthetic_attribute): New function.
4511         (generate_classfile): Set "Synthetic" attribute on this$<n>,
4512         val$<name> fields, access$<n> and $finit$ methods. Fixed indentation.
4513         * parse.y (add_inner_class_fields): Set FIELD_THISN for created
4514         this$<n> fields.
4515         (build_outer_field_access): Turned on access functions usage and
4516         generation when compiling to bytecode.
4517         (maybe_use_access_method): Likewise.
4518
4519 2000-01-25  Andrew Haley  <aph@cygnus.com>
4520
4521         * java-except.h (struct eh_range): Add `expanded' field.
4522         (maybe_start_try): Add end_pc arg.
4523         (maybe_end_try): Ditto.
4524         * java-tree.h (force_poplevels): new function.
4525         * expr.c (expand_byte_code): Don't call maybe_start_try or
4526         maybe_end_try.
4527         * except.c (add_handler): Reset expanded.
4528         (expand_start_java_handler): Set expanded.
4529         (check_start_handlers): Don't expand a start handler that's
4530         already been expanded.
4531         (maybe_start_try): Add end_pc arg.  Only expand a handler which
4532         ends after end_pc.
4533         (expand_end_java_handler): call force_poplevels.
4534         (force_poplevels): new function.
4535         * decl.c (binding_level): Add start_pc of binding level.
4536         (maybe_pushlevels): Call maybe_start_try when pushing binding
4537         levels.
4538         (maybe_poplevels): Call maybe_end_try when popping binding levels.
4539         (LARGEST_PC): Define.
4540         (clear_binding_level): Use LARGEST_PC.
4541
4542         * java-tree.h (DEBUG_JAVA_BINDING_LEVELS): new define.
4543         * decl.c (DEBUG_JAVA_BINDING_LEVELS): new define.
4544         (binding_depth, is_class_level, current_pc): new variables.
4545         (struct binding_level): ditto.
4546         (indent): new function.
4547         (push_jvm_slot): add debugging info.
4548         (maybe_pushlevels): ditto.
4549         (maybe_poplevels): ditto.
4550         (pushlevel): ditto.
4551         (poplevel): ditto.
4552         (start_java_method): ditto.
4553         (give_name_to_locals): comment only.
4554         * except.c (binding_depth, is_class_level, current_pc):
4555         new variables.
4556         (expand_start_java_handler): add debugging info.
4557         (expand_end_java_handler): ditto.
4558
4559 2000-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4560
4561         * gjavah.c (overloaded_jni_method_exists_p): Add prototype.
4562         (print_name_for_stub_or_jni, process_file): Constify a char*.
4563
4564 2000-02-03  Tom Tromey  <tromey@cygnus.com>
4565
4566         * jcf-io.c (jcf_print_utf8_replace): Handle UTF-8 input.
4567
4568 2000-01-31  Scott Bambrough  <scottb@netwinder.org>
4569
4570         * gcc/java/javaop.h (WORDS_TO_DOUBLE): Allow WORDS_TO_DOUBLE to
4571         assemble doubles correctly when HOST_FLOAT_WORDS_BIG_ENDIAN is
4572         defined to be 1.
4573
4574 Wed Feb  2 18:43:37 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4575
4576         * java-tree.def (INSTANCE_INITIALIZERS_EXPR): New tree code.
4577         * java-tree.h (TYPE_II_STMT_LIST): New macro.
4578         (struct lang_type): New field `ii_block'.
4579         * lex.c (java_init_lex): Use CPC_INITIALIZER_LIST,
4580         CPC_STATIC_INITIALIZER_LIST and CPC_INSTANCE_INITIALIZER_LIST.
4581         * parse.h (struct parser_ctxt): New field `instance_initializers'.
4582         (CPC_INITIALIZER_LIST, CPC_STATIC_INITIALIZER_LIST,
4583         CPC_INSTANCE_INITIALIZER_LIST, CPC_INITIALIZER_STMT,
4584         CPC_STATIC_INITIALIZER_STMT, CPC_INSTANCE_INITIALIZER_STMT): New
4585         macros.
4586         * parse.y (add_instance_initializer): New function.
4587         (in_instance_initializer): New static global.
4588         (class_body_declaration:): Link instance initializer block.
4589         (static_initializer:): Use CPC_STATIC_INITIALIZER_STMT.
4590         (array_creation_expression:): Remove unused local.
4591         (java_parser_context_push_initialized_field): Fixed leading
4592         comment. Use CPC_STATIC_INITIALIZER_LIST, CPC_INITIALIZER_LIST and
4593         CPC_INSTANCE_INITIALIZER_LIST.
4594         (java_parser_context_pop_initialized_field): Likewise.
4595         (add_inner_class_fields): Use CPC_INITIALIZER_STMT.
4596         (register_fields): Use CPC_STATIC_INITIALIZER_STMT and
4597         CPC_INITIALIZER_STMT.
4598         (fix_constructors): New local `class_type'. Use it. Call
4599         add_instance_initializer.
4600         (java_complete_lhs): New case INSTANCE_INITIALIZERS_EXPR.
4601         (patch_return): Forbid return in instance initializers.
4602         (patch_throw_statement): Enforce exception handling in the context
4603         of instance initializers.
4604
4605 2000-02-03  Tom Tromey  <tromey@cygnus.com>
4606
4607         * Make-lang.in (java.mostlyclean): Remove executables in
4608         `mostlyclean'.
4609
4610 2000-01-31  Scott Bambrough  <scottb@netwinder.org>
4611
4612         * gcc/java/gjavah.c (D_NAN_MASK): Alternate definition required when
4613         HOST_FLOAT_WORDS_BIG_ENDIAN is defined to be 1.
4614         (java_float_finite): Convert to use union Word from javaop.h.
4615         (java_double_finite): Convert to use union DWord from javaop.h.
4616
4617 2000-02-02  Tom Tromey  <tromey@cygnus.com>
4618
4619         * gjavah.c (options): Added `jni' entry.
4620         (help): Document -jni.
4621         (flag_jni): New global.
4622         (process_file): Handle JNI output.  Don't print text from
4623         -prepend, -add, etc, when generating stubs.  Only remove `.class'
4624         suffix if it actually exists.
4625         (main): Create a `.c' file when run with `--jni --stubs'.  Create
4626         correct output file name with `--jni'.
4627         (print_include): Mangle header name differently in JNI case.
4628         (HANDLE_METHOD): In JNI mode, call print_method_info to generate
4629         method list.
4630         (print_method_info): Handle JNI case.  Put signature info into
4631         method name.  Handle case when STREAM is NULL.
4632         (print_name_for_stub_or_jni): New function.
4633         (print_stub_or_jni): Renamed from `print_stub'.  Handle JNI.
4634         (print_cxx_classname): Handle JNI.
4635         (print_full_cxx_name): Likewise.
4636         (decode_signature_piece): Likewise.
4637         (overloaded_jni_method_exists_p): New function.
4638         (struct method_name): Added `signature' and `sig_length' fields.
4639         (HANDLE_END_FIELD): Do nothing in JNI mode.
4640
4641 2000-02-02  Tom Tromey  <tromey@cygnus.com>
4642
4643         * jv-scan.c: Include version.c, <getopt.h>.
4644         (LONG_OPT, OPT_HELP, OPT_VERSION): New macros.
4645         (options): New array.
4646         (usage): New function.
4647         (version): New function.
4648         (main): Use getopt_long to parse command line.
4649         * jcf-dump.c: Include version.c, <getopt.h>.
4650         (LONG_OPT, OPT_classpath, OPT_CLASSPATH, OPT_HELP, OPT_VERSION,
4651         OPT_JAVAP): New macros.
4652         (options): New array.
4653         (usage): Return `void'.  Changed message.
4654         (help): New function.
4655         (version): New function.
4656         (main): Use getopt_long_only to parse command line.
4657         * gjavah.c: Include <getopt.h>.
4658         (LONG_OPT, OPT_classpath, OPT_CLASSPATH, OPT_HELP, OPT_TEMP,
4659         OPT_VERSION, OPT_PREPEND, OPT_FRIEND, OPT_ADD, OPT_APPEND, OPT_M,
4660         OPT_MM, OPT_MG, OPT_MD, OPT_MMD): New macros.
4661         (options): New array.
4662         (java_no_argument): Removed.
4663         (help): Updated with missing options.
4664         (main): Use getopt_long_only to parse command line.
4665         (usage): Changed message.
4666
4667 Tue Feb  1 22:23:41 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4668
4669         * java-tree.def (NEW_ANONYMOUS_ARRAY_EXPR): New tree code.
4670         * parse.h (ANONYMOUS_ARRAY_BASE_TYPE, ANONYMOUS_ARRAY_DIMS_SIG,
4671         ANONYMOUS_ARRAY_INITIALIZER): New access macros.
4672         * parse.y (array_creation_expression:): Handle anonymous arrays.
4673         (build_array_from_name): Don't set `ret_name' if null.
4674         (resolve_qualified_expression_name): New case NEW_ANONYMOUS_ARRAY_EXPR.
4675         (qualify_ambiguous_name): Likewise.
4676         (java_complete_expand_class): Likewise.
4677
4678 Tue Feb  1 14:59:35 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4679
4680         * java-tree.def (SYNCHRONIZED_EXPR): Fixed typo.
4681         * parse.h (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID): New macro.
4682         (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_STR): Likewise.
4683         (SKIP_THIS_AND_ARTIFICIAL_PARMS): Use DECL_FINIT_P.
4684         (AIPL_FUNCTION_FINIT_INVOCATION): Replaces
4685         AIPL_FUNCTION_COMPLETED_INVOCATION.
4686         (AIPL_FUNCTION_CTOR_INVOCATION): Replaces
4687         AIPL_FUNCTION_INVOCATION_READY.
4688         (AIPL_FUNCTION_DECLARATION): New enum entry.
4689         * parse.y (reorder_static_initialized): New function.
4690         (java_parser_context_pop_initialized_field): Use it.
4691         (add_inner_class_fields): Use
4692         MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID. Comment
4693         augmented. Install marker after last alias initializer, if any.
4694         (generate_finit): Fixed typo. Don't try to retain only the used
4695         fields.
4696         (method_header): Compute and set DECL_FUNCTION_NAP.
4697         (method_declarator): Fixed comment. Insert alias initializer in
4698         parameter list.
4699         (build_alias_initializer_parameter_list): Fixed leading
4700         comment. New case for AIPL_FUNCTION_DECLARATION. Old enum value
4701         replaced by new ones. Use MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID.
4702         (java_complete_expand_class): Code to retain only used aliases
4703         removed.
4704         (java_complete_expand_methods): New local `first_decl'. Generate
4705         $finit$ first, then expand the constructors, regular methods and
4706         <clinit>.
4707         (java_complete_expand_method): Don't report error on missing
4708         return statement if previously detected bogus.
4709         (fix_constructors): Don't patch constructor parameters list.
4710         (patch_method_invocation): Use new AIPL enum values. Reverse
4711         alias initializer list for anonymous classes.
4712
4713 2000-01-30  Anthony Green  <green@redhat.com>
4714
4715         * jcf-write.c (generate_bytecode_insns): Use TYPE_IS_WIDE to
4716         determine how many stack slots to pop.
4717
4718 2000-01-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4719
4720         * parse.y (formal_parameter:): Set `$$' to NULL_TREE for better
4721         error handling/recovery.
4722         * java-tree.h (SYNCHRONIZED_EXPR): Fixed typo in comment.
4723
4724 Fri Jan 28 20:10:57 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4725
4726         * java-tree.h (ARG_FINAL_P, FIELD_LOCAL_ALIAS,
4727         FIELD_LOCAL_ALIAS_USED): New macros.
4728         (DECL_FUNCTION_NAP): New macro.
4729         (struct lang_decl): New field `nap'.
4730         (TYPE_FINIT_STMT_LIST, TYPE_CLINIT_STMT_LIST): New macros.
4731         (struct lang_type): New fields `finit_stmt_list' and
4732         `clinit_stmt_list'.
4733         (CLASS_HAS_FINIT_P): Defined using TYPE_FINIT_STMT_LIST.
4734         * parse.h (MANGLE_OUTER_LOCAL_VARIABLE_NAME): New macro.
4735         (SKIP_THIS_AND_ARTIFICIAL_PARMS, MARK_FINAL_PARMS,
4736         UNMARK_FINAL_PARMS, CRAFTED_PARAM_LIST_FIXUP): New macros.
4737         (AIPL_FUNCTION_CREATION, AIPL_FUNCTION_COMPLETED_INVOCATION,
4738         AIPL_FUNCTION_INVOCATION_READY): New enum fields.
4739         (BUILD_THROW): Macro line separator re-indented.
4740         * parse.y (end_class_declaration): New function.
4741         (maybe_generate_pre_expand_clinit): New name for
4742         java_pre_expand_clinit. Create <clinit> off TYPE_CLINIT_STMT_LIST,
4743         pre-expand static fields.
4744         (maybe_generate_clinit): Function deleted.
4745         (check_for_static_method_reference): Prototype's parameter list
4746         indented.
4747         (generate_finit): New name for maybe_generate_finit. Changed
4748         leading comment. Function rewritten to use
4749         TYPE_FINIT_STMT_LIST. Call build_alias_initializer_parameter_list.
4750         (build_alias_initializer_parameter_list): New function.
4751         (java_parser_context_pop_initialized_field): Likewise.
4752         (add_inner_class_fields): Likewise.
4753         (type_declaration:): Call end_class_declaration.
4754         (class_member_declaration:): Likewise.
4755         (formal_parameter_list:): Fixed typos.
4756         (formal_parameter:): Use ARG_FINAL_P to mark created tree list
4757         element. Improved error handling.
4758         (block_statement:): Call end_class_declaration.
4759         (anonymous_class_creation:): Likewise.
4760         (create_anonymous_class): Fixed comments.
4761         (create_class): Call add_inner_class_fields.
4762         (register_fields): Set FIELD_LOCAL_ALIAS according to ARG_FINAL_P.
4763         (method_header): Use MARK_FINAL_PARMS.
4764         (finish_method_declaration): Use UNMARK_FINAL_PARMS.
4765         (method_declarator): Propagate final argument flag.
4766         (craft_constructor): New local `artificial'. Call
4767         build_alias_initializer_parameter_list. Use
4768         CRAFTED_PARAM_LIST_FIXUP, assign DECL_FUNCTION_NAP.
4769         (source_start_java_method): Mark parm decls with LOCAL_FINAL if
4770         necessary.
4771         (complete_expand_class): Get rid of unused outer context local
4772         alias fields.
4773         (java_complete_expand_methods): Fixed leading
4774         comment. Generate/pre-expand <clinit> first. Changed method
4775         expansion order to regular, $finit$, constructors, <clinit>.
4776         (java_complete_expand_method): Set current_function_decl.
4777         (fix_constructors): Fix constructor parameter list to account for
4778         outer context local alias initializers.
4779         (verify_constructor_super): Use SKIP_THIS_AND_ARTIFICIAL_PARMS.
4780         (resolve_expression_name): Lookup outer context local aliases. New
4781         local `access', use it.
4782         (patch_method_invocation): Patch inner class ctor invocation with
4783         outer context local aliases initialization values. $finit$
4784         invocation patching now includes things generated with
4785         build_alias_initializer_parameter_list.
4786         (argument_types_convertible): Use SKIP_THIS_AND_ARTIFICIAL_PARMS.
4787         (build_super_invocation): Likewise.
4788         (patch_assignment): Changed comment.
4789
4790 2000-01-27  Andrew Haley  <aph@cygnus.com>
4791
4792         * jcf-write.c (emit_goto): RESERVE 3 bytes for insn.
4793         (emit_if): Ditto.
4794         (emit_jsr): Ditto.
4795
4796 2000-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4797
4798         * parse.h (OBSOLETE_MODIFIER_WARNING): Don't use ANSI string
4799         concatenation.
4800         (OBSOLETE_MODIFIER_WARNING2): New macro allowing two args.
4801
4802         * parse.y (register_fields): Don't pass a format specifier to
4803         OBSOLETE_MODIFIER_WARNING.
4804         (check_abstract_method_header): Use OBSOLETE_MODIFIER_WARNING2
4805         instead of OBSOLETE_MODIFIER_WARNING, and don't pass a format
4806         specifier.
4807         (check_modifiers): Change function into a macro.
4808         (check_class_interface_creation): Pass a literal format string.
4809
4810 2000-01-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4811
4812         * buffer.h: PROTO -> PARAMS.
4813         * check-init.c: Likewise.
4814         * class.c: Likewise.
4815         * constants.c: Likewise.
4816         * convert.h: Likewise.
4817         * decl.c: Likewise.
4818         * except.c: Likewise.
4819         * expr.c: Likewise.
4820         * gjavah.c: Likewise.
4821         * java-except.h: Likewise.
4822         * java-tree.h: Likewise.
4823         * jcf-depend.c: Likewise.
4824         * jcf-dump.c: Likewise.
4825         * jcf-parse.c: Likewise.
4826         * jcf-path.c: Likewise.
4827         * jcf-reader.c: Likewise.
4828         * jcf-write.c: Likewise.
4829         * jcf.h: Likewise.
4830         * jv-scan.c: Likewise.
4831         * jvgenmain.c: Likewise.
4832         * jvspec.c: Likewise.
4833         * lang.c: Likewise.
4834         * lex.c: Likewise.
4835         * lex.h: Likewise.
4836         * parse-scan.y: Likewise.
4837         * parse.h: Likewise.
4838         * parse.y: Likewise.
4839         * typeck.c: Likewise.
4840         * verify.c: Likewise.
4841         * xref.c: Likewise.
4842         * xref.h: Likewise.
4843         * zextract.c: Likewise.
4844         * zipfile.h: Likewise.
4845
4846 2000-01-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4847
4848         * class.c (make_class): Use MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC.
4849         (is_compiled_class): Remove test on TYPE_LANG_SPECIFIC, use TYPE_JCF.
4850         * constants.c (build_constant_data_ref): Check for cached
4851         current_constant_pool_data_ref. Cache current_constant_pool_data_ref
4852         in TYPE_CPOOL_DATE_REF.
4853         * java-tree.h (TYPE_JCF, TYPE_CPOOL, TYPE_CPOOL_DATA_REF,
4854         MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC:) New macros.
4855         (struct lang_type): New fields `cpool' and `cpool_data_ref'.
4856         (LOCAL_FINAL): New macro.
4857         * jcf-parse.c (init_outgoing_cpool): Always allocate new outgoing
4858         constant pool -- don't try to reuse.
4859         (parse_zip_file_entries): Use TYPE_JCF, don't lazily allocate
4860         TYPE_LANG_SPECIFIC.
4861         (find_in_current_zip): Use TYPE_JCF.
4862         * parse.h (java_check_final): Prototype removed.
4863         * parse.y (create_class): Reversed Jan 12, 2000 extra argument patch.
4864         (maybe_create_class_interface_decl,
4865         check_class_interface_creation): Likewise.
4866         (java_expand_finals): Function removed.
4867         (class_declaration:): Reversed Jan 12, 2000 extra argument patch.
4868         (block_statement:): Fixed comment.
4869         (anonymous_class_creation:): Likewise.
4870         (check_class_interface_creation): Reversed Jan 12, 2000 extra
4871         argument patch.
4872         (check_class_interface_creation): Loosened error report on (inner)
4873         public class declarations. CPC_INNER_P replaces GET_CPC_LIST.
4874         (link_nested_class_to_enclosing): Reversed Jan 12, 2000 patch.
4875         (maybe_create_class_interface_decl): Reversed Jan 12, 2000 extra
4876         argument patch.
4877         (create_interface): Likewise.
4878         (anonymous_class_counter): New static global.
4879         (create_anonymous_class): Reversed Jan 12, 2000 extra argument
4880         patch. Fixed comments.
4881         (create_class): Reversed Jan 12, 2000 extra argument patch. Reset
4882         anonymous_class_counter when declaring a toplevel class.
4883         (craft_constructor): Fixed constructor name when handling
4884         anonymous classes. Anonymous class constructors to feature hidden
4885         this$<n> parameter.
4886         (java_fix_constructors): Added comment.
4887         (java_check_final): Function removed.
4888         (java_complete_expand_methods): Fixed comment. Don't generate
4889         class data, save its outgoing constant pool instead.
4890         (verify_constructor_super): Skip anonymous class constructor
4891         hidden this$<n> parameter.
4892         (java_expand_classes): New local `saved_ctxp'. Removed call to
4893         java_expand_finals and java_check_final. Expand anonymous class
4894         constructors. Generate class data.
4895         (build_super_invocation): Skip anonymous class hidden this$<n>
4896         parameter.
4897         * typeck.c (build_java_signature): Use TYPE_SIGNATURE and
4898         MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC.
4899         (set_java_signature): Likewise.
4900
4901 Mon Jan 18 14:30:09 2000  Joerg Brunsmann  <joerg.brunsmann@fernuni-hagen.de>
4902
4903         * gjavah.c: Delete ACC_VISIBILITY define.
4904         * jcf.h: Add ACC_VISIBILITY define.
4905         * parse.y: final: rule tagged <value>.
4906         (java_check_regular_methods): Use ACC_VISIBILITY define for
4907         default package access check.
4908         (local_variable_declaration_statement): Use final: rule.
4909
4910 Mon Jan 17 11:58:17 2000  Joerg Brunsmann  <joerg.brunsmann@fernuni-hagen.de>
4911
4912         * parse.y (format_parameter:): Use final: rule instead of modifiers:.
4913         (final:): New rule.
4914
4915 2000-01-17  Tom Tromey  <tromey@cygnus.com>
4916
4917         * gjavah.c (print_field_info): Allow non-static final fields.
4918
4919 Fri Jan 14 18:03:41 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4920
4921         * parse.h (enum jdep_code): New entry `JDEP_ANONYMOUS'.
4922         * parse.y (patch_anonymous_class): New function.
4923         (create_anonymous_class): Register incomplete type when the
4924         class/interface to extends/implement isn't known yet.
4925         (parser_check_super_interface): Simplify argument to CLASS_INTERFACE.
4926         (verify_constructor_super): Tuned error message.
4927
4928 Fri Jan 14 00:14:24 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4929
4930         * java-tree.h (FOR_LOOP_P): Replaces IS_FOR_LOOP_P.
4931         (ANONYMOUS_CLASS_P): New macro.
4932         (TYPE_SIGNATURE, TYPE_JCF): New macros.
4933         (INNER_CLASS_TYPE_P): Fixed typo in leading comment.
4934         * parse.y (create_class): Added leading argument.
4935         (maybe_create_class_interface_decl,
4936         check_class_interface_creation): Likewise.
4937         (craft_constructor): New function.
4938         (verify_constructor_super): Added argument in prototype.
4939         (class_declaration:): Inserted leading argument.
4940         (for_begin:): Use FOR_LOOP_P.
4941         (anonymous_class_creation): Create WFL of the anonymous class to
4942         instantiate. Call build_new_invocation. Added comments.
4943         (check_class_interface_creation): Handle parameter `anonymous' in
4944         verbose mode class creation announce.
4945         (link_nested_class_to_enclosing): Exclude anonymous classes.
4946         (maybe_create_class_interface_decl): Don't set DECL_CONTEXT on
4947         anonymous class, even though they appear to have an enclosing
4948         context.
4949         (create_interface): Pass extra argument to
4950         check_class_interface_creation.
4951         (create_anonymous_class): Set ANONYMOUS_CLASS_P to 1.
4952         (create_class): Call check_class_interface_creation and
4953         maybe_create_class_interface_decl with extra new argument. Don't
4954         add private this$<n> to anonymous classes.
4955         (method_declarator): Insert hidden this$<n> to anonymous class
4956         constructors.
4957         (java_fix_constructors): Deleted code creating default
4958         constructor. Call craft_constructor instead.
4959         (java_check_regular_methods): Set `saw_constructor' to 1 for
4960         anonymous classes.
4961         (fix_constructors): Pass extra argument to verify_constructor_super.
4962         (verify_constructor_super): New local `sdecl', use it. Search for
4963         matching constructor (possibly featuring arguments) in super
4964         class.
4965         (lookup_method_invoke): Craft constructor according to arguments
4966         list when dealing with anonymous class constructors.
4967         (build_super_invocation): Pass arguments to anonymous class super
4968         constructors.
4969         (search_loop): Use FOR_LOOP_P.
4970         (labeled_block_contains_loop_p): Likewise.
4971
4972 Wed Jan 12 00:38:47 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
4973
4974         * class.c (set_super_info): Set CLASS_STATIC when appropriate.
4975         (enclosing_context_p): New function.
4976         (get_access_flags_from_decl): Handle CLASS_STATIC.
4977         (maybe_layout_super_class): Extra first argument passed to
4978         do_resolve_class.
4979         (layout_class_method): Use ID_FINIT_P, DECL_CLINIT_P and
4980         ID_INIT_P.
4981         * decl.c (access0_identifier_node): New global.
4982         (init_decl_processing): access0_identifier_node initialized.
4983         (pushdecl): Set DECL_CONTEXT only on non type decls.
4984         * expr.c (lookup_field): Lookup inner class fields in enclosing
4985         contexts.
4986         (expand_invoke): Use ID_INIT_P.
4987         (expand_java_field_op): Use DECL_CLINIT_P.
4988         * java-tree.def (CLASS_LITERAL): New tree code.
4989         * java-tree.h (DECL_FUNCTION_ACCESS_DECL,
4990         DECL_FUNCTION_INNER_ACCESS, FIELD_INNER_ACCESS): New macros.
4991         (struct lang_decl): New field `inner_access'.
4992         (enclosing_context_p): Prototyped.
4993         (DECL_INIT_P, DECL_FINIT_P, DECL_CLINIT_P, ID_INIT_P, ID_FINIT_P,
4994         ID_CLINIT_P): New macros.
4995         (CLASS_STATIC): New macro.
4996         (CLASS_ACCESS0_GENERATED_P): New macro.
4997         (OUTER_FIELD_ACCESS_IDENTIFIER_P, INNER_CLASS_DECL_P,
4998         TOPLEVEL_CLASS_DECL_P, INNER_CLASS_TYPE_P, TOPLEVEL_CLASS_TYPE_P,
4999         INNER_CLASS_P): New macros.
5000         (DECL_INNER_CLASS_LIST): New macro.
5001         * jcf-parse.c (yyparse): Avoid the use of ANSI string
5002         concatenation.
5003         * jcf-write.c (generate_bytecode_insns): binop: Change the type of
5004         the shift value to int. Fixed typo in comment.
5005         * lex.c (inst_id, wpv_id): Initialize.
5006         * mangle.c (unicode_mangling_length): Take `$' into account.
5007         * parse.h (DRECOVER, RECOVER): Terminate properly.
5008         (IDENTIFIER_INNER_CLASS_OUTER_FIELD_ACCESS): New macro.
5009         (typedef struct _jdep): New field `enclosing'.
5010         (JDEP_ENCLOSING): New macro.
5011         (IS_CLINIT): Deleted (DECL_CLINIT_P replaces it.)
5012         (struct parser_ctxt): New fields `marker_beginning', `marked_end'.
5013         (GET_CPC_LIST, CPC_INNER_P, GET_CPC, GET_CPC_UN, GET_CPC_UN_MODE,
5014         GET_CPC_DECL_NODE, GET_ENCLOSING_CPC, GET_NEXT_ENCLOSING_CPC,
5015         GET_ENCLOSING_CPC_CONTEXT): New macros.
5016         (PUSH_CPC, PUSH_ERROR, POP_CPC): New macros.
5017         (do_resolve_class): Added extra argument in prototype.
5018         * parse.y (resolve_class): Added extra argument in prototype.
5019         (maybe_create_class_interface_decl): Likewise.
5020         (maybe_use_access_method, build_wfl_wrap): New functions.
5021         (java_complete_expand_classes, java_complete_expand_class):
5022         Likewise.
5023         (java_parser_context_push_initialized_field,
5024         java_parser_context_suspend, java_parser_context_resume):
5025         Likewise.
5026         (maybe_make_nested_class_name, make_nested_class_name,
5027         set_nested_class_simple_name_value,
5028         link_nested_class_to_enclosing, find_as_inner_class,
5029         find_as_inner_class_do, check_inner_class_redefinition,
5030         build_thisn_assign, build_current_thisn, build_access_to_thisn,
5031         maybe_build_thisn_access_method, build_outer_field_access,
5032         build_outer_field_access_methods, build_outer_field_access_expr,
5033         build_outer_method_access_method, build_new_access_id,
5034         build_outer_field_access_method, outer_field_access_p,
5035         outer_field_expanded_access_p, outer_field_access_fix,
5036         build_incomplete_class_ref, patch_incomplete_class_ref,
5037         create_anonymous_class): Likewise.
5038         (inst_id, wpv_id): New static global variables.
5039         (synchronized:): New rule, tagged <node>.
5040         (type_declaration:): No longer tagged <node>. Call POP_CPC in sub
5041         rules.
5042         (anonymous_class_creation:): New rule, tagged <node>.
5043         (NEW_TK): Tagged <node>.
5044         (type_literals, array_type_literal): New rules, tagged <node>.
5045         (class_declaration:): Removed action when reducing by class_body:
5046         (class_body:): Set DECL_END_SOURCE_LINE and rule's returned value
5047         using GET_CPC in sub-rules.
5048         (class_member_declaration): Handle inner classes.
5049         (method_declaration): When reducing method_header:, reset
5050         current_function_decl when appropriate.
5051         (method_declarator:): Set the number of formal parameter to 0 for
5052         method declared without arguments.
5053         (constructor_declarator:): Likewise.
5054         (static_initializer:): List of elements kept in a list.
5055         (static:): Rule modifiers: replaces MODIFIER_TK. Enforce correct
5056         use of the keyword `static' for type declarations.
5057         (block_statement:): Handle inner class declarations.
5058         (primary_no_new_array:): Use type_literals:. Fixed comment. Handle
5059         type qualified `this'.
5060         (class_instance_creation_expression): Use anonymous_class_creation:
5061         to handle inner class instances creation. Handle qualified `new'.
5062         (something_dot_new): Added appropriate actions.
5063         (create_new_parser_context): New function.
5064         (java_push_parser_context, java_parser_context_save_global,
5065         java_parser_context_suspend): Use create_new_parser_context.
5066         (check_modifiers): Changed leading comment.
5067         (check_class_interface_creation): Handle interclasses.
5068         (add_superinterfaces): Fixed comment.
5069         (create_interface): Build qualified name from the raw_name instead
5070         of its matching WFL. Push the initialized fields list. raw_name added
5071         as an extra argument to maybe_create_class_interface_decl.
5072         (create_class): Build qualified name from the raw_name instead of
5073         its matching WFL. Removed assignment to current_parsed_class_un.
5074         Call PUSH_ERROR before returning an error. Suspend the current
5075         parser context when processing an inner class. Push the
5076         initialized fields list. raw_name added as an extra argument to
5077         maybe_create_class_interface_decl. Add the private this$<n>
5078         field.
5079         (duplicate_declaration_error_p): Use GET_CPC when calling find_field.
5080         (register_fields): Get the class type from GET_CPC and handle
5081         previous errors.  Added code to handle the creation of static
5082         fields in inner classes. Initialized fields initialization
5083         statements kept in a list of lists.
5084         (maybe_generate_finit): Initialized fields initialization
5085         statements kept in a list of lists. Use GET_CPC.
5086         (maybe_generate_clinit): Likewise.
5087         (method_header): Use GET_CPC and GET_CPC_UN.
5088         (parser_qualified_classname): Handle inner classes.
5089         (register_incomplete_type): Set JDEP_ENCLOSING using GET_CPC.
5090         (java_fix_constructors): Hide pointer to enclosing context
5091         instance in constructor list when dealing with inner classes.
5092         (jdep_resolve_class): Call resolve_class with extra first argument
5093         JDEP_ENCLOSING.
5094         (resolve_class): Add enclosing context as a first extra argument
5095         to do_resolve_class.
5096         (do_resolve_class): Call find_as_inner_class. Handle WFLs
5097         properly.
5098         (resolve_no_layout): Extra argument added to resolve_class
5099         invocation.
5100         (reset_method_name): Use DECL_CLINIT_P, DECL_FINIT_P.
5101         (java_get_real_method_name): Use GET_CPC_UN.
5102         (check_abstract_method_definitions): Use DECL_CLINIT_P.
5103         (java_check_abstract_methods): Handle static method declared in
5104         inner classes by an error.
5105         (java_check_regular_methods): Use DECL_CLINIT_P.
5106         (source_start_java_method): Also set DECL_MAX_LOCALS.
5107         (create_artificial_method): Call java_parser_context_save_global
5108         and java_parser_context_restore_global instead of saving/restoring
5109         the context by hand.
5110         (expand_start_java_method): Improved verbose mode message.
5111         (java_complete_expand_methods): Fixed leading comment. Use
5112         DECL_CLINIT_P.
5113         (fix_constructors): Added assignment to this$<n> if necessary.
5114         (java_expand_classes): Call java_complete_expand_classes instead
5115         of java_complete_expand_methods.
5116         (make_qualified_primary): Simplified.
5117         (merge_qualified_name): Optimized for missing left or right parts.
5118         (resolve_expression_name): Handle access to outer class fields from
5119         interclasses.
5120         (resolve_qualified_expression_name): New macro
5121         RESTORE_THIS_AND_CURRENT_CLASS, used. Handle creation of inner
5122         classes. Report error on non appropriate qualification of
5123         `new'. Handle qualified `this'.
5124         (not_accessible_p): Allow access to outer class private fields from
5125         inner classes.
5126         (patch_method_invocation): Handle method invocations through
5127         access methods and inner class constructor invocations.
5128         (find_applicable_accessible_methods_list): Search enclosing
5129         contexts of an inner class.
5130         (search_applicable_methods_list): Fixed typo.
5131         (argument_types_convertible): Handle inner class constructors'
5132         hidden outer context reference argument.
5133         (qualify_ambiguous_name): Handle qualified `this'.
5134         (java_complete_lhs): Handle use of field accessed through
5135         artificial access methods in various cases of assignments. Handle
5136         CLASS_LITERAL node.
5137         (check_final_assignment): Use DECL_CLINIT_P.
5138         (valid_ref_assignconv_cast_p): Handle the destination being an
5139         enclosing context of the source.
5140         (patch_unaryop): Handle use of field accessed through artificial
5141         access methods.
5142         (patch_return): Use DECL_CLINIT_P.
5143         (patch_throw_statement): Use DECL_CLINIT_P.
5144         (check_thrown_exceptions): Use DECL_FINIT_P and DECL_INIT_P.
5145         * verify.c (verify_jvm_instructions): Use ID_CLINIT_P and
5146         ID_INIT_P.
5147
5148 2000-01-16  Anthony Green  <green@cygnus.com>
5149
5150         * parse.y (build_string_concatenation): Only use
5151         StringBuffer(String) shortcut if String arg is constant.
5152
5153 Wed Jan 12 20:20:11 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5154
5155         * jcf-write.c (generate_bytecode_insns): binop: Change the type of
5156         the shift value to int. Fixed typo in comment.
5157
5158 2000-01-11  Mumit Khan  <khan@xraylith.wisc.edu>
5159
5160         * jcf-path.c: Delete PATH_SEPARATOR and DIR_SEPARATOR macros.
5161         * jcf-write.c: Likewise.
5162         * parse.y: Likewise.
5163         * parse.c: Regenerate.
5164
5165 2000-01-09  Anthony Green  <green@cygnus.com>
5166
5167         * jcf-write.c (generate_bytecode_insns): Emit invokeinterface
5168         bytecodes in the correct order.
5169
5170 2000-01-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5171
5172         * Makefile.in (jcf-dump, gcjh): Move ../errors.o before $(LIBS).
5173
5174 Thu Jan  6 16:31:28 2000  Anthony Green  <green@cygnus.com>
5175
5176         * expr.c (java_lang_expand_expr): Switch to permanent obstack
5177         before building constant array decl.
5178
5179 Thu Jan  6 00:54:10 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5180
5181         * jcf-write.c (generate_bytecode_conditional): Fixed indentation in
5182         method invocation and typo in conditional expression.
5183         (generate_bytecode_insns): COND_EXPR can be part of a binop. Issue
5184         the appropriate NOTE_POP.
5185         * parse.y (patch_binop): Shift value mask to feature the right
5186         type.
5187
5188 1999-12-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5189
5190         * class.c (assume_compiled, assume_compiled_node): Add static
5191         prototype.
5192         (add_assume_compiled): Use xmalloc/xstrdup, not malloc/strdup.
5193
5194         * jcf-dump.c (ARRAY_NEW_NUM): Cast long to int in switch.
5195
5196         * jvgenmain.c (usage): Add static prototype with ATTRIBUTE_NORETURN.
5197
5198         * parse.h (OBSOLETE_MODIFIER_WARNING): Rename parameter `modifier'
5199         to `__modifier' to avoid stringifying it.
5200
5201         * parse.y (verify_constructor_circularity): Don't call a variadic
5202         function with a non-literal format string.
5203         (java_check_abstract_methods): Move unreachable code inside
5204         `continue' statement.
5205         (lookup_method_invoke): Call xstrdup, not strdup.
5206
5207         * expr.c (expand_java_field_op): Avoid the use of ANSI string
5208         concatenation.
5209
5210         * jcf-parse.c (yyparse): Likewise.
5211
5212         * jv-scan.c (main): Likewise.
5213
5214 1999-12-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5215
5216         * parse.h (ABSTRACT_CHECK, JCONSTRUCTOR_CHECK,
5217         ERROR_CANT_CONVERT_TO_BOOLEAN, ERROR_CANT_CONVERT_TO_NUMERIC,
5218         ERROR_CAST_NEEDED_TO_INTEGRAL): Avoid the use of ANSI string
5219         concatenation.
5220
5221         * parse.y (synchronized, variable_redefinition_error,
5222         check_class_interface_creation, create_interface, create_class,
5223         method_header, finish_method_declaration,
5224         check_modifiers_consistency, method_declarator,
5225         complete_class_report_errors, check_abstract_method_definitions,
5226         java_check_regular_methods, check_throws_clauses,
5227         java_check_abstract_methods, read_import_dir,
5228         check_pkg_class_access, declare_local_variables, fix_constructors,
5229         cut_identifier_in_qualified, resolve_expression_name,
5230         resolve_qualified_expression_name, patch_method_invocation,
5231         java_complete_lhs, patch_assignment, try_builtin_assignconv,
5232         patch_binop, patch_array_ref, patch_newarray, build_labeled_block,
5233         patch_exit_expr, patch_exit_expr, patch_switch_statement,
5234         patch_try_statement, patch_synchronized_statement,
5235         patch_throw_statement, check_thrown_exceptions,
5236         patch_conditional_expr): Likewise.
5237
5238 Fri Dec 24 00:25:29 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5239
5240         * Makefile.in (LIBDEPS): Added gcc's errors.o
5241         (../jcf-dump$(exeext):): Link with gcc's errors.o
5242         (../gcjh$(exeext):): Likewise.
5243         * expr.c (expand_java_NEW): Layout the entire target type instead of
5244         laying out its methods only.
5245         (lookup_field): Layout the class after having loaded it.
5246         * java-tree.h (java_debug_context): Declared.
5247         * jcf-io.c (toplev.h): Included.
5248         (find_class): Removed assignment to jcf's outofsynch
5249         field. Force source file to be read if newer than its matching
5250         class file. Tweaked debug messages.
5251         * jcf-parse.c (jcf_out_of_synch): Deleted.
5252         (read_class): Call to jcf_out_of_synch removed.
5253         * jcf.h (typedef struct JCF): Field `outofsynch' deleted.
5254         (jcf_out_of_synch): Prototype deleted.
5255         * parse.h (struct parser_ctxt): `minus_seen', `java_error_flag',
5256         `deprecated' and `class_err': integer turned into bit fields.
5257         New bit fields `saved_data_ctx' and `saved_data'. Fixed comments.
5258         * parse.y (package_list): New global.
5259         (package_declaration:): Record newly parsed package name.
5260         (extra_ctxp_pushed_p): Static global deleted.
5261         (java_parser_context_save_global): Create buffer context for the
5262         purpose of saving globals, if necessary.
5263         (java_parser_context_restore_global): Pop context pushed for the
5264         purpose of saving globals, if necessary.
5265         (java_debug_context_do): New prototype and function.
5266         (java_debug_context): Likewise.
5267         (do_resolve_class): Use already parsed package names to qualify
5268         and lookup class candidate.
5269         (java_pre_expand_clinit): Removed unnecessary local variable.
5270
5271 1999-12-17  Tom Tromey  <tromey@cygnus.com>
5272
5273         * gjavah.c (decode_signature_piece): Print "::" in JArray<>.  This
5274         fixes PR gcj/119.
5275         (process_file): Use `\n\' at end of each line in string.
5276
5277 Thu Dec 16 00:09:45 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5278
5279         * expr.c (expand_invoke): Layout the loaded class before
5280         attempting to use it.
5281         (expand_java_field_op): Allow final field assignments to take
5282         place in $finit$.
5283         * typeck.c (convert): Return error_mark_node if expr is null.
5284
5285 1999-12-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5286
5287         * class.c (class_depth): Return -1 if the class doesn't load
5288         properly.
5289         * expr.c (can_widen_reference_to): Check for errors during depth
5290         computation and return 0 accordingly.
5291         * jcf-parse.c (parse_source_file): Call java_fix_constructors to
5292         create default constructors and add an other error check.
5293         * parse.h (java_fix_constructors): Prototyped.
5294         * parse.y (java_pre_expand_clinit): Likewise.
5295         (build_super_invocation): Re-prototyped to feature one argument.
5296         (java_check_circular_reference): Directly use `current'.
5297         (java_fix_constructors): New function.
5298         (java_check_regular_methods): Don't create default constructors
5299         here, but abort if none were found.
5300         (java_complete_expand_methods): Pre-process <clinit> calling
5301         java_pre_expand_clinit.
5302         (java_pre_expand_clinit): New function.
5303         (fix_constructors): build_super_invocation invoked with the
5304         current method declaration as an argument.
5305         (build_super_invocation): Use the context of the processed method
5306         decl argument instead of current_class.
5307         * typeck.c (lookup_java_method): Take WFLs in method names into
5308         account.
5309
5310 Tue Dec 14 14:20:16 1999  Per Bothner  <per@bothner.com>
5311
5312         * class.c (make_class_data): flag_keep_inline_functions to keep
5313         private methods in the method array.
5314
5315 1999-12-15  Anthony Green  <green@cygnus.com>
5316
5317         * check-init.c (check_init): Take into account both types of
5318         `throw's when checking for uninitialized variables.
5319
5320 Fri Dec 10 21:53:45 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5321
5322         * parse.y (java_complete_lhs): Force convertion of array
5323         dimensions to int_type_node, that's what runtime's ABI expects.
5324
5325 Fri Dec 10 16:13:48 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5326
5327         * parse.h (EXPR_WFL_QUALIFICATION): Temporary uses the third
5328         operand of a WFL, until the Java front-end gets fixed with regard
5329         to Mark Mitchell's gcc/tree.h patch (1999-12-04.)
5330
5331 1999-12-10  Andrew Haley  <aph@cygnus.com>
5332
5333         * parse.h (BUILD_THROW): Add support for sjlj-exceptions.
5334         decl.c (init_decl_processing): Add _Jv_Sjlj_Throw.
5335         expr.c (build_java_athrow): Add support for sjlj-exceptions.
5336         java-tree.h: Ditto.
5337         jcf-write.c: Ditto.
5338
5339 Wed Dec  8 15:33:26 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5340
5341         * expr.c (java_lang_expand_expr): Switch to permanent obstack
5342         before calling expand_eh_region_start and expand_start_all_catch.
5343         * except.c (expand_start_java_handler): Switch to permanent
5344         obstack before calling expand_eh_region_start.
5345         (expand_end_java_handler): Switch to permanent obstack before
5346         calling expand_start_all_catch.
5347
5348 1999-12-5  Anthony Green  <green@cygnus.com>
5349
5350         * decl.c (init_decl_processing): Mark throw_node as a noreturn
5351         function with side effects.
5352         (init_decl_processing): Mark all memory allocating DECLs with
5353         DECL_IS_MALLOC.
5354
5355 Wed Dec  1 04:25:06 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5356
5357         * except.c (expand_end_java_handler): Call
5358         expand_resume_after_catch and end_catch_handler.
5359
5360 Tue Nov 30 12:36:15 1999  Anthony Green  <green@cygnus.com>
5361
5362         * verify.c (verify_jvm_instructions): Create new return label
5363         chain if non existant (don't rely on the verified state of the jsr
5364         target.)
5365
5366 Tue Nov 30 12:28:34 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5367
5368         * jcf-write.c (generate_bytecode_insns): Fixed indentation for
5369         COMPOUND_EXPR and FIX_TRUNC_EXPR cases.
5370
5371         * parse.y (patch_assignment): Removed bogus final class test on
5372         lhs when checking on whether to emit an ArrayStoreException runtime
5373         check.
5374         * expr.c (expand_java_arraystore): Likewise.
5375
5376 1999-11-28 Anthony Green <green@cygnus.com>
5377
5378         * decl.c (find_local_variable): Reuse single slot decls when
5379           appropriate.
5380
5381 Wed Nov 24 17:33:26 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5382
5383         * jcf-parse.c (saw_java_source): Global variable removed.
5384         (read_class): Don't use `saw_java_source'. Added extra braces.
5385         (yyparse): Code setting `saw_java_source' removed.
5386
5387 1999-11-24  Mark Mitchell  <mark@codesourcery.com>
5388
5389         * except.c (emit_handlers): Zero catch_clauses after emitting them.
5390
5391 Tue Nov 23 17:29:40 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5392
5393         * verify.c (merge_type_state): Non verified subroutines being
5394         considered more than once to trigger passive type merge.
5395
5396 Tue Nov 23 10:55:18 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5397
5398         * parse.y (catch_clause_parameter:): Still set `$$' to NULL_TREE
5399         in case of error. Error message tuned.
5400
5401 1999-11-21  Anthony Green  <green@cygnus.com>
5402
5403         * constants.c (find_methodref_index): Unwrap method names before
5404         inserting them in the constant pool.
5405
5406         * jcf-parse.c (jcf_parse): Display `interface' when appropriate.
5407
5408         * class.c (assume_compiled_node): New typedef.
5409         (assume_compiled_tree): New static data.
5410         (find_assume_compiled_node): New function.
5411         (add_assume_compiled): New function.
5412         (assume_compiled): New function.
5413         * class.c (make_class_data): Use assume_compiled.
5414         (is_compiled_class): Use assume_compiled.
5415
5416         * java-tree.h (add_assume_compiled): Declare.
5417
5418         * lang.c (lang_decode_option): Parse new options.
5419
5420 Wed Nov 17 21:09:28 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5421
5422         * class.c (layout_class): Always convert TYPE_SIZE_UNIT to
5423         int_type_node: that's what `_Jv_AllocObject' expects.
5424
5425 Thu Nov 11 01:57:14 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5426
5427         * parse.y (lookup_method_invoke): Use lang_printable_name to
5428         reliably build the type name during error report. Fixes PR gcj/97.
5429
5430 1999-11-09  Tom Tromey  <tromey@cygnus.com>
5431
5432         * jcf-path.c: Include <sys/stat.h>.
5433         (jcf_path_init): Search for libjava.zip.  Fixes PR gcj/84.
5434         (DIR_UP): New macro.
5435
5436 Tue Nov  9 12:12:38 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5437
5438         * parse.y (source_end_java_method): Resume permanent allocation,
5439         reversing Apr 27 1998 patch.
5440         (patch_string_cst): Pop obstacks after having pushed the permanent
5441         ones.
5442
5443 1999-11-05  Tom Tromey  <tromey@cygnus.com>
5444
5445         * class.c (finish_class): Emit inlined methods if any native
5446         methods exist in the class.  Fixes PR gcj/85.
5447
5448 Thu Nov  4 16:27:01 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5449
5450         * parse.y (resolve_qualified_expression_name): Handle PLUS_EXPR.
5451         (qualify_ambiguous_name): Likewise.
5452
5453 Wed Nov  3 15:20:02 MST 1999  Godmar Back <gback@cs.utah.edu>
5454
5455         * typeck.c: (lookup_java_method):  search all inherited
5456         interfaces when looking up interface method.
5457
5458 Mon Nov  1 23:42:00 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5459
5460         * parse.y (method_header:): Issue error message for rule `type
5461         error'.
5462         (synchronized:): Error report when not using synchronized.
5463
5464 Mon Nov  1 01:32:48 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5465
5466         * parse.y (resolve_qualified_expression_name): Prevent `this' from
5467         being used before the superclass constructor has been called.
5468         (complete_function_arguments): Use CALL_EXPLICIT_CONSTRUCTOR_P
5469         instead of `CALL_THIS_CONSTRUCTOR_P'.
5470
5471 Sat Oct 30 21:35:13 1999  Todd T. Fries <todd@lighthouse.fries.net>
5472
5473         * check-init.c: Fix typo in comment.
5474
5475 Fri Oct 29 14:35:18 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5476
5477         * class.c (add_method_1): Set DECL_INLINE to 1 for private, static
5478         and final method.
5479
5480 Fri Oct 29 14:23:32 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5481
5482         * parse.y (expression_statement:): Call function to report
5483         improper invocation of a constructor.
5484         (parse_ctor_invocation_error): New function.
5485
5486 1999-10-26  Mark Mitchell  <mark@codesourcery.com>
5487
5488         * decl.c (poplevel): Don't set BLOCK_TYPE_TAGS or call
5489         remember_end_note.
5490
5491 1999-10-21  Tom Tromey  <tromey@cygnus.com>
5492
5493         * jvgenmain.c (main): _Jv_Compiler_Properties now an extern; set
5494         in generated `main'.
5495
5496 Thu Oct 21 01:27:31 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5497
5498         * parse.y (resolve_qualified_expression_name): Handle MODIFY_EXPR.
5499         (qualify_ambiguous_name): Likewise.
5500
5501 Wed Oct 20 01:41:47 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5502
5503         * parse.y (java_complete_tree): fold_constant_for_init to work on
5504         permanent_obstack.
5505         (java_complete_lhs): Likewise.
5506         (array_constructor_check_entry): Complete an initializer element
5507         on permanent_obstack.
5508
5509 1999-10-19  Tom Tromey  <tromey@cygnus.com>
5510
5511         * jcf-parse.c (parse_source_file): Call jcf_dependency_add_file.
5512         From Mike Moreton <mike@pillim.demon.co.uk>.
5513
5514 1999-10-15  Greg McGary  <gkm@gnu.org>
5515
5516         * java-tree.h (flag_bounds_check): Remove extern decl.
5517         * lang.c (flag_bounds_check): Remove global variable.
5518         (lang_f_options): Remove "bounds-check" entry.
5519         (lang_init_options): Default flag_bounds_check to "on".
5520
5521 1999-10-14  Tom Tromey  <tromey@cygnus.com>
5522
5523         * jvgenmain.c (usage): New function.
5524         (main): Use it.  Also, handle `-D' options.
5525         * jvspec.c (lang_specific_driver): Recognize -D.
5526         (jvgenmain_spec): Added `%{D*}' to jvgenmain invocation.
5527
5528         * jvspec.c (jvgenmain_spec): Use `%umain', not just `%u'.
5529
5530 1999-10-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5531
5532         * jcf-dump.c (print_constant, disassemble_method): Don't call a
5533         variadic function with a non-literal format string.
5534
5535         * parse-scan.y (report_main_declaration): Likewise.
5536
5537         * parse.h (ERROR_CAST_NEEDED_TO_INTEGRAL): Likewise.
5538
5539         * parse.y (read_import_dir, patch_assignment, patch_binop,
5540         patch_array_ref): Likewise.
5541
5542         * typeck.c (build_java_array_type): Likewise.
5543
5544         * verify.c (verify_jvm_instructions): Likewise.
5545
5546 Tue Oct 12 22:28:10 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5547
5548         * jcf-write.c (RELOCATION_VALUE_1): Fixed integer value from 0 to 1.
5549
5550 1999-10-07  Anthony Green  <green@cygnus.com>
5551
5552         * jcf-write.c (generate_classfile): Use UNSAFE_PUTx in cases
5553         where CHECK_PUT may fail for valid reasons.
5554
5555         * jcf-write.c (UNSAFE_PUT1, UNSAFE_PUT2, UNSAFE_PUT3,
5556         UNSAFE_PUTN): New macros.
5557
5558 1999-10-04  Tom Tromey  <tromey@cygnus.com>
5559
5560         * lex.h (BUILD_OPERATOR2): Return ASSIGN_ANY_TK in `lite' case as
5561         well.  Fixes Java PR gcj/59.
5562         * parse-scan.y (yyerror): Report errors.
5563
5564 Fri Sep 24 12:23:05 1999  Glenn Chambers  <GChambers@provsol.com>
5565
5566         * decl.c (insert_block): Remove unconditional `abort'.
5567
5568 Fri Sep 24 10:48:10 1999  Bernd Schmidt  <bernds@cygnus.co.uk>
5569
5570         * decl.c (builtin_function): No longer static.  New arg CLASS.  Arg
5571         FUNCTION_CODE now of type int.  All callers changed.
5572         Set the builtin's DECL_BUILT_IN_CLASS.
5573
5574 1999-09-23  Tom Tromey  <tromey@cygnus.com>
5575
5576         * jvspec.c (lang_specific_driver): Don't read spec file if
5577         -fsyntax-only given.
5578
5579 1999-09-22  Tom Tromey  <tromey@cygnus.com>
5580
5581         * lang-specs.h: Added `%(jc1)' to the jc1 spec.
5582
5583         * javaop.h (WORD_TO_FLOAT): Use `inline' unconditionally.
5584         (WORDS_TO_LONG): Likewise.
5585         (WORDS_TO_DOUBLE): Likewise.
5586
5587 Tue Sep 14 16:24:19 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5588
5589         * jcf-write.c (RELOCATION_VALUE_0): New macro.
5590         (RELOCATION_VALUE_1): Likewise.
5591         (emit_iinc, emit_reloc, push_constant1, push_constant2,
5592         push_in_const, push_long_const): Prototyped.
5593         (push_constant1): Argument `index' is of type HOST_WIDE_INT.
5594         (push_constant2): Likewise.
5595         (push_int_const): Cast find_constant1's integer arguments to `jword'.
5596         (find_constant_wide): Cast find_constant2's integer arguments to
5597         `jword'.
5598         (find_constant_index): Cast find_constant2's and find_constant2's
5599         integer arguments to `jword'.
5600         (emit_pop): Argument `value' is of type HOST_WIDE_INT.
5601         (emit_switch_reloc): Use RELOCATION_VALUE_0.
5602         (emit_if): Use RELOCATION_VALUE_1.
5603         (emit_goto): Likewise.
5604         (emit_jsr): Likewise.
5605         (generate_bytecode_insns): Use RELOCATION_VALUE_0. Cast second
5606         argument to push_long_const to HOST_WIDE_INT.
5607
5608 1999-09-15  Andreas Schwab  <schwab@suse.de>
5609
5610         * Makefile.in (parse.o): Depend on $(JAVA_TREE_H).
5611
5612 1999-09-20  Nick Clifton  <nickc@cygnus.com>
5613
5614         * lang.c (lang_decode_option): Extend comment.
5615
5616 Thu Sep 16 15:42:39 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5617
5618         * parse.y (java_method_add_stmt): Test against GET_CURRENT_BLOCK
5619         instead of fndecl.
5620
5621 1999-09-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5622
5623         * gjavah.c (get_field_name, print_method_info, print_include,
5624         add_namelet): Use xmalloc, not malloc.
5625
5626         * jcf-depend.c (add_entry): Likewise.  Use xstrdup, not strdup.
5627         (munge): Use xrealloc, not realloc, trust xrealloc to handle a
5628         NULL pointer.
5629
5630         * jcf-io.c (open_in_zip, find_class): Use xstrdup, not strdup.
5631
5632         * jcf-parse.c (jcf_out_of_synch, yyparse): Likewise.
5633
5634         * jcf-path.c (add_entry): Likewise.
5635
5636         * jcf.h (ALLOC, REALLOC): Use xmalloc/xrealloc, not malloc/realloc.
5637
5638         * jv-scan.c (xmalloc): Remove definition.
5639
5640         * jvgenmain.c (xmalloc): Likewise.
5641
5642         * jvspec.c (lang_specific_driver): Use xcalloc, not xmalloc/bzero.
5643
5644         * lex.c (java_store_unicode): Use xrealloc, not realloc.
5645
5646         * parse-scan.y: Use concat, not of xmalloc/assign/strcpy.  Use
5647         concat, not xmalloc/sprintf.
5648         (java_push_parser_context): Use xcalloc, not xmalloc/bzero.
5649         (xstrdup): Remove definition.
5650
5651         * parse.y (duplicate_declaration_error_p,
5652         constructor_circularity_msg, verify_constructor_circularity,
5653         check_abstract_method_definitions, java_check_regular_methods,
5654         java_check_abstract_methods, patch_method_invocation,
5655         check_for_static_method_reference, patch_assignment, patch_binop,
5656         patch_cast, array_constructor_check_entry, patch_return,
5657         patch_conditional_expr): Use xstrdup, not strdup.
5658
5659         * zextract.c (ALLOC): Use xmalloc, not malloc.
5660
5661 Sun Sep 12 23:30:09 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5662
5663         * Make-lang.in (jvspec.o): Depend on system.h and gcc.h.
5664
5665         * jvspec.c: Include gcc.h.  Don't include gansidecl.h.
5666         (do_spec, lang_specific_pre_link, lang_specific_driver,
5667         input_filename, input_filename_length): Don't declare.
5668         (main_class_name, jvgenmain_spec, lang_specific_driver):
5669         Constify a char*.
5670         (lang_specific_driver): All calls to the function pointer
5671         parameter now explicitly call `fatal'.
5672
5673 Sat Sep 11 16:46:44 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5674
5675         * parse.y (find_applicable_accessible_methods_list): Search
5676         abstract classes as interfaces.
5677
5678 Thu Sep  9 17:33:28 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5679
5680         * class.c (finish_class): We're now outside a valid method
5681         declaration. Tell the rest of gcc so.
5682
5683 1999-09-08  Bruce Korb  autogen@linuxbox.com
5684
5685         * Makefile.in: Give the gperf user a hint about why "gperf -F" fails.
5686
5687 1999-09-07  Tom Tromey  <tromey@cygnus.com>
5688
5689         * gjavah.c (add_class_decl): Generate include for gcj/array.h, not
5690         java-array.h.
5691         (decode_signature_piece): Don't emit "::" in JArray<>.
5692         (print_namelet): Only print trailing `;' when printing a class.
5693
5694 Fri Sep 10 10:32:32 1999  Bernd Schmidt  <bernds@cygnus.co.uk>
5695
5696         * java-tree.h: Delete declarations for all tree nodes now moved to
5697         global_trees.
5698         * decl.c: Delete their definitions.
5699
5700 1999-09-04  Mark Mitchell  <mark@codesourcery.com>
5701
5702         * Make-lang.in (jc1): Depend on ggc-callbacks.o.
5703         * Makefile.in (OBJS): Add ggc-callbacks.o.
5704         (OBJDEPS): Likewise.
5705
5706 1999-09-03  Tom Tromey  <tromey@cygnus.com>
5707
5708         * parse.y (strip_out_static_field_access_decl): Return operand if
5709         it satisfies JDECL_P.
5710
5711 1999-09-02  Tom Tromey  <tromey@cygnus.com>
5712
5713         * gjavah.c (decode_signature_piece): Emit "::" in JArray<>.
5714         Handle nested arrays, like `[[I'.
5715
5716 1999-09-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5717
5718         * class.c (finish_class): Remove unused parameter, all callers
5719         changed.
5720
5721         * expr.c (build_java_athrow): Change return type to void.
5722         (java_lang_expand_expr): Make sure each case in switch returns a
5723         value.
5724
5725         * java-tree.h (finish_class): Fix prototype to take void args.
5726
5727         * jcf-dump.c (usage): Mark with ATTRIBUTE_NORETURN.
5728         (main): Issue return from main, not exit.
5729
5730         * jcf-parse.c (parse_class_file): Fix call to `finish_class'.
5731
5732         * jcf.h (jcf_unexpected_eof): Mark with ATTRIBUTE_NORETURN.
5733
5734         * jv-scan.c (main): Issue return from main, not exit.
5735
5736         * parse.y (check_abstract_method_definitions,
5737         java_check_abstract_method_definitions): Add static prototypes.
5738         (java_complete_expand_methods): Fix call to `finish_class'.
5739
5740         * verify.c (verify_jvm_instructions): Initialize variables `oldpc'
5741         and `prevpc'.
5742
5743 1999-08-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5744
5745         * lang.c (language_string): Constify.
5746
5747 1999-08-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5748
5749         * Makefile.in (LIBS): Fix definition so we link with $(CLIB).
5750         Remove hacks for stuff which comes from libiberty.
5751
5752         * Make-lang.in: Likewise.
5753
5754 Mon Aug 30 16:41:41 1999  Hans-Peter Nilsson  <hp@axis.se>
5755
5756         * Makefile.in (xref.o): Depend on xref.c explicitly.
5757
5758 1999-08-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5759
5760         * java-tree.h (lang_printable_name): Constify a char*.
5761
5762         * lang.c (lang_printable_name): Likewise.
5763
5764 Fri Aug 27 23:31:57 1999  Jeffrey A Law  (law@cygnus.com)
5765
5766         * gjavah.c, jcf-write.c, verify.c: Do not use C++ style
5767         comments in C code.
5768
5769 1999-08-26  Tom Tromey  <tromey@cygnus.com>
5770
5771         * gjavah.c (print_cxx_classname): Print "::" before qualified
5772         name.
5773
5774 Thu Aug 26 09:10:58 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5775
5776         * parse.y (lookup_cl): Changed leading comment. Now does its best
5777         to set the column number.
5778         (qualify_ambiguous_name): Take WFL wrappers into account.
5779
5780 Wed Aug 25 15:37:15 1999  Gregg Townsend  <gmt@cs.arizona.edu>
5781
5782         * verify.c (verify_jvm_instructions): Don't check instruction
5783         validity beyond end of method.
5784
5785 1999-08-25  Tom Tromey  <tromey@cygnus.com>
5786
5787         * jvspec.c (lang_specific_driver): Correctly handle --help again.
5788
5789 1999-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5790
5791         * gjavah.c (print_name, print_base_classname, utf8_cmp,
5792         cxx_keyword_subst, generate_access, name_is_method_p,
5793         get_field_name, print_field_name, super_class_name, print_include,
5794         decode_signature_piece, print_class_decls, usage, help,
5795         java_no_argument, version, add_namelet, print_namelet): Add static
5796         prototype.
5797         (print_base_classname, utf8_cmp, cxx_keyword_subst,
5798         name_is_method_p): Constify a char*.
5799         (get_field_name): Likewise.  Prefer xstrdup over malloc/strcpy.
5800         Provide a final else clause in an if-else-if.
5801         (print_field_info): Add missing final arg in function call to
5802         `print_field_name'.
5803         (print_method_info, decompile_method, decode_signature_piece,
5804         print_c_decl, print_full_cxx_name, print_stub,
5805         print_mangled_classname, super_class_name, print_include,
5806         add_namelet, add_class_decl, print_class_decls, process_file,
5807         help): Constify a char*.
5808
5809         * jcf-write.c (jcf_handler, push_constant1, push_constant2,
5810         push_int_const, find_constant_wide, find_constant_index,
5811         push_long_const, field_op, maybe_wide, emit_dup, emit_pop,
5812         emit_iinc, emit_load_or_store, emit_load, emit_store, emit_unop,
5813         emit_binop, emit_reloc, emit_switch_reloc, emit_case_reloc,
5814         emit_if, emit_goto, emit_jsr, call_cleanups,
5815         make_class_file_name): Add static prototypes.
5816         (generate_bytecode_return, generate_bytecode_insns): Pass a
5817         NULL_PTR, not a NULL_TREE.
5818
5819         * jv-scan.c: Include "jcf.h".
5820         (main): Declare using DEFUN macro.
5821
5822         * jvspec.c (find_spec_file, lang_specific_pre_link,
5823         lang_specific_driver): Add prototypes.
5824         (find_spec_file): Constify a char*.
5825
5826         * keyword.gperf (hash, java_keyword): Add prototypes.
5827
5828         * lang.c (lang_print_error): Add static prototype.
5829         (lang_init): Prefer memcpy over bcopy to avoid casts.
5830
5831         * lex.c (yylex): Add static prototype.
5832
5833         * parse-scan.y: Include "lex.c" earlier.
5834
5835         * parse.h: Remove redundant declaration for `yylex'.
5836
5837         * parse.y (java_decl_equiv, binop_compound_p, search_loop,
5838         labeled_block_contains_loop_p): Add static prototypes.
5839         (not_accessible_p): Make static to match prototype.
5840
5841         * verify.c (start_pc_cmp): Don't needlessly cast away const.
5842
5843 Sun Aug 22 11:07:41 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5844
5845         * parse.y (check_method_redefinition): Changed leading comment.
5846         (check_abstract_method_definitions): New function.
5847         (java_check_abstract_method_definitions): New function.
5848         (java_check_regular_methods): Call it.
5849         (verify_constructor_super): Fixed indentation.
5850         (lookup_method_invoke): Likewise.
5851
5852 Thu Aug 19 10:26:18 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5853
5854         * parse.y (method_header): Return a null pointer if the current
5855         class node is null.
5856         (finish_method_declaration): Return if the current function decl
5857         is null.
5858         (source_start_java_method): Likewise.
5859         (java_method_add_stmt): Likewise.
5860
5861 Wed Aug 18 13:17:15 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5862
5863         * class.c (emit_register_class): Removed unnecessary call to
5864         start_sequence.
5865         * parse.y (labeled_block_contains_loop_p): Removed unused local
5866         variable.
5867
5868 Tue Aug 17 22:51:44 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5869
5870         * parse.y (java_refold): Added prototype.
5871
5872 Tue Aug 17 21:48:41 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
5873
5874         * parse.y (BINOP_COMPOUND_CANDIDATES): New macro.
5875         (java_stabilize_reference): Removed unnecessary `else'.
5876         (java_complete_lhs): Set flag to remember boolean. Call
5877         java_refold. Added comments.
5878         (java_decl_equiv): New function.
5879         (binop_compound_p): Likewise.
5880         (java_refold): Likewise.
5881         (patch_unaryop): Striped static field access assigned to decl and
5882         op. Changed promotion scheme for ++/-- operators.
5883         (search_loop): New function.
5884         (labeled_block_contains_loop_p): Likewise.
5885         (patch_loop_statement): Call labeled_block_contains_loop_p. Added
5886         comment.
5887         (patch_bc_statement): Call search_loop. Fixed comment.
5888
5889 1999-08-14  Anthony Green  <green@cygnus.com>
5890
5891         * expr.c (java_lang_expand_expr): Mark static array data as
5892         referenced.
5893
5894 Tue Aug 10 00:28:31 1999  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
5895
5896         * jvgenmain.c (main): NUL-terminate name_obstack.
5897
5898 1999-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5899
5900         * check-init.c (check_bool2_init, done_alternative): Add static
5901         prototypes.
5902
5903         * class.c (add_interface_do, maybe_layout_super_class): Likewise.
5904         (add_method, build_utf8_ref, build_class_ref,
5905         append_gpp_mangled_type, layout_class_method): Constify a char*.
5906
5907         * decl.c (push_promoted_type, make_binding_level): Add static
5908         prototypes.
5909         (push_promoted_type, pushdecl): Constify a char*.
5910
5911         * except.c (find_handler_in_range, link_handler,
5912         check_start_handlers): Add static prototypes.
5913
5914         * expr.c (process_jvm_instruction): Constify a char*.
5915
5916         * gjavah.c (main): Constify a char*.
5917
5918         * java-tree.h (verify_jvm_instructions, process_jvm_instruction):
5919         Constify a char*.
5920
5921         * jcf-depend.c (free_entry, add_entry, munge, print_ents): Add
5922         static prototypes.
5923         (add_entry, jcf_dependency_set_target, jcf_dependency_add_target,
5924         munge, print_ents): Constify a char*.
5925
5926         * jcf-dump.c (disassemble_method): Constify a char*.
5927         (print_constant_pool, print_exception_table): Add static prototypes.
5928         (print_constant, print_exception_table, main, disassemble_method):
5929         Constify a char*.
5930
5931         * jcf-io.c (find_classfile, find_class): Likewise.
5932
5933         * jcf-parse.c (JPOOL_UTF_DATA, find_in_current_zip): Likewise.
5934         (set_source_filename, predefined_filename_p): Add static prototypes.
5935         (set_source_filename, get_constant, get_class_constant,
5936         find_in_current_zip): Constify a char*.
5937
5938         * jcf-path.c (free_entry, append_entry, add_entry, add_path): Add
5939         static prototypes.
5940         (add_entry, add_path, jcf_path_classpath_arg,
5941         jcf_path_CLASSPATH_arg, jcf_path_include_arg): Constify a char*.
5942
5943         * jcf-reader.c (get_attribute, jcf_parse_preamble,
5944         jcf_parse_constant_pool, jcf_parse_class, jcf_parse_fields,
5945         jcf_parse_one_method, jcf_parse_methods,
5946         jcf_parse_final_attributes): Add static prototypes.
5947         (get_attribute): Constify a char*.
5948
5949         * jcf.h (find_class, find_classfile, jcf_dependency_set_target,
5950         jcf_dependency_add_target, jcf_path_classpath_arg,
5951         jcf_path_CLASSPATH_arg, jcf_path_include_arg): Constify a char*.
5952
5953         * jv-scan.c (main): Constify a char*.
5954         (gcc_obstack_init): Add prototype arguments.
5955
5956         * jvgenmain.c (gcc_obstack_init): Likewise.
5957         (main): Constify a char*.
5958
5959         * lang.c (put_decl_string, put_decl_node, java_dummy_print): Add
5960         static prototypes.
5961         (put_decl_string, lang_print_error): Constify a char*.
5962         (lang_init): Remove redundant extern prototype.
5963
5964         * mangle.c (emit_unicode_mangled_name): Constify a char*.
5965
5966         * typeck.c (convert_ieee_real_to_integer, parse_signature_type):
5967         Add static prototypes.
5968         (get_type_from_signature): Constify a char*.
5969
5970         * verify.c (check_pending_block, type_stack_dup, start_pc_cmp ):
5971         Add static prototypes.
5972         (start_pc_cmp): Prefer PTR over GENERIC_PTR.
5973         (verify_jvm_instructions): Constify a char*.
5974
5975         * xref.c (xref_flag_value): Likewise.
5976
5977         * xref.h (xref_flag_value): Likewise.
5978
5979         * zextract.c (makeword, makelong): Add static prototypes.
5980         (makeword, makelong): Constify a uch*.
5981
5982 1999-08-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5983
5984         * lang.c (java_dummy_print): Constify a char*.
5985         (lang_print_error): Likewise.
5986         (lang_init): Remove redundant prototype for `print_error_function'.
5987         (lang_init_source): Likewise.
5988         (lang_identify): Constify a char*.
5989
5990 1999-08-09  Tom Tromey  <tromey@cygnus.com>
5991
5992         * javaop.h (WORD_TO_FLOAT): only inline if building with gcc.
5993         (WORDS_TO_LONG): Likewise.
5994         (WORDS_TO_DOUBLE): Likewise.
5995
5996 1999-08-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5997
5998         * Makefile.in (lang.o): Depend on $(RTL_H) $(EXPR_H).
5999
6000         * expr.c (java_stack_pop, java_array_data_offset,
6001         build_java_throw_out_of_bounds_exception, case_identity,
6002         build_java_check_indexed_type): Add static prototypes.
6003         (linenumber_table, expand_invoke, expand_java_field_op,
6004         build_primtype_type_ref, expand_byte_code): Constify a char*.
6005
6006         * java-tree.h (build_primtype_type_ref, linenumber_table):
6007         Constify a char*.
6008         (java_lang_expand_expr): Add prototype.
6009
6010         * lang.c: Include rtl.h and expr.h.  Remove extern prototype for
6011         `java_lang_expand_expr'.
6012
6013         * lex.c (java_lex_error): Constify a char*.
6014         (java_get_unicode, java_read_char, java_allocate_new_line,
6015         java_unget_unicode, java_sneak_unicode): Prototype.
6016
6017         * parse-scan.y (current_class, package_name, method_declarator,
6018         report_class_declaration, yyerror): Constify a char*.
6019
6020         * parse.h (java_report_errors): Prototype.
6021         (yyerror): Constify a char*.
6022
6023         * parse.y (classitf_redefinition_error, check_modifiers,
6024         parse_jdk1_1_error, lookup_package_type,
6025         lookup_package_type_and_set_next, get_printable_method_name,
6026         purify_type_name): Constify a char*.
6027         (build_super_invocation, maybe_generate_finit,
6028         verify_constructor_super, parser_add_interface,
6029         add_superinterfaces, jdep_resolve_class, note_possible_classname,
6030         java_complete_expand_methods, java_expand_finals,
6031         cut_identifier_in_qualified, java_stabilize_reference,
6032         do_unary_numeric_promotion, operator_string, do_merge_string_cste,
6033         merge_string_cste): Prototype.
6034         (single_type_import_declaration, yyerror,
6035         variable_redefinition_error, build_array_from_name,
6036         build_unresolved_array_type, check_class_interface_creation,
6037         resolve_class, complete_class_report_errors,
6038         note_possible_classname, read_import_dir,
6039         find_in_imports_on_demand, resolve_package, fix_constructors,
6040         check_deprecation, lookup_method_invoke,
6041         maybe_build_primttype_type_ref, array_constructor_check_entry):
6042         Constify a char*.
6043         (java_complete_expand_methods, java_expand_finals): Make static.
6044         (convert_narrow): Remove static prototype.
6045
6046 Tue Aug  3 20:21:20 1999  J"orn Rennecke <amylaar@cygnus.co.uk>
6047
6048         * Makefile.in (decl.o): Depends on $(srcdir)/../defaults.h.
6049
6050 1999-08-02  Richard Henderson  <rth@cygnus.com>
6051
6052         * decl.c: Include defaults.h instead of expr.h.
6053         * parse.y: Likewise.
6054
6055 1999-08-02  Jakub Jelinek  <jj@ultra.linux.cz>
6056
6057         * java/decl.c (start_java_method): Change all uses of
6058         PROMOTE_PROTOTYPES, so that it tests it as a C expression.
6059         Ensure expr.h is included.
6060         * java/expr.c (pop_arguments): Ditto.
6061         * java/parse.y (expand_start_java_method): Ditto.
6062
6063 1999-08-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6064
6065         * Makefile.in (ALL_CFLAGS): Add '-W -Wall'.
6066
6067 1999-07-31  Bernd Schmidt  <bernds@cygnus.co.uk>
6068
6069         * decl.c: Include "function.h".
6070         * except.c: Likewise.
6071         * parse.y: Likewise.
6072         * Makefile.in: Update dependencies.
6073
6074 1999-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6075
6076         * expr.c (build_java_soft_divmod): Provide a default case in switch.
6077         (java_lang_expand_expr): Mark parameters `target', `tmode' and
6078         `modifier' with ATTRIBUTE_UNUSED.
6079
6080         * gjavah.c (process_file): Add braces around ambiguous `else'.
6081
6082         * jcf-dump.c (print_access_flags, localvar_free): Change return
6083         type to void.
6084
6085         * parse.y (java_complete_expand_method): Initialize variable
6086         `exception_copy'.
6087         (resolve_qualified_expression_name): Likewise for `field_decl'.
6088         (patch_method_invocation): Likewise for `class_to_search'.
6089         (qualify_ambiguous_name): Likewise for `name' and `ptr_type'.
6090         (patch_assignment): Likewise for `lhs_type'.
6091
6092         * verify.c (verify_jvm_instructions): Remove unused variable
6093         `caller'.
6094
6095 1999-07-25  Richard Henderson  <rth@cygnus.com>
6096
6097         * decl.c (va_list_type_node): New.
6098
6099 1999-07-25  Anthony Green  <green@cygnus.com>
6100
6101         * gjavah.c (print_stub): New function.
6102         (METHOD_IS_NATIVE): New macro.
6103         (print_mangled_classname): Make static.
6104         (HANDLE_END_FIELD): Don't emit fields during stub generation.
6105         (process_file): Perform stub generation.
6106         (HANDLE_METHOD): Don't emit class decls during stub
6107         generation.
6108         (HANDLE_END_METHOD): Take into account stub generation.
6109         (print_method_info): Handle stub generation.
6110         (print_stub): New function.
6111         (print_cxx_classname): Make signature consistant with others.
6112         (help): Describe -stubs option.
6113         (main): Create stub file.
6114         (version): Use version.c.
6115         (print_full_cxx_name): New function.
6116         (print_c_decl): Use print_full_cxx_name.
6117
6118 Thu Jul 22 12:41:12 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6119
6120         * check-init.c (check_init): Handle MAX_EXPR.
6121
6122 1999-07-15  Andrew Haley  <aph@cygnus.com>
6123
6124         * lang.c (flag_use_divide_subroutine): New variable.
6125         * typeck.c: (convert_ieee_real_to_integer): Bounds check
6126         fp-to-integer conversion.
6127         (convert): Call convert_ieee_real_to_integer when flag_fast_math
6128         is not set.
6129
6130         * expr.c (build_java_soft_divmod): New function.
6131         (build_java_binop): Call build_java_soft_divmod if
6132         flag_use_divide_subroutine is set.
6133         * decl.c: soft_idiv_node, soft_irem_node, soft_ldiv_node, tree
6134         soft_lrem_node: new builtin functions.
6135         (init_decl_processing) Initialize the new builtins.
6136         * java-tree.h soft_idiv_node, soft_irem_node, soft_ldiv_node, tree
6137         soft_lrem_node: new builtin functions.
6138         (build_java_soft_divmod): New function.
6139         * parse.y: Call build_java_soft_divmod if
6140         flag_use_divide_subroutine is set.
6141         * parse.c: Rebuilt.
6142
6143         * jvspec.c (lang_specific_driver): Always allow an extra arg (for
6144         a --specs= arg) even if not linking.
6145         * lang-options.h (DEFINE_LANG_NAME ("Java")): Add
6146         -fuse-divide-subroutine
6147
6148 Tue Jul 20 13:20:05 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6149
6150         * parse.y (resolve_and_layout): Check methods only once.
6151         (resolve_qualified_expression_name): Verify thrown exceptions
6152         compatibility.
6153         (check_thrown_exceptions): Reject exceptions thrown in
6154         initializer. Error message tuned.
6155
6156 1999-07-14  Andrew Haley  <aph@cygnus.com>
6157
6158         * expr.c (expand_expr): Do not return the last statement in a
6159         block as the block's value.
6160
6161 Sat Jul  3 22:26:32 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6162
6163         * expr.c (force_evaluation_order): Save the COMPOUND_EXPR'ed
6164         CALL_EXPR, to avoid order of evaluation changes.
6165
6166 Fri Jul  2 17:44:08 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6167
6168         * parse.y (qualify_ambiguous_name): Do not use
6169         IDENTIFIER_LOCAL_VALUE when name is a STRING_CST.
6170
6171 Thu Jul  1 23:31:16 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6172
6173         * check-init.c (check_init): Handle MAX_EXPR.
6174         * expr.c (force_evaluation_order): Force method call arguments to
6175         be evaluated in left-to-right order.
6176         * parse.y (qualify_ambiguous_name): Loop again to qualify
6177         NEW_ARRAY_EXPR properly.
6178
6179 Wed Jun 30 17:27:58 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6180
6181         * parse.y (patch_invoke): Resolve unresolved invoked method
6182         returned type.
6183         (qualify_ambiguous_name): STRING_CST to qualify expression for
6184         type name resolution.
6185
6186 1999-06-24  Andrew Haley  <aph@cygnus.com>
6187
6188         * class.c (finish_class): Whenever a deferred method is
6189         output, rescan the list of methods to see if a new candidate for
6190         output can be found.
6191
6192 1999-06-28  Tom Tromey  <tromey@cygnus.com>
6193
6194         * jvspec.c (lang_specific_driver): Recognize --help.
6195
6196 Fri Jun 25 13:35:19 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6197
6198         * parse.y (resolve_package): Fixed bogus return statement.
6199         (patch_method_invocation): Resolve method invocation beginning with
6200         a package name qualifier.
6201
6202 1999-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6203
6204         * Make-lang.in (java.stage1): Depend on stage1-start.
6205         (java.stage2): Likewise for stage2-start.
6206         (java.stage3): Likewise for stage3-start.
6207         (java.stage4): Likewise for stage4-start.
6208
6209 Thu Jun 24 13:12:15 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6210
6211         * parse.y (java_complete_lhs): When doing cross referencing, don't
6212         try to keep file location on a WFL expanded as a CALL_EXPR.
6213
6214 Wed Jun 23 14:37:15 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6215
6216         * parse.y (finish_method_declaration): Insert a RETURN_EXPR when
6217         compiling to class file a void method with an empty method body.
6218         As a side effect, the bytecode backend will generate the
6219         appropriate `return' instruction.
6220
6221 Tue Jun 22 20:43:49 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6222
6223         * parse.y (lookup_package_type_and_set_next): New function prototype.
6224         (resolve_package): Search current and imported packages.
6225         (lookup_package_type_and_set_next): New function.
6226
6227 1999-06-22  Andrew Haley  <aph@cygnus.com>
6228
6229         * verify.c (verify_jvm_instructions): Check for pending blocks
6230         before invalid PC test and opcode switch, not after.
6231
6232 1999-06-21  Andrew Haley  <aph@cygnus.com>
6233
6234         * except.c (find_handler_in_range): The upper limit for exception
6235         ranges is exclusive, not inclusive: (start <= pc < end).
6236         (link_handler): find child pointer which points to outer by
6237         searching sibling list: previous code incorrectly assumed that
6238         outer->outer->first_child must point to outer.
6239         * verify.c (verify_jvm_instructions): FIXME added to code for
6240         `athrow'.
6241         (verify_jvm_instructions): Do not assume that the last block
6242         processed in a subroutine is a block which ends with a `ret'
6243         instruction.  With some control flows it is possible that the last
6244         block ends with an `athrow'.
6245
6246 Mon Jun 14 13:13:39 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6247
6248         * parse.y (qualify_ambiguous_name): Reorganized the post
6249         evaluation of non WFL leading expression nodes.
6250
6251 Fri Jun 11 21:37:18 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6252
6253         * parse.y (qualify_ambiguous_name): Handle ARRAY_REF after
6254         CONVERT_EXPR.
6255
6256 Thu Jun 10 22:26:17 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6257
6258         * parse.y (qualify_ambiguous_name): Handle qualified expression
6259         beginning with a STRING_CST.
6260
6261 Thu Jun 10 20:27:25 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6262
6263         * parse.y (register_fields): Set DECL_INITIAL on both
6264         pre-initialized static and public fields.
6265         (resolve_field_access): Static field access expressions to always
6266         use pointer types.
6267         (qualify_ambiguous_name): Work out buried CALL_EXPR for proper
6268         qualification. CONVERT_EXPR to be resolved as an expression name.
6269         (java_complete_lhs): Identify and access qualified final
6270         initialized field in switch statement case expression.
6271         (fold_constant_for_init): Pre-initialized field decl constant to
6272         be folded.
6273
6274 Mon Jun  7 16:09:51 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6275
6276         * parse.y (note_possible_classname): Mark returned node with
6277         QUALIFIED_P only if the original class name contained a '/'.
6278
6279 Sat Jun  5 11:46:59 1999  Anthony Green  <green@cygnus.com>
6280
6281         * Make-lang.in (gcjh): More parallel build fixes.
6282
6283 1999-06-03  Mike Stump  <mrs@wrs.com>
6284
6285         * Make-lang.in (JCF_DUMP_SOURCES, jvgenmain): Fix parallel builds.
6286
6287 Wed Jun  2 10:44:38 1999  Anthony Green  <green@cygnus.com>
6288
6289         * except.c (link_handler): Chain exception handlers in order.
6290
6291 Wed Jun  2 10:41:24 1999  Anthony Green  <green@cygnus.com>
6292
6293         * expr.c (expand_byte_code): Fill unreachable bytecode regions
6294         with nops and process as usual in order to always set correct EH
6295         ranges.  Emit detailed warnings about unreachable bytecodes.
6296
6297 Wed Jun  2 10:35:13 1999  Anthony Green  <green@cygnus.com>
6298
6299         * class.c (build_utf8_ref): Mark cinit and utf8 tree nodes as
6300         constant.
6301
6302 Fri May 28 18:22:45 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6303
6304         * parse.y (lookup_field_wrapper): Unified returned value to NULL
6305           or the searched field decl.
6306
6307 Fri May 28 11:34:05 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6308
6309         * parse.y (fold_constant_for_init): Convert numerical constant
6310         values to the type of the assigned field.
6311
6312 Thu May 27 19:57:40 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6313
6314         * expr.c (lookup_field): Relaxed the test on class loading error
6315         detection.
6316         * parse.y (fold_constant_for_init): Enabeled old code.
6317
6318 Wed May 26 18:06:02 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6319
6320         * parse.y (valid_ref_assignconv_cast_p): Let `_Jv_CheckCast'
6321         decide the validity of the cast of a java.lang.Cloneable reference
6322         to an array.
6323         (patch_conditional_expr): Fixed first argument passed to
6324         binary_numeric_promotion.
6325
6326 Wed May 26 15:33:06 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6327
6328         * parse.y (qualify_ambiguous_name): Take into account that a
6329         CONVERT_EXPR might specify a type as a WFL.
6330
6331 Tue May 25 15:06:13 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6332
6333         * parse.y (patch_assignment): Save the rhs before using it as an
6334         argument to _Jv_CheckArrayStore.
6335
6336 Tue May 25 11:23:59 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6337
6338         * lex.c (java_parse_doc_section): Fixed `tag' buffer size.
6339
6340 Mon May 24 13:26:00 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6341
6342         * lex.c (java_lex): Accepts `+' or `-' after the beginning of a
6343         floating point litteral only when the exponent indicator has been
6344         parsed.
6345
6346 Sat May 22 13:54:41 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6347
6348         * parse.y (formal_parameter:): Construct argument tree list
6349         element even if a yet unsupported final parameter was encountered.
6350
6351 Tue May 18 00:28:58 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6352
6353         * parse.y (finish_method_declaration): Issue errors for native or
6354         abstract methods declared with a method body, as well as for non
6355         native or non abstract methods with no method body.
6356
6357 1999-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6358
6359         * class.c (build_utf8_ref): Initialize variable `field'.
6360
6361         * decl.c (init_decl_processing): Initialize variable `field'.
6362
6363         * expr.c (build_known_method_ref): Mark parameters `method_type',
6364         `method_signature' and `arg_list' with ATTRIBUTE_UNUSED.
6365         (process_jvm_instruction): Likewise for parameter `length'.
6366
6367         * jvspec.c (lang_specific_driver): Mark variables `saw_math',
6368         `saw_libc', `saw_gc', `saw_threadlib' and `saw_libgcj' with
6369         ATTRIBUTE_UNUSED.
6370
6371         * parse.y (maybe_generate_clinit): Remove unused variable
6372         `has_non_primitive_fields'.
6373         (find_in_imports_on_demand): Initialize variables `node_to_use'
6374         and `cl'.
6375         (patch_binop): Likewise for variable `prom_type'.
6376         (patch_unaryop): Likewise for variable `prom_type'.
6377
6378         * verify.c (verify_jvm_instructions): Likewise for variable `last'.
6379
6380         * xref.c (xref_table): Add missing initializer.
6381
6382 1999-05-14  Tom Tromey  <tromey@cygnus.com>
6383
6384         * java-except.h (struct eh_range): Removed unused `next' member.
6385         * verify.c (verify_jvm_instructions): Call check_nested_ranges
6386         after adding all exception handlers.  Sort exception ranges in
6387         order of start PC.
6388         (struct pc_index): New structure.
6389         (start_pc_cmp): New function.
6390         * except.c (add_handler): Return `void'.  Don't call link_handler;
6391         instead construct an ordinary linked list and do range
6392         coalescing.
6393         (check_nested_ranges): New function.
6394         (link_handler): Changed interface to allow merging of eh_ranges.
6395         Split overlapping ranges.  Return `void'.
6396
6397 Mon May 17 19:20:24 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6398
6399         * parse.y (constructor_block_end:): New rule, tagged <node>.
6400         (constructor_body:): Use `constructor_block_end' instead of
6401         `block_end'.
6402
6403 Mon May 17 18:01:40 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6404
6405         * parse.y (statement_nsi:): Pop `for' statement block.
6406         (java_complete_lhs): Labeled blocks containing no statement are
6407         marked as completing normally.
6408
6409 Fri May 14 12:31:08 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6410
6411         * xref.c (xref_set_current_fp): New function, defined.
6412         * xref.h (xref_set_current_fp): New function, prototyped.
6413
6414 Fri May 14 11:57:54 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6415
6416         * check-init.c (check_init): Take into account that
6417         LABELED_BLOCK_STMT can be empty.
6418
6419 Thu May 13 18:30:48 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6420
6421         * parse.y (java_check_regular_methods): Warning check on not
6422         overriding methods with default access in other packages does not
6423         apply to `<clinit>'.
6424         (java_complete_lhs): If block body is an empty_stmt_node, replace
6425         it by NULL_TREE. This prevents gcc from generating an irrelevant
6426         warning.
6427
6428 Thu May 13 13:23:38 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6429
6430         * check-init.c (check_init): Removed code accepting to see things
6431         falling through default:, when doing xrefs.
6432         * java-tree.h (do_not_fold): New global variable, declared.
6433         * parse.y (do_not_fold): New global variable, defined.
6434         (java_complete_expand_method): Set `do_not_fold' to the value of
6435         `flag_emit_xref'. When doing xrefs: copy the thrown exceptions,
6436         and reinstall them after them have been purged; do not check for
6437         initializations; do not issue missing return errors.
6438         (java_complete_lhs): Do not attempt to patch INSTANCEOF_EXPR nodes
6439         when doing xrefs.
6440         (patch_binop): Skip the fold part when doing xrefs.
6441         (build_string_concatenation): Skip the concatenation part when
6442         doing xrefs.
6443         (patch_synchronized_statement): Do not generate a try-finally when
6444         doing xrefs.
6445         (patch_throw_statement): When doing xrefs, do not call BUILD_THROW
6446         and keep the location where the throw was seen.
6447         * typeck.c (convert): When `do_not_fold' is set, do not attempt
6448         any treatment on the converted node an simply return a NOP_EXPR of
6449         the targeted type.
6450         * xref.c (xref_get_data): New function, defined.
6451         * xref.h (xref_get_data): New function, declared.
6452         (XREF_GET_DATA): Use xref_get_data.
6453
6454 1999-05-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6455
6456         * gjavah.c (print_include): Cast the result of `strlen' to int
6457         when comparing against a signed value.
6458         (add_namelet): Likewise.
6459
6460 1999-05-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6461
6462         * expr.c (expand_invoke): Mark parameter `nargs' with
6463         ATTRIBUTE_UNUSED.
6464         (PRE_LOOKUP_SWITCH): Likewise for variable `match'.
6465
6466         * jcf-io.c (jcf_unexpected_eof): Mark parameter `count' with
6467         ATTRIBUTE_UNUSED.
6468
6469         * jcf-reader.c (get_attribute): Cast a value to long
6470         when comparing against a signed expression.  Likewise.
6471
6472         * lex.h: Never define HOST_WIDE_INT, HOST_BITS_PER_WIDE_INT or
6473         HOST_BITS_PER_CHAR.
6474
6475 1999-05-11  Andrew Haley  <aph@cygnus.com>
6476
6477         * parse.y (source_end_java_method): If the current method contains
6478         any exception handlers, force asynchronous_exceptions: this is
6479         necessary because signal handlers in libjava may throw exceptions.
6480         * decl.c (end_java_method): Ditto.
6481
6482 1999-05-11  Tom Tromey  <tromey@cygnus.com>
6483
6484         * Make-lang.in (jvspec.o): Don't define WITH_THREAD_x or WITH_GC_x
6485         flags.
6486         * jvspec.c (THREAD_NAME): Removed.
6487         (GC_NAME): Likewise.
6488         (MATHLIB): Likewise.
6489         (WITHLIBC): Likewise.
6490         (GCLIB): Likewise.
6491         (THREADLIB): Likewise.
6492         (MATH_LIBRARY): Likewise.
6493         (lang_specific_driver): Don't add `-l' options to command line.
6494         Instead, add a single --specs option.  Recognize `-L' options and
6495         use them to search for spec file.
6496         (find_spec_file): New function.
6497         (SPEC_FILE): New define.
6498
6499 Tue May 11 11:46:36 1999  Dave Brolley  <brolley@cygnus.com>
6500
6501         * lang-options.h: -MD, -MMD, -M and -MM not needed here for
6502         cpplib-enabled build.
6503
6504 1999-05-05  Per Bothner  <bothner@cygnus.com>
6505
6506         * class.c (make_field_value):  DECL_INITIAL may be a string literal;
6507         temporarily zero it while calling rest_of_decl_compilation.
6508
6509         * java-tree.h (string_ptr_type_node):  Add declaration.
6510         * decl.c:  Define and initialize string_ptr_type_node.
6511         * parse.y (patch_string_cst):  Use string_ptr_type_node.
6512
6513         * parse.h (LOOP_HAS_LABEL_P, LOOP_HAS_LABEL_SKIP_P):  Removed.
6514         * parse.y (for_statement):  Now unconditionally exit_block.
6515         (finish_labeled_statement):  No longer exit_block if for-loop.
6516         (patch_loop_statement):  Check harder if the loop is already labeled.
6517
6518         * parse.y (patch_initialized_static_field):  Removed function.
6519         (maybe_generate_clinit):  Removed special handling for interfaces.
6520         (java_complete_expand_methods):  Do a preliminary java_complete_tree
6521         on <clinit> to determine if it can be removed.
6522         (java_complete_expand_method):  Remove special handling for <clinit>.
6523         (java_complete_lhs):  For BLOCK and EXPR_WITH_FILE_LOCATION
6524         optimize if we get back empty_stmt_node.
6525         For MODIFY_EXPR, re-do checking of static initializers.
6526         (fold_constant_for_init):  Don't return immediate if VAR_DECL.
6527         For VAR_DECL, pass correct context.
6528
6529         * verify.c (verify_jvm_instructions):  Better error messages.
6530
6531 1999-05-03  Tom Tromey  <tromey@cygnus.com>
6532
6533         * parse-scan.y (interface_declaration): Call
6534         report_class_declaration for interfaces.
6535
6536 1999-04-30 20:54 -0400  Zack Weinberg  <zack@rabi.columbia.edu>
6537
6538         * Makefile.in: Remove -v from bison command lines.
6539
6540 Fri Apr 30 17:54:40 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6541
6542         * check-init.c (check_init): Exclude a case of error when doing
6543         xrefs.
6544         * class.c (layout_class_method): Don't generate the error message
6545         twice when compiling from source.
6546         * lang-options.h: Added `-Wredundant-modifers' and
6547         `-Wunusupported-jdk11' flags and help text.
6548         * lang.c (lang_decode_option): Added support for
6549         `-Wunsupported-jdk11' and `-Wredundant-modifiers'.
6550         flag_static_local_jdk11 and flag_redundant set accordingly.
6551         * lex.c (java_lex): Call BUILD_OPERATOR on CCB_TK.
6552         * parse.h (EXPR_WFL_ADD_COL): New macro.
6553         (DECL_END_SOURCE_LINE): Likewise.
6554         (DECL_INHERITED_SOURCE_LINE): Likewise.
6555         * parse.y (static_ref_err): New function, prototyped.
6556         (CCB_TK): Now tagged <operator>.
6557         (class_body:): Remember the location of the closing '}' of a class
6558         definition when doing xrefs.
6559         (block:): Likewise.
6560         (block_end:): Likewise.
6561         (create_class): Remember the location of the inherited class
6562         identifier when doing xrefs.
6563         (register_fields): Added test on first operand of `init' before
6564         testing it TREE_CODE.
6565         (method_header): Store the location of the class identifier in the
6566         class decl when doing xrefs.
6567         (finish_method_declaration): Don't combine first/last method line
6568         when doing xref.
6569         (java_check_regular_methods): Warning check on not overriding
6570         methods with default access on other packages move before check on
6571         static methods. Initialization of `aflags' also moved up.
6572         (resolve_expression_name): Call static_ref_err to report the error.
6573         (static_ref_err): New function, implemented.
6574         (resolve_field_access): Returned simplified static field access
6575         when doing xrefs.
6576         (resolve_qualified_expression_name): Check for illegal use of
6577         static fields in a non static context. Call static_ref_err to
6578         report error in various places.
6579         (java_complete_tree): Do not fold initialized static fields when
6580         doing xrefs.
6581         (java_complete_lhs): Likewise.
6582
6583 1999-04-29  Anthony Green  <green@cygnus.com>
6584
6585         * expr.c (generate_name): Use ASM_GENERATE_INTERNAL_LABEL to
6586         create internal labels.
6587         (lookup_label): Ditto.
6588
6589 Sat Apr 24 16:50:19 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6590
6591         * class.c (layout_class_method): Generate <clinit>'s rtl for
6592         interfaces.
6593         * decl.c (complete_start_java_method): Don't call _Jv_InitClass
6594         for interfaces' <clinit>.
6595         * expr.c (lookup_field): Search for fields in interfaces.
6596         (expand_invoke): Fixed indentation.
6597         (expand_java_field_op): Likewise. Use IS_CLINIT.
6598         * parse.h (JPRIMITIVE_TYPE_OR_VOID_P): Macro removed.
6599         (IS_CLINIT): New macro.
6600         * parse.y (type_declaration:): Call maybe_generate_clinit after an
6601         interface was parsed.
6602         (maybe_generate_clinit): Don't generate if the current class is an
6603         interface with only fields of primitive types.
6604         (reset_method_name): Use IS_CLINIT.
6605         (java_complete_expand_method): Expand <clinit> when it exists for
6606         interfaces. Use IS_CLINIT.
6607         (resolve_expression_name): Use DECL_CONTEXT instead of
6608         current_class to build static field references.
6609         (java_complete_lhs): Use IS__CLINIT. Don't use SAVE_EXPR on
6610         ARRAY_REF when doing xreferencing.
6611         (check_final_assignment): Fixed typo in leading comment. Use
6612         IS_CLINIT.
6613         (patch_array_ref): Don't fully expand array references when
6614         xreferencing.
6615         (patch_return): Use IS_CLINIT.
6616         (patch_throw_statement): Likewise.
6617
6618 1999-04-22  Tom Tromey  <tromey@cygnus.com>
6619
6620         * Make-lang.in (JAVA_SRCS): Added check-init.c.
6621
6622 Wed Apr 21 11:13:36 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6623
6624         * decl.c (predef_filenames, predef_filenames_size): New globals
6625         (init_decl_processing): predef_filenames and predef_filenames_size
6626         initialized.
6627         * java-tree.h (predef_filenames, predef_filenames_size): Declared
6628         extern.
6629         * jcf-parse.c (predefined_filename_p): New function.
6630         (yyparse): Check that files on the command line are specified only
6631         once and issue a warning otherwise.
6632         * parse.h (JPRIMITIVE_TYPE_OR_VOID_P): New macro.
6633         * parse.y (source_end_java_method): Nullify NOP method bodies, to
6634         avoid a gcc warning with -W -Wall turned on.
6635         (java_expand_classes): Abort if errors were encountered.
6636         (java_complete_lhs): If the cross reference flag is set, wrap
6637         field DECL node around a WFL when resolving expression name.
6638
6639 Mon Apr 19 14:44:48 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6640
6641         * lang.c (lang_decode_option): Fixed returned value when parsing
6642         `-fxref=...' and `-Wall'.
6643         * parse.y (source_end_java_method): Do not generate code when
6644         flag_emit_xref is set.
6645         (resolve_expression_name): Do not build static field access when
6646         flag_emit_xref is set.
6647         (resolve_field_access): No special treatment on `length' when
6648         flag_emit_xref is set. Do not build qualified static field access
6649         when flag_emit_xref is set.
6650         (patch_invoke): Keep the method DECL as operand 0 of the CALL_EXPR
6651         when flag_emit_xref is set.
6652         (patch_assignment): Do not generate array store runtime check when
6653         flag_emit_xref is set.
6654         * xref.c (xref_flag_value): Fixed function declaration
6655         indentation.
6656         (xset_set_data): New function.
6657         * xref.h (xref_set_data): Added prototype for new function.
6658         (typedef struct xref_flag_table): New field data.
6659         (XREF_GET_DATA): New macro.
6660
6661 1999-04-19  Tom Tromey  <tromey@cygnus.com>
6662
6663         * xref.h (enum): Removed trailing comma.
6664
6665         * parse.y (resolve_qualified_expression_name): Added missing
6666         `break'.
6667
6668 Thu Apr 15 13:08:03 1999  Anthony Green  <green@cygnus.com>
6669
6670         * gjavah.c: New prototypes for java_float_finite and
6671         java_double_finite.
6672
6673 Mon Apr 12 18:27:32 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6674
6675         * parse.y (patch_unaryop): Fixed ++/-- operator check on array
6676         references.
6677
6678 Tue Apr  6 23:15:52 1999  Jeffrey A Law  (law@cygnus.com)
6679
6680         * Makefile.in (TREE_H): Add tree-check.h.
6681         (RTL_H): Add genrtl.h.
6682
6683 Tue Apr  6 15:15:51 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6684
6685         * parse.y (patch_assignment): Added ArrayStoreException runtime
6686         check.
6687
6688 1999-04-06  Per Bothner  <bothner@cygnus.com>
6689
6690         * expr.c (pop_type_0):  New function.
6691         (pop_type):  Use pop_type_0.
6692         * java-tree.h (pop_type_0):  New declaration.
6693         * verify.c (verify_jvm_instructions):  Check return instructions.
6694
6695         * parse.y (patch_binop):  Don't fold if non-constant and emiting
6696         class files.
6697
6698 Mon Apr  5 16:06:09 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6699
6700         * Makefile.in (gjavah.o): Depend on $(JAVA_TREE_H).
6701
6702         * gjavah.c: Include math.h earlier.  Include tree.h/java-tree.h.
6703         (main_jcf): Don't define.
6704         (process_file): Don't set `main_jcf'.
6705
6706         * java-tree.h (main_jcf): Don't declare.
6707
6708         * jcf-parse.c (main_jcf): Add static definition.
6709
6710         * lang.c (main_jcf): Don't define.
6711
6712 Mon Apr  5 15:43:51 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6713
6714         * class.c (add_method_1): Cast the argument of `bzero' to PTR.
6715
6716         * decl.c (copy_lang_decl): Likewise for `bcopy'.
6717
6718         * jcf-depend.c: Include "config.h", not <config.h>.
6719
6720         * jcf-parse.c (jcf_figure_file_type): Cast the arguments of
6721         `bcopy' to PTR.
6722
6723         * jcf-path.c: Include "config.h", not <config.h>.
6724
6725         * lex.c: Don't include various system header files.
6726         (java_init_lex): Cast the argument of `bzero' to PTR
6727
6728         * parse-scan.y (java_push_parser_context): Likewise.
6729
6730         * parse.y (java_push_parser_context): Likewise.
6731         (patch_bc_statement): Match format specifier to variable argument.
6732
6733         * xref.c: Don't include <stdio.h>.
6734
6735 Mon Apr  5 11:24:19 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6736
6737         * parse.y (struct parser_ctxt *ctxp): Now global.
6738         (declare_local_variables): Use WFL compound value for the
6739         declaration source line value, when doing cross-referencing.
6740
6741 1999-03-31  Tom Tromey  <tromey@cygnus.com>
6742
6743         * gjavah.c (print_field_info): Allow constants of other types.
6744         (print_include): Generate include when new name is proper prefix
6745         of already printed name.
6746         (add_namelet): Likewise.
6747         (cxx_keyword_subst): New function.
6748         (print_method_info): Use it.
6749         (print_field_name): New function.
6750         (get_field_name): New function.
6751         (print_field_info): Use get_field_name and print_field_name.
6752
6753 Wed Mar 31 11:00:32 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6754
6755         * Makefile.in (keyword.h): Generate using gperf language 'C', not
6756         'KR-C', so gperf uses the `const' keyword on strings.
6757
6758         * keyword.gperf (java_keyword): Const-ify a char*.
6759
6760 Tue Mar 30 11:31:53 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6761
6762         * parse.y (patch_bc_statement): Fixed identation and a bogus
6763         `printf' format.
6764
6765 Tue Mar 30 11:29:29 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6766
6767         * parse.y (patch_assignment): Allow static variables in other
6768         classes to be assigned.
6769
6770 Sun Mar 28 22:12:10 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6771
6772         * class.c (maybe_add_interface): Remove unused variable
6773         `interface_binfo'.
6774         (make_class_data): Use = for assignment, not ==.  Likewise.
6775         (emit_register_classes): Remove unused variable `decl'.
6776
6777         * lex.c: Fix comment so as not to contain an embedded `/*'.
6778
6779         * verify.c (verify_jvm_instructions): Remove unused variable
6780         `self_type'.
6781
6782 Sat Mar 27 15:49:18 1999  Per Bothner  <bothner@cygnus.com>
6783
6784         * parse.y (complete_loop_body):  Rename to finish_loop_body.
6785         (complete_labeled_statement):  Rename to finish_labeled_statement.
6786         (complete_for_loop):  Rename to finish_for_loop.
6787         (complete_method_declaration):  Rename to finish_method_declaration.
6788
6789         * java-tree.h (continue_identifier_node):  New global node.
6790         * decl.c:  Define and initialize continue_identifier_node.
6791         * parse.y (generate_labeled_block):  Remove - no longer needed.
6792         (build_loop_body):  Use continue_identifier_node for continue block.
6793         (finish_labeled_statement):  Also do pop_labeled_block actions.
6794         (java_complete_lhs):  POP_LOOP even if error.
6795         (build_labeled_block):  Special handling for continue_identifier_node.
6796         (patch_loop_statement):  Re-organize.
6797         (patch_bc_statement):  Re-write.
6798
6799 Sat Mar 27 15:13:21 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6800
6801         * parse.h (EXPR_WFL_GET_LINECOL): Set a line and column count
6802         using a WFL compound value.
6803         * parse.y (xref.h): Include.
6804         (maybe_create_class_interface_decl): Set DECL_SOURCE_LINE to the
6805         WFL compound value.
6806         (register_fields): Set WFL compound value to lineno if doing
6807         xrefs.
6808         (java_complete_expand_method): Call expand_xref if flag_emit_xref
6809         is set.
6810         * xref.c (system.h, jcf.h, parse.h, obstack.h): Include.
6811         * xref.h (expand_xref): Prototype renamed from xref_generate.
6812
6813 Sat Mar 27 14:16:32 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6814
6815         * parse.h (BLOCK_CHAIN_DECL): New use GET_CURRENT_BLOCK.
6816         (GET_CURRENT_BLOCK): New macro.
6817         * parse.y (current_static_block): New global variable.
6818         (method_body:): Define action.
6819         (complete_method_declaration): Set current_function_decl to NULL
6820         when work on the current method is done.
6821         (declare_local_variables): Use GET_CURRENT_BLOCK.
6822         (java_method_add_stmt): Likewise.
6823         (java_complete_expand_method): Disable the use of `this' when
6824         expanding <clinit>.
6825         (enter_a_block): If no current method exist, use
6826         current_static_block to link static initializer blocks.
6827         (exit_block): Rewritten to use current_static_block when no current
6828         method decl exists.
6829         (lookup_name_in_blocks): Use GET_CURRENT_BLOCK.
6830         (patch_return): Forbid the use of `return' in static initializers.
6831         (patch_throw_statement): Fixed indentation. Issue specific error
6832         for uncaught thrown checked exception in static initializer
6833         blocks. Removed FIXME.
6834
6835 1999-03-25  Zack Weinberg  <zack@rabi.columbia.edu>
6836
6837         * java/Make-lang.in: Remove all references to gcj.o/gcj.c.
6838         Link gcj from gcc.o.
6839
6840 Tue Mar 23 10:48:24 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6841
6842         * parse.y (find_applicable_accessible_methods_list): When dealing
6843         with interface: ensure that a given interface or java.lang.Object
6844         are searched only once.
6845
6846 Tue Mar 23 10:05:27 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6847
6848         * gjavah.c (print_c_decl): Remove unused argument `flags'.
6849
6850         * jcf-dump.c (print_access_flags): Add braces around if-else.
6851
6852         * jvspec.c (lang_specific_driver): Wrap variable `len' in macro
6853         COMBINE_INPUTS.
6854
6855         * lex.c (build_wfl_node): Add static prototype.
6856
6857         * lex.h (build_wfl_node): Remove static prototype.
6858
6859         * parse.y: Include lex.c early enough to declare everything needed.
6860         Ensure calls to `build_wfl_node' pass the proper arguments.
6861         (create_class): Remove unused variable `super_decl'.
6862         (get_printable_method_name): Initialize variable `name'.
6863
6864 Mon Mar 22 20:14:26 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6865
6866         * Changelog: Fixed 1999-03-22 typos.
6867         * lang.c (lang_decode_option): Fixed typo in error string in the
6868         XARG section.
6869
6870 1999-03-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6871
6872         * Makefile.in (JAVA_OBJS): Added entry xref.o.
6873         (xref.o): New rule.
6874         * java-tree.h (flag_emit_xref): Declared extern.
6875         * lang.c (xref.h): Included.
6876         (flag_emit_xref): New global variable.
6877         (lang_decode_option): Added support for -fxref.
6878         * xref.c: Created.
6879         * xref.h: Likewise.
6880
6881 1999-03-21  Manfred Hollstein  <manfred@s-direktnet.de>
6882
6883         * Make-lang.in ($(GCJ)$(exeext)): Add intl.o to list of files to be
6884         linked with.
6885
6886 Sun Mar 21 08:30:30 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6887
6888         * Makefile.in (jcf-dump.o): Depend on $(CONFIG_H)
6889         $(srcdir)/../system.h and $(JAVA_TREE_H).
6890         (jcf-io.o): Depend on $(JAVA_TREE_H).
6891         (mangle.o): Likewise.
6892
6893         * check-init.c (check_cond_init): Add static prototype.
6894
6895         * class.c (build_java_method_type, hashUtf8String,
6896         make_field_value, get_dispatch_vector, get_dispatch_table,
6897         append_gpp_mangled_type, mangle_static_field): Likewise.
6898         (strLengthUtf8): Hide unused definition.
6899         (hashUtf8String): Const-ify.
6900         (make_field_value): Un-ANSI-fy.
6901
6902         * constants.c: Move inclusion of jcf.h above java-tree.h.
6903         (set_constant_entry, find_class_or_string_constant,
6904         find_name_and_type_constant, get_tag_node,
6905         build_constant_data_ref): Add static prototype.
6906
6907         * decl.c (push_jvm_slot, builtin_function,
6908         lookup_name_current_level): Likewise.
6909         (builtin_function): Const-ify.
6910
6911         * except.c (expand_start_java_handler, expand_end_java_handler):
6912         Add static prototype.
6913
6914         * expr.c (flush_quick_stack, push_value, pop_value,
6915         java_stack_swap, java_stack_dup, build_java_athrow,
6916         build_java_jsr, build_java_ret, expand_java_multianewarray,
6917         expand_java_arraystore, expand_java_arrayload,
6918         expand_java_array_length, build_java_monitor, expand_java_pushc,
6919         expand_java_return, expand_java_NEW, expand_java_INSTANCEOF,
6920         expand_java_CHECKCAST, expand_iinc, expand_java_binop, note_label,
6921         expand_compare, expand_test, expand_cond, expand_java_goto,
6922         expand_java_call, expand_java_ret, pop_arguments, expand_invoke,
6923         expand_java_field_op, java_push_constant_from_pool): Likewise.
6924
6925         (decode_newarray_type, expand_iinc): Un-ANSI-fy.
6926         (build_java_arraynull_check): Mark parameters `node' and `type'
6927         with ATTRIBUTE_UNUSED.
6928         (note_label): Likewise for parameter `current_pc'.
6929         (expand_java_call, expand_java_ret): Hide unused definition.
6930
6931         * java-tree.h (make_class, build_constants_constructor,
6932         java_set_exception_lang_code, pop_labeled_block, emit_handlers,
6933         init_outgoing_cpool, register_class, emit_register_classes,
6934         java_layout_seen_class_methods): Prototype.
6935         (unicode_mangling_length): Const-ify.
6936         (append_gpp_mangled_name, append_gpp_mangled_classtype,
6937         emit_unicode_mangled_name, format_int, format_uint,
6938         jcf_trim_old_input, jcf_print_utf8, jcf_print_char,
6939         jcf_print_utf8_replace, open_class): Prototype.
6940
6941         * jcf-dump.c: Include "config.h", not <config.h>.  Don't include
6942         <stdio.h>.  Include tree.h/java-tree.h.
6943         (utf8_equal_string usage, process_class): Add static prototype.
6944         (open_class): Don't prototype this here.
6945         (utf8_equal_string): Match arguments to format specifiers.
6946         (HANDLE_CODE_ATTRIBUTE, BRANCH, JSR, RET, LOOKUP_SWITCH,
6947         TABLE_SWITCH, disassemble_method): Likewise.
6948
6949         * jcf-io.c: Include tree.h/java-tree.h.
6950         (open_class, find_classfile, jcf_print_utf8,
6951         jcf_print_utf8_replace): Const-ify.
6952
6953         * jcf-parse.c (parse_zip_file_entries, process_zip_dir,
6954         parse_class_file): Add static prototype.
6955         (find_in_current_zip): Match definition to existing static
6956         prototype.
6957
6958         * jcf-write.c: Include jcf.h before tree.h/java-tree.h.
6959         (alloc_chunk, append_chunk, append_chunk_copy, gen_jcf_label,
6960         finish_jcf_block, define_jcf_label, get_jcf_label_here,
6961         put_linenumber, localvar_alloc, localvar_free, get_access_flags,
6962         write_chunks, adjust_typed_op, generate_bytecode_conditional,
6963         generate_bytecode_return, perform_relocations, init_jcf_state,
6964         init_jcf_method, release_jcf_state, generate_classfile):
6965         Add static prototype.
6966         (emit_unop): Mark parameter `type' with ATTRIBUTE_UNUSED.
6967         (make_class_file_name): Const-ify.
6968
6969         * jcf.h (find_classfile): Const-ify.
6970
6971         * jv-scan.c (reset_report): Remove prototype.
6972
6973         * jvgenmain.c: Include jcf.h/tree.h/java-tree.h.
6974         (error): Rewrite to allow varargs.
6975
6976         * lang.c (lang_f_options): Const-ify.
6977
6978         * lex.c (java_parse_escape_sequence): Add static prototype.
6979         (java_allocate_new_line): Match definition to existing static
6980         prototype.
6981
6982         * mangle.c Include tree.h/java-tree.h.
6983         (unicode_mangling_length, emit_unicode_mangled_name,
6984         append_gpp_mangled_name, append_gpp_mangled_classtype): Const-ify.
6985
6986         * parse.h (jdep_code): Remove trailing comma in enumeration.
6987         (java_get_line_col): Move prototype outside of !JC1_LITE test.
6988         (reset_report): Add prototype.
6989
6990         * verify.c (push_pending_label, merge_types): Add static
6991         prototypes.
6992
6993         * zipfile.h (opendir_in_zip, open_in_zip): Prototype.
6994
6995 1999-03-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>
6996
6997         * parse.y (find_applicable_accessible_methods_list): Extend the
6998         search to superinterfaces when relevant.
6999         (search_applicable_methods_list): New function.
7000
7001 1999-03-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7002
7003         * class.c (unmangle_classname): Implemented stricter testing
7004         before setting the QUALIFIED_P flag on an identifier.
7005
7006 Tue Mar 16 15:15:41 1999  Per Bothner  <bothner@cygnus.com>
7007
7008         * parse.y (java_complete_lhs):  Call force_evaluation_order
7009         after patch_newarray.
7010         (patch_binop):  Don't call fold if there are side effects.
7011
7012 1999-03-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7013
7014         * parse.y (java_stabilize_reference): Use save_expr instead of
7015         building a SAVE_EXPR node.
7016         (java_complete_lhs): Patch the resulting string of the `+='
7017         operator (if necessary) and complete the RHS after having built
7018         the cast.
7019
7020 Mon Mar 15 12:18:29 1999  Per Bothner  <bothner@cygnus.com>
7021
7022         * class.c (make_class):  Don't set CLASS_P here (because
7023         this function is also called by build_java_array_type).
7024         (push_class):  Set CLASS_P here instead.
7025         * parse.h (TYPE_CLASS_P):  Check for TYPE_ARRAY_P is redundant.
7026
7027         * jcf-dump.c (print_access_flags):  Take extra parameter to indicate
7028         context.  If the context is class, perfer "super" over "synchronized".
7029         * jcf-write.c (generate_classfile):  Don't add ACC_SUPER if interface.
7030
7031         * parse.y (create_class):  Don't call parser_check_super here;
7032         it is not robust.  Always wait until later.
7033
7034         * parse.y (method_header):  For interfaces, set ACC_ABSTRACT (to
7035         match what JDK 1.2 does), but don't set ACC_PUBLIC.
7036
7037 Sat Mar 13 18:16:34 1999  Per Bothner  <bothner@cygnus.com>
7038
7039         * lex.c (java_read_char):  UNGET invalid non-initial utf8 character.
7040         * lex.h (UNGETC):  Change misleading macro.
7041
7042 1999-03-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7043
7044         * parse.y (java_stabilize_reference): Return NODE when patching a
7045         COMPOUND_EXPR.
7046         (java_complete_lhs): Put parenthesis around truth values.
7047
7048 1999-03-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7049
7050         * class.c (layout_class_method): Don't make rtl for interface
7051         methods.
7052         * parse.h (GET_TYPE_NAME): New macro.
7053         * parse.y (if_then_statement:): Fixed indentation.
7054         (if_then_else_statement:): Likewise.
7055         (for_statement:): Fixed spacing.
7056         (try_statement:): Fixed indentation.
7057         (create_interface): Don't force interfaces to be abstract.
7058         (method_header): Abstract methods are OK in interfaces.
7059         (declare_local_variables): Fixed typo in comment.
7060         (java_complete_expand_method): Fixed indentation.
7061         (resolve_qualified_expression_name): Use GET_TYPE_NAME to report
7062         non accessible fields.
7063         (java_stabilize_reference): New function.
7064         (java_complete_lhs): Fixed indentation. Use
7065         java_stabilize_reference in compound assignement. Insert the
7066         cast. If not processing `+' fix string constants before processing
7067         binop.
7068
7069 Fri Mar 12 19:42:55 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7070
7071         * constants.c (find_class_or_string_constant): Cast variable `j'
7072         to a `jword' when comparing against one.
7073
7074         * expr.c (java_lang_expand_expr): Remove unused variables
7075         `has_finally_p' and `op0'.
7076
7077         * gjavah.c (print_field_info): Cast a value to jint when comparing
7078         against one.  Likewise for a jlong.
7079         (add_namelet): Likewise cast a `sizeof' to an int when comparing
7080         against a signed quantity.
7081
7082         * jcf-dump.c (print_signature_type): Remove unused variable `digit'.
7083         (print_signature): Don't needlessly dereference variable `str'
7084
7085         * jcf-reader.c (get_attribute): Mark variables `max_stack' and
7086         `max_locals' with ATTRIBUTE_UNUSED.
7087         (jcf_parse_class): Likewise for variable `index'.
7088
7089         * parse.h (reverse_jdep_list): Remove static prototype.
7090
7091         * parse.y (build_jump_to_finally): Remove prototype and definition.
7092         (reverse_jdep_list): Add static prototype.
7093
7094         * typeck.c (convert_ieee_real_to_integer): Remove unused variables
7095         `assignment' and `expr_decl'.
7096
7097         * verify.c (verify_jvm_instructions): Remove unused label `bad_ldc'.
7098
7099 1999-03-12  Andrew Haley  <aph@cygnus.com>
7100
7101         * jcf-path.c (add_entry): alloca len+2 rather than len+1 bytes;
7102         we'll need a directory separator and a null character.
7103
7104 Wed Mar 10 23:20:11 1999  Per Bothner  <bothner@cygnus.com>
7105
7106         * jcf-write.c (generate_bytecode_insns):  Handle __builtin_fmod, for %.
7107
7108   Tue Mar  9 11:52:08 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7109
7110         * parse.y (method_header): Don't set ACC_ABSTRACT flags on
7111         interfaces.
7112
7113 Fri Mar  5 15:17:29 1999  Per Bothner  <bothner@cygnus.com>
7114
7115         * lex.c (java_parse_end_comment):  Take extra parameter (next char).
7116
7117         * class.c (build_utf8_ref):  Fix possible name class/ambiguity.
7118
7119         * class.c (layout_class_method):  A static method in a base class
7120         is never overridden, so treat it like it doesn't exist.
7121         However, do complain about private non-static method overriding
7122         public static method.
7123
7124         * parse.y:  Don't set unused INITIALIZED_P flag.
7125         * java-tree.h (INITIALIZED_P):  Removed no-longer needed flag.
7126
7127         * parse.y (find_expr_with_wfl):  Optimize tail-calls.
7128         (build_array_from_name):  Re-order &index[string] to &string[index].
7129
7130         * parse.y (java_complete_lhs):  Don't call patch_assignment if rhs is
7131         error_mark (it might catch more errors, but it is more likely to lose).
7132
7133 Sat Mar  6 11:17:16 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7134
7135         * Makefile.in (jcf-parse.o): Depend on $(PARSE_H).
7136         (parse-scan.o): Depend on toplev.h.
7137
7138         * class.c (make_method_value): Add prototype.  Make it static.
7139         Remove unused second argument, caller changed.
7140
7141         * expr.c (java_lang_expand_expr): Remove unused variable
7142         `return_label'.
7143
7144         * java-tree.h: Don't prototype find_in_current_zip.
7145         Add prototypes for verify_constant_pool, start_java_method,
7146         end_java_method, give_name_to_locals, expand_byte_code,
7147         open_in_zip, set_constant_value, find_constant1, find_constant2,
7148         find_utf8_constant, find_string_constant, find_class_constant,
7149         find_fieldref_index, find_methodref_index, write_constant_pool,
7150         count_constant_pool_bytes and encode_newarray_type.
7151
7152         * jcf-dump.c: Remove unused variable `LONG_temp'.
7153
7154         * jcf-parse.c: Include parse.h.
7155         (jcf_parse_source): Remove unused parameter, all callers changed.
7156         (jcf_figure_file_type): Add static prototype.
7157         (find_in_current_zip): Likewise.  Also remove unused parameter,
7158         all callers changed.
7159         (read_class): Initialize variable `saved_pos'.
7160
7161         * jcf-reader.c (jcf_parse_preamble): Mark variables
7162         `minor_version' and `major_version' with ATTRIBUTE_UNUSED.
7163
7164         * lex.c (java_is_eol): Wrap prototype and definition in !JC1_LITE.
7165         (java_init_lex): Wrap variable `java_lang_imported' in !JC1_LITE.
7166         (java_parse_doc_section): Initialize variable `seen_star'.
7167         (java_lex): Wrap variable `number_beginning' in !JC1_LITE.
7168         (java_lex_error): Mark parameters `msg' and `forward' with
7169         ATTRIBUTE_UNUSED.
7170         (java_get_line_col): Mark parameters `filename' and `line' with
7171         ATTRIBUTE_UNUSED.
7172
7173         * parse-scan.y: Include toplev.h.
7174         (yyerror): Mark parameter `msg' with ATTRIBUTE_UNUSED.
7175
7176         * parse.h: use `struct JCF', not plain `JCF'.
7177         (java_parser_context_save_global, java_expand_classes
7178         java_parser_context_restore_global, java_parse): Add prototypes.
7179
7180         * typeck.c (convert_ieee_real_to_integer): Remove unused variable
7181         `node'.
7182
7183 Wed Feb 24 16:13:59 1999  Per Bothner  <bothner@deneb.cygnus.com>
7184
7185         *  check-init.c (check_init):  COPYN takes word count, not bit count.
7186
7187 Fri Feb 26 14:06:21 1999  Per Bothner  <bothner@cygnus.com>
7188
7189         * typeck.c (convert_ieee_real_to_integer):  Use save_expr instead of
7190         explicit build_decl.  (Avoids crash in reload when optimizing.)
7191
7192 Thu Feb 25 21:05:04 1999  Per Bothner  <bothner@cygnus.com>
7193
7194         * decl.c (complete_start_java_method):  Handle synchronized method
7195         even when compiling from bytecode.
7196
7197 1999-02-26  Tom Tromey  <tromey@cygnus.com>
7198
7199         * gjavah.c (add_class_decl): Only generate `#include' if outer
7200         class is not the name of the class we are processing.  Correctly
7201         append `.h' in #include.
7202         (process_file): Clean up newlines around generated `#include's.
7203         (decode_signature_piece): Correctly handle inner classes.
7204         (struct include): New structure.
7205         (all_includes): New global.
7206         (print_include): New function.
7207         (add_class_decl): Use it.
7208         (process_file): Likewise.
7209         (add_class_decl): Generate include for java-array.h if array
7210         seen.
7211         (process_file): Don't generate java-array.h include.
7212
7213         * gjavah.c (add_namelet): Check for standard package names here.
7214         (add_class_decl): Don't check for standard package names here.
7215
7216 1999-02-25  Tom Tromey  <tromey@cygnus.com>
7217
7218         * parse.y (read_import_dir): Use `|=', not `+=', to set `found'.
7219         When reading a zip file, only use strncmp if both strings are
7220         bigger than the buffer length.  Initialize `k' when looping
7221         through zip file.
7222
7223 1999-02-24  Tom Tromey  <tromey@cygnus.com>
7224
7225         * gjavah.c (struct namelet): New structure.
7226         (add_namelet): New function.
7227         (print_namelet): New function.
7228         (print_class_decls): Use add_namelet and print_namelet to generate
7229         namespaces and not classes.
7230         (method_printed): New global.
7231         (HANDLE_END_METHOD): Examine method_printed.
7232         (print_method_info): Set method_printed when required.  Print
7233         error if function to be ignored is marked virtual.  Handle $finit$
7234         method.
7235         (METHOD_IS_FINAL): New macro.
7236         (print_field_info): Use it.
7237         (HANDLE_METHOD): Clear method_printed.
7238         (method_pass): New global.
7239         (HANDLE_END_FIELD): Call add_class_decl on the first pass.
7240         (process_file): Do two passes over both fields and methods.
7241         (HANDLE_METHOD): Examine method_pass.
7242         (root): New global.
7243         (add_class_decl): New function.
7244         (print_class_decls): Don't scan over entire constant pool.
7245
7246 1999-02-23  Tom Tromey  <tromey@cygnus.com>
7247
7248         * jvspec.c (lang_specific_driver): Recognize -fsyntax-only and
7249         disable linking in that case.
7250
7251 1999-02-20  Tom Tromey  <tromey@cygnus.com>
7252
7253         * jcf.h (UTF8_GET): Mask first byte of 3-byte encoding with 0x0f,
7254         not 0x1f.
7255
7256 Sun Feb 21 14:56:11 1999  Per Bothner  <bothner@cygnus.com>
7257
7258         * decl.c (build_result_decl), java-tree.h:  New method.
7259         (complete_start_java_method):  Handle synchronized methods.
7260         Don't build DECL_RESULT here.  (Ordering dependency problem.)
7261         (start_java_method):  Call build_result_decl here instead  ...
7262         * parse.y (java_complete_expand_method):  ... and here.
7263         (expand_start_java_method): Don't call complete_start_java_method here.
7264         (java_complete_expand_method):  Call it here instead.
7265         * parse.h (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT):  Moved to ..
7266         * java-tree.h:  ... here.
7267
7268         * expr.c (force_evaluation_order):  Fix typo, don't handle ARRAY_REF.
7269         * parse.y (java_complete_lhs):  Don't call force_evaluation_order
7270         for ARRAY_REF - it doesn't work when array bounds are checked.
7271         (patch_array_ref):  Handle it here instead.
7272
7273         * jcf-write.c (generate_classfile):  Emit "Exceptions" attribute.
7274
7275 Fri Feb 19 15:35:01 1999  Per Bothner  <bothner@cygnus.com>
7276
7277         Force left-to-right evaluation of binary operations etc.
7278         * expr.c (force_evaluation_order), java-tree.h:  New function.
7279         * parse.y (java_complete_lhs):  Pass binary operations, procedure
7280         calls, and ARRAY_REFs to force_evaluation_order.
7281         (various):  Set TREE_SIDE_EFFECTS more carefully.
7282
7283         Tolerate random (non-UTF8) encoding in comments without complaining.
7284         * lex.c (java_read_char):  Return 0xFFFE if bad UTF8 encoding.
7285         (java_is_eol):  Handle '\r' followed by '\n' instead of vice versa.
7286
7287         * parse.y (resolve_qualified_expression_name):  Handle error_mark.
7288         (java_complete_node case EXPR_WITH_FILE_LOCATION):  Likewise.
7289
7290         * parse.y (java_complete_lhs):  Ignore an empty statement in a
7291         COMPOUND_EXPR.  Don't complain about empty statement after return.
7292
7293 Fri Feb 19 13:00:56 1999  Per Bothner  <bothner@cygnus.com>
7294
7295         * parse.y (obtain_incomplete_type):  Don't wrap unknown types
7296         in TREE_LIST - just chain the POINTER_TYPEs together.
7297         (resolve_class):  If type already resolved, return decl.
7298         After resolving, update TREE_TYPE(class_type), and name (if array).
7299         * parse.h (do_resolve_class), parse.y:  Make non-static.
7300         * class.c (maybe_layout_super_class):  Take this_class argument.
7301         Do do_resolve_class if necessary.
7302         (layout_class, layout_class_methods): Adjust calls appropriately.
7303         * parse.h (JDEP_TO_RESOLVE, JDEP_RESOLVED_DECL, JDEP_RESOLVED,
7304         JDEP_RESOLVED_P):  Redefined for new TREE_LIST-less convention.
7305         * typeck.c (build_java_array_type):  Don't call layout_class.
7306
7307 Wed Feb 17 15:47:20 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7308
7309         * parse.y (check_pkg_class_access): Allow private class access
7310         within the same package.
7311         (strip_out_static_field_access_decl): New function.
7312         (patch_unaryop): Call strip_out_static_field_access_decl on ++/--
7313         operator argument before testing its nature.
7314
7315 Wed Feb  3 12:38:43 1999  Per Bothner  <bothner@cygnus.com>
7316
7317         * java-tree.def (FINALLY_EXPR):  Removed.  (Now uses TRY_FINALLY_EXPR.)
7318         (TRY_EXPR):  Simplify - it no longer has a finally clause.
7319         * check-init.c (check_init):  Handle TRY_FINALLY_EXPR.
7320         Simpler handling of TRY_EXPR, which no longer has a finally clause.
7321         * expr.c (java_lang_expand_expr):  Likewise.
7322         * java-tree.h (CATCH_EXPR_GET_EXPR):  Removed - no longer needed.
7323         * parse.h (java_get_catch_block), parse.y:  Removed - no longer needed.
7324         * parse.y (java_complete_lhs):  Add support for TRY_FIANLLY_EXPR.
7325         (build_try_statement):  Remove finally parameter and handling.
7326         (build_try_finally_statement):  New function.
7327         (patch_try_statement):   No longer need to support finally clause.
7328         (try_statement):  Update grammar action rules.
7329         * jcf-write.c (generate_bytecode_insns):  Handle TRY_FINALLY_EXPR.
7330         Simpler handling of TRY_EXPR, which no longer has a finally clause.
7331
7332 1998-11-26  Andrew Haley  <aph@viagra.cygnus.co.uk>
7333
7334         * jcf-parse.c (get_constant): Add braces around computation of 'd'
7335         when REAL_ARITHMETIC is not defined.  [Oct 26 fix got overwritten -PB]
7336
7337 1999-02-17  Andrew Haley  <aph@cygnus.com>
7338
7339         * class.c (build_utf8_ref): Back out broken patch which was
7340         intended to to output signatures using '.' as a separator.
7341
7342         * class.c (make_class_data): Output signatures using '.' as a
7343         separator, rather than '/'.
7344         (mangled_classname): Likewise.
7345         (make_field_value): Likewise.
7346         (make_method_value): Likewise.
7347         * constants.c (alloc_class_constant): Likewise.
7348         * expr.c (build_invokeinterface): Likewise.
7349
7350 Thu Feb 11 21:25:51 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7351
7352         * parse.y (valid_builtin_assignconv_identity_widening_p): Got rid
7353         of an ancient workaround.
7354
7355 Wed Feb 10 23:27:33 1999  Jeffrey A Law  (law@cygnus.com)
7356
7357         * jvspec.c (xmalloc): Kill the prototype.  It does not belong
7358         here anymore.
7359
7360 1999-02-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7361
7362         * lex.c (yylex): Encode \0 as UTF8.
7363
7364 1999-02-10  Tom Tromey  <tromey@cygnus.com>
7365
7366         * jvspec.c (lang_specific_driver): Use libgcj, not libjava.
7367         * Makefile.in (jcf-path.o): Define LIBGCJ_ZIP_FILE.
7368         (libgcj_zip): Renamed.
7369         * jcf-path.c (add_entry): Use LIBGCJ_ZIP_FILE, not
7370         LIBJAVA_ZIP_FILE.
7371         (jcf_path_init): Use LIBGCJ_ZIP_FILE.
7372
7373         * jvspec.c (THREAD_NAME): Renamed -lqthreads to -lgcjcoop.
7374         (GC_NAME): Renamed -lgc to -lgcjgc.
7375
7376 Tue Feb  9 19:31:09 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7377
7378         * lex.c (java_lang_cloneable): Initialize.
7379         * parse.y (java_lang_cloneable): New static variable.
7380         (qualify_ambiguous_name): Take CONVERT_EXPR into account when
7381         doing one more qualification round.
7382         (valid_ref_assignconv_cast_p): Reject null source or
7383         destination. Allow an array to be cast into java.lang.Cloneable.
7384         (patch_cast): Swapped two first arguments to first call to
7385         valid_ref_assignconv_cast_p.
7386
7387 Mon Feb  8 11:50:50 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7388
7389         * parse.h: DECL_P renamed JDECL_P.
7390         * parse.y: DECL_P replaced by JDECL_P.
7391         (build_array_from_name): Always use pointer's type.
7392         (patch_bc_statement): Extra code to search continue target in a
7393         for loop. Fixed comments. Continue target is current loop when
7394         unlabeled.
7395
7396 1999-02-05  Andrew Haley  <aph@cygnus.com>
7397
7398         * class.c (make_class_data): The superclass of an interface should
7399         be null, not class Object.
7400
7401         * lex.c (java_lex): Sign extend hex literals.
7402
7403 1999-02-04  Andrew Haley  <aph@cygnus.com>
7404
7405         * class.c (build_utf8_ref): Output signatures using '.' as a
7406         separator, rather than '/'.
7407         (make_class_data): Likewise.
7408
7409 Wed Feb  3 22:50:17 1999  Marc Espie <Marc.Espie@liafa.jussieu.fr>
7410
7411         * Make-lang.in ($(GCJ)(exeext)): Remove choose-temp.o, pexecute.o and
7412         mkstemp.o.  Get them from libiberty now.
7413
7414 Tue Feb  2 19:49:12 1999  Jeffrey A Law  (law@cygnus.com)
7415
7416         * jcf-io.c: Do not include sys/stat.h or sys/wait.h
7417
7418 Tue Feb  2 20:04:50 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7419
7420         * jvspec.c (xmalloc): Fix the prototype to match the one obtained
7421         from libiberty.h
7422
7423 Tue Feb  2 10:39:47 1999  Per Bothner  <bothner@cygnus.com>
7424
7425         Optimize: `return (a ? b : c)' as: `if (a) return b; else return c;'.
7426         * jcf-write.c (generate_bytecode_return):  New function.
7427         (generate_bytecode_insns):  Use it, for RETURN_EXPR.
7428
7429         * jcf-write.c (generate_bytecode_insns):  For REAL_CST that is 0 or 1,
7430         generate special [fd]const_[01] instructions.
7431
7432         * jcf-parse.c (yyparse):  Don't emit_register_classes if -fsyntax-only.
7433
7434         * verify.c (verify_jvm_instructions):  Do INVALIDATE_PC after
7435         handling OPCODE_lookupswitch or OPCODE_tableswitch.
7436
7437 Mon Feb  1 20:44:47 1999  Per Bothner  <bothner@cygnus.com>
7438
7439         * parse.y (patch_method_invocation):  Handle calling static methods,
7440         even in the form EXPR.METHOD(ARGS), not just TYPE.METHOD(ARGS).
7441
7442         * parse.y (java_complete_lhs):  Don't complain about unreachable
7443         exit condition in a do-while statement.
7444
7445 Fri Jan 29 18:19:02 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7446
7447         * lex.c (java_read_char): Fixed utf8 decoding.
7448         (java_unicode_2_utf8): Fixed utf8 encoding in the 0x800-0xffff
7449         range.
7450         * parse.y (valid_builtin_assignconv_identity_widening_p): Fixed
7451         comments. Local variable `all_primitive' is gone. Broadened
7452         acceptance of `0' to floating point targets. `long' can now be
7453         widened to `double' or `float'.
7454         (valid_method_invocation_conversion_p): Added leading
7455         comment. Fixed tabulation.
7456         (build_string_concatenation): Optimize out left or right empty
7457         string constants.
7458
7459 Thu Jan 28 18:51:26 1999  Per Bothner  <bothner@cygnus.com>
7460
7461         * jcf-write.c (localvar_alloc):  Only emit entry for
7462         LocalVariableTable if debug_info_level > DINFO_LEVEL_TERSE.
7463         (generate_bytecode_insns):  Only call put_linenumber if
7464         debug_info_level > DINFO_LEVEL_NONE.
7465         * jvspec.c (lang_specific_driver):  If no -O* or -g* option
7466         is specified, add -g1 (for compatibility wih javac).
7467
7468 Thu Jan 28 09:17:51 1999  Hans-Peter Nilsson  <hp@axis.se>
7469
7470         * java/Makefile.in: Add missing dependencies for jcf-dump.o,
7471         gjavah.o, check-init.o, jv-scan.o
7472
7473 Mon Feb  1 09:50:48 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7474
7475         * Makefile.in (gjavah.o): Depend on $(CONFIG_H) and system.h.
7476
7477         * gjavah.c: Include config.h and system.h.
7478
7479         * javaop.h (inline): Don't define, its handled by system.h.
7480         (WORD_TO_FLOAT, WORDS_TO_LONG, WORDS_TO_DOUBLE): Change these
7481         from `inline' to `static inline'.
7482
7483         * jcf.h (inline): Don't define, its handled by system.h.
7484
7485         * lex.c (inline): Likewise.
7486
7487 Sun Jan 31 20:34:29 1999  Zack Weinberg  <zack@rabi.columbia.edu>
7488
7489         * lang-specs.h: Map -Qn to -fno-ident.
7490
7491 Fri Jan 29 16:51:56 1999  Richard Henderson  <rth@cygnus.com>
7492
7493         * check-init.c (check_init): Fix CLEANUP_POINT_EXPR typo.
7494
7495 1999-01-29  Tom Tromey  <tromey@cygnus.com>
7496
7497         * parse.h (BUILD_APPEND): If ARG is a non-String object reference,
7498         then cast it to Object before calling `append' method.
7499
7500 Thu Jan 28 14:45:39 1999  Per Bothner  <bothner@cygnus.com>
7501
7502         * check-init.c (check_bool2_init, check_bool_init, check_init):
7503         Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR, and TRUTH_XOR_EXPR.
7504         * jcf-write.c (generate_bytecode_insns):  Likewise.
7505
7506 Thu Jan 28 11:50:11 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7507
7508         * jcf-parse.c (jcf_parse): Don't parse the same class file twice.
7509         * parse.y (patch_cast): Allow a boolean to be cast into a
7510         boolean.
7511
7512 Wed Jan 27 10:19:29 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7513
7514         * parse.y: (class_declaration:): Fixed indentation.
7515         (class_member_declaration:): Extra `;' after field declaration now
7516         accepted.
7517         (interface_declaration:): Removed debug messages in error reports.
7518         (patch_binop): Nodes created and returned inherit the orignal
7519         node's COMPOUND_ASSIGN_P flag value.
7520         (patch_cast): Fix cast from char to floating point.
7521
7522 Mon Jan 25 17:39:19 1999  Andrew Haley  <aph@cygnus.com>
7523
7524         * except.c, java-except.h (expand_resume_after_catch): new
7525         function.
7526         * expr.c (java_lang_expand_expr): call expand_resume_after_catch
7527         to branch back to main flow of control after a catch block.
7528
7529 Sat Jan 23 23:02:43 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7530
7531         * Makefile.in (parse.o): Depend on $(CONFIG_H) and
7532         $(srcdir)/../system.h.
7533         (class.o): Depend on $(PARSE_H) and $(srcdir)/../output.h.
7534         (jcf-parse.o): Depend on $(srcdir)/../toplev.h.
7535         (jcf-write.o): Likewise.
7536         (jv-scan.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h.
7537         (mangle.o): Depend on $(srcdir)/../toplev.h.
7538         (parse-scan.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h.
7539         (zextract.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h.
7540
7541         * class.c: Include output.h and parse.h.
7542         (mangled_classname): Add the `const' keyword to a char*.
7543         (find_named_method): Hide unused function definition.
7544         (build_utf8_ref): Change type of variable `c' to unsigned char.
7545         Use ISALPHA/ISDIGIT instead of isalpha/isdigit.
7546         (build_class_ref): Add the `const' keyword to a char*.
7547         (layout_class_method): Remove unused variable `buf'.
7548
7549         * decl.c (find_local_variable): Remove unused variable `rtl'.
7550         (pushdecl): Likewise for variables `different_binding_level' and
7551         `oldglobal'.
7552         (pushlevel): Mark parameter `unused' with ATTRIBUTE_UNUSED.
7553         (maybe_build_cleanup): Likewise for parameter `decl'.
7554
7555         * except.c (expand_start_java_handler): Mark parameter `range'
7556         with ATTRIBUTE_UNUSED.
7557
7558         * expr.c: Include except.h.
7559         (pop_type): Remove unused variable `i'.
7560         (pop_value): Likewise for variables `n_words' and `i'.
7561         (expand_java_arrayload): Likewise for variable `convert'.
7562         (java_lang_expand_expr): Likewise for variables `op0', `type',
7563         `mode', `unsignedp', `node' and `elements'.
7564         (expand_byte_code): Likewise for variables `prev_eh_ranges' and
7565         `eh_ranges'.
7566         (process_jvm_instruction): Add a `const' qualifier to a char*.
7567
7568         * gjavah.c (output_directory): Add the `const' keyword to a char*.
7569         (temp_directory): Likewise.
7570         (print_c_decl): Likewise.
7571         (print_method_info): Likewise.
7572         (decode_signature_piece): Likewise.
7573         (print_mangled_classname): Likewise.
7574
7575         * java-except.h: Provide prototypes for maybe_start_try,
7576         maybe_end_try and add_handler.
7577
7578         * java-tree.h (mangled_classname): Add the `const' keyword to a char*.
7579         (parse_error_context): Likewise.  Also add ATTRIBUTE_PRINTF_2.
7580         (pushdecl_top_level, alloc_class_constant, unicode_mangling_length,
7581         init_expr_processing, push_super_field, init_class_processing,
7582         can_widen_reference_to, class_depth, verify_jvm_instructions,
7583         maybe_pushlevels, maybe_poplevels, process_jvm_instruction,
7584         set_local_type, merge_type_state, push_type, load_type_state,
7585         add_interface, find_in_current_zip, append_gpp_mangled_classtype,
7586         emit_unicode_mangled_name): Add prototypes.
7587
7588         * jcf-dump.c (print_constant): Add the `const' keyword to a char*.
7589         (print_signature_type): Use ISDIGIT, not isdigit.
7590         (print_signature): Remove unused variable `j'.
7591
7592         * jcf-io.c (jcf_filbuf_from_stdio): Cast the result of `fread' to
7593         int when comparing against one.
7594
7595         * jcf-parse.c: Include toplev.h.
7596
7597         * jcf-write.c: Likewise.  Don't include <string.h> or <sys/stat.h>.
7598         (localvar_free): Remove unused variable `i'.
7599         (generate_bytecode_conditional): Likewise for variable `kind'.
7600
7601         * jv-scan.c: Include config.h and system.h.  Remove redundant
7602         OS header and gansidecl.h includes.
7603         (warning): Add the `const' keyword to a char*.  Also add
7604         ATTRIBUTE_PRINTF_1 to the prototype.  Check ANSI_PROTOTYPES, not
7605         __STDC__, when determining whether to use ANSI-isms.
7606         (fatal): Likewise.  Also add ATTRIBUTE_UNUSED.
7607         (xmalloc): Don't redundantly prototype here.
7608         (main): Remove unused parameter `envp'.  Also fix the arguments
7609         passed to function `fatal' to match the format specifier.
7610
7611         * lang.c (java_tree_code_name): Add the `const' keyword to a char*.
7612
7613         * mangle.c: Include toplev.h.
7614         (emit_unicode_mangled_name): Declare parameter `len'.
7615
7616         * parse.y (parse_warning_context): Add the `const' keyword to a
7617         char*.  Also add ATTRIBUTE_PRINTF_2 to the prototype.  Check
7618         `ANSI_PROTOTYPES' not `__STDC__' for whether to use ANSI-isms.
7619         (issue_warning_error_from_context): Add the `const' keyword to
7620         a char*.
7621         (parse_error_context): Likewise.  Also check `ANSI_PROTOTYPES'
7622         not `__STDC__' for whether to use ANSI-isms.
7623
7624         * typeck.c (incomplete_type_error): Mark parameters `value' and
7625         `type' with ATTRIBUTE_UNUSED.
7626         (parse_signature_type): Use ISDIGIT, not isdigit.
7627
7628         * verify.c (check_pending_block): Add the `const' keyword to a char*.
7629         (verify_jvm_instructions): Likewise.  Remove unused variables
7630         `field_name' and `default_val'.
7631
7632         * zextract.c: Include config.h and system.h.  Remove redundant
7633         OS header includes.
7634
7635         * zipfile.h: Prototype `read_zip_archive'.
7636
7637 Thu Jan 21 16:00:06 1999  Andrew Haley  <aph@cygnus.com>
7638
7639         * typeck.c (convert): Allow conversions to void type: some
7640         optimizations in gcc do this.
7641
7642 Thu Jan 21 15:21:49 1999  Andrew Haley  <aph@cygnus.com>
7643
7644         * typeck.c (convert_ieee_real_to_integer): New function.
7645         (convert): When not using fast-math and using hardware fp, convert
7646         an IEEE NaN to zero.
7647
7648 1999-01-18  Andrew Haley  <aph@cygnus.com>
7649
7650         * parse.y (patch_binop): Do a type conversion from signed to
7651         unsigned and then back to signed when a ">>>" is found.
7652
7653 Sun Jan 17 22:34:22 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7654
7655         * java-tree.h: (check_for_initialization): Added prototype.
7656         * lex.c (java_parse_doc_section): `\n' breaks the `*/' string.
7657         * parse.y (do_resolve_class): Removed unused locals.
7658         (read_import_dir): Likewise.
7659         (resolve_qualified_expression_name): Array creation
7660         expressions are valid primary expressions.
7661         (qualify_ambiguous_name): Likewise.
7662         (patch_synchronized_statement): Removed unused local.
7663
7664 Sun Jan 17 21:55:42 1999  Jeffrey A Law  (law@cygnus.com)
7665
7666         * Makefile.in (zextract.o): Add dependencies.
7667
7668         * Makefile.in: Do not put ^Ls at the start of a line.
7669
7670 Fri Jan 15 20:16:20 1999  Per Bothner  <bothner@cygnus.com>
7671
7672         * expr.c (process_jvm_instruction):  Coerce to correct Throwable
7673         sub-type the result of the call that gets the exception value.
7674
7675         * parse.y (java_complete_expand_methods):  If flags_syntax_only,
7676         don't call finish_class.
7677
7678         * parse.y (java_check_regular_methods):  If METHOD_PRIVATE,
7679         clear found before continuing.
7680
7681         * verify.c (verify_jvm_instructions):  On an array load, allow
7682         and handle top of stack to be TYPE_NULL.
7683
7684         * gjavah.c (generate_access):  Translate Java package private or
7685         protected access to C++ public, but with a comment.
7686
7687 1999-01-13  Andrew Haley  <aph@cygnus.com>
7688
7689         * expr.c (generate_name): Name prefix changed to avoid clashes
7690         with assembler temp labels.
7691
7692         * parse.y (patch_synchronized_statement): Set TREE_SIDE_EFFECTS on
7693         MODIFY_EXPR.  Without this, code for the assignement may not be
7694         generated at all and the synchronized statement will read an
7695         uninitialized variable.
7696
7697 Wed Jan 13 01:24:54 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7698
7699         * class.c (maybe_layout_super_class): Fixed returned value.
7700         * lex.c: Added 1999 to the copyright.
7701         (java_init_lex): Initialize java_lang_imported.
7702         * lex.h: Added 1999 to the copyright.
7703         * parse.h: Added 1999 to the copyright.
7704         (REGISTER_IMPORT): Fixed typo in trailing macro.
7705         (CURRENT_OSB): New macro.
7706         (struct parser_ctxt): New fields osb_depth, osb_limit.
7707         * parse.y (java_lang_id): New global variable.
7708         (type_import_on_demand_declaration): Don't import java.lang.* twice.
7709         (array_creation_expression:): Use CURRENT_OSB.
7710         (dims:): Uses a stack to keep track of array dimensions.
7711         (cast_expression:): Use CURRENT_OSB.
7712         (find_expr_with_wfl): Return NULL if node found doesn't meet the
7713         conditions.
7714         (register_fields): Fixed typos in comment.
7715         (check_method_redefinition): Fixed comment indentation.
7716         (java_check_regular_methods): Set saved found wfl to NULL after
7717         having reinstalled it in the previously found DECL_NAME.
7718
7719 Sun Jan 10 13:36:14 1999  Richard Henderson  <rth@cygnus.com>
7720
7721         * gjavah.c (java_float_finite): Use a union to do type punning.
7722         (java_double_finite): Likewise.
7723
7724 Sat Jan  9 11:25:00 1999  Per Bothner  <bothner@cygnus.com>
7725
7726         * parse.y (build_new_array_init):  Don't set EXPR_WFL_LINECOL
7727         on CONSTRUCTOR (since that trashes TREE_CST_RTL).
7728         (patch_new_array_init):  Clear TREE_CONSTANT also if INDIRECT_REF.
7729         (register_fields):  Set TREE_STATIC on NEW_ARRAY_INIT, not on
7730         CONSTRUCTOR (which causes expand_expr to call output_constant_def).
7731         * expr.c (java_lang_expand_expr):  Check TREE_STATIC of NEW_ARRAY_INIT.
7732
7733 Fri Jan  8 15:48:03 1999  Per Bothner  <bothner@cygnus.com>
7734
7735         * check-init.c (check_init):  If compiling to native, we don't
7736         see THROW_EXPR.  Instead, look for a call to throw_node (_Jv_Throw).
7737
7738 1999-01-08  Tom Tromey  <tromey@cygnus.com>
7739
7740         * parse-scan.y (variable_declarator_id): Set or increment
7741         bracket_count.
7742         (bracket_count): New global.
7743         (formal_parameter): Handle case where bracket pairs trail variable
7744         declarator id.
7745
7746 1999-01-07  Andrew Haley  <aph@viagra.cygnus.co.uk>
7747
7748         * jcf-parse.c (yyparse): variable len changed from a char to an
7749         int to prevent overflow.
7750
7751 Wed Jan  6 17:19:46 1999  Per Bothner  <bothner@cygnus.com>
7752
7753         * java-tree.h:  Declare read_class.
7754         * jcf-parse.c (read_class):  New function.
7755         (load_class):  Now just call read_class.
7756
7757         * java-tree.h (java_parse_abort_on_error):  Only return if new errors.
7758         * jcf-parse.c (parse_source_file):  Declare save_error_count,
7759         which is needed by java_parse_abort_on_error macro,
7760         * parse.y (java_layout_classes, java_expand_classes):  Likewise.
7761
7762         * parse.y (register_fields):  Set TREE_STATIC flag of NEW_ARRAY_INIT
7763         constructor, if initializing a static field.
7764         (patch_new_array_init):  Set TREE_CONSTANT if it is.
7765         * expr.c (java_lang_expand_expr):  For a static array constructor
7766         of primitive elements, allocate the array itself statically.
7767         Disabled until we can set the vtable field statically.
7768
7769         * check-init.c:  New file.  Checks for definite assignment.
7770         * Makefile.in (JAVA_OBJS):  Add check-init.o.
7771         * parse.y (java_complete_expand_method): Call check_for_initialization.
7772         * parse.h (BLOCK_EXPR_DECLS, BLOCK_EXPR_BODY):  Moved to java-tree.h.
7773
7774 Wed Jan  6 14:53:10 1999  Graham <grahams@rcp.co.uk>
7775
7776         * parse.y : include system.h instead of including
7777         standard headers directly with the exception of <dirent.h>.
7778
7779 Wed Jan  6 16:20:06 1999  Per Bothner  <bothner@cygnus.com>
7780
7781         * lex.h:  Moved static function declarations to lex.c,
7782         to shut up some -Wall warnings.
7783         * lex.c:  Static function declarations moved here.
7784         * jcf-dump.c:  Small fixes to shut up -Wall warnings.
7785
7786 Tue Jan  5 22:15:40 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7787
7788         * Make-lang.in ($(GCJ).o): Depend on prefix.h.
7789
7790 Tue Dec 22 11:25:19 1998  Per Bothner  <bothner@cygnus.com>
7791
7792         * expr.c (process_jvm_instruction):  Do load_type_state after JSR.
7793         * verify.c (verify_jvm_instructions):  Fix off-by-one error.
7794
7795         * jcf-write.c (CHECK_PUT):  Add (void) cast to avoid -Wall warnings.
7796         (localvar_alloc):  Change return type to void,
7797         (emit_unop):  Remove unused variable size.
7798
7799         * jcf-write.c (struct jcf_block):  Add new union.
7800         (PENDING_CLEANUP_PC, PENDING_EXIT_PC, UNDEFINED_PC):  New macros.
7801         (call_cleanups):  New functions.
7802         (struct jcf_partial):  New fields num_finalizers and return_value_decl.
7803         (generate_bytecode_insns):  Support CLEANUP_POINT_EXPR and
7804         WITH_CLEANUP_EXPR.  Handle cleanups in RETURN_EXPR and EXIT_BLOCK_EXPR.
7805         * lang.c (lang_init):  Call using_eh_for_cleanups.
7806         * parse.y (java_complete_lhs):  For SYNCHRONIZED_EXPR, defer
7807         completing operands to patch_synchronized_statement.
7808         Support CLEANUP_POINT_EXPR, WITH_CLEANUP_EXPR.
7809         (patch_synchronized_statement): Re-write suing CLEANUP_POINT_EXPR and
7810         WITH_CLEANUP_EXPR instead of TRY_EXPR.
7811
7812 Sun Dec 20 16:15:44 1998  John F. Carr  <jfc@mit.edu>
7813
7814         * Make-lang.in: Comment out control-Ls; they upset some makes.
7815
7816 1998-12-18  Tom Tromey  <tromey@cygnus.com>
7817
7818         * parse.y (check_class_interface_creation): Use DIR_SEPARATOR
7819         consistently.
7820
7821 1998-12-17  Tom Tromey  <tromey@cygnus.com>
7822
7823         * parse.y (DIR_SEPARATOR): New define.
7824         (check_class_interface_creation): Use it.
7825
7826         * parse-scan.y (report_main_declaration): Recognize
7827         `java.lang.String' in argument to main.
7828
7829 Wed Dec 16 16:18:59 1998  Per Bothner  <bothner@cygnus.com>
7830
7831         * parse.y (create_interface):  Remove bogus test.
7832
7833 Wed Dec 16 14:42:19 1998  Per Bothner  <bothner@cygnus.com>
7834
7835         * jcf-parse.c (get_constant):  Set TREE_TYPE for string constants.
7836         (HANDLE_CONSTANTVALUE):  If flag_emit_class_files, call get_constant.
7837
7838 1998-12-16  Tom Tromey  <tromey@cygnus.com>
7839
7840         * parse-scan.y (qualified_name): Use correct sprintf format.
7841
7842 1998-12-15  Tom Tromey  <tromey@cygnus.com>
7843
7844         * gjavah.c (print_field_info): Changed how most negative number is
7845         printed.
7846
7847 Mon Dec 14 18:49:29 1998  Per Bothner  <bothner@cygnus.com>
7848
7849         * parse.y (fold_constant_for_init):  New function.
7850         (resolve_expression_name):  Don't replace static final
7851         constant-initialized fields by its value.
7852         (java_complete_lhs):  New.  Same as java_complete_tree, except does
7853         not replace static final constant-initialized fields by their values.
7854         (register_fields):  If there is an initializer, set DECL_INITIAL and
7855         MODIFY_EXPR_FROM_INITIALIZATION_P.
7856         (java_complete_tree):  For MODIFY_EXPR, use java_complete_lhs for lhs.
7857         Only call patch_initialized_static_field if
7858         MODIFY_EXPR_FROM_INITIALIZATION_P.
7859         (patch_initialized_static_field):  If not valid constant, clear
7860         DECL_INITIAL.
7861
7862         * parse.y (lookup_field_wrapper):  Fix thinko.
7863
7864         * parse.y (java_complete_tree):  In EXPR_WITH_FILE_LOCATION,
7865         set and restore global lineno.
7866
7867 1998-12-14  Tom Tromey  <tromey@cygnus.com>
7868
7869         * gjavah.c (print_field_info): If value to print is the smallest
7870         value of its size, then print as hex to avoid later warnings from
7871         C++ compiler.
7872
7873 1998-12-14  Tom Tromey  <tromey@cygnus.com>
7874
7875         * gjavah.c (decompile_method): Decompile `return null'.
7876         (process_file): Generate `#pragma interface'.
7877         (method_declared): New global.
7878         (print_method_info): Set it.
7879         (HANDLE_CODE_ATTRIBUTE): Only print it method_declared set.
7880         (print_method_info): Handle abstract methods.
7881
7882 Sun Dec 13 17:31:40 1998  Per Bothner  <bothner@cygnus.com>
7883
7884         * parse.y (patch_method_invocation):  If class_decl is null
7885         (e.g. an array type), use original type.
7886
7887         * parse.y (check_thrown_exceptions):  Temporary hack to suppress
7888         errors about uncaught exception from clone (of array, specifically).
7889
7890 1998-12-13  Tom Tromey  <tromey@cygnus.com>
7891
7892         * gjavah.c (decompile_method): Handle all types of `return'
7893         opcode.  Decompile `return this' and `return'.
7894         (method_access): New global.
7895         (print_method_info): Set it.
7896         (decompile_method): Don't decompile a synchronized method.
7897
7898 1998-12-13  Tom Tromey  <tromey@cygnus.com>
7899
7900         * jcf-reader.c (jcf_parse_one_method): Recognize
7901         HANDLE_END_METHOD.
7902         * gjavah.c (HANDLE_END_METHOD): New macro.
7903         (HANDLE_CODE_ATTRIBUTE): New macro.
7904         (decompile_method): New function.
7905         (print_method_info): Don't print `;\n' at end of function decl.
7906         Include java-opcodes.h.
7907         (decompiled): New global.
7908
7909 Sat Dec 12 20:13:19 1998  Per Bothner  <bothner@cygnus.com>
7910
7911         * class.c (build_class_ref):  Handle PRIMTYPE.class if
7912         flag_emit_class_files.
7913         * expr.c (expand_java_field_op):  Don't optimize java.lang.XXX.TYPE
7914         if flag_emit_class_files.
7915         * parse.y (java_complete_tree):  Pre-liminary support for
7916         COMPONENT_REF - only to handle PRIMCLASS.TYPE.
7917
7918         * parse.y (patch_synchronized_statement):   Don't call monitorexit
7919         unless block CAN_COMPLETE_NORMALLY.  Propagate that flag properly.
7920
7921         * java-tree.h (DECL_LOCAL_STATIC_VALUE):  Removed - no longer used.
7922
7923         * zipfile.h (opendir_in_zip):  New declaration.
7924         * jcf-io.c (saw_java_source):  Moved to jcf-parse.c.
7925         (opendir_in_zip):  New function, using code from open_in_zip.
7926         (open_in_zip):  Call opendir_in_zip.
7927         (find_class):  Remove no-longer-used do_class_file parameter,
7928         but add source_ok parameter.  Change logic so if we find a .java file,
7929         we don't look for .class in later classpath emtries.
7930         * jcf-parse.c (load_class):  Pass saw_java_source to find_class.
7931         (jcf_figure_file_type):  Only call open_in_zip if correct magic number.
7932         * gjavah.c: Update call to find_class.
7933         * jcf-dump.c:  Likewise.
7934
7935         * jcf-write.c (put_linenumber):  Handle duplicate line numbers.
7936         (generate_bytecode_insns):  For EXPR_WITH_FILE_LOCATION, do
7937         nothing if body is empty_stmt_node.
7938         Various little fixes so SP gets correctly adjusted.
7939         For NEW_ARRAY_INIT, handle IGNORE_TARGET.
7940         For CALL_EXPR, test if static first.
7941         (generate_classfile):  Ignore fields that are DECL_ARTIFICIAL,
7942         such as the ones we create for Object and Class.
7943         Set and restore current_function_decl.
7944         * parse.y:  Check/set IS_AN_IMPORT_ON_DEMAND_P in read_import_dir.
7945         (note_possible_classname):  New function.
7946         (read_import_entry):  Removed.  Merged with read_import_dir.
7947         (read_import_dir):  Don't call find_class - that only gives us
7948         the first classpath entry having the needed package.
7949         Use the struct buffer data structure from buffer.h.
7950         (read_import_dir, find_in_imports_on_demand):  The remembered
7951         class names now use '.' (not '/') as package separator.
7952
7953         * parse.y (java_complete_expand_methods):  Call write_classfile
7954         here, and not in java_expand_classes (which only gets first class).
7955
7956 Sat Dec 12 19:46:04 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7957
7958         * parse.y (<type_declaration>):  Do maybe_generate_clinit last.
7959         (register_fields):  If a static fields has an initializer, just
7960         chain it on ctxp->static_initialized, and handle later.
7961         (java_complete_expand_methods):  Force <clinit> first.
7962         (resolve_expression_name, resolve_field_access):  Just get DECL_INITIAL
7963         - it's already been completed.
7964         (patch_initialized_static_field):  New function.
7965         (java_complete_field):  Call it.
7966
7967 Sat Dec 12 19:21:11 1998  Per Bothner  <bothner@cygnus.com>
7968
7969         * expr.c (encode_newarray_type, build_new_array):  New functions.
7970         * java-tree.h:  Declare build_new_array.
7971         * jcf-write.c (patch_newarray):  Use build_new_array.
7972
7973         * expr.c (java_lang_expand_exp):  Support NEW_ARRAY_INIT.
7974         * jcf-write.c (generate_bytecode_insns):  Support NEW_ARRAY_INIT.
7975
7976         * parse.y (patch_new_array_init):  Re-organize.
7977         Now is passed the actual array (pointer) type of the value.
7978         Set the type of the CONSTRUCTOR to be an ARRAY_TYPE.
7979         (patch_array_constructor):  Removed - merged into patch_new_array_init.
7980         (java_complete_tree):  Update patch_new_array_init.
7981
7982         * jcf-write.c (find_constant_index):  New function.
7983         (generate_bytecode_insns):  Use find_constant_index.
7984         (generate_classfile):  Use find_constant_index for ConstantValue.
7985
7986 1998-12-11  Tom Tromey  <tromey@cygnus.com>
7987
7988         * expr.c (invoke_build_dtable): Renamed dtable -> vtable.
7989         * decl.c (init_decl_processing): Renamed dtable -> vtable.
7990         * class.c (make_class_data): Renamed dtable -> vtable, and
7991         dtable_method_count -> vtable_method_count.
7992
7993 Thu Dec 10 20:00:54 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
7994
7995         * decl.c (long_zero_node, float_zero_node, double_zero_node): New
7996         global variables, initialized.
7997         * java-tree.h (long_zero_node, float_zero_node, double_zero_node):
7998         Declared new global variables.
7999         * lex.c (java_lex): Return long_zero_node, float_zero_node,
8000         double_zero_node, integer_zero_node upon direct matching.
8001         * parse.y (purify_type_name): Added function prototype.
8002         (duplicate_declaration_error_p): Consider new_type as potentially
8003         being a incomplete type. Use purify_type_name on type string.
8004         (method_header): saved_type: unused variable removed. Don't figure
8005         return type if method name is invalid.
8006         (java_complete_tree): Set CAN_COMPLETE_NORMALLY after `node' was
8007         processed by patch_unaryop.
8008         (patch_unaryop): Fixed typo in comment. Re-convert pre/post
8009         increment/decrement node into its original type after binary
8010         numeric promotion on its operands.
8011
8012 Thu Dec 10 11:02:49 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8013
8014         * parse.y (array_initializer:): Array init operand is NULL_TREE
8015         instead of a TREE_LIST of NULL_TREEs when parsing `{}'. `{,}' is
8016         now an error. Fixed indentation problems.
8017         (patch_string): Handle error_mark_node as an argument.
8018         (patch_new_array_init): Fixed indentation problems.
8019         (array_constructor_check_entry): Removed check on null wfl_value.
8020         Return an error if wfl_value's walk returns an error.
8021
8022 Wed Dec  9 15:37:05 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8023
8024         * java-tree.def (NEW_ARRAY_INIT): New Java tree code.
8025         * lex.c (java_lex): Remember column position before advancing one
8026         token. Retain location information on OCB_TK.
8027         * lex.h (typedef struct java_lc): Added new field.
8028         * parse.h (GET_SKIP_TYPE): New macro.
8029         (QUAL_DECL_TYPE): Redefined using GET_SKIP_TYPE.
8030         * parse.y (build_new_array_init, patch_new_array_init,
8031         patch_array_constructor, maybe_build_array_element_wfl,
8032         array_constructor_check_entry): New function prototypes.
8033         (switch_block:): Tagged <node>.
8034         (OCB_TK): Tagged <operator>.
8035         (array_initializer:): Installed actions.
8036         (variable_initializer): Build location information on element if
8037         necessary.
8038         (switch_statement:): Fixed indentation typo.
8039         (switch_block:): Redefined default action.
8040         (java_complete_tree): Handle NEW_ARRAY_INIT in MODIFY_EXPR:.
8041         (patch_assignment): Removed duplicate code.
8042         (maybe_build_array_element_wfl, build_new_array_init,
8043         patch_new_array_init, patch_array_constructor,
8044         array_constructor_check_entry): New functions.
8045
8046 Mon Dec  7 15:13:52 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8047
8048         * parse.y (array_initializer): Tagged <node>.
8049         (variable_initializer:): Use default rule.
8050         (array_initializer:): Defined actions.
8051         (variable_initializers:): Likewise.
8052         (resolve_qualified_expression_name): Use DECL_CONTEXT to build
8053         non-static field accesses.
8054         (patch_invoke): Fixed indentation typo.
8055         (java_complete_tree): Likewise.
8056         (build_labeled_block): Changed leading comment. Generate an error
8057         in case of duplicate loop labels.
8058         (patch_conditional_expr): Patch results of string concatenation
8059         operations.
8060
8061 Sun Dec  6 13:45:00 1998  Per Bothner  <bothner@cygnus.com>
8062
8063         * constants.c (find_methodref_index):  When the class is an interface,
8064         generate CONSTANT_InterfaceMethodref instead of a CONSTANT_MethodRef.
8065
8066         * decl.c (finit_identifier_node):  Use "$finit$", rather than
8067         "<finit>" (which Sun's verifier rejects).
8068         * parse.y (maybe_generate_finit):  Leave out meaningless final flag.
8069         (generate_field_initialization_code):  Removed.
8070         (fix_constructors)  Don't add call to $finit$ here (wrong order).
8071         (patch_method_invocation):  Add $finit$ call here.
8072
8073         * java-tree.h (CALL_USING_SUPER):  New macro.
8074         * parse.y (patch_invoke):  Remove im local variable.
8075         (patch_method_invocation, patch_invoke):  Don't pass super parameter.
8076         (patch_invoke):  Use CALL_USING_SUPER instead of from_super parameter.
8077         (resolve_qualified_expression_name):  Maybe set CALL_USING_SUPER.
8078
8079         * jcf-write.c (get_access_flags):  Fix typo ACC_PUBLIC -> ACC_FINAL.
8080
8081         * parse.y (java_complete_tree):  Don't complain about unreachable
8082         statement if it is empty_stmt_node.
8083
8084         * jcf-write.c (find_constant_wide):  New function.
8085         (push_long_const):  Use find_constant_wide.
8086
8087         * jcf-write.c (generate_bytecode_insn):  Fix bug in switch handling.
8088         (generate_bytecode_insn):  Use correct dup variant for MODIFY_EXPR.
8089         Add "redundant" NOTE_PUSH/NOTE_POP uses so code_SP_max gets set.
8090         Emit invokeinterface when calling an interface method.
8091         Emit invokespecial also when calling super or private methods.
8092
8093         * jcf-write.c (generate_classfile):  Emit ConstantValue attributes.
8094
8095 Sun Dec  6 13:21:18 1998  Per Bothner  <bothner@cygnus.com>
8096
8097         * jcf-dump.c (INVOKE):  If invokeinterface, print number of args.
8098
8099 Thu Dec  3 17:11:12 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8100
8101         * java-tree.h (java_layout_seen_class_methods): New function
8102         prototype.
8103         (LAYOUT_SEEN_CLASS_METHODS): Macro removed.
8104         * jcf-parse.c (parse_class_file): Call java_layout_seen_class_methods.
8105         * parse.h (PROMOTE_RECORD_IF_COMPLETE): New macro.
8106         * parse.y (method_declarator:): Defined action.
8107         (issue_warning_error_from_context): input_filename saved, set to
8108         the appropriate value and restored after java_error is called.
8109         (build_unresolved_array_type): Fixed comment.
8110         (register_fields): Use PROMOTE_RECORD_IF_COMPLETE.
8111         (method_header): Deal with return type the same way type are
8112         handled for fields and method's parameters and local variables
8113         types are handled.
8114         (check_method_redefinition): Removed extra CR.
8115         (declare_local_variables): Use PROMOTE_RECORD_IF_COMPLETE.
8116         (java_layout_seen_class_methods): New function.
8117         (java_layout_classes): Call java_layout_seen_class_methods.
8118
8119 Thu Dec  3 15:56:50 1998  Per Bothner  <bothner@cygnus.com>
8120
8121         * parse,y (patch_synchronized_statement):  Set CAN_COMPLETE_NORMALLY.
8122
8123 Thu Dec  3 15:08:30 1998  Per Bothner  <bothner@cygnus.com>
8124
8125         * jcf-dump.c (main):  Fix error message.
8126         * jcf-path.c (add_entry):  Style fix.
8127
8128 Wed Dec  2 15:52:25 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8129
8130         * class.c (layout_class_method): Call build_java_argument_signature
8131         on constructors too.
8132         * parse.y (check_method_redefinition): Use TYPE_ARGUMENT_SIGNATURE.
8133         (patch_method_invocation): Define a primary when resolving an
8134         expression name. Augmented comment on code checking illegal `this'
8135         usage. Loosened it test by accepting NEW_CLASS_EXPR.
8136
8137 Tue Dec  1 13:53:24 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8138
8139         * class.c (layout_class_method): Don't report error on non-static
8140         overriding static if the method is private.
8141         * java-tree.h (finish_class): Prototype added.
8142         * lex.c (java_get_line_col): Handle col argument -2 value.
8143         * parse.h: All static method declarations moved to parse.y.
8144         * parse.y: Now contains all static method declarations previously
8145         found in parse.h.
8146         (find_expr_with_wfl, missing_return_error,
8147         unreachable_stmt_error): New functions.
8148         (java_get_real_method_name): Identify constructors bearing class
8149         names in source code compiled classes only.
8150         (java_complete_expand_methods): Call missing_return_error.
8151         (invocation_mode): Private methods invoked as static methods.
8152         (java_complete_tree): Call unreachable_stmt_error.
8153
8154 1998-12-01  Tom Tromey  <tromey@cygnus.com>
8155
8156         * Makefile.in (+target): Removed.
8157         (+xmake_file): Likewise.
8158         (+tmake_file): Likewise.
8159         (.NOEXPORT): Removed duplicate.
8160
8161 Fri Nov 27 13:20:51 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8162
8163         * Makefile.in (jc1, jv-scan): Link with $(SUBDIR_OBSTACK).
8164
8165         * jv-scan.c: Fix xmalloc prototype.  Provide an xmalloc definition.
8166
8167         * jvgenmain.c: Remove the xmalloc prototype, we get it from
8168         libiberty.h.  Provide an xmalloc definition.
8169
8170         * jvspec.c: Remove the xmalloc prototype.
8171
8172         * parse-scan.y: Include config.h and system.h.  Don't include
8173         OS headers or gansidecl.h.  Don't prototype xmalloc/xstrdup.
8174         Provide an xstrdup definition.
8175
8176 Thu Nov 26 22:03:58 1998  Alexandre Oliva  <oliva@dcc.unicamp.br>
8177
8178         * jcf-path.c (add_entry): Recognize ".jar" too.
8179         * lang-specs.h: Likewise.
8180
8181 Thu Nov 26 12:44:07 1998  Per Bothner  <bothner@cygnus.com>
8182
8183         * jcf-write.c (generate_bytecode_insns):  In Call_EXPR, handle
8184         soft_monitorenter_node, soft_monitorexit_node, throw_node.
8185
8186         * jcf-write.c (generate_bytecode_insns):
8187         Handle pre/post-increment/decrement of long.
8188
8189         * jcf-write.c (generate_bytecode_insns):
8190         Handle missing exception handler (finally for synchronized).
8191
8192 Wed Nov 25 09:47:15 1998  Per Bothner  <bothner@cygnus.com>
8193
8194         * java-tree.h (end_params_node):  Declare global.
8195         * decl.c (end_params_node):  New global.
8196         (init_decl_processing, start_java_method):  Use end_params_node for
8197         end of list of parameter types.  Follows correct gcc conventions.
8198         * expr.c (pop_argument_types, pop_arguments):  Likewise.
8199         * lang.c (put_decl_node):  Likewise.
8200         * typeck.c (various places):  Likewise.
8201         * class.y (various places):  Likewise.
8202         * parse.y (various places):  Likewise.
8203
8204         * parse.y (java_complete_tree):  Move CAN_COMPLETE_NORMALLY.
8205         (build_jump_to_finally):  Add missing CAN_COMPLETE_NORMALLY.
8206
8207         * class.c:  Add #include flags.h, remove no-longer needed declaration.
8208
8209         * class.c (layout_class_method):  Remove commented-out code, re-format.
8210         Don't add vtable entry (or index) for private methods.
8211         * expr.c (expand_invoke):  A private method is implicitly final.
8212         * class.c (make_class_data):  If inlining or optimizing,
8213         skip private methods.
8214
8215         * class.c (finish_class):  New function.  Calls existing methods,
8216         but alls emits deferred inline functions.
8217         * jcf-parse.c (parse_class_file):  Call finish_class.
8218         * parse.y (java_complete_expand_methods):  Likewise.
8219
8220         * expr.c (build_java_binop):  Explicit default, to silence -Wall.
8221
8222         * expr.c (CHECK_PC_IN_RANGE):  Add void cast to kill warnings.
8223
8224 Wed Nov 25 00:50:58 1998  Marc Espie <espie@quatramaran.ens.fr>
8225
8226         * jcf-write.c (generate_bytecode_conditional): Fix typo.
8227
8228 Tue Nov 24 17:06:38 1998  Per Bothner  <bothner@cygnus.com>
8229
8230         * (generate_classfile): Always write class access flag with
8231         ACC_SUPER set.
8232
8233 Tue Nov 24 16:34:33 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8234
8235         * class.c (maybe_layout_super_class): New function.
8236         (layout_class): Reorganized. Loop on class methods dispatched into
8237         a new function. Call maybe_layout_super_class.
8238         (layout_class_methods, layout_class_method): New functions.
8239         * expr.c (expand_java_NEW): Call layout_class_methods on loaded
8240         class.
8241         (expand_invoke): Likewise.
8242         * java-tree.h (all_class_list): New global variable declared.
8243         (layout_class_methods, layout_class_method): New function
8244         prototypes.
8245         (LAYOUT_SEEN_CLASS_METHODS): New macro.
8246         * jcf-parse.c (all_class_list): New global variable.
8247         (load_class): Extended what class_or_name can be. Use parser
8248         context mechanism to save globals before calling jcf_parse.
8249         (jcf_parse_source): Don't parse twice if HAS_BEEN_ALREADY_PARSED_P
8250         is set on the file name.
8251         (jcf_parse): Layout class methods when Object is loaded, otherwise
8252         record class in all_class_list for delayed method layout.
8253         (parse_class_file): Use LAYOUT_SEEN_CLASS_METHODS.
8254         * lang.c (put_decl_node): Decode <init> into the decl context
8255         class name.
8256         * lex.c (java_allocate_new_line): Use xmalloc.
8257         * parse.h (INCOMPLETE_TYPE_P): Redefined to work with incomplete
8258         pointers, not TREE_LIST elements.
8259         (struct parser_ctxt): Fixed comment indentations, added comments
8260         and reordered some fields.
8261         (java_check_methods): Function prototype removed.
8262         * parse.y (java_push_parser_context): Use xmalloc.
8263         (java_parser_context_restore_global): Pop extra pushed ctxp only
8264         when there's nothing next.
8265         (maybe_create_class_interface_decl): Fixed comment, add new
8266         created class decl to all_class_list.
8267         (method_header): Use GET_REAL_TYPE on argument's types.
8268         (method_declarator): Use GET_REAL_TYPE, change type to the real
8269         type in TREE_LIST dependency node. Build argument list with the
8270         real type.
8271         (create_jdep_list): Use xmalloc. Removed allocation error message.
8272         (obtain_incomplete_type): Fixed leading comment. Broadened
8273         incoming argument meaning.
8274         (register_incomplete_type): Use xmalloc. Removed allocation error
8275         message.
8276         (safe_layout_class): Fixed leading comment.
8277         (jdep_resolve_class): Reversed if statement condition and switch
8278         if and else bodies.
8279         (resolve_and_layout): Fixed leading comment. Broadened incoming
8280         argument meaning.
8281         (complete_class_report_errors): New local variable name, for
8282         clarity. purify_type_name used for all error cases.
8283         (java_get_real_method_name): Stricter check on constructors.
8284         (java_check_regular_methods): Reverse methods list only if not
8285         already laid out. Layout artificial constructor.
8286         (java_check_methods): Deleted.
8287         (source_start_java_method): Obtain incomplete type for patchable
8288         method arguments.
8289         (java_layout_classes): Fixed leading comment. Use
8290         LAYOUT_SEEN_CLASS_METHODS, use a loop to check methods. Added else
8291         statement to layout operation, reuse LAYOUT_SEEN_CLASS_METHODS
8292         before returning. Fixed comments.
8293         (java_expand_classes): Check for errors up front.
8294         (patch_method_invocation): Class to search is resolved and laid
8295         out.
8296
8297 Tue Nov 24 12:57:13 1998  Per Bothner  <bothner@cygnus.com>
8298
8299         * expr.c (java_lang_expand_expr):  Add missing emit_queue.
8300
8301         * javaop.h (int8):  Removed - not used.
8302         (jbyte):  Redefine portably with correct signedness.
8303
8304         * jcf-write.c (generate_bytecode_insns):  Don't free sw_state.cases.
8305
8306         * jcf-write.c (generate_bytecode_insns):  Fix typo
8307         OPCODE_getstatic to OPCODE_getfield.
8308
8309         * java-tree.def (CASE_EXPR, DEFAULT_EXPR):  Kind is 'x', not '1'.
8310         * parse.y (java_complete_tree):  For CASE_EXPR and DEFAULT_EXPR,
8311         set TREE_SIDE_EFFECTS (otherwise expand_expr may skip them).
8312
8313 Thu Nov 19 11:16:55 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8314
8315         * jcf-parse.c (jcf_parse_source): Function returned type is
8316         void. Added prototype.
8317         (jcf_parse): Function returned type is void.
8318         (yyparse): Remove call to fclose on the last parsed file.
8319
8320         * java-tree.h (jcf_parse): Changed jcf_parse prototype.
8321
8322 Wed Nov 18 23:54:53 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8323
8324         * class.c (unmangle_classname): Set QUALIFIED_P when appropriate.
8325         (layout_class): Cope with methods featuring WFL in decl names.
8326         * decl.c (unqualified_object_id_node): New global variable,
8327         initialized.
8328         (build_decl_no_layout): Removed.
8329         * expr.c (build_primtype_type_ref): Handle Double.
8330         (java_lang_expand_expr): Fixed indentations.
8331         * java-tree.h (CLASS_METHOD_CHECKED_P): Flag deleted.
8332         (flag_wall, flag_redundant, flag_not_overriding,
8333         flag_static_local_jdk1_1, unqualified_object_id_node): Global
8334         variable declarations.
8335         (build_decl_no_layout): Removed prototype.
8336         (java_get_real_method_name): Added prototype.
8337         (IS_UNCHECKED_EXPRESSION_P): Renamed IS_UNCHECKED_EXCEPTION_P.
8338         (java_parse_abort_on_error): Macro now just returns.
8339         * jcf-parse.c (jcf_parse_source): Check fclose returned
8340         value. Call emit_register_classes if java_report_errors returns
8341         zero.
8342         * lanc.c (flag_wall, flag_redundant, flag_not_overriding,
8343         flag_static_local_jdk1_1): New integer flags.
8344         (lang_decode_option): New flags set here.
8345         * parse.h (GET_REAL_TYPE, GET_METHOD_NAME): New macros.
8346         (OBSOLETE_MODIFIER_WARNING): Issue error message conditionally to
8347         the flag_redundant variable.
8348         (SET_TYPE_FOR_RESOLUTION): Consider Object being java.lang.Object
8349         when parsing java.lang.Object class.
8350         (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT): Added terminal
8351         NULL_TREE to build.
8352         (resolve_qualified_expression_name): Fixed indentation.
8353         (patch_array_ref): Changed prototype.
8354         (not_initialized_as_it_should_p): Prototype removed.
8355         (java_report_errors): Added function prototype.
8356         * parse.y (formal_parameter:): Changed error message for not yet
8357         supported final parameters.
8358         (class_type_list:): Set both PURPOSE and VALUE of created
8359         TREE_LIST to be class_type.
8360         (primary_no_new_array:): Handle class literals on primitive types.
8361         (parse_warning_context): Reinstalled correct force_error and
8362         do_warning flags setups.
8363         (java_report_errors): Changed prototype. Return java_error_count
8364         value.
8365         (variable_redefinition_error): Consider treating variable type as
8366         a fake pointer.
8367         (create_interface): Warn about redundant abstract modifier if
8368         flag_redundant is set. Changed error message.
8369         (lookup_field_wrapper): Save/restore globals before/after looking
8370         up field.
8371         (duplicate_declaration_error_p): Consider treating declaration
8372         type as a fake pointer.
8373         (register_fields): Extract real type from dependency node. Check
8374         for duplicate field declaration after type adjustment. Use
8375         DECL_INITIAL to store static final initialized values.
8376         (method_header): Extract real function type from dependency node.
8377         (check_abstract_method_header): Use GET_METHOD_NAME.
8378         (obtain_incomplete_type): Layout fake pointer type.
8379         (safe_layout_class): Don't try to check for methods before layout.
8380         (java_complete_class): Don't check for correct throws clause
8381         elements inheritance here.
8382         (resolve_and_layout): Broadened name parameter meaning.
8383         (reset_method_name): Use GET_METHOD_NAME.
8384         (java_get_real_method_name): New function.
8385         (java_check_regular_methods): Don't check methods in
8386         java.lang.Object.  Verify lineage of throws clause elements. Use
8387         flag_no_overriding in warning report.
8388         (check_throws_clauses): Don't check if class was from
8389         bytecode. Use IS_UNCHECKED_EXCEPTION_P macro.
8390         (java_check_methods): Don't set CLASS_METHOD_CHECKED_P flag.
8391         (declare_local_variables): Use flag_static_local_jdk1_1 to report
8392         warning on unsupported final local variables. Use build_decl
8393         instead of build_decl_no_layout. Get real local variable type from
8394         dependency node.
8395         (source_start_java_method): Get real parameter type from
8396         dependency node. Call build_decl instead of build_decl_no_layout.
8397         (java_layout_classes): Reverse tree and layout type and class as
8398         required. Mark class as loaded when done.
8399         (resolve_field_access): Fixed indentation. Restricted condition
8400         leading to static field access code generation. Set field_type
8401         decl's TREE_TYPE if QUAL_DECL_TYPE not available.
8402         (resolve_qualified_expression_name): Initialize type_found to
8403         null. Handle static field resolved during qualification. Fixed
8404         layout on non primitive field decl types.
8405         (not_accessible_p): Fixed typo in comment.
8406         (patch_method_invocation): Resolve and layout class to search from
8407         type.
8408         (lookup_method_invoke): Keep integer constant 0 as is. Resolve and
8409         layout non primitive type, if necessary. Make method node only to
8410         report errors.
8411         (find_applicable_accessible_methods_list): Consider WFL'ed method
8412         decl names. Fixed indentation.
8413         (argument_types_convertible): Resolve and layout target type if
8414         necessary.
8415         (java_complete_tree): Fixed indentation problems. Rewrote
8416         CALL_EXPR thrown exceptions check. Re-installed further processing
8417         of the assignment in certain cases.
8418         (patch_assignment): Call maybe_build_primttype_type_ref to perform
8419         inlining on class literals.
8420         (valid_builtin_assignconv_identity_widening_p): Cope with constant
8421         0 literal.
8422         (valid_method_invocation_conversion_p): Likewise.
8423         (patch_string): Temporary disable forbidden use of `this' in
8424         explicit constructor invocations when doing string concatenation
8425         within their scope.
8426         (patch_unaryop): Added comment. Reinstalled code to disable
8427         further check on assignment operation with cast expression RHS.
8428         (patch_switch_statement): Fixed indentation.
8429         (build_try_statement): Call build_decl instead of
8430         build_decl_no_layout.
8431         (patch_synchronized_statement): Likewise.
8432         (patch_throw_statement): Use IS_UNCHECKED_EXCEPTION_P instead of
8433         IS_UNCHECKED_EXPRESSION_P.
8434         (check_thrown_exceptions_do): Changed leading comment. Resolve and
8435         layout argument exception type.
8436         (purge_unchecked_exceptions): Use IS_UNCHECKED_EXCEPTION_P instead
8437         of IS_UNCHECKED_EXPRESSION_P.
8438
8439 Wed Nov 18 14:21:48 1998  Anthony Green  <green@cygnus.com>
8440
8441         * jcf-parse.c (yyparse): Open class file in binary mode.
8442
8443 Sun Nov 15 17:14:17 1998  Per Bothner  <bothner@cygnus.com>
8444
8445         * jvgenmain.c:  Need to #include "gansidecl.h" (to get PROTO).
8446
8447         * jcf-write.c (perform_relocations):  Move check out one loop.
8448
8449 Sun Nov 15 15:09:56 1998  Anthony Green  <green@hoser.cygnus.com>
8450
8451         * Make-lang.in: Fix reference to srcdir.
8452         * jv-scan.c: Add missing xmalloc prototype.
8453         * jvgenmain.c: Ditto.
8454
8455 Sun Nov 15 14:36:29 1998  Per Bothner  <bothner@cygnus.com>
8456
8457         * decl.c (error_mark_node), java-tree.h:  New global.
8458         * parse.y:  Use empty_stmt_node instead of size_zero_node.
8459         (build_if_else_statement):  If missing else, use empty_stmt_node.
8460
8461         * parse.y (not_initialized_as_it_should_p):  Removed, with its callers.
8462         (java_complete_expand_method):  Complain if return is missing.
8463         (java_check_regular_methods):  Comment out incorrect error check.
8464         (not_accessible_p):  Fix incorrect handling of protected methods.
8465         (patch_method_invocation):  Pass correct context to not_accessible_p.
8466         (find_applicable_accessible_methods_list):  Likewise.
8467         (qualify_ambiguous_name):  If ARRAY_REF, it's an expression name.
8468         (java_complete_tree):  For CASE_EXPR and DEFAULT_EXPR, set
8469         TREE_TYPE (to void_type_node);  otherwise expand_expr crashes.
8470         (patch_if_else_statement):  Fix setting of CAN_COMPLETE_NORMALLY.
8471
8472         * jcf-write.c (CHECK_OP, CHECK_PUT):  Add some error checking.
8473         (push_int_const):  Remove reundant NOTE_PUSH.
8474         (generate_bytecode_insns - case STRING_CST):  Do NOTE_PUSH.
8475         (- case SWITCH_EXPR):  Fix code generation bug.
8476         (- case PREDECREMENT_EXPR etc):  Remove redundant NOTE_PUSH.
8477         (generate_classfile):  More robust for abstract methods.
8478
8479 Sun Nov 15 13:52:39 1998  Anthony Green  <green@cygnus.com>
8480
8481         * Makefile.in: jv-scan and jvgenmain all require libiberty.
8482         * Make-lang.in: Ditto.
8483
8484         * jv-scan.c: Remove xmalloc and xstrdup definitions.
8485         * jvgenmain: Ditto.
8486
8487 Sun Nov 15 14:10:56 1998  Per Bothner  <bothner@cygnus.com>
8488
8489         * jcf-parse.c (HANDLE_EXCEPTIONS_ATTRIBUTE):  New macro.
8490
8491         * jcf-io.c (find_class):  Simpler/cleaner structure fixes a bug.
8492
8493 Sat Nov 14 17:19:18 1998  Per Bothner  <bothner@cygnus.com>
8494
8495         Allow uses of interface types to verify.  This is not really
8496         type-safe, but it matches what Sun does, and is OK as long as
8497         there are appropriate run-time checks.
8498         * verify.c (merge_types):  If merging two interface types,
8499         just set the result to java.lang.Object.
8500         * expr.c (pop_type):  Any interface is matches by java.lang.Object.
8501
8502 1998-11-13  Tom Tromey  <tromey@cygnus.com>
8503
8504         * gjavah.c (main): Handle --output-class-directory argument.
8505         * jvspec.c (lang_specific_driver): Translate `-d' into
8506         -foutput-class-dir.
8507         * jcf.h (jcf_write_base_directory): Declare.
8508         * lang.c (lang_decode_option): Recognize -foutput-class-dir.
8509         * lang-options.h: Mention -foutput-class-dir.
8510         * jcf-write.c (jcf_write_base_directory): New global.
8511         (make_class_file_name): Put generated .class file into `-d'
8512         directory, or into source directory if -d not given.  Function now
8513         static.
8514         (write_classfile): Free class file name.  Handle case where class
8515         file name is NULL.
8516         (DIR_SEPARATOR): New macro.
8517         Include <sys/stat.h>
8518
8519         * Makefile.in (prefix): New macro.
8520
8521 Thu Nov 12 14:15:07 1998  Per Bothner  <bothner@cygnus.com>
8522
8523         * parse.y (patch_invoke):  Do less if flag_emit_class_files.
8524         * expr.c (build_known_method_ref):  Don't check flag_emit_class_files
8525         here (done in patch_invoke instead).
8526         (case_identity):  Moved here from parse.y.
8527
8528         * java-tree.h (CAN_COMPLETE_NORMALLY):  New macro.
8529         * parse.y (java_complete_tree etc):  Maybe set CAN_COMPLETE_NORMALLY.
8530         * parse.y (java_complete_tree):  Re-order COMPOUND_EXPR in BLOCK
8531         so they can be efficiently scanned without recursion.
8532         Error it ! CAN_COMPLETE_NORMALLY first part of COMPOUND_EXPR.
8533         * expr.c (java_lang_expand_expr):  Expand statements of COMPOUND_EXPR
8534         in BLOCK iteratively, rather than recursively.
8535
8536         * parse.y (do_unary_numeric_promotion):  New function.
8537         (patch_unaryop, patch_binop, patch_array_ref):  Use it.
8538
8539         * parse.y (patch_newarray):  Various fixes.
8540
8541         Re-do handling of switch statements (for proper block scoping).
8542         * parse.y:  Add just a single block for the enture switch block,
8543         but don't create any "case blocks".
8544         (group_of_labels):  Rmeoved unneeded non-terminal.
8545         CASE_EXPR and DEFAULT_EXPR are added to current block.
8546         * expr.c (java_lang_expand_expr):  Inline SWITCH_EXPR here.
8547         Now also need to handle CASE_EXPR and DEFAULT_EXPR.
8548         * java-tree.h (SWITCH_HAS_DEFAULT):  New macro.
8549         * parse.y (wfl_operator, print_int_node): Make non-static.
8550         (java_complete_tree):  CASE_EXPR and DEFAULT_EXPR are now processed
8551         as part of recursive scan of block.
8552         (java_expand_switch ):  Removed - inlined into java_lang_expand_expr.
8553         (patch_switch_statement):  Most tests move dinto java_complete_tree.
8554
8555         * parse.y:  Make various production be non-typed (void).
8556         * parse.y (parse_error):  Merged into issue_warning_error_from_context.
8557         * parse.y (add_stmt_to_compound):  Don't create/change extra node.
8558         (patch_method_invocation_stmt):  Renamed to patch_method_invocation.
8559
8560         * jcf-write.c (struct jcf_handler):  New type.
8561         (struct jcf_switch_state):  New type.
8562         (SWITCH_ALIGN_RELOC, BLOCK_START_RELOC):  New relocation kinds.
8563         (alloc_handler, emit_unop, emit_reloc):  New functions.
8564         (adjust_typed_op):  Add extra parameter ("max type" offset).
8565         (emit_switch_reloc, emit_case-reloc):  New function.
8566         (generate_bytecode_conditional):  Handle REAL_TYPE comparisons.
8567         (generate_bytecode_insns):  Support REAL_CST, switch statements,
8568         exception handling, method calls, object/array creation, and more.
8569
8570         * class.c:  Remove some unused variables.
8571         * constants.c (find_string_constant):  New function.
8572         (count_constant_pool_bytes):  Fix to correctly handle wide constants.
8573         * decl.c (complete_start_java_method):  Don't _Jv_InitClass
8574         if flag_emit_class_files.
8575
8576 1998-11-12  Tom Tromey  <tromey@cygnus.com>
8577
8578         * jcf-io.c (find_class): Added explanatory comment.
8579
8580         * jcf-path.c (add_entry): Look for `.zip' at end of filename.  Add
8581         trailing slash to `.zip' entries.
8582
8583         * jvspec.c (lang_specific_driver): Correctly handle case where
8584         GC_NAME not defined.
8585
8586 1998-11-11  Tom Tromey  <tromey@cygnus.com>
8587
8588         * jvspec.c (GC_NAME): New define.
8589         (lang_specific_driver): Use GC_NAME.  Add GC_NAME to command line
8590         if required.
8591         * Make-lang.in (jvspec.o): Define WITH_GC_<name>.
8592
8593 Wed Nov 11 19:08:52 1998  Per Bothner  <bothner@cygnus.com>
8594
8595         * jcf-dump.c (TABLE_SWITCH):  Fix typos.
8596
8597 1998-11-11  Tom Tromey  <tromey@cygnus.com>
8598
8599         * jcf-dump.c (main): Correctly recognize `--'-style long options.
8600
8601 Tue Nov 10 12:34:03 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8602
8603         * class.c (is_compiled_class): Call safe_layout_class for class
8604         compiled from source.
8605         * conver.h (convert_to_integer, convert_to_real,
8606         convert_to_pointer): Added prototypes.
8607         * decl.c (init_decl_processing): Non longer push the decls of
8608         `methodtable', `constants', `Class', `Field', `dispatchTable'
8609         `jexception' and `Method'.
8610         * expr.c (build_invokeinterface): New function.
8611         (expand_invoke): static variable CLASS_IDENT now in
8612         build_invokeinterface. Use build_invokeinterface.
8613         (expand_java_field_op): Moved code to inline
8614         java.lang.PRIMTYPE.TYPE into a function.
8615         (build_primtype_type_ref): New function.
8616         * java-tree.def (INSTANCEOF_EXPR): New tree code.
8617         * java-tree.h (CLASS_METHOD_CHECKED_P, METHOD_DEPRECATED,
8618         FIELD_DEPRECATED, CLASS_DEPRECATED): New flag macros.
8619         (DECL_CONSTRUCTOR_P): Fixed typo in comment.
8620         (DECL_LOCAL_STATIC_VALUE): New macro.
8621         (build_invokeinterface, build_primtype_type_ref): New function
8622         prototypes.
8623         (java_parse_abort_on_error): Macro rewritten.
8624         * jcf-parse.c (current_method): Add comment to declaration.
8625         (parse_zip_file_entries, process_zip_dir, void parse_source_file):
8626         Function prototypes fixed.
8627         (jcf_parse_source): push/pop parser context. save/restore global.
8628         (parse_source_file): Fixed leading comment. Now take a
8629         IDENTIFIER_NODE as an argument. Doesn't check methods, layout
8630         classes and pop the parser context anymore.
8631         (yyparse): Push parser context, save globals, parse the source
8632         file, restore globals and pop the parser context when processing a
8633         source file.
8634         * jcf.h (VERBOSE_SKELETON): Replaces SOURCE_FRONTEND_DEBUG define.
8635         * lex.c (java_parse_doc_section): New function.
8636         (java_lex): Call java_parse_doc_section when appropriate. Build an
8637         operator around INSTANCEOF_TK.
8638         * lex.h (java_lineterminator, java_sprint_unicode,
8639         java_unicode_2_utf8, java_lex_error, java_store_unicode):
8640         Prototypes rewritten.
8641         (java_parse_escape_sequence, java_letter_or_digit_p,
8642         java_parse_doc_section, java_parse_end_comment, java_get_unicode,
8643         java_read_unicode, java_store_unicode, java_read_char,
8644         java_allocate_new_line, java_unget_unicode, java_sneak_unicode):
8645         Added function prototypes.
8646         * parse.h (VERBOSE_SKELETON): Replaces SOURCE_FRONTEND_DEBUG
8647         define.
8648         (JNULLP_TYPE_P, CHECK_METHODS, CHECK_DEPRECATED, REGISTER_IMPORT):
8649         New macros
8650         (struct parser_ctxt): New fields: deprecated,
8651         current_parsed_class_un, gclass_list.
8652         (fix_method_argument_names, issue_warning_error_from_context,
8653         resolve_package, lookup_package_type): New function prototypes.
8654         (resolve_expression_name): Fixed function prototype.
8655         (find_applicable_accessible_methods_list): Fixed indentation, added
8656         extra argument in prototype.
8657         (check_final_assignment, build_null_of_type, check_deprecation,
8658         check_method_redefinition, reset_method_name,
8659         java_check_regular_methods, java_check_abstract_methods,
8660         maybe_build_primttype_type_ref): New function prototype.
8661         * parse.y (conver.h): Include.
8662         (INSTANCEOF_TK): Tagged <operator>.
8663         (single_type_import_declaration): Use REGISTER_IMPORT macro.
8664         (relational_expression:): Build binop for instanceof.
8665         (java_push_parser_context): Remember ctxp->gclass_list across
8666         contexts.
8667         (java_pop_parser_context): Simply return if no context
8668         exists. Remember gclass_list across contexts.
8669         (issue_warning_error_from_context): New function.
8670         (parse_error_context): Don't setup ctxp->elc here. Call
8671         issue_warning_error_from_context instead.
8672         (parse_warning_context): Likewise.
8673         (maybe_create_class_interface_decl): Removed DECL_ARTIFICIAL
8674         setup. Link new class/interface to ctxp->gclass_list.
8675         (add_superinterfaces): Register interface as incomplete if not
8676         loaded.
8677         (create_class): Remember class unqualified name in
8678         ctxp->current_parsed_class_un. Check class deprecation.
8679         (register_fields): Check field deprecation. Remember static final
8680         field value in DECL_LOCAL_STATIC_VALUE. Changed comment in part
8681         processing INIT.
8682         (method_header): New local variable ORIG_ARG. Use unqualified
8683         current class name for check on constructor errors. Promote return
8684         type if of record type. Argument list fix moved in
8685         fix_method_argument_names, called here. Check method deprecation.
8686         (fix_method_argument_names): New function.
8687         (method_declarator): Promote record typed arguments.
8688         (safe_layout_class): Check class methods before layout.
8689         (java_complete_class): Compute field layout when patched.
8690         (do_resolve_class): Try to load class after having it renamed
8691         after the package name.
8692         (get_printable_method_name): Use DECL_CONTEXT.
8693         (reset_method_name): New function.
8694         (check_method_redefinition): Use reset_method_name.
8695         (java_check_regular_methods): New local variable
8696         SAVED_FOUND_WFL. Temporarily reinstall overriding/hiding method
8697         names for error report. Check for compile-time error when method
8698         found has default (package) access.
8699         (java_check_abstract_methods): Now takes an interface DECL node as
8700         an argument. Also reinstall real name on unchecked
8701         overriding/hiding methods for error report.
8702         (java_check_methods): Fixed leading comment. Get classes to verify
8703         from ctxp->gclass_list. Use CHECK_METHODS macro and set
8704         CLASS_METHOD_CHECKED_P on class verification.
8705         (lookup_java_method2): Get real method name if necessary.
8706         (find_in_imports): Don't check package class access here.
8707         (resolve_package, lookup_package_type): New functions.
8708         (java_layout_classes): Fixed leading comment. Take classes to be
8709         laid out from ctxp->gclass_list.
8710         (java_complete_expand_methods): Don't expand native and abstract
8711         methods.
8712         (java_expand_classes): New function.
8713         (resolve_expression_name): Use additional argument ORIG.  Retrieve
8714         values of static final field of primitive types.
8715         (resolve_field_access): Handles static final field of promotive
8716         type.
8717         (resolve_qualified_expression_name): Handle STRING_CST as
8718         primaries and package name resolution. Check deprecation on found
8719         decls. Set where_found and type_found on non static field resolved
8720         during qualification. Layout non primitive field decl types.
8721         (check_deprecation): New function.
8722         (maybe_access_field): Simplified.
8723         (patch_method_invocation_stmt): Local variable CLASS_TYPE
8724         removed. Reverse method's argument when primary is a type. Don't
8725         use CLASS_TYPE to report problems, use IDENTIFIER_WFL
8726         instead. Include abstract class in the list of class searchable
8727         for constructors. Use DECL_CONTEXT of found method for access
8728         checks. Check method deprecation.
8729         (patch_invoke): Pay extra care to NEW_CLASS_EXPR type call when
8730         converting arguments. Handle INVOKE_INTERFACE.
8731         (lookup_method_invoke): Search constructor using existing
8732         infrastructure (don't rely on lookup_java_constructor anymore).
8733         (find_applicable_accessible_methods_list): Extra argument flag
8734         LC. Now include constructor in the search.
8735         (qualify_ambiguous_name): Conditional expression are primaries.
8736         (not_initialized_as_it_should_p): static final are always
8737         initialized.
8738         (java_complete_tree): Pass extra NULL argument to
8739         resolve_expression_name. Stricter test to carry on patching
8740         assignments. New case for INSTANCEOF_EXPR.
8741         (complete_function_arguments): Inline PRIMTYPE.TYPE read access.
8742         (check_final_assignment, maybe_build_primttype_type_ref): New
8743         functions.
8744         (patch_assignment): Detect resolved static finals and carry normal
8745         assignment error check on them. Inline PRIMTYPE.TYPE read access.
8746         (try_builtin_assignconv): Access constant 0 on all primitive
8747         types.
8748         (valid_builtin_assignconv_identity_widening_p): Accept identical
8749         types. Accept all promoted type on int type.
8750         (valid_ref_assignconv_cast_p): Accept a null pointer to be
8751         assigned to a reference.
8752         (valid_method_invocation_conversion_p): Accept to check null
8753         pointers.
8754         (build_binop): Merge declaration and initialization of local
8755         variable BINOP.
8756         (patch_binop): New case for INSTANCEOF_EXPR. NE_EXPR to accept all
8757         numeric types. Improved validity test for qualify operators on
8758         references.
8759         (patch_unaryop): Broadened rejection test for PREDECREMENT_EXPR
8760         and PREINCREMENT_EXPR. Also detect resolved static finals of a
8761         primitive type and issue the appropriate error message.
8762         (resolve_type_during_patch): Mark class loaded when resolved.
8763         (patch_cast): Allow null to be cased to reference types.
8764         (build_null_of_type): New function.
8765         (patch_array_ref): Handle array on references correctly.
8766         (patch_return): Removed unused local variable MODIFY. Force
8767         boolean to be returned as integers. Allows null to be returned by
8768         a function returning a reference.
8769         * typeck.c (convert_to_integer, convert_to_real,
8770         convert_to_pointer): Prototypes moved to convert.h
8771         (lookup_argument_method): Use method real name, if necessary.
8772
8773 1998-10-30  Tom Tromey  <tromey@cygnus.com>
8774
8775         * class.c (build_class_ref): Changed name of primitive classes to
8776         start with `_Jv_'.
8777
8778         * class.c (make_class_data): Renamed fields: nmethods to
8779         method_count, method_count to dtable_method_count.  Always set
8780         `state' field to 0.
8781         * decl.c (init_decl_processing): Likewise.
8782
8783 Wed Oct 28 08:03:31 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
8784
8785         * class.c (layout_class): Don't mangle <finit>, produce
8786         __finit<class> instead. Don't verify artificial methods.
8787         * decl.c (finit_identifier_node): New declared global.
8788         (init_decl_processing): finit_identifier_node initialized.
8789         * java-tree.def (CONDITIONAL_EXPR): New Java tree code.
8790         * java-tree.h (finit_identifier_node): Declared as extern.
8791         (struct lang_decl): New field called_constructor.
8792         (DECL_CONSTRUCTOR_CALLS): Access macro to called_constructor.
8793         (CLASS_HAS_FINIT_P): New macro.
8794         (CALL_CONSTRUCTOR_P): Leading comment changed. Macro now checks
8795         explicit constructor invocation.
8796         (CALL_EXPLICIT_CONSTRUCTOR_P, CALL_THIS_CONSTRUCTOR_P,
8797         CALL_SUPER_CONSTRUCTOR_P): New macros.
8798         (write_classfile): Added prototype.
8799         * jcf-parse.c (jcf_parse_source): Parse and remember for
8800         generation if the file was seen on the command line.
8801         (parse_source_file): Don't write the class file here.
8802         (yyparse): Loop on files rewritten. Set current_jcf.
8803         (parse_zip_file_entries): Parse class file only if it was found.
8804         * lang.c (init_parse): Don't open command line provided filename
8805         here.
8806         (lang_parse): Don't set main_jcf anymore.
8807         * parse.h (ABSTRAC_CHECK): Capitalized arguments.
8808         (JCONSTRUCTOR_CHECK): New macro.
8809         (JBSC_TYPE_P): New macro.
8810         (IN_TRY_BLOCK_P, EXCEPTIONS_P): Fixed leading comment.
8811         (COMPLETE_CHECK_OP_2): New macro.
8812         (struct parse_ctxt): New field explicit_constructor_p.
8813         (check_class_interface_creation): Fixed prototype indentation.
8814         (patch_method_invocation_stmt): Prototype reflects added argument.
8815         (patch_invoke): Likewise.
8816         (complete_method_declaration, build_super_invocation,
8817         verify_constructor_circularity,
8818         build_this_super_qualified_invocation, get_printable_method_name,
8819         patch_conditional_expr, maybe_generate_finit, fix_constructors,
8820         verify_constructor_super, create_artificial_method,
8821         start_artificial_method_body, end_artificial_method_body,
8822         generate_field_initialization_code): New function prototypes.
8823         * parse.y: Fixed leading comment
8824         (constructor_header:, constructor_body:, block_end:): Rules tagged
8825         <node>.
8826         (type_declaration:): Call maybe_generate_finit.
8827         (method_declaration:): Action for method_body: placed in new
8828         function complete_method_declaration, called here.
8829         (constructor_declaration:): Defined actions. Removed leading
8830         FIXME.
8831         (constructor_header:): New rule with action.
8832         (constructor_body:): Rule rewritten using block_begin: and
8833         block_end:. Defined actions.
8834         (constructor_declarator:, explicit_constructor_invocation:):
8835         Defined actions.
8836         (block:): Use new rules block_begin: block_end:.
8837         (block_begin:, block_end:): New rules and actions.
8838         (block_statements:): Fixed error message for explicit
8839         constructors.
8840         (method_invocation:): Call build_this_super_qualified_invocation
8841         if primary is `this' or `super' was seen.
8842         (conditional_expression:): Action defined.
8843         (extra_ctxp_pushed_p): New static global flag.
8844         (java_parser_context_save_global): Create parser context if
8845         necessary. Use extra_ctxp_pushed_p to remember it.
8846         (java_parser_context_restore_global): Pop extra parser context if
8847         one exists.
8848         (build_array_from_name): Array on primitive types are marked
8849         loaded.
8850         (register_fields): Restore new name in field initializer
8851         expression if type was altered. Non static fields initialized upon
8852         declaration marked initialized.
8853         (maybe_generate_finit): New function.
8854         (maybe_generate_clinit): Use create_artificial_method,
8855         start_artificial_method_body, end_artificial_method_body. Generate
8856         debug info for enclosed initialization statements.
8857         (method_header): Fixed leading comment. Check constructor
8858         flags. Detect constructor declarations and set DECL_CONSTRUCTOR_P
8859         accordingly.
8860         (complete_method_declaration, constructor_circularity_msg,
8861         verify_constructor_circularity): New functions.
8862         (get_printable_method_name): New function.
8863         (check_method_redefinition): Don't rename <finit> methods. Fix
8864         declared constructor names. Error message for
8865         constructors modified.
8866         (java_check_regular_methods): Local variable seen_constructor
8867         renamed saw_constructor. Skip verification on constructors. Create
8868         default constructor with create_artificial_method.
8869         (java_check_methods): Removed unnecessary empty line.
8870         (create_artificial_method, start_artificial_method_body,
8871         end_artificial_method_body): New functions.
8872         (java_layout_classes): Changed leading comment. Reverse fields
8873         list if necessary. Always layout java.lang.Object if being
8874         defined.
8875         (java_complete_expand_methods): Verify constructor circularity.
8876         (java_complete_expand_method): Call fix_constructor on
8877         constructors.  Local variable no_ac_found removed. Restore
8878         bindings if method body expansion failed.
8879         (fix_constructors, verify_constructor_super,
8880         generate_field_initialization_code): New function.
8881         (java_expand_classes): Fixed leading comment. Write class file
8882         here.
8883         (resolve_expression_name): Check for illegal instance variable
8884         usage within the argument scope of an explicit constructor
8885         invocation.
8886         (resolve_qualified_expression_name): Pass extra from_super flag
8887         when invoking patch_method_invocation_stmt. New case for
8888         conditional expression when used as a primary. Check for error
8889         when acquiring super.
8890         (patch_method_invocation_stmt): Added extra argument super. New
8891         local variable is_static_flag. Set class_to_search according to
8892         the nature of the constructor invocation. Don't add `this'
8893         argument when expanding NEW_CLASS_EXPR. Check for illegal method
8894         invocation within the argument scope of explicit constructor
8895         invocation. Set is_static according to is_static_flag. Provide
8896         extra `super' argument to patch_invoke invocation.
8897         (patch_invoke): New argument from_super. Loop on arguments
8898         indentation fixed. Pass from_super to invocation_mode. New switch
8899         case INVOKE_SUPER. Fixed error message in switch default case.
8900         Don't use CALL_CONSTRUCTOR_P but rather a test on the tree node
8901         value.
8902         (invocation_mode): Return INVOKE_SUPER mode when appropriate.
8903         (lookup_method_invoke): Fixed prototypes in candidates list. Error
8904         message takes constructors into account.
8905         (find_applicable_accessible_methods_list): Fixed indentation.
8906         (qualify_ambiguous_name): Take explicit constructor invocation
8907         into account. Deal with a conditional expression as a primary to
8908         a method call.
8909         (java_complete_tree): Added local wfl_op3. New CONDITIONAL_EXPR
8910         case. Added extra argument to patch_method_invocation_stmt.
8911         Register calls made to explicit constructor `this'. Don't call
8912         save_expr in ARRAY_REF case when emitting class files. Check for
8913         illegal use of this when expanding explicit constructor invocation
8914         arguments.
8915         (complete_function_arguments): Set and reset parser context
8916         explicit_constructor_p field value when appropriate.
8917         (build_super_invocation, build_this_super_qualified_invocation):
8918         New functions.
8919         (patch_assignment): Fixed typo.
8920         (patch_unaryop): Check on final fields occurs only when a decl
8921         exits.
8922         (patch_return): Take constructors into account.
8923         (patch_conditional_expr): New function.
8924         * typeck.c (build_java_signature): Removed unnecessary empty line.
8925
8926 Wed Oct 28 00:46:15 1998  Jeffrey A Law  (law@cygnus.com)
8927
8928         * Makefile.in (jcf-dump, gcjh): Link in $(LIBS) too.
8929
8930 1998-10-28  Tom Tromey  <tromey@cygnus.com>
8931
8932         * decl.c (init_decl_processing): Renamed fields.
8933         * class.c (make_class_data): Renamed bfsize, nfields, nsfields,
8934         interface_len, msize fields.
8935
8936         * class.c (make_class_data): Removed subclass_head and
8937         subclass_next fields.
8938         * decl.c (init_decl_processing): Removed subclass_head and
8939         subclass_next fields.
8940
8941 Wed Oct 28 00:46:15 1998  Jeffrey A Law  (law@cygnus.com)
8942
8943         * jcf-write.c (emit_load_or_store): Avoid implicit int arguments.
8944         * mangle.c (emit_unicode_mangled_name): Similarly.
8945
8946 Mon Oct 26 12:17:23 1998  Nick Clifton  <nickc@cygnus.com>
8947
8948         * jcf-parse.c (get_constant): Place braces around code to compute
8949         'd' when REAL_ARITHMETIC is not defined.
8950
8951 Sun Oct 25 14:58:05 1998  H.J. Lu  (hjl@gnu.org)
8952
8953         * Make-lang.in (jv-scan$(exeext)): Add stamp-objlist to
8954         dependency.
8955
8956 1998-10-23  Tom Tromey  <tromey@cygnus.com>
8957
8958         * lang-specs.h: `.zip' files are input to jc1.
8959
8960 Thu Oct 22 23:01:54 1998  Per Bothner  <bothner@cygnus.com>
8961
8962         * jvspecs.c:  Add (but don't enable) support for combining multiple
8963         .class and .java input filenames to a single jc1 invocation.
8964         Add support for -C flag (copile to .class files).
8965         Translate -classpath and -CLASSPATH arguments.
8966         * lang-specs.h:  Don't set %2 spec.
8967
8968 1998-10-22  Tom Tromey  <tromey@cygnus.com>
8969
8970         * jcf-path.c (add_entry): Don't add trailing separator if entry is
8971         a .zip file.
8972         (add_path): Don't add trailing separator to non-empty path
8973         elements.
8974
8975         * lang.c (lang_decode_option): Check for -fclasspath and
8976         -fCLASSPATH before examining other `-f' options.
8977
8978         * java-tree.h (finalize_identifier_node): Don't declare.
8979         * class.c (make_class_data): Don't push "final" field.
8980         * decl.c (init_decl_processing): Don't push "final" field.
8981         (finalize_identifier_node): Removed.
8982         (init_decl_processing): Don't set finalize_identifier_node.
8983
8984         * config-lang.in (stagestuff): Added jcf-dump and jv-scan.
8985
8986 Sun Oct 11 10:31:52 1998  Anthony Green  <green@cygnus.com>
8987
8988         * Make-lang.in (java): Depend on jcf-dump and jv-scan.
8989         (JV_SCAN_SOURCES): New macro.
8990         (JCF_DUMP_SOURCES): Likewise.
8991         (jcf-dump$(exeext)): New target.
8992         (jv-scan$(exeext)): New target.
8993
8994 1998-10-22  Tom Tromey  <tromey@cygnus.com>
8995
8996         * Makefile.in (LEX): Removed.
8997         (LEXFLAGS): Likewise.
8998         (SET_BISON): New macro.
8999         (BISON): Removed.
9000         ($(PARSE_C)): Use SET_BISON.  Run bison from srcdir to avoid
9001         spurious diffs in parse.c.
9002         ($(PARSE_SCAN_C)): Likewise.
9003         (PARSE_DIR): New macro.
9004         (PARSE_C): Use it.
9005         (PARSE_SCAN_C): Likewise.
9006         (PARSE_RELDIR): New macro.
9007
9008         * jcf-io.c (saw_java_source): Define here, not in jcf-parse.c.
9009
9010         * jcf-io.c (find_class): Use saw_java_source to determine when to
9011         look for `.java' file.
9012         * jcf-parse.c (saw_java_source): New global.
9013         (yyparse): Set it if `.java' file seen.
9014
9015         * Make-lang.in (JAVA_SRCS): Added jcf-path.c.
9016         (GCJH_SOURCES): Likewise.
9017         * Makefile.in (datadir): New macro.
9018         (libjava_zip): Likewise.
9019         (JAVA_OBJS): Added jcf-path.o.
9020         (../jcf-dump$(exeext)): Depend on and link with jcf-depend.o.
9021         (../gcjh$(exeext)): Likewise.
9022         (jcf-path.o): New target.
9023         * java-tree.h (fix_classpath): Removed decl.
9024         * jcf-parse.c (fix_classpath): Removed.
9025         (load_class): Don't call fix_classpath.
9026         * parse.y (read_import_dir): Don't call fix_classpath.
9027         * lex.h: Don't mention classpath.
9028         * lex.c (java_init_lex): Don't initialize classpath.
9029         * jcf-io.c (classpath): Removed global.
9030         (find_class): Use jcf_path iteration functions.  Correctly search
9031         class path for .java file.
9032         (open_in_zip): New argument `is_system'.
9033         * jcf-dump.c (main): Call jcf_path_init.  Recognize all new
9034         classpath-related options.
9035         * lang.c (lang_decode_option): Handle -fclasspath, -fCLASSPATH,
9036         and -I.
9037         (lang_init): Call jcf_path_init.
9038         * lang-options.h: Mention -I, -fclasspath, and -fCLASSPATH.
9039         * lang-specs.h: Handle -I.  Minor cleanup to -M options.
9040         Correctly put braces around second string in each entry.
9041         * gjavah.c (main): Call jcf_path_init.  Recognize all the new
9042         classpath-related options.
9043         (help): Updated for new options.
9044         * jcf.h: Declare functions from jcf-path.c.  Don't mention
9045         `classpath' global.
9046         * jcf-path.c: New file.
9047
9048         * jcf-depend.c: Include jcf.h.
9049
9050         * jcf-write.c (localvar_alloc): Returns `void'.
9051         (localvar_free): Removed unused variable.
9052
9053         * lang.c (OBJECT_SUFFIX): Define if not already defined.
9054         (init_parse): Use OBJECT_SUFFIX, not ".o".
9055
9056 Wed Oct 21 07:54:11 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9057
9058         * class.c (emit_register_classes): Renamed from
9059         emit_register_class.
9060         * java-tree.h (emit_register_classes): Prototype renamed from
9061         emit_register_class.
9062         * jcf-parse.c (yyparse): Call emit_register_classes once before
9063         returning.
9064         * parse.y (java_expand_classes): No longer register classes.
9065
9066 Tue Oct 20 09:15:38 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9067
9068         * class.c (is_compiled_class): New local variable
9069         seen_in_zip. Identify classes found in currently compiled source
9070         file(s).
9071         * decl.c (complete_start_java_method): Fixed typo.
9072         * java-tree.h (CLASS_FROM_CURRENTLY_COMPILED_SOURCE_P,
9073         HAS_BEEN_ALREADY_PARSED_P, IS_A_COMMAND_LINE_FILENAME_P): New macros.
9074         (CLASS_P): Moved around.
9075         (java_parse_abort_on_error): Macro moved from jcf-parse.c
9076         * jcf-parse.c (java_parse_abort_on_error): Macro moved to
9077         java-parse.h
9078         (jcf_parse_source): Changed leading comment. Removed unnecessary
9079         fclose and CLASS_FROM_SOURCE_P marking.
9080         (parse_source_file): New local variables remember_for_generation
9081         and filename. Mark parsed file name identifier node. Removed block
9082         executed when parse_only was null. Set remember_for_generation.
9083         Use it as an argument to java_pop_parser_context.
9084         (yyparse): New local variables several_files, list, next node and
9085         current_file_list. Split ampersand separated file names into
9086         current_file_list. Iterate through the list and parse accordingly.
9087         * parse.h (java_pop_parser_context): New function prototype.
9088         * parse.y (ctxp_for_generation): New static global variable.
9089         (java_pop_parser_context): New argument generate. Link popped ctxp
9090         to ctxp_for_generation list accordingly.
9091         (java_complete_expand_methods): Fixed indentation.
9092         (java_expand_classes): New function.
9093
9094 Sat Oct 17 11:25:21 1998  Per Bothner  <bothner@cygnus.com>
9095
9096         * Makefile.in:  Link with libiberty.a instead of memmove.o.
9097
9098 Fri Oct 16 10:59:01 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9099
9100         * lex.c (setjmp.h): No longer included.
9101         * lex.h (setjmp.h): Included.
9102         * parse.h (SET_TYPE_FOR_RESOLUTION): New macro.
9103         (duplicate_declaration_error_p): Renamed from
9104         duplicate_declaration_error.
9105         (build_array_from_name): New function prototype.
9106         * parse.y (setjmp.h): No longer included.
9107         (variable_declarator_id): Define action.
9108         (build_array_from_name): New function.
9109         (duplicate_declaration_error_p): Renamed from
9110         duplicate_declaration_error.  Fixed leading comment.
9111         (register_fields): Main `for' loop reorganized. Uses
9112         SET_TYPE_FOR_RESOLUTION and build_array_from_name.
9113         (method_declarator): Uses SET_TYPE_FOR_RESOLUTION and call
9114         build_array_from_name.
9115         (resolve_class): Set CLASS_LOADED_P on newly build array dimension
9116         types.
9117         (read_import_dir): Don't try to skip `.' and `..'.
9118         (declare_local_variables): Uses SET_TYPE_FOR_RESOLUTION and
9119         build_array_from_name. Main `for' loop reorganized.
9120         (resolve_qualified_expression_name): When building access to a
9121         field, use the type where the field was found, not its own type.
9122         (maybe_access_field): Use field DECL_CONTEXT if the type where the
9123         field was found is null.
9124         (qualify_ambiguous_name): Sweep through all successive array
9125         dimensions.
9126
9127 Wed Oct 14 18:21:29 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9128
9129         * java-tree.h (pop_labeled_block, lang_printable_name,
9130         maybe_add_interface, set_super_info, get_access_flags_from_decl,
9131         interface_of_p, inherits_from_p, fix_classpath,
9132         complete_start_java_method, emit_handlers, init_outgoing_cpool,
9133         make_class_data, register_class, alloc_name_constant): New
9134         function prototypes.
9135         * lang.c (lang_decode_option): Set argc argument unused. Fixed
9136         indentation. Added cast to remove warning.
9137         (lang_printable_name): Set v argument unused.
9138         (lang_print_error): Added argument to lang_printable_name call.
9139         (java_dummy_print, print_lang_decl, print_lang_type,
9140         print_lang_identifier, lang_print_xnode): All argument marked
9141         unused.
9142         * lex.c (java_unget_unicode): Removed unnecessary argument.
9143         (java_allocate_new_line): Unused local variable is gone.
9144         (java_read_char): Added parenthesis in expressions to remove
9145         warnings.  Added final return statement.
9146         (java_read_unicode): Added parenthesis in expression to remove
9147         warning.
9148         (java_parse_end_comment): Fixed java_unget_unicode invocation.
9149         (java_parse_escape_sequence): Likewise.
9150         (java_lex): Unused local variables are gone. Fixed
9151         java_unget_unicode invocation.
9152         * lex.h (set_float_handler): Prototype added when JC1_LITE not
9153         defined.
9154         * parse.h (ERROR_CANT_CONVERT_TO_BOOLEAN): Fixed
9155         lang_printable_name invocation in macro.
9156         (ERROR_CANT_CONVERT_TO_NUMERIC, ERROR_CAST_NEEDED_TO_INTEGRAL):
9157         Likewise.
9158         (duplicate_declaration_error): Suppressed unused argument in
9159         prototype.
9160         (identical_subpath_p): Function declaration is gone.
9161         (patch_invoke): Suppressed unused argument in prototype.
9162         (patch_cast, build_labeled_block, check_thrown_exceptions):
9163         Likewise.
9164         * parse.y (setjmp.h): Included
9165         (toplev.h): Likewise.
9166         (field_declaration:): Suppressed unused local
9167         (label_decl:): Fixed build_labeled_block invocation.
9168         (java_pop_parser_context): Put extra parenthesis around assignment
9169         in if.
9170         (yyerror): Suppressed unused local variables.
9171         (variable_redefinition_error): Fixed lang_printable_name
9172         invocation.
9173         (create_interface): Suppressed unused local variables.
9174         (create_class): Likewise.
9175         (duplicate_declaration_error): Suppressed unused argument. Fixed
9176         lang_printable_name invocation.
9177         (register_fields): Suppressed unused local variable. Fixed
9178         duplicate_declaration_error invocation.
9179         (method_header): Suppressed unused local variable.
9180         (method_declarator, parser_check_super): Likewise.
9181         (java_complete_class): Suppressed unused local variable. Fixed
9182         fatal error message.
9183         (complete_class_report_errors): Added default: in switch.
9184         (java_check_regular_methods): Fixed lang_printable_name
9185         invocations.
9186         (check_throws_clauses): Likewise.
9187         (java_check_abstract_methods): Suppressed unused local
9188         variable. Fixed lang_printable_name invocation.
9189         (read_import_entry): Added supplemental return statement.
9190         (read_import_dir): Suppressed unused local variables.
9191         (check_pkg_class_access, declare_local_variables): Likewise.
9192         (source_start_java_method): Suppressed unused extern variable
9193         declarations
9194         (expand_start_java_method): Suppressed unused extern and local
9195         variable declarations.
9196         (java_complete_expand_methods): Likewise.
9197         (java_complete_expand_method): Suppressed unused local variables.
9198         (make_qualified_name): Likewise.
9199         (resolve_qualified_expression_name): Added default: in
9200         switch. Fixed lang_printable_name invocation.
9201         (class_instance_creation_expression): Added parenthesis around
9202         expressions.
9203         (patch_method_invocation_stmt): Fixed lang_printable_name and
9204         patch_invoke invocations.
9205         (check_for_static_method_reference): Fixed lang_printable_name
9206         invocation.
9207         (patch_invoke): Suppressed unused arguments and local variables.
9208         (lookup_method_invoke): Suppressed unused local variables.
9209         (qualify_ambiguous_name): Added default: in switch.
9210         (identical_subpath_p): Function removed.
9211         (patch_assignment): Suppressed unused local variables. Suppressed
9212         unnecessary if statement. Fixed lang_printable_name invocations.
9213         (try_builtin_assignconv): Fixed lang_printable_name invocations.
9214         (valid_ref_assignconv_cast_p): Parenthesis around
9215         expression. Suppressed unused local variables.
9216         (build_binop): Suppressed unused local variables. fixed
9217         lang_printable_name invocations.
9218         (string_constant_concatenation): Suppressed unused local
9219         variables.
9220         (patch_unaryop): Fixed lang_printable_name invocation.
9221         (patch_cast): Suppressed unnecessary argument. Fixed
9222         lang_printable_name invocation.
9223         (patch_array_ref): Fixed lang_printable_name invocation.
9224         (patch_newarray, patch_return, patch_if_else_statement): Likewise.
9225         (build_labeled_block): Suppressed unused argument.
9226         (generate_labeled_block): Fixed build_labeled_block invocation.
9227         (build_loop_body): Suppressed unused local variables.
9228         (patch_loop_statement): Likewise.
9229         (patch_exit): Fixed lang_printable_name invocation.
9230         (patch_switch_statement): Likewise.
9231         (case_identity): First argument marked unused.
9232         (patch_try_statement): Fixed lang_printable_name invocations.
9233         (patch_synchronized_statement, patch_throw_statement): Likewise.
9234         (check_thrown_exceptions): Fixed check_thrown_exceptions and
9235         lang_printable_name invocations.
9236         (check_thrown_exceptions_do): Suppressed unused argument.
9237
9238 1998-10-14  Tom Tromey  <tromey@cygnus.com>
9239
9240         * jcf-write.c (write_classfile): Add output class file as target.
9241         * lang-options.h: Added -MD, -MMD, -M, and -MM.
9242         * jcf.h: Added declarations for dependency-tracking functions.
9243         * lang-specs.h: Handle -M, -MM, MD, and -MMD.
9244         * lang.c (lang_decode_option): Recognize -MD and -MMD.
9245         (finish_parse): Call jcf_dependency_write.
9246         (dependency_tracking): New global.
9247         (DEPEND_SET_FILE): New define.
9248         (DEPEND_ENABLE): New define.
9249         (init_parse): Enable dependency tracking if required.
9250         Include "flags.h".
9251         * Makefile.in (JAVA_OBJS): Added jcf-depend.o.
9252         (../jcf-dump$(exeext)): Depend on and link with jcf-depend.o.
9253         (../gcjh$(exeext)): Likewise.
9254         (jcf-depend.o): New target.
9255         * Make-lang.in (JAVA_SRCS): Added jcf-depend.c.
9256         (GCJH_SOURCES): Likewise.
9257         * jcf-io.c (open_class): Call jcf_dependency_add_file.  Added
9258         dep_name argument.
9259         (find_classfile): Added dep_name argument.
9260         (find_class): Compute name of dependency.
9261         (open_in_zip): Call jcf_dependency_add_file.
9262         * gjavah.c (output_file): No longer global.
9263         (usage): Don't mention "gjavah".
9264         (help): Likewise.
9265         (java_no_argument): Likewise.
9266         (version): Likewise.
9267         (main): Recognize and handle -M family of options.
9268         (print_mangled_classname): Return is void.
9269         (process_file): Handle case where output is suppressed.
9270         (HANDLE_END_FIELD): Likewise.
9271         (HANDLE_METHOD): Likewise.
9272         * jcf-depend.c: New file.
9273
9274 Tue Oct 13 23:34:12 1998  Jeffrey A Law  (law@cygnus.com)
9275
9276         * java-tree.def: Add missing newline at EOF.
9277
9278 1998-10-13  Tom Tromey  <tromey@cygnus.com>
9279
9280         * jcf-dump.c (process_class): Use FATAL_EXIT_CODE, not -1.
9281         (main): Likewise.  Exit with SUCCESS_EXIT_CODE at end of
9282         function.
9283         Include <config.h> and "system.h".
9284         (disassemble_method): Undefine RET to avoid clash with
9285         config/i386/i386.h.
9286
9287 Tue Oct 13 03:50:28 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9288
9289         * decl.c (runtime_exception_type_node, error_exception_type_node):
9290         New global variables.
9291         (init_decl_processing): Initialized.
9292         * expr.c (java_lang_expand_expr): Set caught exception type to
9293         null if catch handler argument doesn't exit.
9294         * java-tree.def (SYNCHRONIZED_EXPR, THROW_EXPR): New Java specific
9295         tree codes.
9296         * java-tree.h (runtime_exception_type_node,
9297         error_exception_type_node): Global variables declared.
9298         (DECL_FUNCTION_THROWS): New macro.
9299         (DECL_FUNCTION_BODY): Modified comment.
9300         (DECL_SPECIFIC_COUNT): Likewise.
9301         (struct lang_decl): New field throws_list.
9302         (IS_UNCHECKED_EXPRESSION_P): New macro.
9303         * lex.c (java_lex): Generate location information for THROW_TK.
9304         * parse.h (PUSH_EXCEPTIONS, POP_EXCEPTIONS, IN_TRY_BLOCK_P,
9305         EXCEPTIONS_P): New macros.
9306         (enum jdep_code): New value JDEP_EXCEPTION.
9307         (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT,
9308         BUILD_ASSIGN_EXCEPTION_INFO, BUILD_THROW, SET_WFL_OPERATOR,
9309         PATCH_METHOD_RETURN_ERROR): New macros.
9310         (patch_method_invocation_stmt): Added new argument to prototype.
9311         (patch_synchronized_statement, patch_throw_statement,
9312         check_thrown_exceptions, check_thrown_exceptions_do,
9313         purge_unchecked_exceptions, check_throws_clauses): New function
9314         prototypes.
9315         * parse.y Fixed typo in keyword section.
9316         (throw:): Rule tagged <node>.
9317         (THROW_TK): Keyword tagged <operator>.
9318         (method_header:): Last argument to call to method_header passed
9319         from throws: rule.
9320         (throws:, class_type_list:, throw_statement:,
9321         synchronized_statement:, synchronized:): Defined actions.
9322         (method_header): New local variable current. Register exceptions
9323         from throws clause.
9324         (java_complete_tree): Complete and verify exceptions from throws
9325         clause.
9326         (complete_class_report_errors): Error message on exceptions not
9327         found
9328         (java_check_regular_methods): Fixed typo. Shortcut on private
9329         overriding methods. Changed error message on method
9330         redefinition. Check for throws clause compatibility.
9331         (check_throws_clauses): New function.
9332         (java_check_abstract_methods): Use DECL_NAME for wfl or current
9333         method. Changed error message on method redefinition.
9334         (currently_caught_type_list): New static variable.
9335         (java_complete_expand_methods): Purge unchecked exceptions from
9336         throws clause list. Call PUSH_EXCEPTIONS before walk and
9337         POP_EXCEPTIONS after.
9338         (resolve_qualified_expression_name): Pass new argument as NULL to
9339         patch_method_invocation_stmt.
9340         (patch_method_invocation_stmt): New argument ref_decl. Invoke
9341         PATCH_METHOD_RETURN_ERROR when returning with error. Reverse
9342         argument list when appropriate. Use new argument if non null to
9343         store selected method decl.
9344         (patch_invoke): Convert if necessary args of builtin types before
9345         forming CALL_EXPR. Argument list no longer reversed here.
9346         (invocation_mode): Treat final methods as static methods.
9347         (java_complete_tree): New cases for THROW_EXPR: and
9348         SYNCHRONIZED_EXPR:. Check thrown exceptions when completing
9349         function call.
9350         (complete_function_arguments): No more RECORD_TYPE
9351         conversion. Function parameter nodes no longer saved.
9352         (valid_ref_assignconv_cast_p): Avoid handling null type.
9353         (patch_binop): Fixed null constant reference handling.
9354         (build_try_statement): Use BUILD_ASSIGN_EXCEPTION_INFO and
9355         BUILD_THROW macros.
9356         (patch_try_statement): Fixed comments. Record caught types in
9357         list, push the list, expand try block and pop the list.
9358         (patch_synchronized_statement, patch_throw_statement,
9359         check_thrown_exceptions, check_thrown_exceptions_do,
9360         purge_unchecked_exceptions): New functions.
9361         * typeck.c (lookup_argument_method): Allow WFL in place of method
9362         DECL_NAME during method definition check
9363
9364 1998-10-09  Tom Tromey  <tromey@cygnus.com>
9365
9366         * gjavah.c (decode_signature_piece): New function.
9367         (print_c_decl): Use it.  Added `name_override' argument.
9368         (print_method_info): Use name_override argument to print_c_decl.
9369         (seen_fields): Removed.
9370         (print_field_info): Don't update seen_fields.
9371         (struct method_name): New structure.
9372         (method_name_list): New global.
9373         (print_method_info): Add new method to list of methods.
9374         (name_is_method_p): New function.
9375         (print_field_info): If field name has same name as method, then
9376         change field name.
9377         (process_file): Parse methods before fields.
9378         (field_pass): New global.
9379         (HANDLE_END_FIELD): Take field_pass into account.
9380
9381 Wed Oct  7 12:10:48 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9382
9383         * Makefile.in (keyword.h): Add -L KR-C -F ', 0' flags to gperf.
9384         (keyword.h): Regenerate using gperf 2.7.1 (19981006 egcs).
9385
9386 Sat Oct  3 13:29:46 1998  Anthony Green  <green@cygnus.com>
9387
9388         * jvspec.c: Fix bug in jvgenmain_spec patch.
9389
9390 Fri Oct  2 17:22:52 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9391
9392         * Makefile.in (lang.o:): Install dependency on java-tree.def.
9393         * decl.c (soft_exceptioninfo_call_node): New global variable.
9394         (init_decl_processing): Fixed indentation. soft_badarrayindex_node
9395         takes extra integer argument. soft_exceptioninfo_call_node
9396         initialized.
9397         * except.c (java_set_exception_lang_code): New function
9398         (method_init_exceptions): Called here.
9399         (prepare_eh_table_type): New function.
9400         (expand_end_java_handler): Called here.
9401         * expr.c (build_java_throw_out_of_bounds_exception): Now features
9402         one argument. Modified generation of call to
9403         soft_badarrayindex_node to use new argument.
9404         (build_java_arrayaccess): Pass faulty index value to
9405         build_java_throw_out_of_bounds_exception.
9406         (generate_name): New function.
9407         (java_lang_expand_expr): New local variables node, current,
9408         has_finally_p. Expand TRY_EXPR node.
9409         (process_jvm_instruction): Replace top of the stack with thrown
9410         object reference when entering exception handler.
9411         * java-tree.def (TRY_EXPR, CATCH_EXPR, FINALLY_EXPR): New Java
9412         specific tree codes.
9413         * java-tree.h (soft_exceptioninfo_call_node): Declaration of new
9414         global.
9415         (DECL_SPECIFIC_COUNT): New macro.
9416         (prepare_eh_table_type, java_set_exception_lang_code,
9417         generate_name): New function declarations.
9418         (match_java_method): Declaration deleted.
9419         (FINALLY_EXPR_LABEL, FINALLY_EXPR_BLOCK, CATCH_EXPR_GET_EXPR): New
9420         macros.
9421         * lex.c (TRY_TK, CATCH_TK): Generate location information.
9422         * parse.h (redefinition_error, refine_accessible_methods_list,
9423         can_cast_to_p): Function declaration removed.
9424         (classitf_redefinition_error, variable_redefinition_error,
9425         parse_jdk1_1_error, find_applicable_accessible_methods_list,
9426         find_most_specific_methods_list, argument_types_convertible,
9427         enter_a_block, valid_builtin_assignconv_identity_widening_p,
9428         valid_cast_to_p, valid_method_invocation_conversion_p,
9429         try_reference_assignconv, add_stmt_to_compound,
9430         build_jump_to_finally, build_tree_list, patch_try_statement,
9431         java_get_catch_block): New function declarations.
9432         * parse.y (string_buffer_type): Global variable deleted.
9433         (group_of_labels, catches, catch_clause, catch_clause_parameter,
9434         finally): Rules tagged <node>.
9435         (TRY_TK, CATCH_TK): Token tagged <operator>.
9436         (class_body_declaration:, class_member_declaration:,
9437         formal_parameter:, explicit_constructor_invocation:,
9438         interface_member_declaration:, constant_declaration:,
9439         primary_no_new_array:, class_instance_creation_expression:,
9440         array_creation_expression:): Issue error on unsuported JDK1.1
9441         features.
9442         (try_statement:, catches:, finally:): Define actions.
9443         (catch_clause_parameter): New rule.
9444         (catch_clause:): Use new rule catch_clause_parameter.
9445         (parse_jdk1_1_error): New function.
9446         (redefinition_error): Renamed classitf_redefinition_error.
9447         (variable_redefinition_error): New function.
9448         (check_class_interface_creation): Call
9449         classitf_redefinition_error.
9450         (java_complete_tree): Added error message on JDEP_TYPE: case.
9451         (complete_class_report_errors): Fixed indentation.
9452         (declare_local_variables): Call variable_redefinition_error.
9453         (source_end_java_method): Call java_set_exception_lang_code and
9454         emit_handlers where appropriate.
9455         (java_method_add_stmt): Call add_stmt_to_block.
9456         (add_stmt_to_block): New function.
9457         (lookup_method_invoke): Fixed outside comment. new local variable
9458         candicates.  Call find_applicable_accessible_methods_list and
9459         find_most_specific_methods_list when searching for a
9460         method. Modified error report to list possible candidates when
9461         applicable.
9462         (find_applicable_accessible_methods_list,
9463         find_most_specific_methods_list, argument_types_convertible): New
9464         function.
9465         (refine_accessible_methods_list): Function deleted.
9466         (java_complete_tree): Handle TRY_EXPR. ARRAY_REF handling: save
9467         expr (if applicable) before calling patch_array_ref.
9468         (build_expr_block): Fixed BLOCK_EXPR_BODY assignment.
9469         (enter_block): Fixed comment.
9470         (enter_a_block): New function.
9471         (patch_assignment): Reorganized. Call try_reference_assignconv for
9472         references. Call valid_cast_to_p instead of can_cast_to_p.
9473         (try_reference_assignconv,
9474         valid_builtin_assignconv_identity_widening_p): New functions.
9475         (valid_ref_assignconv_cast_p): Fixed inverted test on CLASS_FINAL.
9476         (valid_cast_to_p, valid_method_invocation_conversion_p): New
9477         functions.
9478         (build_string_concatenation): Don't resolve StringBuffer.
9479         (patch_cast): Fixed inverted arguments.
9480         (patch_array_ref): Code to save array expr deleted. Call
9481         valid_cast_to_p instead of can_cast_to_p.
9482         (generate_labeled_block): Call generate_name.
9483         (build_jump_to_finally, build_try_statement, java_get_catch_block,
9484         patch_try_statement): New functions.
9485         * typeck.c (match_java_method): Function deleted.
9486
9487 Fri Oct  2 13:48:36 1998  Anthony Green  <green@cygnus.com>
9488
9489         * jvspec.c: jvgenmain_spec uses different temporary file names.
9490
9491 Fri Oct  2 12:50:19 1998  Anthony Green  <green@cygnus.com>
9492
9493         * jvspec.c (lang_specific_driver): Fail if user specifies
9494         --main= when not linking.
9495
9496 Mon Sep 28 13:48:33 1998  Tom Tromey  <tromey@cygnus.com>
9497
9498         * class.c (make_class_data): Push value for `thread' field.
9499         * decl.c (init_decl_processing): Added `thread' field to class.
9500
9501         * class.c (add_field): Always make static fields externally
9502         visible.
9503
9504 Sat Sep 26 08:22:47 1998  Anthony Green  <green@cygnus.com>
9505
9506         * expr.c (build_java_athrow,
9507         build_java_throw_out_of_bounds_exception, expand_invoke,
9508         build_newarray, expand_java_multianewarray, build_java_monitor):
9509         Update comments to reflect _Jv_* function names.
9510
9511 Fri Sep 25 16:03:02 1998  Per Bothner  <bothner@cygnus.com>
9512
9513         * decl.c (complete_start_java_method):  DECL_RESULT is always promoted.
9514         * decl.c (start_java_method):  Handle PROMOTE_PROTOTYPES target macro.
9515         * parse.y (expand_start_java_method):  Likewise.
9516
9517 Thu Sep 24 12:20:35 1998  Per Bothner  <bothner@cygnus.com>
9518
9519         * expr.c (pop_arguments):  Handle PROMOTE_PROTOTYPES target macro.
9520
9521         * class.c (push_class):  IDENTIFIER_SIGNATURE_TYPE is now POINTER_TYPE.
9522         (add_field):  No longer need to convert from RECORD_TYPE to pointer,
9523         * expr.c:  Remove no-longer-needed calls to promote_type.
9524         * decl.c (give_name_to_locals):  Liekwise.
9525         * jcf-parse.c (get_class_constant):  Compensate for new signatures.
9526         * parse.y:  Add/remove promote_type calls as appropriate.
9527         * typeck.c (parse_signature_type):  Returns POINTER_TYPE for objects.
9528         (parse_signature_string):  Likewise.
9529         (build_java_array_type):  Fix for now signature convenions.
9530
9531         * lex.c (java_lex):  Fix (from Alex) for JC1_LITE problem.
9532
9533 Wed Sep 23 14:49:35 1998  Tom Tromey  <tromey@cygnus.com>
9534
9535         * class.c (init_class_processing): libjava function renamed to
9536         _Jv_RegisterClass.
9537
9538 Tue Sep 22 12:00:02 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9539
9540         * expr.c (java_lang_expand_expr): New case for SWITCH_EXPR.
9541         * java-tree.def: Fixed DEFTREECODE third argument.
9542         (UNARY_PLUS_EXPR, NEW_ARRAY_EXPR, NEW_CLASS_EXPR, THIS_EXPR,
9543         CASE_EXPR, DEFAULT_EXPR): New tree codes for Java.
9544         * java-tree.h: (IS_CRAFTED_STRING_BUFFER_P): New macro.
9545         (JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR,
9546         JAVA_THIS_EXPR): Now replaced by tree code definitions.
9547         (CALL_CONSTRUCTOR_P): Now uses NEW_CLASS_EXPR.
9548         * lang.c (java_tree_code_type, java_tree_code_length,
9549         java_tree_code_name): New arrays.
9550         (lang_init): Append Java tree node definitions to Gcc ones.
9551         * lex.c (expression_obstack): Declared as extern when JC1_LITE
9552         defined.
9553         (java_init_lex): Initialize wfl_append, wfl_string_buffer,
9554         wfl_to_string.
9555         (java_lex): Allow declaration of empty string constants. Retain
9556         location information on CASE_TK and DEFAULT_TK.
9557         * parse.h (JFLOAT_TYPE_P, JINTEGRAL_TYPE_P, JNUMERIC_TYPE_P,
9558         JPRIMITIVE_TYPE_P, JSTRING_TYPE_P, JSTRING_P, JREFERENCE_TYPE_P):
9559         Modified to be more robust.
9560         (BUILD_APPEND, BUILD_STRING_BUFFER): New macros.
9561         (build_new_invocation, try_builtin_assignconv,
9562         patch_switch_statement, string_constant_concatenation,
9563         build_string_concatenation, patch_string_cst, patch_string,
9564         java_expand_switch): New function declarations.
9565         * parse.y: Rules related to switch and EH tagged <node>.
9566         (label_id): Set to NULL_TREE
9567         (wfl_string_buffer, wfl_append, wfl_to_string): New static global
9568         tree nodes.
9569         (this_or_super:): Fixed indentation.
9570         (statement:, statement_nsi:, statement_without_trailing_substatement:,
9571         statement_expression:): Removed call to RULE on all sub-rules.
9572         (switch_expression:, switch_labels:): New rules.
9573         (switch_statement:, switch_block:, switch_block_statement_groups:,
9574         switch_block_statement_group:, switch_labels:, switch_label:):
9575         Defined actions.
9576         (throw_statement:, synchronized_statement:, try_statement:):
9577         Defined temporary actions.
9578         (class_instance_creation_expression:): Call
9579         build_new_invocation. Fixed indentation.
9580         (field_access): Fixed indentation.
9581         (method_invocation): Likewise.
9582         (make_qualified_primary): Use THIS_EXPR.
9583         (resolve_qualified_expression_name): Use NEW_CLASS_EXPR. When
9584         resolving from SUPER, set *type_found.
9585         (qualify_ambiguous_name): Use NEW_CLASS_EXPR.
9586         (java_complete_tree): Removed unused local variable `location'. Case
9587         for SWITCH_EXPR, sharing code with LOOP_EXPR. Use NEW_ARRAY_EXPR,
9588         NEW_CLASS_EXPR, UNARY_PLUS_EXPR and THIS_EXPR. New string handling
9589         on MODIFY_EXPR: and all binary operator tree code cases. Removed
9590         STRING_CST: case. default: checks for patchable strings.
9591         (complete_function_arguments): Transform string constant or
9592         crafted StringBuffer if necessary.
9593         (build_method_invocation): Fixed comments.
9594         (build_new_invocation): New function.
9595         (patch_assignment): Call try_builtin_assignconv to figure a valid
9596         assignment conversion between builtin types.
9597         (try_builtin_assignconv): New function.
9598         (build_binop): Use URSHIFT_EXPR directly to call build.
9599         (operator_string): Use UNARY_PLUS_EXPR.
9600         (patch_binop): Use UNARY_PLUS_EXPR. Handle string concatenation
9601         operator.
9602         (do_merge_string_cste, merge_string_cste,
9603         string_constant_concatenation, build_string_concatenation,
9604         patch_string, patch_string_cst): New function.
9605         (build_unary_op): Use UNARY_PLUS_EXPR and CONVERT_EXPR.
9606         (patch_unaryop): Likewise. New test of valid ++/-- operands.
9607         (build_newarray_node): Use NEW_ARRAY_EXPR.
9608         (build_this): Use THIS_EXPR.
9609         (build_return): Enable debug information on return statement.
9610         (build_if_else_statement): Likewise.
9611         (complete_labeled_statement): Fixed related comment.
9612         (build_loop_body): Fixed comment.
9613         (build_bc_statement): Enable debug information on break/continue
9614         statements.
9615         (patch_bc_statement): Fixed typos. Handle SWITCH statement
9616         context.
9617         (patch_switch_statement, case_identity, java_expand_switch): New
9618         functions.
9619
9620 Mon Sep 21 13:21:35 1998  Per Bothner  <bothner@cygnus.com>
9621
9622         * buffer.h (BUFFER_INIT):  New macro.
9623         * jcf-write.c (struct jcf_partial):  New type.  Put global stuff here.
9624         Pass (struct jcf_partial *state) to most functions.
9625         (jcf_block, jcf_relocation):  New types.
9626         Support labels, branches, conditionals, loops.
9627
9628 Mon Sep 21 15:08:48 1998  Tom Tromey  <tromey@cygnus.com>
9629
9630         * decl.c (INT_TYPE_SIZE): Define as BITS_PER_WORD if not defined.
9631
9632 Mon Sep 21 13:21:35 1998  Per Bothner  <bothner@cygnus.com>
9633
9634         * decl.c (integer_type_node):  Make it have INT_TYPE_SIZE.
9635         * verify.c (verify_jvm_instructions):  Use int_type_not (32 bits),
9636         not integer_type_node (INT_TYPE_SIZ bits).
9637
9638         * parse.y (patch_if_else_statement):  Accept promoted_boolean_type_node.
9639
9640         * jcf-reader.c (get_attribute):  New HANDLE_EXCEPTION_TABLE hook.
9641         * jcf-dump.c (print_exception_table):  New function.
9642         (disassemble_method):  Better handling of wide instructions.
9643         Make more robust for bad input.
9644
9645 Wed Sep 30 20:53:51 1998  Jeffrey A Law  (law@cygnus.com)
9646
9647         * jcf-write.c (OP2, OP4): Use "_i", not "_I" to avoid problems on
9648         FreeBSD.
9649
9650 Thu Sep 17 19:45:01 1998  Jeffrey A Law  (law@cygnus.com)
9651
9652         * Makefile.in (jcf-dump, jvgenmain): Link in memmove.o too.
9653
9654 Thu Sep 17 16:21:52 1998  Tom Tromey  <tromey@cygnus.com>
9655
9656         * Makefile.in ($(PARSE_H)): Removed target.
9657
9658 Thu Sep 17 01:57:07 1998  Jeffrey A Law  (law@cygnus.com)
9659
9660         * Makefile.in (JAVA_OBJS): Add memmove.o
9661         (memmove.o): New target & rules.
9662
9663 Tue Sep 15 23:21:55 1998  Tom Tromey  <tromey@cygnus.com>
9664
9665         * expr.c (expand_invoke): Don't generate a call to the class init
9666         code.
9667
9668 Mon Sep 14 10:14:47 1998  Jeffrey A Law  (law@cygnus.com)
9669
9670         * Makefile.in: Add many missing dependencies.
9671         * buffer.c, class.c, constants.c, decl.c: Use system.h and toplev.h
9672         as appropriate.
9673         * except.c, expr.c, jcf-io.c jcf-parse.c, jcf-write.c: Likewise.
9674         * jvgenmain.c lang.c mangle.c typeck.c verify.c: Likewise.
9675
9676 Fri Sep 11 14:05:21 1998  Per Bothner  <bothner@cygnus.com>
9677
9678         * decl.c (complete_start_java_method):  If method is static (and
9679         not private) call _Jv_InitClass.
9680         * expr.c (expand_invoke):  Don't call build_class_init.
9681
9682         * jvspec.c (jvgenmain_spec):  Fix spec for generated .o file.
9683
9684 Thu Sep 10 10:33:31 1998  Jeffrey A Law  (law@cygnus.com)
9685
9686         * Make-lang.in (GCJ): Define before using.
9687
9688 Wed Sep  9 21:23:10 1998  Jeffrey A Law  (law@cygnus.com)
9689
9690         * gjavah.c (java_no_argument): Renamed from no_argument to avoid
9691         losing due to namespace pollution in GNU getopt.h
9692
9693 Wed Sep  9 13:33:39 1998  Tom Tromey  <tromey@cygnus.com>
9694
9695         * Make-lang.in (java.all.build): Don't mention jvgenmain or gcjh.
9696         (java.all.cross): Likewise.
9697         (java.rest.encap): Likewise.
9698
9699 Tue Sep  8 10:34:05 1998  Jeffrey A Law  (law@cygnus.com)
9700
9701         * gjavah.c (print_class_decls): Fix thinko in arglist
9702         * jcv-io.c (find_classfile): Similarly.
9703
9704 Mon Sep  7 13:59:49 1998  Jeffrey A Law  (law@cygnus.com)
9705
9706         * Makefile.in (INCLUDES): Update for recent toplevel gcc changes.
9707
9708 Sat Sep  5 16:08:01 1998  Tom Tromey  <tromey@cygnus.com>
9709
9710         * Make-lang.in (java.maintainer-clean): Don't remove parse.h.
9711         (java.mostlyclean): Remove parse.c and parse-scan.c, not parse.h.
9712         * Makefile.in (PARSE_C): New macro.
9713         (PARSE_H): Likewise.
9714         (PARSE_SCAN_C): Likewise.
9715         ($(PARSE_C)): Target renamed from parse.c.
9716         ($(PARSE_SCAN_C)): Target renamed from parse-scan.c.
9717         (clean): Remove parse-scan.c as well.
9718         (parse.o): Depend on $(PARSE_C).
9719
9720 Sat Sep  5 08:48:40 1998  Anthony Green  <green@cygnus.com>
9721
9722         * README, license.terms: Removed.
9723
9724         * Make-lang.in, Makefile.in, class.c, config-lang.in, constants.c,
9725         decl.c, except.c, expr.c, gjavah.c, java-except.h, java-tree.h,
9726         javaop.def, javaop.h, jcf-dump.c, jcf-io.c, jcf-parse.c,
9727         jcf-reader.c, jcf-write.c, jcf.h, jvgenmain.c, jvspec.c,
9728         keyword.gperf, keyword.h, lang-options.h, lang-specs.h, lang.c,
9729         lex.c, lex.h, mangle.c, parse-scan.y, parse.h, parse.y, typeck.c,
9730         verify.c, zextract.c, zipfile.h: Fixed copyright assignment,
9731         and Java trademark attribution.
9732
9733 Fri Sep  4 10:42:05 1998  Tom Tromey  <tromey@cygnus.com>
9734
9735         * Makefile.in: Use gcjh, not gjavah.
9736         * config-lang.in (stagestuff): Use gcjh, not gjavah.
9737         * Make-lang.in: Changed gjavah to gcjh everywhere.
9738
9739 Thu Sep  3 18:04:09 1998  Per Bothner  <bothner@cygnus.com>
9740
9741         * gjavah.c:  Support new -prepend -add -append flags.
9742         (print_method_info):  Method is not virtual if class is final.
9743
9744 Thu Sep  3 12:03:53 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9745
9746         * jv-scan.c: Fixed copyright assignment.
9747         * keyword.gperf: Likewise.
9748         * keyword.h: Likewise.
9749         * lex.c: Fixed copyright assignment.
9750         (java_lex): Push unicode back when parsing '<'.
9751         * lex.h: Fixed copyright assignment.
9752         * parse-scan.y: Likewise.
9753         * parse.h: Fixed copyright assignment.
9754         (build_debugable_stmt, complete_for_loop): New function prototypes.
9755         * parse.y: Fixed copyright assignment.
9756         (for_statement:): Call complete_for_loop. Set EXIT_EXPR to be
9757         size_zero_node when completing a loop with no exit condition.
9758         (for_statement_nsi:): Define action.
9759         (for_init:, for_update:): Return size_zero_node when empty.
9760         (declare_local_variables): Call build_debugable_stmt.
9761         (build_debugable_stmt): New function.
9762         (build_loop_body): Build debugable statement around loop
9763         condition part.
9764         (complete_loop_body): Take into account the debugable statement
9765         around the EXIT_EXPR.
9766         (complete_loop_body): New function.
9767         (patch_exit_expr): Fixed condition inversion.
9768
9769 Wed Sep  2 11:53:58 1998  Tom Tromey  <tromey@cygnus.com>
9770
9771         * Make-lang.in (jvspec.o): Use GCC_THREAD_FILE to compute correct
9772         name of thread define.
9773         * jvspec.c (THREAD_NAME): New macro.
9774         (GCLIB): Likewise.
9775         (THREADLIB): Likewise.
9776         (lang_specific_driver): Recognize attempt to link with thread
9777         library or gc library.  Recognize -ljava on command line so it
9778         isn't linked against more than once.
9779
9780 Wed Sep  2 11:28:35 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9781
9782         * parse-scan.y (report_main_declaration): Name of the class
9783         containing `main' can be a qualified name.
9784
9785 Mon Aug 31 13:25:58 1998  Tom Tromey  <tromey@cygnus.com>
9786
9787         * config-lang.in: Changed gjavac to gjc everywhere.
9788         * Make-lang.in: Changed gjavac to gjc everywhere.
9789
9790 Thu Aug 27 02:28:27 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9791
9792         * Make-lang.in (JAVA_TARGET_INDEPENDENT_BIN_TOOLS): New variable.
9793         (java.install-common:): Loop over JAVA_TARGET_INDEPENDENT_BIN_TOOLS
9794         and install the files.
9795         * Makefile.in (JAVA_OBJS_LITE): New variable.
9796         (compiler:): Now include jv-scan as a dependency.
9797         (../jv-scan$(exeext), parse-scan.c): New targets.
9798         (../jcf-dump$(exeext)): Was jcf-dump$(exeext) before.
9799         * config-lang.in (compilers): Removed gcj, gjavah from the list.
9800         * jcf-parse.c (parse_source_file): Call java_layout_classes and
9801         check for errors even if parse_only.
9802         * lex.c (java_init_lex): Reorganized and skip parts if JC1_LITE is
9803         defined.
9804         (yylex): New function. Uses java_lex body.
9805         (java_lex): Removed commented out statement. Remove local variable
9806         literal. Use SET_LVAL_NODE_TYPE and SET_LVAL_NODE where
9807         appropriate.  Use macros FLOAT_TYPE_NODE, DOUBLE_TYPE_NODE,
9808         DCONST0, SET_FLOAT_HANDLER, SET_REAL_VALUE_ATOF,
9809         SET_LVAL_NODE_TYPE and GET_TYPE_PRECISION. Don't create STRING_CST
9810         if JC1_LITE is defined. Use BUILD_ID_WFL to build identifiers. Use
9811         SET_MODIFIER_CTX, SET_LVAL_NODE, BUILD_ID_WFL and GET_IDENTIFIER
9812         where appropriate.
9813         (java_lex_error): Empty if JC1_LITE is defined.
9814         (java_get_line_col): Return 0 if JC1_LITE is defined.
9815         * lex.h (JAVA_FLOAT_RANGE_ERROR, JAVA_INTEGRAL_RANGE_ERROR,
9816         SET_MODIFIER_CTX): Moved into the section containing the macros
9817         conditionally defined by JC1_LITE.
9818         (BUILD_OPERATOR,BUILD_OPERATOR2): Just return the TOKEN
9819         argument if JC1_LITE is defined.
9820         (HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT, REAL_VALUE_ATOF,
9821         REAL_VALUE_ISINF, REAL_VALUE_ISNAN): Preset to values if JC1_LITE
9822         is defined.
9823         (DCONST0, SET_FLOAT_HANDLER, GET_IDENTIFIER, SET_REAL_VALUE_ATOF,
9824         FLOAT_TYPE, DOUBLE_TYPE, SET_MODIFIER_CTX, GET_TYPE_PRECISION,
9825         SET_LVAL_NODE, SET_LVAL_NODE_TYPE, BUILD_ID_WFL): New macros, set
9826         to different values according to JC1_LITE.
9827         * parse.h (int_fits_type_p, stabilize_reference): Prototype not
9828         declared if JC1_LITE set.
9829         (jdep_code, typedef struct _jdep, typedef struct _jdeplist): Not
9830         defined if JC1_LITE not set.
9831         (struct parser_ctx): Reorganized and skip the jc1 front end part
9832         if JC1_LITE set.
9833         (java_layout_classes): New function definition.
9834         (java_push_parser_context, java_init_lex, yyparse, yylex,
9835         yyerror): Prototype always declared. All other static function
9836         prototypes declared only if JC1_LITE is not set.
9837         * parse.y (yyparse, yylex, yyerror): No longer declared here. Now
9838         declared in parse.h.
9839         (java_layout_classes): New function.
9840         (java_complete_expand_methods): No longer layout the class here.
9841         * parse-scan.y: New file.
9842         * jv-scan.c: New file.
9843
9844 Tue Aug 25 10:17:54 1998  Tom Tromey  <tromey@cygnus.com>
9845
9846         * gjavah.c (main): Handle -friend option.
9847         (friend_specs): New global.
9848         (generate_access): Handle friend_specs.
9849         (process_file): Likewise.
9850         (MAX_FRIENDS): New macro.
9851         (friend_count): New global.
9852         (print_cxx_classname): Added `prefix' argument.  Ignore arrays.
9853         Changed all callers.
9854
9855 Mon Aug 24 20:19:27 1998  Per Bothner  <bothner@cygnus.com>
9856
9857         * jcf-dump.c (process_class):  Move JCF_FINISH use to main,
9858         (main):  Handle processing all the entries of a named .zip archive.
9859         * jcf-io.c (jcf_trim_old_input):  New function.
9860         * jcf.h (GET_u2_le,GET_u4_le,JCF_readu2_le,JCF_readu4_le):  New macros.
9861
9862 Mon Aug 24 07:35:13 1998  Per Bothner  <bothner@cygnus.com>
9863
9864         * lang.c (flag_assume_compiled):  Make default be on.
9865
9866 Fri Aug 21 17:29:04 1998  Per Bothner  <bothner@cygnus.com>
9867
9868         * jcf-dump.c:  Add bunches of flags to control output more.
9869         (process_class):  New function;  support printing more than one class.
9870         (main): Support new --print-main and --javap flags.
9871         * jcf-reader.c (IGNORE_ATTRIBUTE):  New hook.
9872         * jcf.h (CPOOL_INDEX_IN_RANGE):  New macro.
9873
9874 Thu Aug 20 14:24:47 1998  Per Bothner  <bothner@cygnus.com>
9875
9876         Change mangling of dispatch table to match C++ vtable (w/thunks).
9877         * class.c (build_dtable_decl), java-tree.h:  New function.
9878         (make_class_data):  Call it.
9879         * decl.c (init_decl_processing):  Likewise.
9880
9881 Wed Aug 19 17:57:07 1998  Warren Levy  <warrenl@cygnus.com>
9882
9883         * decl.c (init_decl_processing): Use _Jv_NewObjectArray, not
9884         soft_anewarray; adjust args passed.
9885         * expr.c (build_anewarray): Adjust args for soft_anewarray_node to
9886         match _Jv_NewObjectArray.
9887
9888 Wed Aug 19 09:33:23 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
9889
9890         * decl.c (push_labeled_block, pop_labeled_block): New functions.
9891         * expr.c (loopup_label): Call create_label_decl.
9892         (create_label_decl): New function.
9893         (java_lang_expand_expr): Call expand_start_bindings with argument
9894         set to zero.
9895         * java-tree.h Added space after PROTO in function declarations
9896         when necessary.
9897         (IS_FOR_LOOP_P, IS_BREAK_STMT_P): New macros.
9898         (create_label_decl, push_labeled_block): New function
9899         declarations.
9900         * lex.c (label_id): Initialize.
9901         (SUPER_TK, THIS_TK, RETURN_TK): Merged common actions in final
9902         switch.
9903         * parse.h Added space after PROTO in function declarations when
9904         necessary.
9905         (LOOP_EXPR_BODY_MAIN_BLOCK, LOOP_EXPR_BODY_UPDATE_BLOCK,
9906         LOOP_EXPR_BODY_CONDITION_EXPR, LOOP_EXPR_BODY_LABELED_BODY,
9907         LOOP_EXPR_BODY_BODY_EXPR, LOOP_HAS_LABEL_P, LOOP_HAS_LABEL_SKIP_P,
9908         PUSH_LABELED_BLOCK, POP_LABELED_BLOCK, PUSH_LOOP, POP_LOOP): New
9909         macros.
9910         (struct parser_ctxt): New fields current_loop,
9911         current_labeled_block.
9912         (build_if_else_statement, patch_if_else_statement,
9913         add_stmt_to_compound, patch_exit_expr, build_labeled_block,
9914         generate_labeled_block, complete_labeled_statement,
9915         build_bc_statement, patch_bc_statement, patch_loop_statement,
9916         build_new_loop, build_loop_body, complete_loop_body): New function
9917         declarations.
9918         * parse.y (java_warning_count): New global variable.
9919         (label_id): New static variable.
9920         (BREAK_TK, CONTINUE_TK): Token tagged <operator>.
9921         (block:): Return size_zero_node when block is empty.
9922         (empty_statement:): Return size_zero_node.
9923         (statement:): Implement supplemental action when for_statement: is
9924         reduced.
9925         (label_decl:): New rule.
9926         (labeled_statement:): Rewritten using label_decl. Actions
9927         implemented.
9928         (labeled_statement_nsi:): Likewise.
9929         (if_then_statement): Actions implemented.
9930         (while_expression): New rule.
9931         (while_statement:): Rewritten using while_expression. Actions
9932         implemented.
9933         (while_statement_nsi:): Likewise.
9934         (do_statement_begin:): New rule.
9935         (do_statement:): Rewritten using do_statement_begin. Actions
9936         implemented.
9937         (for_statement:): Rewritten using for_begin. Actions implemented.
9938         (for_statement_nsi:): Likewise.
9939         (for_header:, for_begin:): New rules.
9940         (for_init:): Actions implemented.
9941         (statement_expression_list:, break_statement:,
9942         continue_statement:): Likewise.
9943         (yyerror): Count number of issued warning(s).
9944         (java_report_errors): Report error(s) and/or warning(s).
9945         (java_complete_class): Use build_java_argument_signature to
9946         recompute completed method signature.
9947         (java_check_regular_methods): New locals method_wfl and aflags.
9948         Use method_wfl instead of lookup_cl during error reports. Fixed
9949         indentation and modified some error messages. Use
9950         lang_printable_name in method instead of the DECL_NAME. New code
9951         to issue warnings on methods not overriding corresponding methods
9952         private to a different package.
9953         (java_method_add_stmt): Call add_stmt_to_compound.
9954         (add_stmt_to_compound): New function.
9955         (java_complete_tree): Handle LABELED_BLOCK_EXPR, EXIT_BLOCK_EXPR,
9956         LOOP_EXPR, EXIT_EXPR and COND_EXPR.
9957         (build_if_else_statement, patch_if_else_statement,
9958         build_labeled_block, generate_labeled_block,
9959         complete_labeled_statement, build_new_loop, build_loop_body,
9960         complete_loop_body, patch_loop_statement, build_bc_statement,
9961         patch_bc_statement, patch_exit_expr): New functions.
9962         * typeck.c (build_java_signature): Build argument signature before
9963         enclosing it in between parenthesis.
9964
9965 Mon Aug 17 17:44:24 1998  Warren Levy  <warrenl@cygnus.com>
9966
9967         * Make-lang.in (JAVA_SRCS): Created for dependencies * Makefile.in
9968         (JAVA_OBJS): Added reminder comment
9969
9970 Thu Aug 13 10:01:45 1998  Nick Clifton  <nickc@cygnus.com>
9971
9972         * gjavah.c (D_NAN_MASK): Append LL to the constant to force it to
9973         be interpreted as a long long.
9974
9975 Thu Aug 13 14:34:07 1998  Warren Levy  <warrenl@cygnus.com>
9976
9977         * decl.c (init_decl_processing): Use _Jv_InitClass, not
9978         soft_initialise_class.  Use _Jv_NewMultiArray, not
9979         soft_multianewarray.  Use _Jv_ThrowBadArrayIndex, not
9980         soft_badarrayindex.  Use _Jv_CheckCast, not soft_checkcast.  Use
9981         _Jv_CheckArrayStore, not soft_checkarraystore.  Use
9982         _Jv_LookupInterfaceMethod, not soft_lookupinterfacemethod.
9983
9984 Wed Aug 12 14:23:13 1998  Per Bothner  <bothner@cygnus.com>
9985
9986         * decl.c, java-tree.h (this_identifier_node, super_identifier_node,
9987         length_identifier_node):  New global tree node constants.
9988         * parse.y (kw_super, kw_this, kw_length):  Removed globals.
9989         Replace uses by super_identifier_node etc.
9990         * lex.c (kw_super, kw_this, kw_length):  Don't initialize.
9991
9992         * parse.y (resolve_field_access):  Don't special-case ".length" if
9993         flag_emit_class_files.
9994         (patch_array_ref):  Leave as ARRAY_REF if flag_emit_class_files.
9995         * jcf-write.c (generate_bytecode_insns):  Handle ARRAY_REF opcode
9996         and ARRAY.length.
9997
9998 Tue Aug 11 11:31:55 1998  Per Bothner  <bothner@cygnus.com>
9999
10000         * decl.c (init_decl_processing): Remove unused method_type_node fields.
10001         * class.c (make_method_value):  Remove init for removed fields.
10002
10003         * class.c (layout_class):  Use build_java_argument_signature.
10004         * java-tree.h (TYPE_ARGUMENT_SIGNATURE):  New macro.
10005
10006         * typeck.c (push_java_argument_signature):  Removed.  Merged into ...
10007         (build_java_argument_signature):  Use TYPE_ARGUMENT_SIGNATURE cache.
10008         (build_java_signature):  Don't use push_java_argument_signature.
10009
10010         * typeck.c (lookup_argument_method):  New function.
10011         * parse.y (java_check_regular_methods):  Use lookup_argument_method
10012         instead of lookup_java_method2 followed by lookup_java_method.
10013
10014         * parse.y (check_method_redefinition):  Minor optimization.
10015
10016         * jcf-write.c (generate_bytecode_insns):  Handle RETURN_EXPR,
10017         MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, and RDIV_EXPR.
10018
10019 Mon Aug 10 09:57:15 1998  Tom Tromey  <tromey@cygnus.com>
10020
10021         * Make-lang.in (jc1$(exeext)): Don't depend on c-common.o or
10022         c-pragma.o.
10023
10024         * gjavah.c (java_float_finite): Use K&R-style definition.
10025         (java_double_finite): Likewise.
10026         (generate_access): Now returns void.  Changed all callers.
10027         (last_access_generated): Removed.
10028         (process_file): Only make a single pass over the .class file.
10029
10030 Wed Jul 29 17:50:23 1998  Per Bothner  <bothner@cygnus.com>
10031
10032         * class.c (get_dispatch_table):  Add extra dummy vtable entry,
10033         for compatibility for G++ (with -fvtable-thunks).
10034         * expr.c (build_invokevirtual):  Add one for extra dummy vtable entry.
10035
10036         * gjavah.c (process_file):  Use public inheritance for super-class.
10037
10038 Wed Jul 29 13:19:03 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10039
10040         * lex.c (java_init_lex): Initialize ctxp->package.
10041         * parse.h (struct parser_ctxt): package and package_len replaced
10042         by tree package, an identifier node. Field method_decl_list is
10043         gone. Fixed comments.
10044         (lookup_field_wrapper, merge_qualified_name, not_accessible,
10045         class_in_current_package): New function prototypes.
10046         * parse.y (array_type:): Set class loaded flag on primitive type
10047         arrays.
10048         (package_declaration:): Assign ctxp->package to the
10049         identifier node.
10050         (method_invocation:): Handle invocation of method qualified by
10051         `super'.
10052         (single_type_import_declaration:): Removed ambiguity check.
10053         (java_pop_parser_context): New local variable `next'. Reset and
10054         set IMPORT_CLASSFILE_NAME flags on current and previous import
10055         list.
10056         (java_accstring_lookup): Use new local macro COPY_RETURN.
10057         (lookup_field_wrapper): New function.
10058         (parser_qualified_classname): Use merge_qualified_name.
10059         (parser_check_super_interface): Broaden error message.
10060         (do_resolve_class): Check for qualified class name in the current
10061         compilation unit if appropriate.
10062         (process_imports): Check for already defined classes.
10063         (check_pkg_class_access): Got rid of call to
10064         get_access_flags_from_decl.
10065         (java_complete_expand_methods): Call safe_layout_class based on
10066         the current class size.
10067         (make_qualified_primary): Build a WFL qualification on primary if
10068         none exists.
10069         (merge_qualified_name): New function.
10070         (make_qualified_name): Use merge_qualified_name.
10071         (resolve_expression_name): Use safe_lookup_field.
10072         (resolve_field_access): Got rid of call to get_access_flags_from_decl.
10073         (resolve_qualified_expression_name): Likewise. Check on resolved
10074         element accessibility.
10075         (not_accessible_p, class_in_current_package): New functions.
10076         (maybe_access_field): Got rid of call to get_access_flags_from_decl.
10077         (patch_method_invocation_stmt): Merged common pieces. Check
10078         accessibility of invoked method.
10079         (check_for_static_method_reference): Add returned type in error
10080         message.
10081         (invocation_mode): Get rid of bogus check on PRIVATE methods.
10082         (refine_accessible_methods_list): Merged two conditions in test.
10083         (java_complete_class): Sanity check on stabilize_ref gone.
10084         * zextract.c (read_zip_archive): Cast lseek second argument to long.
10085
10086 Tue Jul 28 21:39:22 1998  Per Bothner  <bothner@cygnus.com>
10087
10088         * class.c (hashUtf8String):  Fix - use new JavaSoft specification.
10089
10090 Fri Jul 24 10:43:25 1998  Tom Tromey  <tromey@cygnus.com>
10091
10092         * gjavah.c (F_NAN): Removed.
10093         (F_NAN_MASK): New macro.
10094         (F_POSITIVE_INFINITY): Removed.
10095         (F_NEGATIVE_INFINITY): Likewise.
10096         (java_float_finite): Rewrote.
10097         (D_NAN_MASK): Renamed.
10098         (java_double_finite): Rewrote.
10099         (D_POSITIVE_INFINITY): Removed.
10100         (D_NEGATIVE_INFINITY): Likewise.
10101
10102         * jcf-dump.c (print_constant): [CONSTANT_Double, CONSTANT_Float]
10103         If verbose, print underlying representation of value in hex.
10104
10105 Fri Jul 24 14:14:32 1998  Per Bothner  <bothner@cygnus.com>
10106
10107         * buffer.h, buffer.c:  New files.
10108         * Makefile.in (JAVA_OBJS):  Add buffer.o.
10109
10110         Support locals variables and writing their debug entries to .class.
10111         * jcf-write.c:  Simplify some by user new buffer type.
10112         (vode_buffer_grow):  Removed.
10113         (struct localvar_info):  New type.
10114         (localsvars, localvartable):  New buffers.
10115         (localvar_alloc, localvar_free):  New functions.
10116         (generate_bytecode_insns):  Handle local variables.
10117         (generate_classfile):  Write LocalVariableTable attribute.
10118
10119 Fri Jul 24 13:46:59 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10120
10121         * jcf-io.c (open_in_zip): Check the zipfile magic number.
10122         * zipfile.h (ZIPMAGIC): New macro.
10123
10124 Fri Jul 24 10:43:25 1998  Tom Tromey  <tromey@cygnus.com>
10125
10126         * Makefile.in (gjavah.o): Updated dependencies.
10127         (jcf-dump.o): Likewise.
10128         (all.indirect): Use ../gjavah.
10129         (../gjavah$(exeext)): Likewise.
10130         (clean): Don't remove gjavah.
10131         (clean): Remove parse.c, not java/parse.c.
10132         * Make-lang.in (java): Added gjavah.
10133         (gjavah$(exeext)): New target.
10134         (GJAVAH_SOURCES): New macro.
10135         (java.all.build): Added gjavah.
10136         (java.all.cross): Likewise.
10137         (java.rest.encap): Likewise.
10138         * config-lang.in (compilers, stagestuff): Added gjavah.
10139
10140 Thu Jul 23 18:33:56 1998  Tom Tromey  <tromey@cygnus.com>
10141
10142         * gjavah.c (java_float_finite): New function.
10143         (java_double_finite): Likewise.
10144         (F_POSITIVE_INFINITY): New macro.
10145         (F_NEGATIVE_INFINITY): Likewise.
10146         (F_NAN): Likewise.
10147         (D_POSITIVE_INFINITY): Likewise.
10148         (D_NEGATIVE_INFINITY): Likewise.
10149         (D_NAN): Likewise.
10150         (print_field_info): Use java_float_finite and java_double_finite.
10151
10152 Thu Jul 23 15:28:24 1998  Per Bothner  <bothner@cygnus.com>
10153
10154         * parse.y (method_header):  Name "this" implicit argument.
10155
10156 Wed Jul 22 15:47:30 1998  Per Bothner  <bothner@cygnus.com>
10157
10158         * jcf-write.c:  Write out LineNumberTable attribute in .class file.
10159         (linenumber_buffer, linenumber_ptr, linenumber_limit):  New statics.
10160         (put_linenumber):  New function.
10161         (generate_bytecode_insns, generate_classfile):  Write line numbers.
10162
10163 Wed Jul 22 14:39:00 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10164
10165         * java-tree.h (CALL_EXPR_FROM_PRIMARY_P): Changed in PRIMARY_P.
10166         (lookup_name, build_known_method_ref, build_class_init,
10167         build_invokevirtual, invoke_build_dtable, match_java_method,
10168         build_field_ref, pushdecl_force_head, build_java_binop,
10169         binary_numeric_promotion, build_decl_no_layout,
10170         build_java_arrayaccess, build_newarray, build_anewarray,
10171         build_java_array_length_access, build_java_arraynull_check): New
10172         extern function prototypes.
10173         (JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR,
10174         JAVA_THIS_EXPR, CALL_CONSTRUCTOR_P): Macro definition moved in
10175         java-tree.h.
10176         * jcf-parse.c (init_outgoing_cpool): Set current_constant_pool_data_ref
10177         to NULL
10178         * jcf.h (jcf_out_of_synch): New extern function prototype.
10179         * parse.h: Static/global function implemented in parse.y
10180         prototyped and declarations moved at the end of the file.
10181         (DECL_P): Check that the argument isn't null.
10182         (JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR,
10183         JAVA_THIS_EXPR): No longer defined here. See java-tree.h
10184         (QUAL_DECL_TYPE): New macro.
10185         (PARAMS): Macro definition removed.
10186         * parse.y: (yyparse, yyerror): Use PROTO instead of PARAMS.
10187         (return_statement:): Call build_return.
10188         (field_access:): Call make_qualified_primary in sub rule.
10189         (method_invocation:): Build method invocation and call
10190         make_qualified_primary when processing primaries.
10191         (java_complete_class): Set IDENTIFIER_SIGNATURE_TYPE by calling
10192         get_type_from_signature.
10193         (java_check_regular_method): Extra integer 0 argument when calling
10194         lookup_java_method2.
10195         (lookup_java_interface_method2): Extra method DECL argument when
10196         calling lookup_java_interface_method2.
10197         (java_method_add_stmt): Set TREE_SIDE_EFFECTS on newly created
10198         COMPOUND_EXPR node.
10199         (java_complete_expand_method): Layout current class iff not
10200         already done. Don't process interface's methods.
10201         (java_complete_expand_method): Use super class only if it
10202         exists. Use current class otherwise.
10203         (make_qualified_primary): New function.
10204         (resolve_expression_name): Process qualified expression or
10205         expression from primary the same way.
10206         (resolve_expression_name): Two last arguments to
10207         resolve_field_access are now NULL_TREEs.
10208         (resolve_field_access): New variable is_static. Local field must
10209         be DECLs. is_static computed on field DECLs only. Append code in
10210         where_found to the field access if necessary. Use QUAL_DECL_TYPE
10211         to initialize field_type.
10212         (resolve_qualified_expression_name): New local variable,
10213         previous_call_static and is_static. Handle primaries with function
10214         calls, casts, array references and `this'. `super' now handled as
10215         `(super_class)this'. Use is_static to clarify boolean expressions.
10216         Added code to handle case where a proper handle is required to
10217         access a field. Use QUAL_DECL_TYPE where applicable.
10218         (maybe_access_field): New function.
10219         (patch_method_invocation_stmt): New arguments primary, where,
10220         is_static. Branch of the test on CALL_EXPR_FROM_PRIMARY_P
10221         deleted. Use `where' as a type to search from if specified. Check
10222         for static method reference where forbidden. Append primary or
10223         current_this to the argument list if not calling constructor nor
10224         static methods.
10225         (check_for_static_method_reference): New function.
10226         (patch_invoke): Layout the class on which new is done if
10227         necessary.
10228         (lookup_method_invoke): Changed format to report errors on
10229         methods.
10230         (qualify_ambiguous_name): New local variable this_found. Now
10231         handle things from primaries. Method call are considered
10232         expression names.
10233         (identical_subpath_p): NULL_TREE arguments to breakdown_qualified
10234         changed into NULLs.
10235         (not_initialized_as_it_should_p): Comply with the new DECL_P.
10236         (java_complete_tree): New case fo RETURN_EXPR. Process function
10237         call arguments in separate function.
10238         (complete_function_arguments): New function.
10239         (build_method_invocation): Don't use CALL_EXPR_FROM_PRIMARY_P
10240         anymore.
10241         (patch_assignment): Take the return function slot into account as
10242         a RHS. Distinguish assignment from a return.
10243         (valid_ref_assignconv_cast_p): Use build_java_argument_signature
10244         when checking methods in interfaces.
10245         (resolve_type_during_patch): NULL argument to unresolve_type_p
10246         instead of NULL_TREE.
10247         (patch_newarray): Fixed typo in comment.
10248         (buid_this): Build a WFL with `kw_this' instead of a FIELD_DECL.
10249         (build_return, patch_return): New functions.
10250         * typeck.c (lookup_java_constructor): Fixed typo in comment.
10251
10252 Tue Jul 21 12:10:04 1998  Per Bothner  <bothner@cygnus.com>
10253
10254         * constants.c (find_name_and_type_constant, find_fieldref_index,
10255         find_methodref_index):  New methods.
10256         * expr.c (build_invoke_non_interface):  If flag_emit_class_files,
10257         just return given method.  Also, rename to build_known_method_ref.
10258         (expand_invoke):  Rename call to build_invoke_non_interface.
10259         * java-tree.h, parse.h:  Update prototype.
10260         * parse.y, decl.c, jcf-parse.c:  Suppress calls to back-end functions
10261         (such as expand_expr_stmt) if flag_emit_class_files.
10262         * jcf-write.c (RESERVE, OP1, OP2, OP4, NOTE_PUSH, NOTE_POP,
10263         STACK_TARGET, IGNORE_TARGET):  New macros.
10264         (code_buffer, code_ptr, code_limit, code_S, code_SP_max):  New globals.
10265         (generate_bytecode_insn):  New function to generate method's bytecode.
10266         (generate_classfile):  Node generate Code attribute for a method.
10267         (code_buffer_grow, push_constant1, push_constant2, push_int_const,
10268         push_long_const, field_op, adjust_typed_op, maybe_wide):
10269         New functions used by generate_bytecode_insn.
10270
10271         * typeck.c (signature_include_return):  Remove variable.
10272         (push_java_argument_signature, build_java_argument_signature):  New.
10273         (build_java_signature):  Use push_java_argument_signature.
10274         * parse.y:  Use build_java_argument_signature instead of fiddling
10275         with signature_include_return.
10276
10277 Fri Jul 17 09:48:51 1998  Tom Tromey  <tromey@cygnus.com>
10278
10279         * gjavah.c (print_c_decl): Always generate JArray<>* for array
10280         types.
10281
10282         * Makefile.in (all.indirect): Added gjavah$(exeext).
10283         (gjavah$(exeext)): Added $(exeext).
10284         (clean): Likewise.
10285
10286 Thu Jul 16 15:29:20 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10287
10288         * class.c (layout_class): Call to java_layout_parsed_class replace
10289         by safe_layout_class.
10290         * expr.c (build_java_array_length_access): Removed static storage
10291         class in the function definition.
10292         (build_java_arraynull_check): Likewise.
10293         Also fixed typos in two comments.
10294         * lex.c (java_init_lex): Initialize static global kw_length.
10295         (java_lex): Use BUILD_OPERATOR on RETURN_TK.
10296         * lex.h (JAVA_FLOAT_RANGE_ERROR): Add extra argument to
10297         java_lex_error.
10298         (JAVA_INTEGRAL_RANGE_ERROR): Likewise.
10299         * parse.h (resolve_no_layout): New static function declaration.
10300         (get_identifier_in_static): Declaration removed.
10301         (java_layout_parsed_class): Function name declaration changed to
10302         safe_layout_class.
10303         (build_newarray_node, patch_newarray, resolve_type_during_patch,
10304         not_initialized_as_it_should_p, build_this): New static function
10305         declarations.
10306         (pushdecl_force_head, build_java_binop, int_fits_type_p,
10307         binary_numeric_promotion, stabilize_reference,
10308         build_decl_no_layout, build_java_arrayaccess): Extern function
10309         declarations moved into their own section.
10310         (build_newarray, build_anewarray, build_java_array_length_access,
10311         build_java_arraynull_check): New extern function declarations.
10312         (UNARY_PLUS_EXPR): Macro renamed into JAVA_UNARY_PLUS_EXPR.
10313         (JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR, JAVA_THIS_EXPR): New
10314         fake tree codes.
10315         (CALL_CONSTRUCTOR_P): New macro.
10316         * parse.y (kw_length): New static global tree node.
10317         (return_statement): Tagged <node>.
10318         (RETURN_TK): Tagged <operator>.
10319         (variable_declarator_id:): Build variable declaration with an
10320         empty initialization value if a syntax error was found in the
10321         initialization part of the variable declaration.
10322         (statement_without_trailing_substatement:): return_statement: now
10323         uses the default rule.
10324         (return_statement:): Temporarily fixed to return NULL_TREE.
10325         (primary_no_new_array:): Call build_this when THIS_TK was parsed.
10326         (class_instance_creation_expression:): Class creation rules now
10327         call build_method_invocation upon reduction.
10328         (array_creation_expression:): Rules call build_newarray_node upon
10329         reduction.
10330         (dim_exprs:): Build a list of dimension expressions.
10331         (dim_expr:): Store location of the OSB_TK in the dimension
10332         expression node.
10333         (method_invocation:): Added a new error rule.
10334         (build_unresolved_array_type): WFL argument may also be an array
10335         on a primitive type. Name of the argument changed to reflect this.
10336         (method_declarator): Insert argument type at the beginning of the
10337         argument type list and later reverse the list.
10338         (unresolved_type_p): Argument 'returned' may be optionally
10339         NULL_TREE.
10340         (java_layout_class_from_source): Function renamed
10341         safe_layout_class.
10342         (resolve_and_layout): Now call resolve_no_layout and
10343         safe_layout_class.
10344         (resolve_no_layout): New function.
10345         (purify_type_name): New function.
10346         (complete_class_report_errors): Call purify_type_name during error
10347         report on a type not found.
10348         (process_imports): error_found local variable doesn't need to be
10349         initialized to zero.
10350         (declare_local_variables): New local type_wfl. Fixed typo in error
10351         message. type_wfl assigned to unresolved type and used to register
10352         incomplete type. Build a WFL around the variable initialization
10353         statement so that debug info can be generated on it.
10354         (source_start_java_method): Reverse argument list after they've
10355         been processed.
10356         (current_this): New static global variable.
10357         (java_complete_expand_methods): Set current_this when appropriate.
10358         (resolve_expression_name): Build correct static and non static
10359         field access bearing a simple name.
10360         (resolve_field_access): Resolve the length field of arrays. Handle
10361         f.m() cases.
10362         (patch_method_invocation_stmt): Set the type of the method
10363         invocation to error_mark_node. This value is later overridden by a
10364         valid type, if any. Don't handle qualified constructor invocation
10365         as qualified method invocation. Call lookup_method_invoke with its
10366         new flag. It's no longer necessary to access the selected method
10367         as the value of a tree list. Handle constructor invocation.
10368         (patch_invoke): Reverse argument list when invoking non interface
10369         methods. Insert call to new as the first argument of the
10370         constructor.
10371         (invocation_mode): Return a INVOKE_STATIC is the invoked method is
10372         defined within a final class. Return INVOKE_STATIC if the invoked
10373         method is a constructor.
10374         (lookup_method_invoke): New lc argument is a flag to indicate a
10375         constructor lookup. Now handle constructor lookup. Choose the most
10376         specific method in case several were matching the invocation
10377         requirements. Return a method decl instead of a tree list featuring
10378         one single method decl element.
10379         (refine_accessible_methods_list): New lc flag argument to
10380         indicate that a constructor is being looked up.
10381         (not_initialized_as_it_should_p): New function.
10382         (java_complete_tree): Now process fake tree codes
10383         JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR and JAVA_THIS_EXPR. Call
10384         save_expr on resolved function call arguments. Case on
10385         UNARY_PLUS_EXPR changed into a case on JAVA_UNARY_PLUS_EXPR.
10386         (patch_assignment): LHS can be a field access expression. When
10387         dealing with reference, lhs_type is the promoted type of the
10388         rhs_type, not the RHS. Use not_initialized_as_it_should_p where
10389         applicable.
10390         (operator_string): JAVA_UNARY_PLUS_EXPR replaces UNARY_PLUS_EXPR.
10391         (patch_binop): Use not_initialized_as_it_should_p where
10392         applicable.
10393         (build_unaryop): JAVA_UNARY_PLUS_EXPR replaces UNARY_PLUS_EXPR.
10394         (patch_unaryop): Likewise. And use not_initialized_as_it_should_p
10395         where applicable.
10396         (resolve_type_during_patch): New function.
10397         (patch_cast): Call resolve_type_during_patch to resolve type and
10398         report error accordingly.
10399         (patch_array_ref): Use not_initialized_as_it_should_p where
10400         applicable. Array base expression is saved before being
10401         used. Promote the type of an array elements if it contains non
10402         builtin types.
10403         (build_newarray_node, patch_newarray, build_this): New functions.
10404
10405 Thu Jul 16 10:46:47 1998  Tom Tromey  <tromey@cygnus.com>
10406
10407         * gjavah.c (print_c_decl): UTF8_GET increments pointer; don't
10408         increment it in `for' statement.
10409         (print_field_info): If number is inf or nan, don't print it.
10410         (print_method_info): If method name is `delete', just ignore it.
10411         (print_c_decl): Special-case jstringArray.
10412
10413         * gjavah.c (help): New function.
10414         (no_argument): New function.
10415         (usage): Changed text.
10416         (main): Rewrote argument handling.  Now handles -v, --help,
10417         --version.
10418         (version): New function.
10419         (found_error): New global.
10420         (main): Return found_error.
10421         (generate_access): Set found_error.
10422         (print_c_decl): Likewise.
10423
10424 Wed Jul 15 10:36:27 1998  Tom Tromey  <tromey@cygnus.com>
10425
10426         * gjavah.c (print_c_decl): Don't print "," when examining field.
10427         Skip type name when looking at "[L" types.
10428         (process_file): Now static.
10429         (generate_access): Now returns int.
10430         (last_access_generated): New global.
10431         (process_file): Clear last_access_generated; make multiple passes
10432         over the class.
10433         (print_field_info): Just return if generate_access returns true.
10434         (print_method_info): Likewise.  Also, allow <init> functions to
10435         pass through.
10436         (print_c_decl): Added is_init argument.  Print constructors
10437         properly.
10438         (print_cxx_classname): Use UTF8_GET to extract characters from
10439         string.
10440         (print_base_classname): New function.
10441         (print_class_decls): New function.
10442         (process_file): Use it.
10443         (utf8_cmp): New function.
10444
10445 Mon Jul 13 14:21:47 1998  Nick Clifton  <nickc@cygnus.com>
10446
10447         * lang-options.h: Format changed to match changes in gcc/toplev.c
10448         to implement a --help option.
10449
10450 1998-07-10  Brendan Kehoe  <brendan@cygnus.com>
10451
10452         * decl.c (init_decl_processing): Revert change to dtable_type.
10453
10454 Thu Jul  9 18:22:12 1998  Per Bothner  <bothner@cygnus.com>
10455
10456         * java-tree.h (CLASS_P):  Changed DECL_LANG_FLAG_7 -> TYPE_LANG_FLAG_4.
10457
10458 1998-07-08  Brendan Kehoe  <brendan@cygnus.com>
10459
10460         * decl.c (init_decl_processing): Set CLASS_LOADED_P on dtable_type.
10461
10462         * lang.c (lang_init): Default flag_exceptions to 1, without
10463         checking to see if it's 2 first.
10464
10465 Wed Jul  8 03:01:32 1998  Jeffrey A Law  (law@cygnus.com)
10466
10467         * constants.c: Include "system.h".
10468         * decl.c: Likewise.
10469         * lang.c (flag_new_exceptions): Get via extern now.
10470         (lang_init_options): New functions.  Turn on flag_new_exceptions.
10471
10472 Tue Jul  7 12:56:48 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10473
10474         * lex.c (java_lex): Return 0 when we see an invalid character in
10475         the input.
10476
10477         * lex.c (java_read_char): Specify extra argument when calling
10478         java_lex_error.
10479         (java_read_unicode, java_parse_end_comment,
10480         java_parse_escape_sequence): Likewise,
10481         (java_lex): Specify extra argument when calling
10482         java_lex_error. Test that IDs are beginning with a legal character
10483         for IDs. Handle invalid characters with an error message and a
10484         call to java_lex_error.
10485         (java_lex_error): Adjust column position by new argument
10486         `forward'. Issue an error even if in the middle of reporting an
10487         other error.
10488
10489 1998-07-07  Brendan Kehoe  <brendan@cygnus.com>
10490
10491         * jcf-io.c (find_class): Zero out BUFFER before we use it, since
10492         we don't explicitly put a null pointer when we're copying it.
10493
10494 Tue Jul  7 09:38:38 1998  Tom Tromey  <tromey@cygnus.com>
10495
10496         * gjavah.c (print_cxx_classname): New function.
10497         (super_class_name): Likewise.
10498         (print_super_fields): Removed.
10499         (in_super): Removed.
10500         (print_field_info): Never generate #defines.
10501         (print_c_decl): Changed generated types to match JNI.  No longer
10502         print class name before method name.
10503         (print_method_info): Print "static" before static methods.
10504         Print "virtual" before non-final methods.
10505         (usage): Use exit(1), not exit(-1).
10506         (main): Likewise.
10507         (print_field_info): Use %.17g to print a double.
10508         (last_access): New globals.
10509         (process_file): Initialize last_access.
10510         (usage): Now static.
10511         (ACC_VISIBILITY): New define.
10512         (generate_access): New function.
10513         (print_field_info): Call it.
10514         (print_method_info): Likewise.  Also, generate information for all
10515         methods, not just native methods.  Return void.
10516         (print_c_decl): Return void.
10517         (print_field_info): Return void.
10518
10519 Thu Jul  2 16:53:16 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10520
10521         * Makefile.in (JAVABISONFLAGS): Specific flag for bison when
10522         processing the jc1 grammar file. Prefix bison functions and
10523         variables with java_.
10524         (parse.c): Dependencies on parse.h and lex.h
10525         * expr.c (build_java_arrayaccess): Function now global.
10526         * java-tree.h: Comment reorganized to carry on previous
10527         classification effort.
10528         (RESOLVE_EXPRESSION_NAME_P, RESOLVE_PACKAGE_NAME_P,
10529         RESOLVE_TYPE_NAME_P): New flags on WFLs.
10530         * jcf-parse.c (parse_source_file): java_parse_source_file renamed
10531         java_parse (new prefix java_ generated by bison).
10532         (java_layout_parsed_class, java_register_parsed_class): Function
10533         call removed.
10534         (yyparse): Removed unnecessary call to init_outgoing_cpool.
10535         * lex.c (static tree wfl_op): Variable deleted.
10536         (java_init_lex): Initialize kw_super and kw_this. Initialize more
10537         ctxp fields to NULL_TREE.
10538         (java_lex): No longer create WFL for operators. Filename caching
10539         mechanism deleted. Call BUILD_OPERATOR for `.', '(', '['. Strings
10540         created as STRING_CST and later expanded. Removed extra argument
10541         to BUILD_OPERATOR and BUILD_OPERATOR2. Build operators for THIS
10542         and SUPER.
10543         (build_wfl_node): Removed code in comments.
10544         * lex.h (BUILD_OPERATOR, BUILD_OPERATOR2): No longer build a WFL but
10545         store token and location data in the current bison token.
10546         * parse.h: Removed pre-processor based symbol prefixes hack. Moved
10547         static/extern function declaration at the beginning of the file.
10548         (struct qualification): Data structure definition deleted.
10549         (RESOLVE_CHAIN_REMAINDER): Macro definition deleted.
10550         (qualify_ambiguous_name): Function declaration modified. Function
10551         now returns nothing.
10552         (build_array_ref, patch_array_ref, make_qualified_name,
10553         resolve_qualified_expression_name, maybe_generate_clinit,
10554         resolve_field_access): New static function declarations.
10555         (build_java_arrayaccess): New extern function declaration.
10556         (enum { RESOLVE_EXPRESION_NAME...}): Enum deleted.
10557         (CALL_EXPR_PRIMARY): Macro deleted.
10558         (EXPR_WFL_QUALIFICATION, QUAL_WFL, QUAL_RESOLUTION): New macros.
10559         (struct parser_ctxt): Field initialized_final
10560         removed. non_static_initialized, static_initialized: New fields.
10561         * parse.y (static tree kw_super, static tree kw_this): New global
10562         static.
10563         (%union): tree wfl field of operator member replaced by int
10564         location. WFLs are non longer created for operators.
10565         (OSB_TK, DOT_TK, THIS_TK, SUPER_TK): Tagged <operator>.
10566         (qualified_name:): Now calls make_qualified_name to build the
10567         identifier.
10568         (type_declaration:): Consider generating <clinit> when class
10569         parsing completed.
10570         (variable_declarator:): Directly build an assignment node when the
10571         variable is initialized when declared.
10572         (this_or_super:): Build a WFL and set current location when THIS
10573         or SUPER are parsed.
10574         (expression_statement:): Wrap statement around a WFL.
10575         (primary_no_new_array:): Fixed typo. Changed value returned by
10576         THIS_TK because of its new type (temporary).
10577         (dim_exprs:): Temporary fix because of OSB_TK's new type.
10578         (field_access:): Build qualified name with SUPER.
10579         (method_invocation:): Fixed returned value because of SUPER's new
10580         type.
10581         (array_access:): Use OSB_TK location information.
10582         (post_increment_expression:, post_decrement_expression:,
10583         unary_expression:, pre_increment_expression:,
10584         pre_decrement_expression:, unary_expression_not_plus_minus:,
10585         cast_expression:, multiplicative_expression:,
10586         additive_expression:, shift_expression:, relational_expression:,
10587         equality_expression:, and_expression:, exclusive_or_expression:,
10588         inclusive_or_expression:, conditional_and_expression:,
10589         conditional_or_expression:, assignment:): Use new location/token
10590         information available on operators.
10591         (create_class): Set super_decl_type to NULL_TREE when processing
10592         java.lang.Object.
10593         (register_fields): Field initialization is now a MODIFY_EXPR
10594         node. Chain initialization code to the matching lists (according
10595         the the field declaration modifiers).
10596         (maybe_generate_clinit): New function.
10597         (method_header): Don't set method's DECL_NAME to a WFL when adding
10598         methods to java.lang.Object.
10599         (resolve_and_layout): Now can return NULL_TREE if the type
10600         resolution fails. Otherwise, return the class DECL instead of its
10601         TYPE.
10602         (check_method_redefinition): Don't patch method DECL_NAME if it
10603         belongs to java.lang.Object.
10604         (process_imports): Simply assign error_found to the value returned
10605         by check_pkg_class_access.
10606         (declare_local_variables): Don't use their init statements (if
10607         any) when parsing error were previously found. Reuse MODIFY_EXPR
10608         build during parsing as an init statement.
10609         (java_method_add_stmt): Now return the current method body.
10610         (java_layout_parsed_class, java_register_parsed_class): Functions
10611         removed.
10612         (java_complete_expand_methods): Initialize the constant pool on a
10613         per class basis. Layout the classes before expanding their method
10614         bodies. Don't try expand artificial constructor code if error were
10615         found. Make the classes data and register them if no error were
10616         found.
10617         (java_complete_expand_method): Retrieve an artificial constructor
10618         argument list before entering its body. Assign the top block to
10619         the artificial constructor function body and set types of declared
10620         blocks and compound statements to void. Walk method body if not an
10621         artificial constructor.
10622         (make_qualified_name, cut_identifier_in_qualified): New functions.
10623         (resolve_expression_name): Fixed comments. Save/restore the
10624         current class CLASS_LOADED_P flag value. Build non qualified
10625         static field access and handle qualified expression names.
10626         (resolve_field_access, resolve_qualified_expression_name): New
10627         functions.
10628         (patch_method_invocation_stmt): Use the new expression resolution
10629         scheme, calling resolve_field_access when the function call is
10630         resolved as an expression.
10631         (qualify_ambiguous_name): Function rewritten to work on qualified
10632         expression produced by make_qualified_name.
10633         (java_complete_tree): Promote type when function's argument are
10634         RECORD_TYPEs. While processing the MODIFY_EXPR case: don't patch
10635         the assignment to discover further errors if RHS is a expression
10636         name that fails to evaluate. Declare LHS initialized even though
10637         the assignment failed. Don't use the location variable and removed
10638         extra argument in patch function calls. Now handle the ARRAY_REF
10639         case and build internal string representation when STRING_CSTs are
10640         walked.
10641         (build_method_invocation): Don't wrap function call around a WFL.
10642         (build_assignment): Likewise. Use the operator location
10643         information.
10644         (patch_assignment): Handle array access LHSs. Handle error
10645         provenance, resulting in a better error report.
10646         (build_binop): Use op_location from operator as binop location
10647         information.
10648         (build_unaryop, build_incdec, build_cast): Likewise.
10649         (patch_binop): Extract location information from the node. Fixed
10650         typo in error message.
10651         (patch_unary_op): Extract location information from the node.
10652         (build_array_ref, patch_array_ref): New functions.
10653
10654 Wed Jul  1 13:11:36 1998  Tom Tromey  <tromey@cygnus.com>
10655
10656         * expr.c (expand_java_INSTANCEOF): Changed calling convention to
10657         match _Jv_IsInstanceOf.
10658         * decl.c (init_decl_processing): Use _Jv_NewArray, not
10659         soft_newarray.  Use _Jv_IsInstanceOf, not soft_instanceof.
10660
10661 Tue Jun 30 14:12:54 1998  Tom Tromey  <tromey@cygnus.com>
10662
10663         * decl.c (init_decl_processing): Functions are now named
10664         _Jv_MonitorEnter and _Jv_MonitorExit, and return jint.
10665
10666 Mon Jun 29 14:47:10 1998  Per Bothner  <bothner@cygnus.com>
10667
10668         * java-tree.h (load_class):  Add prototype.
10669         * class.c (is_compiled_class):  Add missing arg to load_class.
10670         * expr.c (expand_java_NEW):  Call load_class.
10671         * parse.y (process_import):  Removed bogus use of void return value.
10672
10673 Thu Jun 25 11:50:48 1998  Per Bothner  <bothner@cygnus.com>
10674
10675         * decl.c, java-tree.h (soft_athrow_node):  Renamed to soft_node.
10676         Function name is "_Jv_Throw" instead of "soft_athrow".
10677         * decl.c, java-tree.h (soft_new_node):  Renamed to alloc_object_node.
10678         Function name is "_Jv_AllocObject" instead of "soft_new".
10679         Takes an extra parameter (object size).
10680         * expr.c:  Update calls.
10681
10682 Wed Jun 24 13:59:02 1998  Per Bothner  <bothner@cygnus.com>
10683
10684         * lex.c (java_get_line_col):  Handle end-of-file.
10685         * except.c (expand_end_java_handler):  Handle null type (i.e. finally).
10686
10687 Wed Jun 24 09:22:34 EDT 1998  Andrew MacLeod  <amacleod@cygnus.com>
10688
10689         * lang.c (lang_init): Make -fexceptions the default.
10690         * except.c (maybe_start_try, maybe_end_try): Don't do anything if
10691         exception handling is not turned on.
10692
10693 Tue Jun 23 10:17:09 EDT 1998  Andrew MacLeod  <amacleod@cygnus.com>
10694
10695         * lang.c (flag_new_exceptions): Make this this default.
10696         * decl.c (end_java_method): Call emit_handlers.
10697         * except.c (method_init_exceptions): Set language code and version.
10698         (expand_start_java_handler): Enable exception, and call
10699         expand_eh_region_start.
10700         (expand_end_java_handler): Enable exception, and set up catch blocks.
10701         (emit_handlers): New routine to generate the saved handlers.
10702         * java-except.h (emit_handlers): Add prototype.
10703
10704 Fri Jun 12 11:31:24 1998  Per Bothner  <bothner@cygnus.com>
10705
10706         We used to have three different representations of the constant pool:
10707         the CPool structure, the tree_constant_pool, and the constructures
10708         used to build the Class object (which may need class and string
10709         constants) in compiled code.  None were appropriate for compiling
10710         to .class files, so I did a major overhaul.
10711
10712         First, the tree_constant_pool array was removed.  Things were
10713         modified to the CPool structure in the JCF could be used.
10714         Second, a "capacity" field was added to the CPool, and functions
10715         written to search for a matching constant, adding one if not found.
10716         The code that generated the Class object was changed to use a CPool.
10717         The actual TREE_LISTs used to build the CONSTRUCTORs used for
10718         the static Class object are now only in build_constants_constructor.
10719         Finally, I wrote code which can generate a .class file (including its
10720         constant pool) from the RECORD_TYPE of a class.  This is a big step
10721         on the way to compiling Java source into .class files.
10722
10723         * jcf-write.c:  New file. Writes out a RECORD_TYPE as a .class file.
10724         * Makefile.in (JAVA_OBJS):  Added jcf-write.o.
10725
10726         * java-tree.h (CPOOL_UTF, CONSTANT_ResolvedFlag,
10727         CONSTANT_ResolvedString, CONSTANT_ResolvedClass):  New macros.
10728         (NAME_AND_TYPE_NAME, NAME_AND_TYPE_SIGNATURE, COMPONENT_REF_NAME,
10729         COMPONENT_REF_NAME_AND_TYPE, COMPONENT_REF_SIGNATURE): Redefined.
10730         (COMPONENT_REF_CLASS):  Replaced by COMPONENT_REF_CLASS_INDEX.
10731         (lang_type):  Removed constant_pool field.
10732         * jcf.h (CPool):  Renamed size to count.  Added field capacity.
10733         (CPOO_COUNT, CPOOL_UINT, CPOOL_USHORT1, CPOOL_USHORT2,
10734         CPOOL_FINISH, CPOOL_INIT, CPOOL_REINIT):  New macros.
10735         Rewrite some of the old JCF_XXX in terms of CPOOL_XXX macros.
10736
10737         * constants.c (current_constant_pool_tags, current_constant_pool_data,
10738         current_constant_pool_length), java-tree.h: Replaced by outgoing_cpool.
10739         * constants.c (build_constants_constructor):  Use new outgoing_cpool.
10740         (set_constant_entry, find_constant1, find_constant2,
10741         find_class_constant, count_constant_pool_bytes, write_constant_pool,
10742         find_utf8_constant, find_class_or_string_constant):  New functions.
10743
10744         * jcf-parse.c (load_class):  Don't save/restore tree-constant_pool.
10745         (get_constant):  Use current_jcf.cpool instead of tree_constant_pool.
10746         (give_name_to_class, get_class_constant):  Likewise.
10747         * jcf-parse.c, java-tree.h (tree_constant_pool):  Removed.
10748         (get_name_and_type_constant, get_ref_constant):  Removed.
10749         * parse.h (parser_ctxt):  Remove field tree_constant_pool.
10750         * parse.y:  Don't save/restore tree_constant_pool.
10751         * verify.c (verify_jvm_instructions):  Update for new approach.
10752         * expr.c (expand_invoke, expand_java_field_op): Likewise.
10753
10754         * lang-options.h:  Added -femit-class-file, -femit-class-files.
10755         * lang.c (flag_emit_class_files), java-tree.h:  New flag.
10756         (lang_f_options):  Added "emit-class-file(s)".
10757
10758         * expr.c (build_java_arrayaccess):  Generate more efficient array
10759         bounds checking, by using unsigned compare.
10760
10761         * expr.c (expand_invoke):  Re-arrange error checks to make more robust.
10762
10763 Wed Jun 10 17:34:42 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10764
10765         * parse.h: New comment on the handling of unresolved type
10766         identifiers. JDEPs are now part of the jdep_code enum.
10767         (typedef struct jdep): Now use enum jdep_code or int, depending on
10768         availability. Both are narrowed down to an 8 bits bitfield.
10769         (CALL_EXPR_PRIMARY): Fixed comment.
10770
10771 Wed Jun 10 10:54:39 1998  Tom Tromey  <tromey@cygnus.com>
10772
10773         * Make-lang.in (java): Added gjavac and jvgenmain.
10774         (java.start.encap): Depend on gjavac.
10775         (java.rest.encap): Depend on jvgenmain.
10776
10777         * Make-lang.in (JAVA_INSTALL_NAME): Name is gjavac, not c++.
10778         (JAVA_CROSS_NAME): Likewise.
10779         (java.all.build): Depend on jvgenmain and gjavac.
10780         (java.all.cross): Depend on jvgenmain and gjavac-cross.
10781         (jvgenmain$(exeext)): New target.
10782         (java.install-common): Wrote.
10783         * config-lang.in (compilers, stagestuff): Added gjavac and
10784         jvgenmain.
10785
10786 Wed Jun 10 12:19:04 1998  Dave Brolley  <brolley@cygnus.com>
10787
10788         * lang.c (lang_decode_option): New argc/argv interface.
10789
10790 Tue Jun  9 18:12:46 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10791
10792         * ChangeLog: Fixed entries not compliant with the Gnu Coding Standard.
10793         * decl.c (build_decl_no_layout): New function.
10794         * expr.c (java_lang_expand_expr): Layout declarations found in
10795         blocks before they're pushed.
10796         * jcf-parse.c (load_class): Save current line when parsing class
10797         file.
10798         (parse_source_file): Register class before expanding their
10799         methods.
10800         * lang.c (put_decl_node): Produce `null' when `void *' is
10801         processed.
10802         * lex.c (static tree wfl_op): New static global, for error report
10803         on casts.
10804         (java_init_lex): wfl_operator and wfl_op initialized
10805         here. Filename caching added for wfl_op. Return wfl_op when `(' is
10806         parsed.
10807         * parse.h (build_unaryop, build_incdec, patch_unaryop, build_cast,
10808         patch_cast, valid_ref_assignconv_cast_p, can_cast_to_p,
10809         build_unresolved_array_type): New static function definitions.
10810         (build_decl_no_layout): New extern function declared.
10811         (OBSOLETE_MODIFIER_WARNING): Report error only if the WFL of the
10812         faulty modifier exists.
10813         (TYPE_INTERFACE_P, TYPE_CLASS_P): New macros.
10814         (ERROR_CAST_NEEDED_TO_INTEGRAL): Error message tuned.
10815         (UNARY_PLUS_EXPR): New fake operator.
10816         (struct parser_ctxt): New field osb_number.
10817         * parse.y (static tree wfl_operator): New static WFL for operator
10818         bound error messages.
10819         (DECR_TK, INCR_TK): Moved.
10820         (OP_TK): Tagged <operator>.
10821         (array_type:): Now call build_unresolved_array_type.
10822         (dim_expr:): Count the number of '[' seen.
10823         (post_increment_expression, post_decrement_expression,
10824         pre_increment_expression, pre_decrement_expression,
10825         unary_expression_not_plus_minus, unary_expression:): Actions are
10826         now building the corresponding unary expressions.
10827         (cast_expression:): Actions are now building cast expressions.
10828         (build_unresolved_array_type): New function.
10829         (create_interface): Reset the number of declared interfaces.
10830         (create_class): Likewise.
10831         (method_header): Methods declared within the scope of an interface
10832         are now implicitly set public and abstract.
10833         (java_complete_class): Variable's and parameter's type are patched
10834         with a promoted type.
10835         (declare_local_variables): Resolved non builtin types are promoted
10836         before being used to build a variable decl. Removed type patch
10837         posted on variable initialization statement.
10838         (source_start_java_method): Use build_decl_no_layout to build the
10839         decl of a parameter of incomplete type.
10840         (java_register_parsed_class): Process interfaces too. Call
10841         rest_of_decl_compilation on each processed class declarations.
10842         (java_complete_expand_methods): Don't attempt to expand things in
10843         interfaces.
10844         (java_complete_tree): Process CONVERT_EXPR, even though it always
10845         has a type. Propagate error_mark_node to node's type too. Promote
10846         method's call argument type and return error_mark_node if
10847         argument's completion didn't work. MODIFY_EXPR can have a WFL as a
10848         RHS. Fixed bug in the handling of bogus RHS of a fixed type. Now
10849         handle unary operator nodes.
10850         (build_assignment): Added comment.
10851         (print_int_node): New function.
10852         (patch_assignment): New second argument. New error handling. Use
10853         print_int_node. Handle references. Use can_cast_to_p to issue
10854         different error message according to the context and check upon
10855         the initialization of the RHS.
10856         (can_cast_to_p, valid_ref_assignconv_cast_p): New functions.
10857         (operator_string): Handle more operators.
10858         (patch_binop): No longer use a function static
10859         wfl_operator. Improved error message on shift distance.
10860         (build_unaryop, build_incdec, build_cast, patch_unaryop,
10861         patch_cast): New functions.
10862
10863 Fri Jun  5 18:03:07 1998  Per Bothner  <bothner@cygnus.com>
10864
10865         * jvspec.c:  New file.
10866         * Make-lang.in:  New rules to build gjavac from jvspec.c and ../gcc.c.
10867
10868         * java-tree.h (identifier_subst):  Add declaration.
10869
10870 Thu Jun  4 13:44:23 1998  Tom Tromey  <tromey@cygnus.com>
10871
10872         * jvgenmain.c (main): Generate call to JvRunMain.
10873
10874         * class.c (make_class_data): Push value for "sync_info" field.
10875         * decl.c (init_decl_processing): Push "sync_info" field.
10876
10877 Wed Jun  3 20:39:14 1998  Per Bothner  <bothner@cygnus.com>
10878
10879         * typeck.c (build_java_array_type):  Set TYPE_NAME to actual
10880         Java (source) name, not signature.
10881         Set TYPE_ALIGN to (at least) that of element_type.
10882
10883 Tue Jun  2 15:19:19 1998  Per Bothner  <bothner@cygnus.com>
10884
10885         * class.c:  Moved classname-mangling-rekated code to ...
10886         * mangle.c:  ... this new file.
10887         * jvgenmain.c:  New program (needs mangle.c) to generate main program.
10888         * Makefile.in:  Update for above changes.
10889
10890 Mon Jun  1 09:58:36 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10891
10892         * expr.c (truthvalue_conversion): Convert integer and floating
10893         point value to their truth value.
10894         * lex.c (java_lex): Handle the `null' literal.
10895         * parse.h (JREFERENCE_TYPE_P, DECL_P): New macros.
10896         (ERROR_CANT_CONVERT_TO_BOOLEAN, ERROR_CANT_CONVERT_TO_NUMERIC,
10897         ERROR_CAST_NEEDED_TO_INTEGRAL, ERROR_VARIABLE_NOT_INITIALIZED):
10898         New macros.
10899
10900         * parse.y: Reorganization/documentation on token declaration.
10901         (binop_lookup[]): New added new tree codes.
10902         (relational_expression): Build corresponding binary operators.
10903         (equality_expression, conditional_and_expression,
10904         conditional_or_expression): Likewise.
10905         (java_complete_class): Fix crash in debug message.
10906         (java_complete_tree): Check initialization of method call
10907         arguments. Further bogus node evaluation to detect more error
10908         during assignments. Handles more binary operators.
10909         (patch_assignment): Use DECL_P.
10910         (build_binop): Fix crash when using URSHIFT_EXPR, a Java only tree
10911         code.
10912         (operator_string): Handle more case. Compacted source.
10913         (patch_binop): Changed function comment. Checking for
10914         uninitialized first operand takes the compound assignment into
10915         account and uses DECL_P. Checking for uninitialized second operand
10916         delayed to routine's end. Use macros to issue type bound error
10917         messages and issue messages on both operands if their types are
10918         different. Force fixed type into node. Handle all binary
10919         operators.
10920
10921 Wed May 27 10:30:31 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
10922
10923         * java-tree.h (COMPOUND_ASSIGN_P, INITIALIZED_P): New macros.
10924         * lex.c (java_lex): Use BUILD_OPERATOR and BUILD_OPERATOR2 to
10925         build operator node and return tokens.
10926         * lex.h (BUILD_OPERATOR, BUILD_OPERATOR2): New macros.
10927         * parse.h (java_complete_tree): Changed returned type in prototype.
10928         (build_method_invocation, build_assignment, patch_assignment,
10929         patch_binop): New static function declarations.
10930         (JFLOAT_TYPE_P, JNUMERIC_TYPE_P, JPRIMITIVE_TYPE_P, JSTRING_P,
10931         BUILD_EXPR_WFL): New macros.
10932         * parse.y (enum tree_code binop_lookup[]): New static for token to
10933         TREE_CODE lookup.
10934         (%union): Parser union has new sub-structure `operator'.
10935         (ASSIGN_TK, MULT_ASSIGN_TK, DIV_ASSIGN_TK, REM_ASSIGN_TK,
10936         PLUS_ASSIGN_TK, MINUS_ASSIGN_TK, LS_ASSIGN_TK, SRS_ASSIGN_TK,
10937         ZRS_ASSIGN_TK, AND_ASSIGN_TK, XOR_ASSIGN_TK, OR_ASSIGN_TK,
10938         ASSIGN_ANY_TK): Tokens tagged `operator'.
10939         (EQ_TK, GTE_TK, ZRS_TK, SRS_TK, GT_TK, LTE_TK, LS_TK, BOOL_AND_TK,
10940         AND_TK, BOOL_OR_TK, OR_TK, INCR_TK, PLUS_TK, DECR_TK, MINUS_TK,
10941         MULT_TK, DIV_TK, XOR_TK, REM_TK, NEQ_TK, NEG_TK, REL_QM_TK,
10942         REL_CL_TK, NOT_TK, LT_TK): Tokens tagged `operator'.
10943         (assignment_operator:): Rule tagged `operator'.
10944         (expression_statement:): Re-installed default rule.
10945         (method_invocation:): Sub rules call build_method_invocation.
10946         (postfix_expression:): Don't attempt to resolve name here. Just
10947         return an ID.
10948         (multiplicative_expression:): Sub-rules build corresponding binop
10949         expression node.
10950         (additive_expression:, shift_expression:, and_expression:,
10951         exclusive_or_expression:, inclusive_or_expression:): Likewise.
10952         (assignment:): Sub rule invoke build_assignment.
10953         (assignment_operator:): Default rules on sub rules.
10954         (force_error): Added documentation on this variable.
10955         (declare_local_variables): Build initialization calling
10956         build_assignment.
10957         (expand_start_java_method): Removed unused rtx declaration. Mark
10958         arguments as already initialized.
10959         (java_method_add_stmt): Type of built COMPOUND_EXPR set to NULL.
10960         (java_complete_expand_methods): Don't process next method if
10961         completion of the previous one triggered errors.
10962         (java_complete_expand_method): Call source_end_java_method if no
10963         error were found during completion.
10964         (resolve_expression_name): Use IDENTIFIER_LOCAL_VALUE to retrieve
10965         locals declaratilon. Handle names found within a class. Return
10966         error_mark_node when things aren't found.
10967         (patch_method_invocation_stmt): Return error_mark_node on failures.
10968         (patch_invoke): Removed unused local. Return the correct node.
10969         (java_complete_tree): Now returns a value. The BLOCK section binds
10970         local identifiers and the type of a BLOCK is now void. Assign the
10971         result of operand completion on COMPOUND_EXPR. Assign the
10972         encapsulated node of a WFL to the result of its completion, except
10973         when the node is an identifier. Now handle MODIFY_EXPR and several
10974         binary operators. Return error_mark_node on errors.
10975         (build_method_invocation, build_assignment, patch_assignment,
10976         build_binop, operator_string, patch_binop): New functions.
10977         * typeck.c (binary_numeric_promotion): New function.
10978
10979 Thu May 21 12:01:04 1998  Per Bothner  <bothner@cygnus.com>
10980
10981         * class.c (identifier_subst):  New convenience wrapper for ident_subst.
10982         Replace most uses of ident_subst by identifier_subst.
10983
10984         * class.c (push_class_static_dummy_field):  Removed function.
10985         (build_class_ref):  Find Class object decl by looking up "CNAME.class",
10986         instead of looking got "class" static field.  Create that decl here.
10987         (class_identifier_node):  Removed;  no longer needed.
10988         (init_class_processing):  Don't init class_identifier_node.
10989         * jcf-parse.c (jcf_parse):  Don't call push_class_static_dummy_field.
10990         Do nreverse 0 times (instead of twice) for Object and Class.
10991         * parse.y (java_layout_parsed_class): No push_class_static_dummy_field.
10992
10993 Wed May 20 16:35:04 1998  Per Bothner  <bothner@cygnus.com>
10994
10995         * jcf-parse.c (parse_class-file):  Set lino to smallest line number,
10996         while initializing linenumber_count and linenumber_table.
10997         Do it before init_function_start (which calls emit_line_note).
10998         * expr.c (expand_byte_code):  Don't need to clear lineno here.
10999
11000 Mon May 18 16:23:32 1998  Tom Tromey  <tromey@cygnus.com>
11001
11002         * class.c (append_gpp_mangled_type): If `qualifications' is >=9,
11003         then mangle number as _N_.
11004
11005         * class.c (mangle_class_field): New function.
11006         (build_class_ref): Set assembler name of class reference using
11007         mangle_class_field.
11008         (push_class_static_dummy_field): Likewise.
11009
11010 Sun May 17 12:52:35 1998  Michael Tiemann <tiemann@cygnus.com>
11011
11012         * parse.y (source_start_java_method): Use TREE_SET_CODE instead
11013         of assigning to TREE_CODE.  The latter method exploits a feature
11014         of GCC that is not ANSI compliant.
11015
11016 Thu May 12 13:44:27 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11017
11018         * decl.c (pushdecl_force_head): New function.
11019         (pushlevel): Removed conditional printf.
11020         (complete_start_java_method): Don't enter local variable scope if
11021         function is compiled from source code.
11022         * expr.c: parse.h now included
11023         (java_lang_expand_expr): New function.
11024         * jcf-io.c (find_class): Use SOURCE_FRONTEND_DEBUG instead of
11025         printf. Terminate buffer when doing directories.
11026         * jcf-parse.c (parse_source_file): Call lang_init_source before
11027         parsing and before code generation.
11028         * jcf.h (SOURCE_FRONTEND_DEBUG): Macro redefined to conditionally
11029         use printf if the macro is defined.
11030         * lang.c (lang_init): Install lang_expand_expr hook on
11031         java_lang_expand_expr.
11032         (java_dummy_print): New function.
11033         (lang_init_source): New function.
11034         * lex.c (java_lex): Remember location of an opening brace at the
11035         second nesting level.
11036         (java_is_eol): Unget character seen after a CR if it is EOF.
11037         * parse.h: Now includes lex.h
11038         (SOURCE_FRONTEND_DEBUG): Macro redefined to conditionally use
11039         printf if the macro is defined.
11040         (expand_start_java_method, build_expr_block, enter_block,
11041         exit_block, lookup_name_in_blocks, maybe_absorb_scoping_blocks):
11042         New static function declarations.
11043         (pushdecl_force_head): New extern function declaration.
11044         (INCOMPLETE_TYPE_P): New macro.
11045         (JDEP_PARM, JDEP_TYPE): New entries in JDEPs enum.
11046         (BLOCK_CHAIN_DECL, BLOCK_EXPR_DECLS, BLOCK_EXPR_BODY,
11047         BLOCK_EXPR_ORIGIN): New macros.
11048         (DECL_SOURCE_LINE_MERGE, DECL_SOURCE_LINE_FIRST,
11049         DECL_SOURCE_LINE_LAST): New macros.
11050         (struct parser_ctxt): Removed field current_method_decl, redundant
11051         with the field current_function_decl. Added fields
11052         first_ccb_indent1 and pending_block.
11053         * parse.y (method_body, literal, INT_LIT_TK, FP_LIT_TK,
11054         BOOL_LIT_TK, CHAR_LIT_TK, STRING_LIT_TK, NULL_TK, VOID_TK): Rules
11055         tagged <node>
11056         (SOURCE_FRONTEND_DEBUG): Used as macro accepting varargs.
11057         (compilation_unit:): Cosmetic on sub rule.
11058         (type_declaration:): Cosmetic on sub rules. Added an error rule.
11059         (variable_initializer:): Installed default rule on expression:.
11060         (method_declaration:): method_header: starts a new
11061         method. method_body: installs the function body, absorbs blocks
11062         emitted for temporary variable scopings, pops function's body block
11063         and merges function's last statement lineno in DECL_SOURCE_LINE.
11064         (method_body:): Installed default rules.
11065         (block:): Call enter_block when an opening brace is seen.  Absorb
11066         scoping blocks and call exit_block when a closing brace is seen.
11067         (block_statement:): Cosmetic changes.
11068         (method_invocation:): Create WFL around CALL_EXPR node.
11069         (patch_stage): Added comment around definition.
11070         (method_header): Try to use first_ccb_indent1 as the first line of
11071         the method, so BP debug info are emitted at the first opening
11072         brace of the function. If the function has no body, use the
11073         location of the function's name. Override currently defined method
11074         name with the matching WFL so we can point redefinition errors
11075         using the location where the function's name was declared.
11076         (check_abstract_method_header): Interprets DECL_NAME as an
11077         identifier or as a WFL, accordingly.
11078         (java_complete_class): New cases for JDEP_TYPE and JDEP_PARM.
11079         (check_method_redefinition): Use DECL_NAME as a WFL. Extract
11080         location and name information out of it and reinstall DECL_NAME to
11081         its original identifier node value.
11082         (lookup_cl): Use DECL_SOURCE_LINE_FIRST (first line of the
11083         function's source code).
11084         (read_import_dir): Test the value returned by find_class and issue
11085         a fatal accordingly.
11086         (declare_local_variables): Push a new block for the scope of the
11087         new variable(s) if code has been already generated at that nesting
11088         level. Pinpoint redefinition errors using the variable id
11089         WFLs. Generate initialization code if necessary. If the variable
11090         type is incomplete, register a patch on its decl.
11091         (source_start_java_method): Rewritten. Define a new block for the
11092         function's parameters. Build parameter decl out of function's
11093         arguments and register them for a patch if their types are
11094         incomplete.
11095         (expand_start_java_method): Includes the part of
11096         source_start_java_method that was pushing the parameter decls and
11097         completing the method start code.
11098         (source_end_java_method): Removed call the expand_end_bindings and
11099         poplevel (already taken care of). Reinstall function's arguments
11100         and get function's last line of code before calling
11101         expand_function_end.
11102         (java_method_add_stmt): New comment before the function's
11103         code. Complement the second operand of the current COMPOUND_EXPR
11104         if necessary.
11105         (java_complete_expand_methods): Don't generate debug info on line
11106         zero when expanding a generated constructor.
11107         (java_complete_expand_method): Set start and end line numbers for
11108         a artificially generated constructor to one and manually call
11109         enter_block and exit_block when defining it. For all methods:
11110         expand function's start calling the new expand_start_java_method
11111         and invoke java_complete_tree on the effective method's body, if
11112         any.
11113         (resolve_expression_name): Now use lookup_name_in_blocks to search
11114         local variable decls and print out an error when variables are
11115         undefined.
11116         (patch_method_invocation_stmt): Inserted comment before the
11117         function's code.
11118         (lookup_method_invoke): Chain method's arguments using chainon
11119         with the current arg list as a second argument. Inserted missing
11120         IDENTIFIER_POINTER when reporting an error on methods not found.
11121         (refine_accessible_methods_list): Don't retain constructors.
11122         (patch_arguments): Function removed.
11123         (java_complete_tree): Inserted comment before the function's
11124         code. New case for BLOCKs. Moved the WFL case a bit
11125         further. Complete function's arguments.
11126         (build_expr_block, enter_block, exit_block, lookup_name_in_blocks,
11127         maybe_absorb_scoping_blocks): New functions.
11128
11129 Mon Apr 27 10:50:05 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11130
11131         * jcf-io.c (find_class): Reset jcf->java_source after JCF_ZERO, if
11132         previously set.
11133         * jcf-parse.c (parse_source_file, java_error_count): New forward
11134         and extern declarations.
11135         (java_parse_abort_on_error): Macro moved.
11136         (jcf_parse_source): fatal called if fopen fails. Now calls
11137         parse_source_file.
11138         (parse_source_file): New parse_only parameter. Reflects the
11139         elimination of the second pass.
11140         (yyparse): parse_source_file called with argument set to 0.
11141         * jcf.h (JCF_ZERO): Sets java_source to zero.
11142         * lex.c (java_init_lex): pass argument is gone. Function modified
11143         to be called once during the analysis of a file.
11144         (java_unget_unicode): Fixed typo in fatal message.
11145         (java_get_line_col): Likewise.
11146         (java_lval): Likewise. String literals no longer built during
11147         second pass.
11148         * lex.h (JAVA_COLUMN_DELTA): Take the tabulation character into
11149         account.
11150         * parse.h (MODIFIER_WFL): New macro.
11151         (parse_check_super, parser_check_super_interface): Now return int.
11152         (parser_chain_incomplete_item, not_builtin_p,
11153         complete_method_decl): Declarations removed.
11154         (build_method_invocation_stmt, build_invoke): Renamed using the
11155         `patch' instead of `build'
11156         (register-incomplete_type, obtain_incomplete_type,
11157         java_complete_tree, java_complete_expand_method,
11158         unresolved_type_p, create_jdep_list): New function declarations.
11159         (IC_TYPE, IC_DEPEND, DEPEND_DECL, DEPEND_WFL, BEGIN_ONLY_PASS,
11160         END_ONLY_PASS, ELSE_ONLY_PASS): Macro deleted.
11161         (jdep): New typedef on new struct _jdep.
11162         (JDEP_DECL, JDEP_DECL_WFL, JDEP_KIND, JDEP_SOLV, JDEP_WFL,
11163         JDEP_MISC, JDEP_APPLY_PATCH, JDEP_GET_PATCH, JDEP_CHAIN,
11164         JDEP_TO_REVOLVE, JDEP_RESOLVED_DECL, JDEP_RESOLVED,
11165         JDEP_RESOLVED_P): New macros.
11166         (JDEP_NO_PATCH, JDEP_SUPER, JDEP_FIELD, JDEP_METHOD,
11167         JDEP_METHOD_RETURN, JDEP_METHOD_END, JDEP_INTERFACE,
11168         JDEP_VARIABLE): New enum values and jdep kinds.
11169         (jdeplist): New typedef on struct _jdeplist.
11170         (CLASSD_FIRST, CLASSD_LAST, CLASSD_CHAIN, JDEP_INSERT): New
11171         macros.
11172         (CALL_EXPR_PRIMARY): New macro.
11173         (struct parser_ctxt): Fields java_pass, current_method_decl,
11174         method_decl_list deleted. New field jdeplist.
11175         (INCOMPLETE_P): Macro deleted.
11176         * parse.y (single_type_import_declaration:): Removed pass switch.
11177         (type_import_on_demand_declaration): Likewise.
11178         (field_declaration:): Removed pass switch on all sub rules.
11179         (class_declaration:): Call the complete_class_decl removed on
11180         class_body rules.
11181         (method_declaration:): Removed second pass switch. No longer chain
11182         methods decl when method_header reduced.
11183         (method_header:): Sub rules no longer depend on pass switch.
11184         (method_declarator:): Likewise.
11185         (method_body:): Likewise.
11186         (abstract_method_declaration:): Likewise.
11187         (block_statement:): Likewise.
11188         (local_variable_declaration:): Likewise.
11189         (argument_list:): Likewise.
11190         (method_invocation:): Likewise. Call to build_method_invocation_stmt
11191         removed. Partial CLASS_EXPR tree node built instead.
11192         (postfix_expression:): Removed pass switch on all sub rules.
11193         (java_pop_parser_context): Free classd_list content.
11194         (yyerror): Call obstrack_grow0 to finalize error message.
11195         (check_class_interface_creation): Comment modified to reflect new
11196         returned value meaning. Removed second pass switch. Return 1 if an
11197         error was found, 0 otherwise. Adjust pointer on filename if a
11198         leading path separator was found.
11199         (maybe_create_class_interface_decl): Removed first pass switch
11200         when linking the class decl to the class_list. Install a new
11201         jdep_list for the class.
11202         (add_superinterfaces): List of unresolved interfaces is
11203         gone. Unresolved interfaces are directly added to the current
11204         dependencies list.
11205         (create_interface): Second pass shortcut removed.
11206         ctpx->modifier_ctx access through MODIFIER_WFL.
11207         (create_class): Second pass shortcut removed. Call to
11208         register_incomplete_type replaces the call to
11209         parser_chain_incomplete_item.
11210         (complete_class_decl): Function removed.
11211         (duplicate_declaration_error): New way of retrieving redeclared
11212         item type.
11213         (register_fields): Call to lookup_modifier_cl replaced by
11214         MODIFIER_WFL. New way of handling unresolved type, using
11215         unresolved_type_p and obtain_incomplete_type.
11216         register_incomplete_type replaces call to parser_chain_incomplete_item.
11217         (patch_stage): New static global variable.
11218         (method_header): New way of handling unresolved type, using
11219         unresolved_type_p and obtain_incomplete_type. patch_stage used to
11220         indicates that the method decl needs to be patched.
11221         (check_abstract_method_header): Call to lookup_modifier_cl
11222         replaced by MODIFIER_WFL.
11223         (method_declarator): Incomplete argument type are registered
11224         calling register_incomplete_type. Patch on the declared method is
11225         issued in that case.
11226         (unresolved_type_p): New function.
11227         (parser_check_super_interface): New comment to reflect function's
11228         modified returned type (int). Function and has a new argument
11229         this_wfl. Call to parse_error_context uses this_wfl instead of
11230         relying on lookup_cl.
11231         (parser_check_super): Comment reflects function's new returned
11232         type (int). Function returns non zero value on error.
11233         (create_jdep_list, reverse_jdep_list, obtain_incomplete_type,
11234         register_incomplete_type, jdep_resolve_class): New functions to
11235         handle incomplete types in declarations.
11236         (java_complete_class): Rewritten to work with the new incomplete
11237         type handling scheme.
11238         (complete_class_report_errors): Likewise.
11239         (complete_method_decl): Removed: it jobs is now handled by
11240         java_complete_class.
11241         (do_resolve_class): Class loaded in not already loaded and not
11242         found in Java source code.
11243         (java_check_regular_methods, java_check_abstract_methods): Don't
11244         call complete_method_decl anymore.
11245         (lookup_modifier_cl, not_builtin_p): Functions deleted.
11246         (read_import_dir): Got rid of the pass number dependency.
11247         (declare_local_variables): New handling of unresolved types (patch
11248         issued).
11249         (source_start_java_method): New parameter level. Function called
11250         with level set to 1 when argument types are potentially
11251         unresolved.  Called to complete the job with level set to 2 once
11252         types are complete.
11253         (source_end_java_method): Call to permanent_allocation
11254         removed. Waiting to be replaced by a more suitable obstack
11255         management.
11256         (java_complete_expand_methods, java_complete_expand_method,
11257         java_expand_finals): New functions.
11258         (build_method_invocation_stmt): Renamed
11259         patch_method_invocation_stmt. Extracts function call expression
11260         (wfl) and arguments (args) from CALL_EXPR tree operands.
11261         (build_invoke): Renamed patch_invoke. Fixed typo in fatal
11262         call. Patch the function and argument operand of the CALL_EXPR
11263         tree argument.
11264         (patch_argument, java_complete_tree): New functions.
11265
11266 Mon Apr 20 18:26:57 1998  Per Bothner  <bothner@cygnus.com>
11267
11268         Recover from missing fields and methods (i.e. error instead of fatal).
11269         * decl.c, java-tree.h (TYPE_identifier_node):  New global constant.
11270         * expr.c (expand_invoke):  Recover from missing method.
11271         (expand_java_field_op):  Recover from missing field.
11272         Inline references to java.lang.{Integer,Char,...}.TYPE.
11273         * typeck.c (get_type_from_signature), java-tree.h:  New function.
11274         * class.c (add_method):  Use get_type_from_signature.
11275         (build_class_ref):  Handle a class that was not found.
11276         * typeck.c (convert):  Handle conversion to pointers (for convenience).
11277         * verify.c (verify_jvm_instructions):  Use get_type_from_signature
11278         instead of lookup_field to handle missing fields.
11279
11280         * jcf-parse.c (process_zip_dir):  Set java_source.
11281
11282 1998-04-20  Brendan Kehoe  <brendan@cygnus.com>
11283
11284         * jcf-parse.c (set_source_filename): Use TYPE_NAME, not DECL_NAME.
11285
11286 Tue Apr 14 15:59:54 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11287
11288         * jcf-parse.c (load_class): Don't change input_filename before
11289         calling jcf_parse_source (but still do it before calling
11290         jcf_parse).
11291         (jcf_parse_source): Assign input_filename after having saved the
11292         parser context.
11293         * lex.c (java_init_lex): Chain a WFL node to the import on demand
11294         list. ctxp->modifier_ctx zeroed according to its new
11295         definition. ctxp->filename initialized. Removed
11296         JAVA_MODIFIER_CTX_UNMARK.
11297         (java_unget_unicode): Update the character based column position.
11298         (java_allocate_new_line): ref_count not used anymore. Always free
11299         ctxp->p_line. Initialize c_line->char_col to 0.
11300         (java_get_unicode): Update the character based column position.
11301         (java_lex): Use ctxp->elc to store current position in source
11302         file, at the beginning of the parsed token. Set modifier_ctx entry
11303         corresponding to the parse modifier to a WFL node. Return a WFL
11304         node when an identifier is parsed.
11305         (java_lex_error): Now uses ctxp->elc to store current position in
11306         source.
11307         (build_wfl_node, java_is_eol, java_get_line_col): New functions.
11308         * lex.h (build_wfl_node): New function definitions.
11309         (struct java_line): ref_count and next fields are gone. New field
11310         char_col.
11311         (JAVA_LINE_CHECK, JAVA_LINE_MARK, JAVA_LINE_CHAIN,
11312         JAVA_LINE_UNMARK, ID_NAME, ID_CL): Macro definitions deleted.
11313         (JAVA_COLUMN_DELTA): New macro.
11314         (java_lc): New typedef on new struct _java_lc.
11315         * parse.h (lookup_cl, lookup_modifier_cl): Changed returned types.
11316         (parse_error_context, parse_warning_context): Changed prototypes.
11317         (java_get_line_col): Added as an available global function.
11318         (JAVA_MODIFIER_CTX_UNMARK): Macro removed.
11319         (IC_DECL): Replaced by macro IC_TYPE
11320         (DEPEND_WFL): New macro.
11321         (THIS_MODIFIER_ONLY): Now works with WFL and only remembers the first
11322         wrong modifier.
11323         (exit_java_complete_class): Removed a commented out statement.
11324         (struct parser_ctxt): Added comments on fields. modifier_ctx is
11325         now an array of tree nodes. Deleted fields line_list and
11326         e_line. New field elc, to replace e_line.
11327         * parse.y (array_type:): Build WFL node.
11328         (qualified_name:): Build a single WFL node out of two. Retain
11329         the location information of the first node in the resulting node.
11330         (package_declaration:): Use package name as a WFL node
11331         (single_type_import_declaration:): Use imported name as a WFL node.
11332         (type_import_on_demand_declaration:): Use root of the imported
11333         packages as a WFL node.
11334         (field_declaration:): Removed unused local variable cl.
11335         (method_declaration:): Don't call JAVA_MODIFIER_CTX_UNMARK.
11336         (yyerror): New static elc. Removed static error_line, error_pos.
11337         New local code_from_source. Save ctxp->elc into elc at the first
11338         pass. Call java_get_line_col to get a string of the line where
11339         the error occured.
11340         (debug_line): Removed static function.
11341         (parse_error_context, parse_warning_context): Parameter cl is now
11342         a WFL node. Use its value to initialize ctxp->elc.
11343         (redefinition_error): Parameter cl is now a WFL node.
11344         (parse_add_interface): New parameter wfl. No longer call
11345         lookup_cl, use wfl instead.
11346         (check_class_interface_creation): Parameter cl is now a WFL node.
11347         (maybe_create_class_interface_decl): Likewise.
11348         (add_superinterfaces): New function.
11349         (create_interface): Removed local cl, node, super_decl,
11350         super_decl_type.  Function now uses id as a WFL node. Better
11351         warning/error report on obsolete or forbidden mix of
11352         modifiers. Now calls add_superinterfaces to register interfaces.
11353         (create_class): Removed local cl, node. Local variable id is used
11354         as a WFL node. Better error report on forbidden modifier
11355         mix. Uses add_superinterfaces to register interfaces.
11356         (find_field): Argument cl is now a WFL node. Now store the WFL
11357         node of a fields that needs to be checked for their
11358         initialization.
11359         (method_header): Local variable node non longer used. Local
11360         variable id replaces cl.
11361         (check_modifiers_consistency): Local variable cl is now a WFL
11362         node.
11363         (method_declarator): Local variable cl replaced by parameter id.
11364         (parser_qualified_name): Now uses parameter name as a WFL node.
11365         (parser_check_super_interface): New parameter wfl, for achieve
11366         greater accuracy during error reports.
11367         (parser_chain_incomplete_item): New parameter named location. Used,
11368         along the decl, to construct the incomplete item node.
11369         (java_complete_class): resolve_class now uses WFL node extracted
11370         from the incomplete item node. Macro IC_TYPE replaces TREE_PURPOSE
11371         where appropriate.
11372         (complete_method_decl): Unresolved function's argument types are WFL.
11373         (resolve_class): Parameter cl is now a WFL node.
11374         (resolve_and_layout): Likewise.
11375         (do_resolve_class): Likewise. Try first to use cl and then do the
11376         lookup on the decl when calling check_pkg_class_access.
11377         (complete_class_report_errors): Use IC_TYPE in place of
11378         TREE_PURPOSE where appropriate. Use DEPEND_WFL on dependency
11379         instead of doing a lookup over the decl.
11380         (java_check_final): Use WFL info from field tree list.
11381         (lookup_cl): Rewritten and returns a statically defined WFL node.
11382         (lookup_modifier_cl): Now uses information from WFL nodes.
11383         (process_imports): Likewise.
11384         (read_import_dir): name and cl arguments replaced by a single WFL
11385         node. Function modified accordingly.
11386         (find_in_imports_on_demand): Now uses WFL node.
11387         (check_pkg_class_access): cl argument is now a WFL node.
11388         (declare_local_variables): Fixed to use WFL nodes.
11389         (resolve_expression_name): Likewise.
11390         (build_method_invocation_stmt): name_combo argument renamed
11391         wfl. Function modified to use WFL nodes.
11392         (build_invoke): cl used as a WFL node when calling build_expr_wfl.
11393         (lookup_method_invoke): cl is now a WFL node. Added missing
11394         IDENTIFIER_POINTER to class type decl name.
11395
11396 Tue Apr 14 15:23:29 1998  Dave Brolley  <brolley@cygnus.com>
11397
11398         * lang.c (init_parse): Now returns char* containing the filename.
11399
11400 Fri Apr 10 11:36:04 1998  Per Bothner  <bothner@cygnus.com>
11401
11402         * class.c (layout_class):  Mangle repeated arg types to match cc1plus.
11403
11404         * decl.c, java-tree.h (integer_four_node):  New INTEGER_CST node.
11405         * class.c (make_class_data):  If flag_assume_compiled, initial class
11406         state is CSTATE_PREPARED; make superclass and interfaces direct
11407         references, rather than constant pool indexes.
11408
11409 Thu Apr  9 16:10:56 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11410
11411         * parser.y: Include flags.h. Removed debug variable pl.
11412         (method_declaration:): Uses ctxp->parser_ccb_indent instead of pl.
11413         (block:): Likewise.
11414         (labeled_statement_nsi:): Generate debug info when reducing
11415         expression_statement:.
11416         (check_pkg_class_access): get_access_flags_from_decl invokation
11417         fixed for new CLASS_* flags location.
11418         (source_end_java_method): Save/restore parser context when
11419         entering/leaving this routine. Restore lineno to its right value
11420         before calling expand_end_bindings.
11421         (build_method_invocation_stmt): build_invoke called with the
11422         current line information.
11423         (build_invoke): New argument cl. Wrap the function call around a
11424         wfl node.
11425         (refine_accessible_methods_list): Changed comment, removed
11426         unnecessary code.
11427         * parse.h: Fixed typo in comments.
11428         (CLASS_OR_INTERFACE): Handle the new CLASS_* flags location.
11429         (JAVA_MAYBE_GENERATE_DEBUG_INFO): New macro.
11430         (struct parser_ctxt): New fields ccb_indent, last_ccb_indent1,
11431         parser_ccb_indent.
11432         * lex.c (java_lex): Record the last closing curly bracket of a
11433         function.
11434         * jcf-parse.c (jcf_parse_source): Now calls
11435         java_check_methods. Clarified comment, fixed typo.
11436
11437 1998-04-09  Dave Brolley  <brolley@cygnus.com>
11438
11439         * lang.c (init_parse): Expose for non USE_CPPLIB builds.
11440         (finish_parse): Expose for non USE_CPPLIB builds.
11441
11442 Wed Apr  8 13:06:23 1998  Jeffrey A Law  (law@cygnus.com)
11443
11444         * lang.c (lang_print_xnode): New function.
11445
11446 Fri Apr  3 13:22:41 1998  Per Bothner  <bothner@cygnus.com>
11447
11448         * decl.c (class_dtable_decl), java-tree.h:  New tree node.
11449         * class.c (get_dispatch_vector, get_dispatch_table):  New functions
11450         used to build a class's dispatch table.
11451         (make_class_data):  Generate dispatch table if flag_assume_compiled.
11452         Set dtable of class object to address of class_dtable_decl.
11453
11454         * decl.c (int_decl_processing):  Make soft_badarrayindex_node
11455         be volatile and have side effects - generates better code.
11456
11457         * class.c, expr.c, parse.y:  CLASS_INTERFACE, CLASS_FINAL, etc:
11458         These flags were defined for TYPE_DECLs, but used on RECORD_TYPEs.
11459
11460         * expr.c (expand_invoke):  If class is final, method is
11461         effectively final, so can call it directly.
11462
11463         * java-tree.h (TYPE_NVIRTUALS, TYPE_VTABLE):  New macros.
11464
11465         * Makefile.in, Make-lang.in:  Add missing $(exeext)s.
11466
11467 Thu Mar 19 16:59:16 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11468
11469         * parse.y (build_method_invocation_stmt): Removed extra argument
11470         to build_invoke.
11471
11472 Mon Mar 16 17:25:19 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11473
11474         * expr.c (dtable_indent): Now static global.
11475         (expand_invoke): Now call invoke_build_dtable and
11476         build_invokevirtual.
11477         (invoke_build_dtable, build_invokevirtual): New functions.
11478         * jcf-io.c (find_class): Defer issuing a warning by setting
11479         jcf->outofsynch to 1.
11480         * jcf-parse.c (jcf_out_of_synch): New function.
11481         (load_class): Test this_jcf.outofsynch flag and call
11482         jcf_out_of_synch accordingly.
11483         * jcf.h: (typedef struct JCF): New flag outofsynch. Fixed typo in
11484         comment indentation.
11485         * lex.c (java_get_unicode): Fixed code indentation.
11486         (java_lex): Create string literal. Fixed typo. Removed several
11487         premature obstack_free.
11488         * parse.h: New enums for name resolution and invocation mode.
11489         (struct qualification): New data structure.
11490         (RESOLVE_CHAIN_REMAINDER, BUILD_PTR_FROM_NAME): New macros.
11491         (do_resolve_class, build_method_invocation_stmt,
11492         breakdown_qualified, qualify_ambiguous_name, resolve_and_layout,
11493         debug_line, identical_subpath_p, invocation_mode,
11494         refine_accessible_methods_list, build_invoke,
11495         lookup_method_invoke): New functions declared.
11496         (build_invokevirtual, invoke_build_dtable, match_java_method,
11497         build_field_ref, jcf_out_of_synch): New references to external
11498         functions.
11499         (struct parse_ctxt): Removed artificial_constructor field.
11500         * parse.y: (array_type:): Type defined for this rule.
11501         (class_type:): Installed default rule for interface_type:.
11502         (array_type:): Now build Java array type.
11503         (qualified_name:): Now use obstack_grow0.
11504         (method_declaration:): Skip the artificial constructor added to
11505         the list, if any.
11506         (abstract_method_declaration:): Execute the code only during pass 1.
11507         (block:): Installed default rule in block_statements:.
11508         (block_statement:): Add the statement to the method during pass 2.
11509         (statement_expression): Installed default rule for
11510         method_invocation:.
11511         (argument_list:): Added code to build the argument list.
11512         (method_invocation:): Added call to create the method invocation
11513         node.
11514         (yyerror): Now use obstack_grow0. Removed bogus obstack_free.
11515         (debug_line): New function for debug.
11516         (complete_class_decl): No longer do something during pass 1.
11517         (method_header): Use BUILD_PTR_FROM_NAME.
11518         (parser_qualified_classname): Use obstack_grow0. Removed bogus
11519         obstack_free.
11520         (parser_chain_incomplete_item): Use BUILD_PTR_FROM_NAME. Modified
11521         function's main comment.
11522         (java_complete_class): Set CLASS_LOADED_P on all fixed incomplete
11523         classes.
11524         (complete_method_decl): Use BUILD_PTR_FROM_NAME and promote types.
11525         (resolve_class): Now works with arrays.
11526         (do_resolve_class, resolve_and_layout): New functions.
11527         (java_check_regular_methods): Reverse method list before and after
11528         having processed it. No longer set ctxp->artificial_constructor.
11529         (read_import_dir): Test jcf->outofsynch and call jcf_out_of_synch
11530         accordingly. Fixed typo in issued error message. Now use
11531         obstack_grow0.
11532         (find_in_imports_on_demand): Now use obstack_grow0.
11533         (declare_local_variables): Use BUILD_PTR_FROM_NAME.
11534         (source_end_java_method): Call expand_expr_stmt instead of
11535         expand_expr. Calls it before calling expand_function_end.
11536         (java_method_add_stmt): Do nothing if errors were found during
11537         parsing.
11538         (java_layout_parsed_class): Set CLASS_LOADED_P and fixed typo.
11539         (build_method_invocation_stmt, build_invoke, invocation_mode,
11540         lookup_method_invoke, refine_accessible_methods_list,
11541         qualify_ambiguous_name, breakdown_qualified, identical_subpath_p):
11542         New functions.
11543         * typeck.c (build_java_signature): Properly end method signature
11544         if return type skipped.
11545         (match_java_method): New function.
11546
11547 Mon Mar 16 10:40:47 1998  Per Bothner  <bothner@cygnus.com>
11548
11549         * jcf-io.c (find_classfile):  If USE_JCF_STDIO, fopen in binary mode.
11550
11551 Wed Feb 25 08:55:49 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11552
11553         * expr.c (build_invoke_non_interface): New function.
11554         (methods_ident, ncode_ident): Now static globals.
11555         (expand_invoke): Use build_invoke_non_interface.
11556         * java-tree.h (struct lang_decl): New field function_decl_body.
11557         (DECL_FUNCTION_BODY): New macro.
11558         * jcf-parse.c (jcf_parse_source): Deeper check before setting
11559         CLASS_FROM_SOURCE_P.
11560         (parse_source_file): Fixed typos. Call java_layout_parsed_class
11561         before starting pass 2. Call to java_generate_parsed_class replaced
11562         by java_register_parsed_class.
11563         * lex.c: Fixed typo in header. Some line width related formating.
11564         * lex.h: Some line width related formating.
11565         * parse.h (source_end_java_method, resolve_expression_name,
11566         complete_class_decl, maybe_create_class_interface_decl,
11567         check_class_interface_creation): New static function declarations.
11568         (java_layout_parsed_class, java_method_add_stmt): New function
11569         declarations.
11570         (struct parser_ctxt): Field mark_class_generate removed. New
11571         fields class_list and artificial_constructor.
11572         * parse.y: Fixed typo in header.
11573         (class_declaration:): Call complete_class_decl when class body
11574         parsed.
11575         (method_declaration:): Call source_end_java_method in pass 2 when
11576         the method body is defined.
11577         (postfix_expression:): Do expression name resolution on sub-rule
11578         name during pass 2.
11579         (create_class, create_interface): Merged common pieces.
11580         (check_class_interface_creation, maybe_create_class_interface_decl):
11581         New functions.
11582         (complete_class_decl): New function.
11583         (register_fields): Fixed line width related typo.
11584         (method_header): Correctly skip first argument when fixing
11585         argument line. Changed the loop.
11586         (java_check_circular_reference): Now use ctxp->class_list.
11587         (java_complete_class): Removed start/stop marking.
11588         (java_check_regular_methods): Now takes a class decl as an
11589         argument.  Add default constructor if none were encountered.
11590         (java_check_methods): Now use ctxp->class_list. Changed call to
11591         java_check_regular_methods.
11592         (source_start_java_method): Set DECL_ARG_TYPE for each function
11593         arguments.
11594         (source_end_java_method, java_method_add_stmt): New functions.
11595         (java_generate_parsed_class): No longer exists.
11596         (java_layout_parsed_class, java_register_parsed_class): New functions.
11597         (resolve_expression_name): New function.
11598
11599 Thu Feb 12 11:54:28 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11600
11601         * jcf-parse.c: (parse_source_file): Check on errors after init lex.
11602         * lex.c: (java_init_lex): Defer ctxp->java_pass initialization
11603         until pass initializations are done. Call read_import_dir with
11604         pass set to 0.
11605         * parse.h: (lookup_modifier_cl): New function declared.
11606         (INTERFACE_FIELD_MODIFIERS): New macro.
11607         (OBSOLETE_MODIFIER_WARNING): New macro.
11608         * parse.y: (register_fields): Class type and current field name in
11609         local variables. Check modifier(s) if adding field(s) to an interface.
11610         (check_abstract_method_header): Now use OBSOLETE_MODIFIER_WARNING
11611         and report errors using the faulty modifier line context.
11612         (lookup_modifier_cl): New function.
11613         (read_import_dir): Detect and report default import processing
11614         failure.
11615
11616 1998-02-11  Brendan Kehoe  <brendan@cygnus.com>
11617
11618         Add a pair of -fassume-compiled/-fno-assume-compiled options.
11619         * class.c (is_compiled_class): Return 1 after making sure it
11620         qualifies as loaded, if FLAG_ASSUME_COMPILED is set.
11621         * lang-options.h: Add -fassume-compiled/-fno-assume-compiled.
11622         * java-tree.h (flag_assume_compiled): Add decl.
11623         * lang.c (lang_f_options): Add the flag.
11624         (flag_assume_compiled): Add decl, default to 0.
11625
11626 Wed Feb 11 11:27:59 1998  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11627
11628         * class.c (class_depth): Call to load_class uses extra VERBOSE arg.
11629         (is_compiled_class): Likewise.
11630         (layout_class): Likewise.
11631         (layout_class): Detect and lay out classes defined in source code.
11632         (interface_of_p, add_interface_do, may_add_interface): New
11633         function.
11634         (add_interface): Now use add_interface_do.
11635         (add_method_1): New function.
11636         (add_method): Now use add_method_1.
11637         (pushlevel): Debug message conditional to SOURCE_FRONTEND_DEBUG.
11638         (complete_start_java_method): New function.
11639         (start_java_mehod): Now call complete_start_java_method.
11640         * expr.c (lookup_field): Call to load_class uses extra VERBOSE arg.
11641         (expand_invoke): Likewise and fixed typo.
11642         *gjava.c: (print_super_field): Use new argument to find_class
11643         DO_CLASS_FILE.
11644         (main): Likewise.
11645         *java-tree.h: (CLASS_FROM_SOURCE_P): New flag on RECORD_TYPE.
11646         (IS_A_SINGLE_IMPORT_CLASSFILE_NAME_P, IS_A_CLASSFILE_NAME,
11647         QUALIFIED_P, IS_AN_IMPORT_ON_DEMAND_P): New flags on
11648         IDENTIFIER_NODE.
11649         (CLASS_COMPLETE_P): New flag on TYPE_DECL.
11650         (add_method_1, push_class): New prototypes.
11651         *jcf-dump.c: find_class now uses new DO_CLASS_FILE argument.
11652         *jcf-io.c: (open_in_zip): jcf now stores a pointer to the Zip
11653         directory where the class was found.
11654         (find_class): New argument DO_CLASS_FILE. Function find_class
11655         modified accordingly.
11656         *jcf-parse.c: (fix_class_path): New function.
11657         (load_class): Use new VERBOSE argument. load_class now finds and
11658         loads/parses .class/.java files. Save read_state of current_jcf
11659         if necessary.
11660         (java_parser_abort_on_error): New macro.
11661         (jcf_parse_source, parse_source_file): New function.
11662         (jcf_parse): Fixed typo.
11663         (yyparse): Call parse_source_file () only.
11664         (process_zip_dir): Fixed typo, fix zdir->filename_length when
11665         writing the real class name back in the zip directory entry.
11666         (find_in_current_zip): IDENTIFIER_CLASS_VALUE may be null.
11667         (jcf_figure_file_type): Fixed bogus alloc and bcopy.
11668         *jcf.h: (typedef struct JCF): New fields java_source and zipd.
11669         (find_class): Prototype fixed.
11670         *lex.c: Added 1998 time stamp.
11671         Removed all static global variables, moved into the parser
11672         context data structure.. Now include unistd.h if SEEK_SET not
11673         defined.
11674         (java_init_lex): Rewritten.
11675         (java_sneak_unicode): Modified current unicode access in current line.
11676         (java_unget_unicode): Likewise.
11677         (java_allocate_new_line): New allocation management.
11678         (java_read_char): Modified access and storage of unget_utf8_value.
11679         New way of processing current unicode.
11680         (java_store_unicode, java_read_unicode): Fixed typo in declaration.
11681         (java_get_unicode): Now use the parser context.
11682         (java_lineterminator): Likewise.
11683         (java_lex): Now used java_lval argument (pointer to YYSTYPE), part
11684         of the reentrant parser implementation. Function now use the
11685         parser context data structure and java_lval. Fixed production of
11686         the float and double constant "out of range" error message. Fixed
11687         obstack use. Return integer value when hitting a modifier. Now
11688         return type for TRUE, FALSE and other predefined types. Return
11689         identifier as a TREE_LIST list containing the current line context
11690         as the TREE_VALUE sub-node.
11691         (java_unicode_2_utf8): Fixed typo in declaration.
11692         (java_lex_error): Now use the parser context data structure.
11693         *lex.h: Added 1998 time stamp.
11694         (struct java_line): New fields ref_count and next.
11695         (JAVA_LINE_CHECK, JAVA_LINE_MARK, JAVA_LINE_CHAIN,
11696         JAVA_LINE_UNMARK, ID_NAME, ID_CL): New macros.
11697         (JAVA_FLOAT_RANGE_ERROR, JAVA_INTEGRAL_RANGE_ERROR, UNGETC): Fixed.
11698         *parse.h: Added 1998 time stamp.
11699         (java_parse_source_file): Renamed from parse_source_file.
11700         (YYERROR_NOW, YYNOT_TWICE): Fixed.
11701         (CLASS_MODIFIERS, FIELD_MODIFIERS, METHOD_MODIFIERS,
11702         INTERFACE_MODIFIER, INTERFACE_METHOD_MODIFIERS,
11703         JAVA_MODIFIER_CTX_UNMARK, IC_DECL, IC_DEPEND, DEPEND_DECL,
11704         THIS_MODIFIER_ONLY, ABSTRACT_CHECK, BEGIN_ONLY_PASS,
11705         END_ONLY_PASS, ELSE_ONLY_PASS, exit_java_complete_class,
11706         CLASS_OR_INTERFACE, INCOMPLETE_P): New macros.
11707         (struct parser_ctxt): New data structure to keep the parser context.
11708         *parse.y: Added 1998 time stamp, got rid of static global variables.
11709         (java_error_count, ctxp): New global variables.
11710         (%union): New value field.
11711         (numeric_type, integral_type): Rules removed.
11712         (primitive_type): Rule defined to handle integral, float, double and
11713         boolean types.
11714         (qualified_name, package_declaration,
11715         single_type_import_declaration, type_import_on_demand_declaration,
11716         modifiers, class_declaration, super, interfaces,
11717         interface_type_list, class_body, field_declaration,
11718         field_declaration, variable_declarators, variable_declarator,
11719         variable_declarator_id, method_declaration, method_header,
11720         formal_parameter_list, formal_parameter, method_body, block,
11721         static, interface_declaration, extends_interfaces,
11722         abstract_method_declaration, local_variable_declarators): Rules now
11723         define actions.
11724         (force_error, do_warning): New global statics.
11725         (push_parser_context, parser_context_save_global,
11726         parser_context_restore_global, pop_parser_context): New functions.
11727         (yyerror): Now uses the global parser context. Fixed use of obstack.
11728         (parse_error, parse_error_context, parse_warning_context,
11729         java_accstring_lookup, redefinition_error, check_modifiers,
11730         parser_add_interface, create_interface, create_class, find_field,
11731         duplicate_declaration_error, register_fields, method_header,
11732         check_modifiers_consistency, check_abstract_method_header,
11733         method_declarator, parser_qualified_classname,
11734         parser_check_super_interface, parser_check_super,
11735         parser_chain_incomplete_item, java_check_circular_reference,
11736         layout_class_from_source, java_complete_class,
11737         complete_method_decl, resolve_class, complete_class_report_errors,
11738         java_check_final, check_method_redefinition,
11739         java_check_regular_methods, java_check_abstract_methods,
11740         java_check_methods, lookup_java_interface_method2,
11741         lookup_java_method2, lookup_cl, find_name_in_single_imports,
11742         process_imports, find_in_imports, read_import_entry,
11743         read_import_dir, find_in_imports_on_demand,
11744         check_pkg_class_access, not_builtin_p, declare_local_variables,
11745         source_start_java_method, java_generate_parsed_class): New
11746         functions.
11747         *typeck.c: (signature_include_return): New global variable.
11748         (build_java_signature): Use SIGNATURE_INCLUDE_RETURN figure whether
11749         to add the function returned type in the signature.
11750
11751 1998-02-09  Brendan Kehoe  <brendan@cygnus.com>
11752
11753         * jcf-io.c (open_in_zip): Use strncmp and LEN.
11754
11755 Thu Jan 29 16:12:13 1998  Dave Brolley  <brolley@cygnus.com>
11756
11757         * Make-lang.in (java.info): Added.
11758         (java.install-info): Added
11759
11760 1998-01-27  Brendan Kehoe  <brendan@cygnus.com>
11761
11762         * Makefile.in (clean): Also remove java/parse.c.
11763
11764 1998-01-26  Brendan Kehoe  <brendan@cygnus.com>
11765
11766         Add a pair of -fbounds-check/-fno-bounds-check options.
11767         * lang.c (lang_decode_option): Add code to grok arguments.
11768         (flag_bounds_check): Add decl.
11769         (lang_f_options): New array w/ the option in it.
11770         * java-tree.h (flag_bounds_check): Add decl.
11771         * lang-options.h: New file.
11772         * expr.c (build_java_arrayaccess): Use flag_bounds_check instead
11773         of a static macro value.
11774         (JAVA_ARRAY_EXCEPTION): Delete macro.
11775
11776 Fri Jan 23 14:19:47 1998  Per Bothner  <bothner@cygnus.com>
11777
11778         * typeck.c (build_java_array_type):  Fix two bugs in previous change.
11779         * expr.c (build_anewarray):  Add missing promote_type.
11780
11781 Thu Jan 22 17:43:45 1998  Per Bothner  <bothner@cygnus.com>
11782
11783         Add array types with known length to optimize bounds checking.
11784         * typeck.c (build_java_array_type):  Take length parameter.
11785         (java_array_type_length, build_prim_array_type):  New functions.
11786         * java-tree.h:  Update for new functions.
11787         * expr.c, typeck.c, verify.c: Update build_java_array_type calls.
11788         * class.c:  Use build_prim_array_type.
11789         * expr.c (can_widen_reference_to):  Handle known-length array types.
11790         (verify_jvm_instructions):  Keep track of integer push instructions
11791         followed by newarray/anewarray, so we can build known-length arrays.
11792         (JAVA_ARRAY_DATA_OFFSET):  Replace by ...
11793         (java_array_data_offset):  New function.
11794         (build_java_array_length_access):  New function.  Optimize if constant.
11795         (build_java_arrayaccess):  Constant fold bounds check.
11796         (expand_java_newarray, expand_java_anewarray):  Replaced by ...
11797         (build_newarray, build_anewarray):  New functions.
11798         (ARRAY_NEW_NUM, ARRAY_NEW_PTR):  Use build_{a,}newarray.
11799         * verify.c (merge_types):  Handle known-lengh array types.
11800
11801 Mon Jan 19 13:09:25 1998  Per Bothner  <bothner@cygnus.com>
11802
11803         * expr.c (expand_byte_code):  Fix performace bug, which caused
11804         searching linenumber_table to be linear rather than constant.
11805
11806 Fri Dec 12 19:18:42 1997  Per Bothner  <bothner@cygnus.com>
11807
11808         * Makefile.in (BISON, BISONFLAGS):  Add missing macros.
11809
11810         * decl.c, java-tree.h (soft_fmod_node):  New global.
11811         * decl.c (init_decl_processing):  Define __builtin_fmod.
11812         * expr.c (build_java_binop):  Implement TRUNC_MOD_EXPR for REAL_TYPE
11813         using __builtin_fmod.
11814
11815 Thu Dec  4 13:22:59 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11816
11817         * keyword.h: New file, output of keyword.gperf as processed by
11818         gperf.
11819         * lex.c (java_lex_init): Initialize java_error_flag.
11820         * parse.c (YYERROR_NOW): Uses java_error_flag.
11821         * parse.y: New static java_error_flag. Useless definition of
11822         buffer_error gone.
11823         * parse.y (java_error): Portable error recovery using
11824         java_error_flag (not yet completely tuned).
11825
11826 1997-12-04  Brendan Kehoe  <brendan@lisa.cygnus.com>
11827
11828         * Makefile.in (parse.c): Use $(srcdir) for parse.y.
11829
11830 Wed Dec  3 18:37:42 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11831
11832         * Makefile.in: (JAVA_OBJS): New object jcf-parse.o.
11833         (parse.c, lex.c, keyword.h): New rules for Java source code
11834         front-end.
11835         * parse.c: Renamed into jcf-parse.c.
11836         * jcf-parse.c (yyparse): Invoke the parser to process Java source code.
11837         * keyword.gperf: New file, Java keywords.
11838         * parse.y: New file, Java language grammar.
11839         * parse.h: New file, Java language grammar definitions.
11840         * lex.c: New file, Java language lexer.
11841         * lex.h: New file, Java language lexer definitions.
11842
11843 Wed Dec  3 17:00:17 1997  Per Bothner  <bothner@cygnus.com>
11844
11845         * decl.c (clinit_identifier_node), java-tree.h:  New global.
11846         * java-tree.h (IS_METHOD_INIT_P, IS_METHOD_CLINIT_P):  Removed.
11847         * verify.c (verify_jvm_instructions):  Inline use of removed macros.
11848         * expr.c (expand_java_field_op):  Check for invalid assignment
11849         to final field.
11850
11851         * jcf-reader.c (get_attribute):  Test for wrong attribute length.
11852
11853 Mon Oct 27 17:46:36 1997  Per Bothner  <bothner@cygnus.com>
11854
11855         * verify.c (verify_jvm_instructions):  When processing a handler,
11856         attempt to set the current_subr to the right value.
11857         (More complicated code combines Sep 17 and Oct 22 versions.)
11858
11859 Fri Oct 24 11:36:54 1997  Per Bothner  <bothner@cygnus.com>
11860
11861         * class.c (push_class):  Figure out (guess) name of source file.
11862         * parse.c  (set_source_filename):  Set DECL_SOURCE_FILE of class decl.
11863         (give_name_to_class):  Don't guess source name;  use DECL_SOURCE_FILE.
11864         (parse_class_file):  Change return type from int to void.
11865         Call debug_start_source_file/debug_end_source_file.
11866
11867         * expr.c (build_java_binop):  Fix masking 2nd operand.
11868         * decl.c (init_decl_processing):  Set sizetype first.
11869
11870 Wed Oct 22 19:39:05 1997  Per Bothner  <bothner@cygnus.com>
11871
11872         * verify.c (verify_jvm_instructions):  Don't set current_subr to NULL.
11873         (Revert Sep 17 change.)
11874
11875 Tue Oct 21 15:09:02 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11876
11877         * parse.c (process_zip_dir): Skip ZIP entries not bearing the
11878         .class extension in their name and fix thing so we don't process
11879         them parse_zip_file_entries().
11880         (parse_zip_file_entries): Cleaned unused local variables.
11881
11882 Mon Oct 20 14:52:42 1997  Per Bothner  <bothner@cygnus.com>
11883
11884         * expr.c (can_widen_reference_to):  Allows equal array element types.
11885         (expand_byte_code):  PRE_RET must expand OPERAND_VALUE (to get index).
11886         * jcf-dump.c (RET):  Get (and print) index.
11887
11888         * verify.c (verify_jvm_instructions case OPCODE_anewarray):
11889         Promote element type to POINTER_TYPE.
11890
11891 Mon Oct 20 13:40:41 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11892
11893         * jcf-reader.c, parse.c: (parse_zip_file, process_zip_dir,
11894         find_in_current_zip, jcf_figure_file_type): Moved from
11895         jcf-reader.c to parse.c.
11896         * zextract.c: (read_zip_archive): takes file_comment_length possible
11897         field into account.
11898
11899 Mon Oct 20 11:45:06 1997  Per Bothner  <bothner@cygnus.com>
11900
11901         * verify.c (verify_jvm_instructions):  Var can also be promoted to int.
11902
11903         * verify.c (merge_types):  Handle array types even better ...
11904
11905 Fri Oct 17 15:56:37 1997  Per Bothner  <bothner@cygnus.com>
11906
11907         * expr.c (java_stack_pop):  Fix use of NULL_TREE for TYPE_SECOND.
11908
11909         * java-tree.h (PUSH_FIELD):  Set DECL_ARTIFICIAL.
11910         * class.c (make_class_data):  Don't build fields_decl if no fields.
11911         When building fields_decl, skip if DECL_ARTIFICAL.
11912
11913         * expr.c (java_stack_swap):  Update stack_type_map.
11914         * verify.c (merge_types):  Handle array types better.
11915
11916 Wed Oct 15 18:09:45 1997  Per Bothner  <bothner@cygnus.com>
11917
11918         * class.c (add_field):  Don't promote short integral fields to
11919         int any more (unless JAVA_PROMOTE_TO_INT), since Kaffe doesn't.
11920         * expr.c (push_value):  Promote and convert short integral values.
11921
11922         * decl.c, java-tree.h (integer_two_node):  New constant node.
11923         * verify.c (merge_types):  Check for TYPE_RETURN_ADDR.
11924
11925 Wed Oct 15 17:04:50 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11926
11927         * class.c (append_gpp_mangled_type): Use function argument
11928         unpromoted type to generate mangled name.
11929
11930 Mon Oct 13 16:52:55 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
11931
11932         * constants.c (build_constant_data_ref): Now uses current_class
11933         instead of main_class.
11934         (build_constants_constructor): Now uses current_class instead of
11935         main_class.
11936         * zipfile.h: (struct ZipFileCache): Now defined here. Declaration
11937         of the global variable SeepZipFiles done here.
11938         * zextract.c (read_zip_archive): extra_field optional field taken
11939         into account while computing the position of the class file in the
11940         archive.
11941         * verify.c (verify_jvm_instructions): Use current_jcf to search
11942         the constant pool.
11943         * parse.c (load_class): First search for the class to load in the
11944         current zip file. Saves current_jcf (restored before returning
11945         from that function). Don't call JCF_FINISH in the class was found
11946         in the current ZIP file.
11947         (jcf_parse): If the class was found in the current ZIP file, save
11948         its tree_constant_pool (for later reuse).
11949         (parse_class_file): New function. Process each method defined in
11950         the current class and record the class as to be later registered.
11951         (yyparse): Rewritten. Figure the type of the current file and switch
11952         accordingly.
11953         * lang.c: New global variable current_jcf.
11954         (lang_init): Removed compiling_from_source test (done later, in
11955         yyparse). Removed call the jcf_parse ().
11956         * jcf.h (JCF_ZIP, JCF_CLASS, JCF_SOURCE): New defined values.
11957         (typedef struct JCF): New fields seen_in_zip (to mark a class found
11958         in the current ZIP file) and zip_offset (offset to the class data in
11959         the current zip file).
11960         * jcf-reader.c: zipfile.h included.
11961         localToFile: New ZipFileCache static global variable
11962         (parse_zip_file_entries): New function. Browse the current ZIP
11963         file directory and process each class found.
11964         (process_zip_dir): New function. Register each class found in the
11965         ZIP file directory. The class aren't parsed but a valid JCF is
11966         link to each of them.
11967         (find_in_current_zip): New function. Search for a class in the
11968         current ZIP file directory. If found, prepare the class so that it
11969         can be loaded.
11970         (jcf_figure_file_type): New function. Examine the file structure
11971         to figure a class file, a ZIP file. If none of these categories are
11972         matched, a source file is assumed.
11973         * jcf-io.c: Removed definition of ZipFileCache (moved in zipfile.h).
11974         SeenZipFile: New global variable.
11975         (open_in_zip): Use zipmember's length to accelerate the search for
11976         a member. If zipmember was NULL and zip file successfully read,
11977         return 0.
11978         * java-tree.h: New global variable current_jcf declared.  Added
11979         declaration for current_constant_pool_tags, current_constant_pool_data,
11980         current_constant_pool_length, current_constant_pool_data_ref.
11981         (struct lang_type): Augmented with two fields. struct JCF *jcf (to
11982         store the JCF of classes seen in a zip file) and tree *constant_pool
11983         (to save a loaded class constant pool). current_class declared here.
11984         * expr.c (expand_invoke): Use current_jcf instead of main_jcf to
11985         retrieve method_ref_constant.
11986         (PUSHC): java_push_constant_from_pool now uses current_jcf.
11987         (OBJECT): get_class_constant now uses current_jcf.
11988         (ARRAY_NEW_PTR): get_class_constant now uses current_jcf.
11989         (ARRAY_NEW_MULTI): get_class_constant now uses current_jcf.
11990         (expand_invoke): Now uses current_class instead of main_class
11991         (build_class_init): Now uses current_class instead of main_class
11992         * class.c: New static global variable registered_class.
11993         (register_class): New function.
11994         (emit_register_class): Modified to use registered_class instead of
11995         main_class
11996         (is_compiled_class): Now take into account class seen in the archive.
11997
11998 Mon Oct  6 12:03:23 1997  Per Bothner  <bothner@cygnus.com>
11999
12000         * except.h:  Renamed to: java-except.h.
12001         * parse.c, except.c, expr.c, verify.c:  Update #include accordingly.
12002         * except.c:  Add semi-working (commented out) implementation.
12003
12004         * expr.c (expand_iinc):  Add needed flush_quick_stack.
12005         * parse.c (set_source_filename):  New function.
12006         (give_name_to_class):  Set input_filename from package.classname.java.
12007
12008         * jcf-io.c (find_class):  Don't look first in ".".
12009
12010 Wed Oct  1 11:26:10 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12011
12012         * zextract.c (read_zip_archive): Now takes into account the
12013         extra_field field.
12014         * expr.c (can_widen_reference_to): Modified to handle sub-interfaces.
12015
12016 Sat Sep 20 12:44:28 1997  Per Bothner  <bothner@cygnus.com>
12017
12018         * constants.c, java-tree.h (build_internal_class_name):  New function.
12019         (alloc_class_constant):  Re-implement using build_internal_class_name.
12020         * class.c (make_class_data):  Likewise.
12021         * class.c (hashUtf8String):  Make hash algorithm match String.hashCode.
12022
12023 Wed Sep 17 13:15:23 1997  Per Bothner  <bothner@cygnus.com>
12024
12025         * verify.c (verify_jvm_instructions):  Temporarily set current_subr
12026         to NULL before pushing an exception handler target.
12027
12028         * expr.c (flush_quick_stack):  Save from low stack indexes to high.
12029         (java_stack_swap, java_stack_dup):  Re-write to be safe from
12030         clobbering registers.
12031         (build_class_init):  New function.
12032
12033 Wed Sep 17 11:02:41 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12034
12035         * typeck.c (build_java_array_type): Temporary use
12036         permanent_obstack to create the array 'length' field.
12037         * expr.c (lookup_label): Temporay use permanent_obstack to create
12038         label if not found.
12039         * class.c (push_super_field): Tempory use permanent_obstack.
12040
12041 Mon Sep 15 11:33:31 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12042
12043         * typeck.c (type_for_mode): Now handles double_type_node and
12044         float_type_node.
12045         * verify.c (verify_jvm_instructions): The instruction following
12046         the wide bytecode is checked. OPCODE_ret added to the list of
12047         wide.
12048
12049 Thu Sep 11 19:45:18 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12050
12051         * class.c (make_class): Temporary use permanent_obstack. Set the
12052         class CLASS_P field to 1.
12053         (push_class): Temporary use permanent_obstack.
12054         (set_super_info): Temporary use permanent_obstack.
12055         (add_method): Temporary use permanent_obstack, set
12056         METHOD_TRANSIENT().
12057         (add_field): Temporary use permanent_obstack. Sets
12058         FIELD_VOLATILE() and FIELD_TRANSIENT().
12059         (build_class_ref): Temporary use permanent_obstack if the class
12060         isn't compiled.
12061         (build_static_field_ref): Temporary use permanent_obstack when
12062         creating field's rtl.
12063         (get_access_flags_from_decl): Handle ACC_VOLATILE, ACC_TRANSIENT,
12064         ACC_SYNCHRONIZED, ACC_NATIVE, ACC_ABSTRACT flags for methods
12065         and fields. Function finalized, as far as flag handling.
12066         (push_class_static_dummy_field): Temporary use permanent_obstack.
12067         (emit_register_class): Force generation of class registration at
12068         -O3 or deeper.
12069         * decl.c (end_java_method): Call permanent_allocation() before
12070         returning.
12071         * expr.c (can_widen_reference_to): Added comment to interface
12072         handling, fixed typo.
12073         (lookup_field): Now uses CLASS_P() to correct FIXME
12074         (expand_invoke): Verification on public && !static &&
12075         !abstract moved into soft_lookupinterfacemethod (kaffe).
12076         Use Object class dtable if objectref is an array when expanding
12077         invokeinterface.
12078         (java_push_constant_from_pool): Temporary use permanent_obstack
12079         for CONSTANT_string
12080         * parse.c (get_ref_constant): Temporary use permanent_obstack to
12081         create constant references.
12082         (get_constant): Temporary use permanent_obstack to create constant.
12083         (load_class): Temporary use permanent_obstack to load class.
12084         (jcf_parse): Temporary use permanent_obstack to perform class
12085         layout.
12086         * typeck.c: (parse_signature_string): Temporary use permanent_obstack.
12087         (build_java_signature): Temporary use permanent_obstack.
12088         * verify.c: (verify_jvm_instruction): removed unnecessary verification
12089         on ACC_SUPER flag.
12090         * java-tree.h (METHOD_NATIVE, METHOD_TRANSIENT): Defined.
12091         (FIELD_VOLATILE, FIELD_TRANSIENT): Defined.
12092         (CLASS_P): Defined
12093
12094 Thu Sep 11 11:57:32 1997  Per Bothner  <bothner@cygnus.com>
12095
12096         * class.c (append_gpp_mangled_type):  Fix typo.
12097         (emit_register_class):  Use main_class to get class object, rather
12098         than looking for no-longer-existing static decl starting with _CL.
12099         * typeck.c (parse_signature_type):  Promote array element type
12100         if it is a RECORD_TYPE.
12101
12102 Wed Sep 10 16:09:23 1997  Per Bothner  <bothner@cygnus.com>
12103
12104         * class.c (push_class_static_dummy_field):  New function.
12105         (mangle_static_field):  New. Do G++-style mangling of static fields.
12106         (layout_class):  Mandle static fields here, not in add_field.
12107         (build_class_ref):  The class object is now a dummy static field.
12108         * decl.c (find_local_variable):  Look for best, instead of first match.
12109         * expr.c (push_type):  Always promote_type, not just for RECORD_TYPE.
12110         (build_java_athrow):  Don't check here if exception is Throwable.
12111         * java-tree.h (TYPE_UNSET):  Renamed to TYPE_UNKNOWN.
12112         (TYPE_USED):  Removed.  No longer used ...
12113         * parse.c (jcf_parse):  Call push_class_static_dummy_field.
12114         * verify.c (push_pending_label):  New function.
12115         (push_pending_block):  Renamed to check_pending_block.
12116         (merge_types):  Remove unneeded suuport for TYPE_UNUSED.
12117         (verify_jvm_instructions):  Only reset prev_eh_ranges (to force
12118         re-checking possible handlers) after a store (less wasted work).
12119         Check for null handler (finally) before calling add_handler.
12120         Various changes to (finally?) correctly handle try/finally.
12121
12122 1997-09-09  Brendan Kehoe  <brendan@lisa.cygnus.com>
12123
12124         * class.c: Include stdio.h.
12125
12126 Thu Sep  4 21:30:55 1997  Per Bothner  <bothner@cygnus.com>
12127
12128         * expr.c (expand_invoke):  Use COMPOUND_EXPR (and TREE_SIDE_EFFECTS)
12129         to make sure class is initialized before static/special invoke.
12130
12131         * verify.c (verify_jvm_instructions):  On a store instruction,
12132         call find_local_variable to force pre-allocation of decl and rtx.
12133         * decl.c (push_jvm_slot):  Set DECL_REGISTER on stack slots.
12134
12135 Wed Sep  3 16:13:23 1997  Per Bothner  <bothner@cygnus.com>
12136
12137         * class.c (build_class_ref):   Strip off "promoted_" if need be.
12138         (make_field_value): Call build_java_signature when needed.
12139         (layout_class):  Don't make_function_rtl if METHOD_ABSTRACT.
12140         * expr.c (build_java_athrow):  Don't push_value of exception.
12141         (build_java_binop):  Implement COMPARE_L_EXPR and COMPARE_G_EXPR to
12142         match specification of [fd]cmp[lg] for NaNs.
12143         (expand_byte_code):  Add support for exception handler ranges.
12144         * except.c:  Add skeleton for EH code-generation.
12145         * verify.c (merge_types):  Treat all promoted integral types as equal.
12146         * constants.c (build_constants_constructor):  To force creation of
12147         current_constant_pool_data_ref, call build_constant_data_ref.
12148
12149         * javaop.def (lload):  Fix typo.
12150         * jcf-dump.c (main):  Clear filename to prevent possibly-bad free.
12151
12152 Tue Sep  2 17:37:25 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
12153
12154         * parse.c: Don't include function.h.
12155
12156 Wed Aug 27 18:33:04 1997  Per Bothner  <bothner@cygnus.com>
12157
12158         * except.[ch]:  New files.
12159         * Makefile.in (JAVA_OBJS):  Add except.o
12160         * expr.c:  Temporary warning about unimplemented exceptions.
12161         * verify.c:  Verify exception handlers.
12162
12163         * jcf-dump.c (disassemble_method):  Print exception table.
12164
12165 Wed Aug 27 13:26:58 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12166
12167         * expr.c (verify_jvm_instructions): Started a thorough
12168         verification of invoke* bytecodes.
12169         (expand_byte_code): flush quick stack if PC is the target of a
12170         branch.  and undef RET (conflicting with config/i386/i386.h).
12171         (expand_java_arrayload): Fixed bogus cast, when Boolean type is
12172         used.
12173         (expand_invoke): Now handles invokeinterface and do more
12174         verification according to the bytecode.
12175         (lookup_field): Don't try to load the class if processing
12176         dtable_type.
12177         (can_widen_reference_to): Now handles interfaces.
12178         * decl.c (init_decl_processing): New global variable
12179         soft_lookupinterfacemethod_node, declared in java-tree.h.
12180         Call set_super_info on string_type_node.
12181         * java-tree.h (CLASS_INTERFACE, CLASS_ABSTRACT, CLASS_SUPER): Now
12182         defined.
12183         * class.c (set_super_info): Fills the CLASS_* flags according to
12184         access_flags.
12185         (get_access_flags_from_decl): Handles all class flags.
12186
12187 Tue Aug 26 18:54:34 1997  Per Bothner  <bothner@cygnus.com>
12188
12189         * class.c (add_method):  Zero out newly-allocated DECL_LANG_SPECIFIC.
12190         * parse.c (yyparse):  Check for abstract method, and missing code.
12191         * expr.c (expand_byte_code):  Change interface.
12192         * lang.c (put_decl_node):  Print promoted types prettier.
12193         * verify.c (verify_jvm_instruction):  Change interface.
12194         Partial support for scanning exception table.
12195         For load instructions, handle promoted integral types.
12196
12197 Thu Aug 21 13:48:01 1997  Per Bothner  <bothner@cygnus.com>
12198
12199         * verify.c:  New file, with contents moved from expr.c.
12200         * expr.c:  Bunch of stuff (mostly verification) moved to verify.c.
12201         * typeck.c (is_array_type_p):  Moved here from expr.c.
12202         * java-tree.h:  Add some now-needed function declarations.
12203         * Makefile.in (JAVA_OBJS): Added verify.o.
12204
12205 Wed Aug 20 14:34:34 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12206
12207         * class.c (add_method): Sets the METHOD_SYNCHRONIZED flag, sets the
12208         METHOD_ABSTRACT flag.
12209
12210         * java-tree.h (METHOD_SYNCHRONIZED): Set to DECL_LANG_FLAG_4.
12211         (IS_METHOD_CLINIT_P, IS_METHOD_INIT_P): New macros.
12212         (METHOD_ABSTRACT): Set to DECL_LANG_FLAG_5
12213
12214         * decl.c (soft_monitorenter_node, soft_monitorexit_node): New global
12215         variables.
12216         (start_java_method): Hook for SYNCHRONIZED methods.
12217
12218         * expr.c (build_java_jsr, build_java_ret): New functions
12219         (JSR,PRE): New macros
12220         (PRE_TABLE_SWITCH, PRE_LOOKUP_SWITCH): Fixed and secured.
12221         (verify_jvm_instructions): tableswitch, lookupswitch,
12222         monitorenter, monitorexit, goto_w: verified.
12223         (LOOKUP_SWITCH, TABLE_SWITCH): Fixed generation of default: label
12224         (build_java_monitor): New function.
12225         (MONITOR_OPERATION): Modified to call build_java_monitor()
12226         (verify_jvm_instructions): Started a thorough verification of
12227         invoke* bytecodes.
12228
12229 Tue Aug 19 13:35:49 1997  Per Bothner  <bothner@cygnus.com>
12230
12231         Support verification of jsr/ret subroutines (used for try/finally).
12232         * decl.c (return_address_type_node):  New type node.
12233         * java-tree.h (LABEL_RETURN_LABEL, LABEL_RETURN_TYPE_STATE,
12234         RETURN_MAP_ADJUSTED, LABEL_RETURN_LABELS, LABEL_IN_SUBR,
12235         LABEL_SUBR_START, LABEL_SUBR_CONTEXT, BCODE_VERIFIED):  New macros.
12236         (TYPE_UNSET, TYPE_SECOND, TYPE_NULL, TYPE_RETURN_ADDR, TYPE_UNUSED,
12237         TYPE_USED):  New macros for special types in type_map.
12238
12239         * java-tree.h (BCODE_JUMP_TARGET):  Renamed to BCODE_TARGET.
12240         (BCODE_BACKWARDS_TARGET, CODE_FORWARDS_TARGET):  Replaced by
12241         BCODE_JUMP_TARGET.
12242         * expr.c (expand_byte_code):  Fix logic to warn of unused instructions.
12243
12244         * expr.c (can_widen_reference_to):  New function.
12245         (pop_type):  Use it.
12246         (merge_type_state):  Support handling start of subroutine.
12247         (push_pending_block):  Return char* error message, instead of calling
12248         fatal on an error.  Also handle subroutines.
12249         (verify_jvm_instructions):  Handle errors from push_poending_block.
12250         Support jsr and ret instructions.
12251
12252 Tue Aug 19 13:33:36 1997  Per Bothner  <bothner@cygnus.com>
12253
12254         * jcf-io.c (find_classfile):  Fix thinko.
12255         * jcf-dump.c:  Add CONVERT2 (to match changed javaop.def).
12256
12257 Tue Aug 12 20:14:45 1997  Jason Merrill  <jason@yorick.cygnus.com>
12258
12259         * Makefile.in (BISON): Remove.
12260
12261 Thu Aug  7 23:08:24 1997  Per Bothner  <bothner@cygnus.com>
12262
12263         * Makefile.in:  Convert to autoconf.
12264         * config-lang.in (outputs):  Added java/Makefile.
12265
12266         * Make-lang.in, lang-specs.h, config-lang.in, Makefile.in:
12267         Rename cc1java to jc1.
12268
12269         * lang.c (init_parse, finihs_parse):  New functions #ifdef USE_CPPLIB.
12270         * Makefile.in (INTERNAL_CFLAGS):  Add @extra_c_flags.
12271
12272         * class.c (class_depth):  Do load_class if needed.
12273
12274         Mostly better verification.
12275         * decl.c (pushdecl):  Set TYPE_STUB_DECL for a type.
12276         (init_decl_processing):  Change return type of soft_checkcast.
12277         * expr.c (expand_java_CHECKCAST):  Do push_value of the "casted" value.
12278         * lang.c (put_decl_string, put_decl_node, lang_printable_name,
12279         lang_print_error):  New functions.
12280         (lang_init):  Set global hook print_error_function to lang_print_error.
12281         * expr.c:  In the type_map ptr_type_node is only used for null now.
12282         (pop_type, merge_types):  Hence ptr_type_node matches any reference.
12283         (merge_types):  Dererence pointer to record types before comparing.
12284         (decode_newarray_type, merge_types):  On error just return NULL.
12285         (build_java_binop):  Add preliminary implementation (with warning)
12286         for COMPARE_L_EXPR and COMPARE_G_EXPR (i.e. [fd]cmp[lg]).
12287         (lookup_label):  Set DECL_IGNORED_P (for dwarf2out).
12288         (expand_compare, expand_java_goto, expand_java_call):  Don't
12289         push_pending_block, since that only makes sense when verifying.
12290         (merge_type_state):  Different return codes.
12291         (push_pending_block):  A block may need to be verified more than once.
12292         (expand_byte_code):  Warn about unused code at code generation time.
12293         (verify_jvm_instruction):  Changed logic, since code may need to be
12294         re-verified if type-state has changed.  Also, better error handling.
12295         Implement acmpeq, acmpne, pop, pop2, swap, checkcast, instanceof.
12296         Improve newarray, anewarray, ?aload, athrow,
12297         * java-tree.h (LABEL_CHANGED):  New macro.
12298
12299 Tue Aug  5 12:21:27 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12300
12301         * decl.c (soft_athrow_node): New global variable initialized.
12302         * javaop.def (i2b, i2c, i2s): Invoke CONVERT2
12303         * typeck.c (convert): Added support for REAL_TYPE.
12304         (convert_to_char): New function.
12305         (convert): Handle CHAR_TYPE.
12306         * expr.c (expand_java_arraystore): Modified because CHAR/BYTE/BOOLEAN/
12307         SHORT now expect INT but store as CHAR/BYTE/BOOLEAN/SHORT.
12308         (expand_java_arrayload): CHAR/BYTE/BOOLEAN/SHORT now convert result to
12309         promoted type.
12310         (verify_jvm_instructions): Added break a the end of bogus unop: label.
12311         (OPCODE_<b|c|s>astore): Pop an int operand from the type stack
12312         (OPCODE_<b|c|s>astore): Push the promoted type onto the stack
12313         (process_jvm_instruction): New macro CONVERT2 for i2c, i2s and i2b.
12314         (JAVA_ARRAY_LENGTH_OFFSET, JAVA_ARRAY_DATA_OFFSET): Modified
12315         to Use The Right Things.
12316         (pop_type): Accept CHAR/BYTE/BOOLEAN/SHORT promoted type as
12317         compatible with INT. BOOLEAN is made equivalent to BYTE.
12318         (OPCODE_athrow, OPCODE_aconst_null, OPCODE_ifnull,
12319         OPCODE_ifnonnull): Now supported.
12320         (build_java_athrow): New function.
12321
12322 Mon Aug  4 15:46:45 1997  Per Bothner  <bothner@cygnus.com>
12323
12324         Rename method name <init> to match G++ (and fix mangling).
12325         * class.c (layout_class):  Replace method name of <init> by class name.
12326         (make_method_value):  Do inverse renaming of constructor from <init>.
12327         * java-tree.h (DECL_CONSTRUCTOR_P):  New macro.
12328         * typeck.c (lookup_java_constructor):  New function.
12329         * expr.c (expand_invoke):  If method_name is <init>, call
12330         lookup_java_constructor to find constructor.
12331
12332         * parse.c (get_constant):  Handle CONSTANT_Float and CONSTANT_Double.
12333
12334 Fri Aug  1 11:37:09 1997  Alexandre Petit-Bianco  <apbianco@cygnus.com>
12335
12336         * parse.c (get_class_constant): Modified to handle array "classes"
12337         * typeck.c (set_local_type): Bug fixed when filling type_map[] with
12338         wide type.
12339         (convert): Modified to handle real type.
12340         * java-tree.h (soft_badarrayindex_node, soft_anewarray_node,
12341         soft_multianewarray, soft_newarray_node, soft_throw_node): New global
12342         variables declared.
12343         * decl.c (soft_badarrayindex_node, soft_anewarray_node,
12344         soft_multianewarray, soft_newarray_node, soft_throw_node): New
12345         global variables initialized.
12346         (find_local_variable): Handles the case of a pointer
12347         (end_java_method): Restore the use of one more scope
12348         * expr.c (build_java_arraynull_check, build_java_arrayaccess,
12349         build_java_array_length_access, expand_java_arrayload,
12350         expand_java_arraystore, expand_java_array_length,
12351         expand_java_multianewarray, expand_java_anewarray,
12352         build_java_check_indexed_type, is_array_type_p,
12353         build_java_throw_out_of_bound_exception): New functions.
12354         (STORE_INTERNAL): Now forces type of the decl to be type of the value.
12355         (OPCODE_arraylength, OPCODE_newarray, OPCODE_<t>astore,
12356         OPCODE_<t>aload): Implemented code for verification.
12357         (ARRAY_STORE, ARRAY_LOAD, ARRAY_LENGTH, ARRAY_NEW_PTR, ARRAY_NEW_NUM
12358         ARRAY_NEW_MULTI): Macro defined.
12359         (CONVERT): Modified to invoke convert().
12360         (case OPCODE_aload2): Fixed index typo from 2 to 1.
12361
12362 Thu Jul 31 12:48:18 1997  Per Bothner  <bothner@cygnus.com>
12363
12364         * class.c (push_class):  Set DECL_ARTIFICIAL (for dbxout.c).
12365         (build_class_ref, is_compiled_class):  Handle pointer-to-record types.
12366         (make_class_data):  Field name needs '/' as package prefix.
12367         * expr.c (type_stack_dup, java_stack_dup):  Fix fencepost errors.
12368
12369 Fri Jul 25 11:44:21 1997  Per Bothner  <bothner@cygnus.com>
12370
12371         Implement debug information for local variables.
12372         * java-tree.h (DECL_CODE_LENGTH, DECL_ARG_SLOT_COUNT,
12373         DECL_LOCAL_SLOT_NUMBER, DECL_LOCAL_START_PC, DECL_LOCAL_END_PC,
12374         DECL_LOCAL_SLOT_CHAIN):  New macros.
12375         (struct lang_decl_var):  New type.
12376         * parse.c (give_name_to_locals):  Move to decl.c.
12377         * decl.c (give_name_to_locals):  Re-written to Do The Right Thing.
12378         (start_java_method):  Re-write parameter handling.
12379         (pending_local_decls):  New global variable.
12380         (push_jvm_slot, maybe_pushlevels, maybe_poplevels):  New functions.
12381         (find_local_variable):  Accept pc so we can skips decls not in range.
12382         (struct binding_level):  Add end_pc field.
12383         * expr.c (expand_byte_code): Call maybe_pushlevels and maybe_poplevels.
12384         (various):  Change so current pc gets passed to find_local_variable.
12385
12386         * decl.c (init_decl_processing):  Re-arrange fields in
12387         class_type_node and and method_type_node to match kaffe 0.9.1.
12388         * class.c (make_method_value, make_class_data):  Update
12389         initializations to match.
12390
12391 Wed Jul 16 17:17:50 1997  Per Bothner  <bothner@cygnus.com>
12392
12393         * class.c (unicode_mangling_length, emit_unicode_mangled_name,
12394         append_gpp_mangled_name, append_gpp_mangled_type):  New functions.
12395         (push_super_field):  New function.
12396         (make_class_data):  Handle inheritance of class static initializer.
12397         (layout_class):  New name mangling.
12398         * constants.c (build_constant_data_ref):  Init type of data array
12399         to a one-element array.
12400         (build_constants_constructor):  Set DECL_SIZE from complete array type.
12401         * decl.c:  Rename class_type, object_type etc to class_type_node,
12402         object_type_node etc.  Make former inherit from latter.
12403         * expr.c (expand_invoke):  Add cast of function address.
12404         * java-tree.h (TYPE_ARRAY_ELEMENT, PUSH_SUPER_VALUE):  New.
12405         * parse.c (yyparse):  Don't call layout_class here.
12406         * typeck.c (build_java_array_type):  Set TYPE_ARRAY_ELEMENT.
12407
12408 Sat Jun 14 12:06:57 1997  Per Bothner  <bothner@cygnus.com>
12409
12410         * decl.c, class.c:  Update method type to match latest Kaffe snapshot.
12411         * constants.c (lookup_name_constant):  Renamed to alloc_name_constant.
12412         (alloc_class_constant):  New.
12413         * expr.c (expand_invoke):  Make sure method's class is initialized.
12414         * class.c (interits_from_p, emit_register_class):  New functions.
12415         * parse.c (yyparse):  Call emit_register_class.
12416
12417 Mon Jun  9 18:08:06 1997  Per Bothner  <bothner@cygnus.com>
12418
12419         * constants.c:  New file, to handle constant pool.
12420         * Makefile.in (JAVA_OBJS):  Add constants.o.
12421         * decl.c (init_decl_processing):  Update, fix, finish various structs.
12422         (pushdecl_top_level):  New.
12423         * parse.c (layout_class):  Moved to class.c.
12424         * expr.c (java_push_constant_from_pool):  New function.
12425         * class.c (build_class_ref):  Make work fully
12426         (make_class_data):  Emit super-class, constant pool, interface vector.
12427
12428 Tue Jun  3 10:14:31 1997  Per Bothner  <bothner@cygnus.com>
12429
12430         java-tree.h (DECL_SIGNATURE, BCODE_EMITTED):  Remove.
12431         (LABEL_VERIFIED, BCODE_EXCEPTION_TARGET, TYPE_ARRAY_P):  New.
12432         * class.c (class_depth):  New function.
12433         (lookup_named_class):  Replaced by new function lookup_class.
12434         * decl.c (object_type_node, string_type_node):  New.
12435         Remove various types that we no longer need.
12436         * expr.c (verify_jvm_instructions):  New separate verifier pass.
12437         (push_type, pop_type):  New functions for verifier.
12438         (type_stack_dup, pop_argument_types, merge_types):  Likewise.
12439         (expand_byte_code):  Simplify, since we assume already verified.
12440         (expand_invoke):  Now mostly works.
12441         * javaop.def:  Rename ldc1->ldc, ldc2->ldc_w, ldc2w->ldc2_w.
12442         * lang.c (main_class):  Move to parse.c.  Don't make_class yet.
12443         * parse.c:  Wait to allocate class object until we know its name.
12444         (layout_class):  Calculate DECL_VINDEX for each virtual method.
12445         * typeck.c (get_array_type):  Rename to ...
12446         (build_java_array_type):  ... and provide working implementation.
12447         (build_java_signature):  New function - build Java signature of type.
12448         (set_java_signature):  New function - cache signature with type.
12449         (lookup_java_method):  New function.
12450
12451 Tue May  6 22:08:24 1997  Per Bothner  <bothner@deneb.cygnus.com>
12452
12453         * class.c (ident_subst):  Take extra SUFFIX parameter.
12454         (add_field):  Set DECL_ASSEMBLER_NAME of static fields;  more.
12455         (set_constant_value, build_static_field_ref, is_compiled_class):  New.
12456         (build_class_ref):  Actually implement.
12457         * decl.c, java-tree.h:  Renamed some xx_type to xx_type_node.
12458         * decl.c (builtin_function):  New.
12459         (init_decl_processing):  Update for current Kaffe.  Declare some
12460         builtin Kaffe functions.
12461         * expr.c (build_address_of):  New.
12462         (expand_java_NEW, expand_java_INSTANCEOF, expand_java_CHECKCAST):
12463         Renamed (from expand_java_new etc), and added working implementations.
12464         (build_field_ref):  Now also handle static fields.
12465         (expand_invoke):  Implement invokestatic, and start implement rest.
12466         * java-opcodes.h:  Use javaop.def to avoid duplicated list.
12467         * javaop.def:  Rename invokevirt -> invokevirtual.
12468         * lang.c (use_handles):  Removed.
12469         * parse.c:  Add support for ConstantValue atribute.
12470         Handle nested loading of a class.  (JPOOL_UTF):  New.
12471
12472 Tue Mar 11 20:11:05 1997  Per Bothner  <bothner@deneb.cygnus.com>
12473
12474         * expr.c (expand_java_pushc):  Support #ifndef REAL_ARITHMETIC case.
12475
12476 Thu Feb 27 14:24:29 1997  Per Bothner  <bothner@deneb.cygnus.com>
12477
12478         * Make-lang.in (java.install-man):  New empty rule.
12479         * typeck.c (set_local_type):  New function.
12480         * expr.c (STORE_INTERNAL):  Call find_local_variable,
12481         not find_stack_slot.  Call set_local_type.
12482
12483 Wed Feb 12 16:11:05 1997  Per Bothner  <bothner@kalessin.cygnus.com>
12484
12485         * java-tree.h:  Various new macros for constructing RECORD_TYPEs,
12486         and building RECORD_TYPE CONSTRUCTORs.
12487         Also support for creating Utf8Const objects from an INDETIFIER_NODE.
12488
12489         * lang.c (use_handles):  Change the default to 0.
12490         * decl.c:  Define and build class_type, field_type, utf8const_type.
12491         * class.c (make_class_data, make_field_value,
12492         get_access_flags_from_decl, build_class_ref, build_utf8_ref,
12493         hashUtf8String, strLengthUtf8, mangled_classname:
12494         Functions to build reflective data structures.
12495         * parse.c (yyparse):  Call make_class_data.
12496
12497         * jcf-io.c (open_class, find_classfile):  New functions.
12498         * jcf-dump.c:  Support reading classfile from explicitly-named
12499         class file (without CLASSPATH searching).
12500
12501 Thu Oct 24 14:10:16 1996  Per Bothner  <bothner@deneb.cygnus.com>
12502
12503         * jcf-reader.c:  Add parameter list to HANDLE_CONSTANT_Utf8.
12504         * parse.c (JPOOL_UTF_LENGTH, JPOOL_UTF_DATA, HANDLE_CONSTANT_Utf8):
12505         Override jcf-reader macros so CONSTANT_Utf8 becomes tree node here.
12506         (get_constant):  Now trivial for CONSTANT_Utf8.
12507
12508         * jcf.h:  Make NEW_CPOOL the default.
12509         * jcf.h, jcf-reader.c, parse.c:  Remove support for !NEW_CPOOL.
12510
12511 Thu Oct 24 13:52:45 1996  Per Bothner  <bothner@deneb.cygnus.com>
12512
12513         New directory.